Ide kerültek az olyan robotok, melyek Arduino programozása már meghaladja az alapszintet.


Ez egy kis szerencsejáték.

Fogadni lehet arra, hogy a készülék milyen színt fog "kiválasztani". Ha szerencsénk van, azaz ha eltaláltuk, a megtett tét hozzáadódik az addigi nyereményhez, ellenkező esetben elveszítjük a tétet, vagyis ilyenkor levonódik.

A fogadások száma nincs korlátozva, a játék akár a végtelenségig is folytatható.

A készülék lelke egy "paraván" mögé elbújtatott léptetőmotor tengelyére erősített kocka, melynek 4 oldallapja más-más színű: piros, zöld, kék és sárga. Ez az egység egy szánhoz van erősítve, melyet ugyancsak egy léptetőmotor mozgat. A szán jobboldali véghelyzete után található szenzor a kocka éppen a feléje néző oldalának a színét érzékeli.

Egy fogadás menete a következő. Először az infravörös távirányító megfelelő gombjaival megtippeljük a színt, amelyet a 4 LED-es kijelző is mutat, majd megtesszük a tétet (1 és 5 közötti szám lehet), ez a számkijelzőn jelenik meg. Ezt követően a paraván mögötti kocka először jobbra, 1-től 10-ig terjedő véletlen számú negyed fordulatot tesz meg, majd ugyan ez történik az ellenkező irányba is, újra generált véletlen számú negyed fordulattal. Így előre kiszámíthatatlan, hogy a kocka mely oldala fordult a színérzékelő felé.

A kiértékeléshez a szán megközelíti a szenzort. A 4 LED-es kijelzőn most a kocka felé néző oldalának a színe jelenik meg. Ha a megtippelt és a kiolvasott szín megegyezik, akkor a számkijelzőn a téttel megemelt összeg jelenik meg, az eltalált szín pedig háromszor villog. Ha a színt nem találtuk el, a számkijelző a téttel csökkentett összeget írja ki, a 4 LED-es kijelző pedig kialszik.

Az újabb fogadáshoz a szán visszatér a bal oldali véghelyzetébe, a számkijelző, amely ezalatt a pillanatnyi mérleget mutatja, nullázódik és várja az újabb tétet. (Természetesen az addigi eredmény a memóriában megőrződik.)

A videóban két fogadást láthatunk: az első esetben a robot nyer, a másodikban veszít.

Igazából a Repülőtér volt a száznegyvenedik kökinccsé tett robotom, ezért vegyük olybá, hogy ez a két utolsó virtuálisan helyet cserél.

És nincs új a nap alatt, ez az egyszerű felépítésű szerkezet is abból a célból született, hogy eljátszogassak az aktuális nevezetes számmal.

Csupán egyetlen mozgó alkatrésze van, egy paravánnak is tekinthető takarólemez, melyet egy léptetőmotor hajt fel illetve le. A paraván alaphelyzetében, azaz induláskor eltakarja a szokatlan kivitelű "képernyőt", mely egy keretbe foglalt, átlátszó műanyag lemezből, a hátoldalához erősített LED mátrixból és a mögéje ferdén beépített 4 LED-es kijelzőből (mint a háttérvilágítást szolgáló fényforrásból) áll. A műanyag laphoz eredetileg az elem (vagy akku) tartót lehet hozzáerősíteni. Az alakja és a méretei egyébként pontosan megegyeznek a mikrokontroller sasszijával.

A ciklus indító karakterét soros Bluetooth terminálon keresztül kapja a program. Először a "képernyő" fölötti számkijelzőn balról jobbra shiftelve egyenként megjelennek a 140-es szám karakterei, majd a paraván átfordul a felső helyzetébe, szabaddá téve a képernyőt. Azon, pontosabban a LED mátrixon ugyancsak egyesével megjelennek a karakterek, miközben a hátsó 4 LED-ből 3 véletlenszerű színekkel villódzik. Aztán a 140-es szám háromszor jobbról balra fényújság szerűen elhalad, ekkor a hátsó LED-ek pirosan világítanak. Ez a folyamat még egyszer megísmétlődik. A ciklus végén a paraván alaphelyzetébe áll és a számkijelző lenullázódik.

Sajnos a videóban ismét meggyőződhetünk arról, hogy a LED mátrix nem igazán "fotogén", a torzításokat csak kismértékben sikerült a videószerkesztővel csökkenteni.

Egy kis kirándulás a repülés világába.

Építettem egy viszonylag terjedelmes készüléket, mely a repülést követő leszállás után a repülőgép lassuló gurulását szimbolizálja a leszállópályán. A valóságban lekanyarodik és cikk-cakkos utat tesz meg a terminálig, melyet az angol szaknyelv "taxiing" - ként emleget. Mivel itt nincs mód a fordulásokra, így fényjelzésre az egyenes pálya végén áll meg.

A robot lelke a már jól ismert, léptetőmotor és fogasszíj által hajtott szánszerkezet, csak itt most 90°-al elforgattam, mert a leszállópálya fényeit reprezentáló LED csík a szán alatt nem fért volna el. A fémépítőből összeállított, és a szánhoz rögzített repülő a leszállást követően, azaz éppen a földetérés után lelassul a leszállópályán, melynek jelző fényei nagyjából a valóságot tükrözik. A három fokozatban lassuló gép a pálya végén akkor áll meg teljesen, amikor az ott elhelyezkedő 4 LED-es kijelző vízszintes piros fénnyel világít. (A valóság ennél jóval bonyolultabb, a lézerrel vezérelt berendezések a dokkoláshoz sokkal több információt adnak a pilótáknak. Ilyen eszköz híján, vagy annak meghibásodásakor ezt a szerepet az ún. előtér ügyeletes vagy aircraft mashalling veszi át.)

Minden repülőtéren radar is található, így a robotnak is tartozéka egy ilyen berendezés, melyet egy újonnan beszerzett, speciális encoder motor forgat.

A videóban a ciklust egy mobil telefonról - Bluetooth soros terminálon - átküldött vezérlő karakter indítja. Először elkezd forogni a radar és kigyulladnak a pálya fényei. Kis idő múltán a repülő megkezdi a lassuló "gurulást", majd a már említett jelzőfénynél megáll. Némi várakozás után kialszik az összes fényforrás és a gép visszatolat a kiindulási helyzetébe, majd néhány másodperc múlva a radar is leáll.

Ismétlés a tudás anyja.

Ez a robot két, már korábbanól jól bevált mechanikus részegységből áll: egy léptetőmotor-fogasszíj kombó által mozgatott szánszerkezetből és egy arra épített csuklós mechanizmusból, melynek lezáró lapja önmagával párhuzamosan mozog, miközben egy DC motor fogaskerék áttételen keresztül emeli vagy süllyeszti a szerkezetet.

A mechanizmus dőlésszögét gyro érzékelő méri, a lezáró lapjához pedig egy színérzékelőt erősítettem. A szánon mozgó mechanizmussal, vagyis a színérzékelővel szemben egy rúd áll, melyre öt, különböző színű papírcsíkot ragasztottam. Ezek sorrendje felülről lefelé haladva: fehér(w), piros(r), zöld(g), kék(b) és sárga(y), a zárójelek a színek angol nevének kezdőbetűit tartalmazzák. A mechanizmus szemszögéből tekintve minden színnek egy-egy állásszög érték felel meg.

Induláskor a készülék számára egy öt karakterből álló karaktersorozatot kell Bluetooth soros terminálon keresztül inputként megadni. Ez nem más, mint a "beolvasandó" színek kívánt sorrendje, az angol kezdőbetűjükkel jelölve. A szán ezt követően előre mozog, és mivel minden színhez egy adott állásszög tartozik, a gyro szögérzékelő révén a motor a mechanizmust ± 0,5°-os pontossággal ezekre állítja be. Majd a színérzékelő felismeri az éppen előtte lévő színt, és a mechanizmus tartó oszlopához erősített 4 LED-es kijelző az érzékelt színnek megfelelő fénnyel kigyullad. A szán a mechanizmust az öt szín előírt sorrendű "kiolvasása" után viszi vissza alaphelyzetbe.

A videóban két ciklus látható. Az elsőben nincs színismétlés, a másodikban a zöld(g) kétszer szerepel. A ciklusok közben látható feliratok a színsorrendet jelölik, de mindkét ciklus végére a Bluetooth soros terminál képernyőképét is beillesztettem, melyeken nemcsak az indító karakterlánc, hanem a program válaszai (elvi és mért szögértékek, a kiolvasott színek) is láthatók. Megállapítható, hogy a készülék sem a szögbeálláskor sem a színfelismeréskor nem téveszt.

Gabi bácsi az idei, április 22-ei blogbejegyzésében egy kávé keverő robot vázlatos rendszertervével állt elő, hogy abból ötletet merítve alkossam meg a következő robotot. Először csak megmosolyogtam, de aztán felmerült bennem, hogy tulajdonképpen miért is ne?

Első sorban a konstrukció megvalósítása során, bizonyos hardver korlátok miatt itt-ott el kellett térnem a tervtől. Erről részletesebben a jobb oldalon lehet olvasni.

De kérem Gabi bácsit, hogy ha szándékozik még további ötletekkel bombázni, akkor olyasmit találjon ki, amely nem tűzveszélyes (pl. a Csillagszóró gyújtogató), nem okozhat árvizet, mint a jelen esetben. Magyarul ne kelljen aggódnom a lakás, illetve a Makeblock drága elektronikai alkatrészeinek épségéért...

A készülék működése lényegében a vázlatos rendszerterven alapszik, így egy ciklus lefutását - mely a videóban is látható - most nem ismertetem részletesen, az itt olvasható.

Viszont néhány szót ejtenék a konstrukcióról. A fogókar (gripper) egy szánszerkezethez csatlakozik, melynek előre-hátra mozgatását fogasszíj hajtással egy léptetőmotor végzi. Az elfordítását pedig egy másik léptetőmotor, melynek tengelyéhez direkt csatlakozik. Az a platform, melyre a kávéval teli csészét helyezzük, az állványhoz van erősítve, és az ultranagos távmérő érzékeli, hogy a csésze a helyére került-e már. A keverő platform, melyre a gripper helyezi át a csészét, már együtt mozog a szánnal, csakúgy, mint maga a a keverő szerkezet. A "Hol a kávém?" és az "Egészségére" feliratok angol nyelven futnak a LED mátrixon, mert - mint azt már jónéhányszor említettem - az ékezetes karakterekkel az Arduino nem tud megbírkózni.

A rendelkezésre álló hardver eszközök adta korlátok miatt néhány eltérés azért van a rendszertervhez képest. Törésveszély miatt nem igazi kávéscsészét használtam, hanem egy olyan méretű, félig áttetsző műanyag kupakot, melyet a gripper még éppen meg tud fogni. A csúszásmentes megfogás miatt a pereméhez egy filc csíkot kellett ragasztani. A Gabi bácsi által elképzelt keverőt két DC motorral lehetne megvalósítani (emelés-süllyesztés és maga a keverés), ám a motorok mérete, de főleg a mikrokontroller korlátozott számú motor bemenetei miatt két szervo motoros keverőt választottam: a nagyobbik a keverő billentését, a mikro méretű pedig a keverőlapátot mozgatja. Ez a megoldás nem tökéletes - és ismerve Gabi bácsit, nyilván bele is köt - de a művelet imitálásához megfelelő. Hiszen színház és játék az egész világ...

Ez a poszt nem a látványosságról szól, hanem a léptetőmotorral kapcsolatos közelebbi vizsgálódásaimat, tapasztalataimat hivatott összefoglalni. Tekintsük akadémiai székfoglalónak...

Meglehetősen sok robotba építettem már be léptetőmotort, de mindig az volt az érzésem, hogy ezzel az eszközzel nem ártana alaposabban foglalkozni.

Nos, ennek most jött el az ideje, így egy viszonylag egyszerű deszkamodellt építettem, melynek révén a motor tulajdonságaival és ezzel összefüggésben a programozási sajátosságaival sikerült közelebbről is megismerkedni.

A készülék lelke tehát egy léptetőmotor, melynek tengelyéhez egy 15°-onként beskálázott tárcsát erősítettem. Az eszköz a mikrokontrolleren kívül tartalmazza a motor vezérlő áramkörét (driver), a négyjegyű számkijelzőt, a LED mátrixot, a 4 LED-es kijelzőt és a Bluetooth interfészt.

A motor lépés nagyságát, azaz a felbontását a driveren hardveresen lehet beállítani. A legkisebb felbontás 1,8°/lépés, a legnagyobb 0,1125°/lépés. Ez azt jelenti, hogy 1 fordulat 200 lépéstől 3200 lépésig terjedhet. (A modellben beállított érték 800 lépés/ford.)

A többi paraméter (a megteendő lépések száma és a sebesség) már szoftveresen állítható be. Az az időtartam, mely egy adott sebesség mellett az adott lépésszám megtételéhez szükséges, már tapasztalati úton nyerhető, származtatott érték. Késleltetési időnek is tekinthető, mert ez alatt más eszközt is lehet működtetni, pl. a 4 LED-es kijelző "futófényét". A sebesség a léptetőmotor esetében egy relatív mérőszám. Pl. az 1000-es érték kb. 60 fordulat/perc-nek, a 3000-es érték kb. 180 fordulat/percnek felel meg.

A modellben az adatbevitel Bluetooth soros terminálon történik, melynek révén a motor kétféle üzemmódban indítható. Először egy négyjegyű számot (az esetleges vezető nullákkal együtt) kell beírni, majd egy betű következik. A "v" karakter a sebességre, a "d" karakter pedig a szögértékre utal. (Ha szöget adunk meg, a sebesség 1000.) A videóban is látható két példa: az "1750v" parancs azt jelenti, hogy a motor 1750-es sebességgel tegyen meg egy fordulatot, míg ezzel szinkronban a LED futófény körbejár. A 0045d pedig azt jelenti, hogy a motor 45°-os ugrásokkal tegyen meg egy fordulatot. Ekkor a LED futófény egy-egy lépés után ugrik egyet.

Még két feltételt is beprogramoztam: a sebesség értéke 250-el legyen osztható, a szög pedig 15-el, és a 360° legyen a többszöröse. Ha valamely feltétel nem teljesül, a négy LED rövid időre pirosan világít, és a készülék az újabb adat bevitelére vár.

Két esetben (1750v és 0045d) a soros terminál képernyőképét is beillesztettem a videóba. A LED mátrixon "sebesség üzemmódban" a "V" karakter, szögérték esetén a "DG" (degree) jelenik meg.

Ez nem egy Hajdú forgódobos centrifuga, hanem űrhajósjelöltek, asztronauták tesztelésére szolgáló berendezés modellje. Humán centrifugaként is emlegetik, mellyel azt vizsgálják, hogy az asztronauta a nehézségi gyorsulás (g) hányszorosát képes elviselni.

Egy DC motorral meghajtott forgókar végén található az a stilizált kabin, melyben az űrhajósjelölt ül vagy fekszik. Egy ciklus a készülék két kijelzőjének (a LED mátrix és a négy LED) plusz a zümmer jelzéseinek különböző kombinációjával indul. Először zöld fény világít, majd villogó pirosra vált és megszólal a sziréna is, azután a START felirat fut háromszor végig a mátrixon folyamatos piros fény mellett. Ezt követően a centrifuga gyorsuló iramban kezd el forogni. Néhány másodpercig végsebességgel forog, majd fokozatosan lelassít, egészen a megállásig. Forgás közben egy jobbra mutató nyíl és folyamatos piros fény látszik. Megállás után a STOP felirat fut háromszor végig folyamatos kék fény mellett, majd a ciklus befejeződik. Mivel a robot infra távirányítóval vezérelhető, néhány fázis külön-külön is indítható, erre látunk példát a videó utolsó részében.

Ami a programot illeti: azt a célt, hogy a jobbra mutató nyíl pontosan annyi ideig jelenjen meg a LED mátrixon, ameddig a centrifuga forog, a következő képpen értem el. Az elvileg ineáaris gyorsulást/lassulást úgy közelítettem meg, hogy azonos időtartamok alatt a sebesség azonos mértékben változzon. A rövid időintervallumok - melyeket késleltetésnek is tekinthetünk - alatt ciklikusan nem csak a sebesség változik, hanem a program a nyíl kijelzésére is utasítja a LED mátrixot. Természetesen ez történik a már végsebességet elért, hosszabb idejű forgás alatt is.

Pandóra szelencéje: (görög mitológia) Egy nap Pandóra kíváncsiságból kinyitotta a szelencét, amiből az emberiségre szabadult az összes csapás (betegség, bánat, szegénység, bűn stb.) Pandóra megijedt és gyorsan lecsapta a szelence fedelét, amiben egyedül a remény maradt benn. A világra szenvedéssel teli időszak köszöntött, míg Pandóra, vagy valaki újra ki nem nyitja a dobozt, hogy a remény is kiszabaduljon.

Nos, azért építettem, hogy a mostani vészterhes időkben kinyitva, legalább a remény kiszabadulhasson...

A szerkezet nagyon egyszerű. A doboz kézzel nyitható-csukható fedelébe - mint keretszerkezetbe - építettem be a LED mátrixot, úgy, hogy a fedelet lecsukva az aktív felülete a doboz belseje felé nézzen. A dobozban pedig - "a reményen kívül" - csak egy fényérzékelő szenzor található. Szerepe az, hogy a fényerősség változásának érzékelésével a program meg tudja állapítani, hogy a szelence nyitva van-e, vagy sem.

Ha a fedelet felnyitjuk, egy röpke hangjelzés után háromféle, fényújságszerűen futó felirat, vagy kétféle grafika jelenhet meg a LED mátrixon. Egy adott felirat kétszer egymás után fut jobbról balra, egy-egy grafika pedig 5 mp-ig látható. Majd egy újabb hangjelzés után a fedelet lecsukjuk. Mivel az ötféle opció közül a program véletlenszerűen választ, előre nem tudható, hogy mit fogunk látni, ha a fedelet felnyitjuk.

A szövegek angol nyelvűek, mert az Arduino az ékezetes karakterekkel nem tud mit kezdeni. Ezek: I AM BOX OF PANDORA, STAY AT HOME! és ARDUINO. A kétféle grafika pedig: egy mosolygó arc és a több évtizedes "Peace not war" szimbólum.

A videó készítése során szerencsém volt, mert minden felnyitás után más-más jelent meg a LED mátrixon, így a teljes repertoár látható. (Kevésbé szerencsés esetben ismétlődések is előfordulhattak volna.)

Ezekben a vészterhes időkben, amikor lényegében a négy fal között éljük az életünket, naponta legalább egyszer kártyázunk életem párjával. Kettes snapszert játszunk magyar kártyával, melynek szabályai pl. a https://snapszer.hu/hu/hivatalos-versenyszabalyzat/ oldalon olvashatók.

Gyakran Cavintonra lenne szükség annak megállapításához, hogy ki a következő osztó. Lényegében ez a "nagy horderejű " probléma ihlette az itt ismertetett, Cardbot névre hallgató robotot. Egyrészt a felépítéséből és működéséből fakadóan a probléma már nem probléma, másrészt alkalmas a nyerőpontok nyilvántartására, így egy teljes játék nyertesének megállapítására is.

A készüléket infra távirányítóval lehet működtetni. Csak egy gombnyomás, és a léptetőmotor fogasszíj áttételen keresztül a soron következő osztó felé fordítja azt a kart, melynek a végén, egy rekeszben a 20 lapos pakli található. A játék elején a kar alaphelyzetéből véletlenszrűen fordul az egyik játékos felé, így ő kezdi az osztást. Kiveszi a paklit, oszt, lemegy a játszma, a paklit visszateszi a rekeszbe. Az újabb gombnyomásra már természetesen a másik játékos felé fordul a kar, tehát ő lesz a következő osztó. Ez ismétlődik, egészen a játék végéig. A kar viszont csak akkor fordul el, ha a pakli visszakerült a rekeszbe. A feltétel teljesülését (melyet a videóban egy külön snitt mutat) a beépített fényérzékelő figyeli. A játék végén, mielőtt a kar visszaáll alaphelyzetébe, már nem kell a paklit a rekeszbe tenni.

Egy-egy játszma mindenkori nyertese 1-től 3-ig tejedő nyerőpontszámot kap, mely hozzáadódik a korábbiakhoz. Ennek folyamata: a távirányítóval kiválasztjuk a nyertes keresztnevének kezőbetűit (M-Marcsi, GY-Gyuri), mely megjelenik a LED mátrixon. Ezután bevisszük az aktuális nyerőpontszámát, de a számkijelzőm már a halmozott pontérték jelenik meg. Természetesen megnézhetjük a másik játékos eddig elért eredményét is, persze ebben az esetben az nem kap pontot. A szabályok szerint az nyeri a játékot, aki először eléri a 7 nyerőpontot. Ezt a robot a név kezdőbetűjének villogtatásával is jelzi.

A videó a készülék működését szemlélteti egy teljes játékmenet bemutatásával, másfélszeres gyorsításban. Tényleges játék nincs, így az egyes játszmákat a pakli kivétele ill. visszahelyezése közé kell elképzelni. A bevitt nyerőpontszámok is tetszőlegesek, így a nyertes személye (természetesen M) is csak a véletlen műve...

Tűzoltó legyek, vagy katona? Inkább az előbbi! Hogy megteremtsem ennek egyik alapvető feltételét, építettem egy tűzoltóautót, a fémépítő játék és a Makeblock alkatrészeit kombinálva.

Ez a szerkezet meglehetősen sajátságos, mondhatni csak egy torzó. Ugyanis nincs kocsiszekrénye és kereke, csupán egy vezetőfülkéből, egy villogóból (4 LED-es kijelző, két LED kék-piros váltott villogással), szirénából (alaplapra integrált zümmer) és egy mikro szervomotor által dönthető létrából áll. Viszont előre-hátra haladni is tud, mert egy léptetőmotor által hajtott szánszerkezetre építettem.

A vezérlése infra távirányítóval történik. Minden fázis külön-külön indítható, de - ahogy a videóban is látszik - egy teljes ciklus egyetlen gombnyomásra automatikusan is lefuttatható: megszólal a riasztócsengő, majd a kocsi a megkülönböztető jelzéseket használva előre megy, megáll, a sziréna elhallgat, csak a villogás marad, a létra felnyílik, majd kis idő - azaz a tűz eloltása - után visszadől, a villogás megszűnik és a kocsi hátramegy az alaphelyzetébe.

De ami a lényeg: sikerült egy programozástechnikai problémát megoldanom. Nevezetesen: hogyan lehet a léptetőmotor forgásával egyidőben más részegységeket, jelen esetben a 4 LED-es kijelzőt és a zümmert szimultán működtetni.

Ez egy olyan robot, amellyel interaktív módon, írásban társaloghtaunk. A soros monitoron keresztül kapott utasításokat végrehajtja, és nyugtázza. Az Arduino sajátosságai miatt viszont a chatalés angol nyelven történik.

Egy egyszerű DC motor által hajtott görgős szán két, végálláskapcsolóként funkcionáló mikrokapcsoló között jobbra-balra haladó mozgást végez. Mozoghat egy adott irányban a pálya végéig, vagy ide-oda a két véghelyzet között, de a beépített érintőszenzorral menet közben meg is állíthatjuk.

A magyarított utasításkészlete ennek megfelelő:

Menj jobbra! - Menj balra! - Menj ide-oda kétszer!

Nyugtázásképpen a készülék az alábbiakat írja ki a monitorra csupa nagybetűvel, szintén magyarítva:

MEGÁLLTAM A JOBB VÉGEN. - MEGÁLLTAM A BAL VÉGEN. - ÚTKÖZBEN MEGÁLLÍTOTTÁL. - VÁROM AZ UTASÍTÁSODAT.

A videóban osztott képernyőn, szinkronizálva látható a chatelés és a robot működése.

A robot MeOrion elnevezésű alaplapján van egy részegység, nevezetesen egy zümmer (angol megfelelője: buzzer).

Ezt eddig nem használtam, de már ideje volt kipróbálni. Az itt ismertetett kísérleti elrendezés - deszkamodell - ezt a célt szolgálja.

A zümmer akkor ad folyamatos hangot, ha nagyon rövid időközönként - jelen esetben 2 milliszekundumonként - szoftveresen ki-be kapcsolgatjuk. A hang impulzus egy érintő szenzor megérintésekor indul és addig tart, amíg a szenzort el nem engedjük. A környezeti zaj minimalizálása miatt közvetlenül a zümmer fölé építettem a hangerő szenzort, mely szoftveresen a hangimpulzus hosszát méri. A rövid impulzus 0,5 mp-nél rövidebb, a hosszú pedig 1 mp-nél hosszabb. Ettől eltérő értékeket a program nem értelmez. A rövid impulzusnak az "1", a hosszúnak a "2" számjegyet feleltettem meg. Egymás után két impulzust lehet generálni, így a kombinációk száma négy. Ha a számkijelzőn csak az 1-es jelenik meg, akkor az első impulzust várja, míg a 2 esetében a másodikat. Ha mindkét impulzus értékelhető, akkor a kijelzőn már az azokat reprezentáló két szám látható. Pl.: rövid-hosszú kombináció esetén a fentiek értelmében a 12 látható.

A négyféle kombináció az alábbiak szerint vezérli a szervomotort illetve a LED csíkot:

  • 11 - a szervó balra billen 45 fokot,

  • 12 - a szervó jobbra billen 45 fokot,

  • 21 - 9 db LED gyullad ki, balról jobbra haladva, és

  • 22 - 9 db LED jobbról balra haladva gyullad ki.

Hát idáig is eljutottam, megszületett a Százharmincadik.

Ez egy olyan egymutatós óra, mely - ahogy a videóban is látható - utal a százharmincas számra. Van neki ingája és csapóajtaja is, bár mögüle nem egy kakukk ugrik elő, hanem...

Ez egy olyan különleges óra, amely 60 másodpercnek a 130-at felelteti meg.

A "számlap" előtt lépegető mutatót egy léptetőmotor hajtja. Konstrukciós okokból a mutató 5 másodpercenként nem az osztásoknál, hanem azok között áll meg. Ilyenkor a számkijelzőn megjelenő szám 130/12=10,83333-nyival növekszik, így a mutató 0-tól indulva egy teljes fordulat, azaz 1 perc alatt eléri a 130-at.

Az inga - melyet egy normál szervomotor tengelyére szereltem - folyamatosan mozgásban van úgy, hogy a mutató megállásai között kétszer balra és kétszer jobbra leng ki, összesen 4 x 1,25 = 5 mp-ig.

Amint a mutató teljesen körbejár és a kijelzőn megjelenik a 130-as szám, egy mikró szervomotor kinyitja a csapóajtót, mely mögül nem egy kakukk ugrik elő, hanem a LED mátrixon megjelenik egy smiley.

A ciklus, vagyis az 1 percig tartó folyamat a készülék vázának jobb oldalára szerelt szenzor megérintésére indul, némi késleltetéssel.

A robot elkészítésének 2 apropója volt. Az egyik, hogy egy normál szervomotor nem direkt módon, hanem fogasszíj áttételen keresztül forgat egy tárcsát. A másik, hogy a fehér és fekete színeket két - korábban már többször használt - szenzor egy egységbe építve érzékelje: a fekete-fehér szenzor és a színérzékelő.

A készülék 3 db, átmérőjük mentén fehérre és feketére kettéosztott tárcsát tartalmaz. A két szélsőt léptetőmotorok forgatják, az alsó középsőt - ezt nevezem index tárcsának - pedig az áttételezett szervomotor.

A szélső tárcsák egymástól függetlenül, 1-től 10-ig terjedő tartományban, de véletlen számú fél fordulatokat tesznek meg, így kiszámíthatatlan, hogy a megállásuk után a lehetséges négy kombinációból melyiknek lesz az alsó fele fekete vagy fehér. Bár a két szenzor a felső részeik színét érzékeli, de egyértelmű, hogy az alsó részek színei azokkal ellentétesek. Ha az alsó részek színei megegyeznek, akkor az index tárcsa is úgy áll be, hogy ez a szín legyen alul. Más esetben az index tárcsa osztóvonala függőleges, és a fekete fele az alul fekete, fehér fele pedig az alul fehér tárcsa felé "néz".

A hangvezérlésre induló ciklus 5 beállásból áll. Ha a két szélső tárcsa aktív, akkor két vízszintes LED ég, ha csak az index tárcsa működik, akkor a legalsó. A ciklus végén mind a négy LED kigyullad. A tárcsáknak nincs kitüntetett helyzete, a ciklus elején csupán az index tárcsa áll be úgy, hogy a fekete fele legyen alul.

A videóban két ciklus lefutása látható.

Ez a szerkezet egy 15 emeletes hotel előterét (előkelőbben lobbiját) imitálja egy forgóajtóval, egy cipőtisztító géppel, egy szimbolikus liftajtóval és némi elektronikával.

A forgóajtót és a cipőtisztítót egy-egy szimpla DC motor forgatja. Ha a kedves vendég elég közel van az ajtóhoz - vagyis a kezem az ultrahangos távolság érzékelőhöz - az ajtó elkezd forogni. Bejön a vendég, az ajtó forgása 5 mp után leáll és egy kis késleltetéssel szintén 5 mp-ig működik a cipőtisztító.

A vendég ezután hívja a liftet, ezt a célt szolgálja az érintő érzékelő. Hogy melyik emeletről jön le a lift, vagy eleve a földszinten van, azt a program véletlenszám generátorral határozza meg. Ha a két vízszintesen elhelyezkedő LED zölden világít, akkor a LED mátrix által szimbolizált liftajtó kinyílik, a vendég beszáll, majd kisvártatva becsukódik és a lift elindul felfelé. Hogy melyik szintre megy a vendég, az szintén véletlenszerű. Ha a lift megáll, kialszanak a LED-ek, a számkijelző pedig - jobb híján - az évszámot mutatja. (Meglepő, de a számkijelzőre nincs olyan utasítás, hogy az ne mutasson semmit...)

Hogy éppen hol jár a lift menet közben, azt a számkijelző mutatja, a haladás irányát pedig az egymás alatti LED-ek. Felfelé menet a felső zölden, az alsó pirosan világít, lefelé jövet pedig fordítva.

A videóban két példa látható: az elsőben a lift a 8-ik emeletről érkezik a földszintre, majd a 2-ikra megy, a másodikban a 10-ikről érkezik és a 8-ikra megy.

Most nem az a lényeg, hogy mit csinál ez a robot, hanem hogy milyen módon.

Ez azt jelenti, hogy itt a konstrukcióra helyeztem a hangsúlyt, mert két korábbi, jól bevált megoldást ötvöztem.

Ez a készülék tehát két, már kipróbált mechanikai részegységet egyesít.

Egyrészt egy saját konstrukciójú - tehát nem a gyári - szánszerkezetet, melyet a Hanoi toronyhoz találtam ki. Az azt megelőző próbálkozásokhoz (ld. a Plottereknél) képest ez az egyszerű, két párhuzamos rúdon gördülő, négy műanyag görgős és fogasszíjjal mozgatható szerkezet kellő precizitást biztosít.

Másrészt egy forgató fejet, mely sík felületen csak elforgatja a tárgyakat, más pozicionálást nem végez. Ilyet használtam pl. a Hatvanadik-nál a gyufaszálak mozgatásához.

A mostani készülékben két léptetőmotor az erőforrás, az egyik a szánt, a másik a forgatófejet mozgatja.

A cél két, keskenyebbik élére állított doboz elforgatása, melyek látható felületei narancssárga illetve sötétkék színűek.

A vezérlés infra távirányítóval történik. Külön forgatható akár a bal, akár a jobb oldali doboz, de lehetséges egy indítással mindkettőt elforgatni. Hogy éppen melyik variáció fut, azt a kijelző bal és/vagy jobb oldali LED-jei mutatják. Alapállapotban a két egymás alatti LED világít. A videóban két kiinduló helyzetre látható példa: az egyikben azonos, a másikban nem azonos színű a két látható doboz oldal.


Ennek a készüléknek bevallom, önmagában nincs sok értelme. Csupán azt szemlélteti, hogy négy szervomotort egy egységbe építve hogyan lehet egy 4 szabadságfokú mozgásra képes rendszert kialakítani.

Egy normál és három mikró méretű szervómotort építettem egy mechanikai egységbe. A legalsó, normál méretű függőleges tengely körüli, a felette levő vízszintes tengely körüli, az azt követő ismét függőleges tengely körüli, a legfelső pedig vízszintes tengely körüli elfordítást a végez. Mindegyikre igaz, hogy a tengelyeik középhelyzete elvileg 90°, és ehhez képest ± 90°-os, tehát összesen 180°-os (0-tól 180°-ig) szögtartományban állíthatók pozícióba. Ezek csak elvi értékek, a gyakorlatban apró eltérések lehetségesek.

A vezérlése infravörös távirányítóval történik. A készülék alaphelyzetében mindegyik motor az elvi 90°-os középhelyzetében áll. A videóban is látható, hogy lehetőség van a motorok egyenkénti, kétirányú mozgatására, ehhez a programban 90° ± 45° végkitéréseket állítottam be. De van egy olyan funkció is beépítve, mely egy gombnyomásra, véletlenszám generátor által meghatározott pozíciókba állítja be külön-külön mind a négy motort a 90° ± 45° tartományon belül. Egy ilyen automatikus ciklus 5 beállásból áll, a végén a rendszer visszaáll alapállapotba.


A Hanoi torony egy több, mint 130 éves matematikai feladvány. Az eredeti játékban különböző átmérőjű korongokat, melyek 3 db függőleges rúdra felfűzhetőek, kell az egyik szélső rúdról a másikra átrakni úgy, hogy a közbenső rúdra kisebb korongra nagyobb nem helyezhető. A kiinduló helyzetben legalul van a legnagyobb, legfelül pedig a legkisebb átmérőjű korong. Ezt a rendezettséget kell a véghelyzetben is produkálni.

Csak megjegyzem, hogy az eredeti feladvány szerint 64 db korongot 1,85 * 1019 lépésben lehetne áthelyezni. Ha egy ember éjjel-nappal dolgozna a feladaton másodpercenként egy lépést végrehajtva, akkor kicsit több, mint 580 milliárd év alatt tudná megoldani a feladatot... (Forrás: Wikipédia)

Ez a robot három különböző hosszúságú fa hasábot helyez át 7 lépésben a bal szélső helyzetből a jobb szélsőbe. Itt tehát nincs szükség vezető rudakra. A hasábok eltérő színének a működésre nincs kihatása, csupán a látványt fokozzák.

A hasábokkal manipuláló gripper egy függőlegesen fel-le mozgó szánhoz van erősítve, amelyet fogasszíj hajtáson keresztül egy léptetőmotor mozgat. A függőleges tartóoszlopot - melyhez a szán görgős vezetősínjeit rögzítettem - egy másik léptetőmotor fogaskerék áttétel révén forgatja jobbra-balra. A gripper nyitását-zárását saját kis DC motorja végzi.

A készülékben nincsenek szenzorok, így a működtető program nem tartalmaz feltételes utasításokat, a robot csupán az előre beprogramozott lépéseket hajtja végre egymás után. Ez tehát egy "buta" robot, mert csak azt csinálja, amit mondanak neki. A három elfordulási szöghelyzet és a négy szint között a mozgásokat valamint a gripper működését fázisokra bontva (pl.: a gripper nyit-zár, a szán 1, 2 vagy 3 szintet emelkedik vagy süllyed, stb.) egy-egy szubrutinba foglaltam. Ez lehetővé teszi, hogy a vezérlő infravörös távirányítóval csak egy-egy fázis, de a teljes áthelyezési folyamat is indítható. A videóban mindkettőre láthatunk példát.

Csak az érdekesség kedvéért: a három hasáb hét lépésben történő áthelyezése, tehát a teljes folyamat 56 fázisból áll, azaz egy lépés átlag 8 fázisból áll össze. (Emelkedés, elfordulás, süllyedés, megfogás, emelés, elfordulás, süllyesztés, elengedés.)


Ezzel a készülékkel a jól ismert Mastermind játékot lehet játszani. A játék elején az ellenfél - jelen esetben a robot - a lehetséges hatból elrejt négy színt, melyeket tíz lépésből, tippeléssel kell kitalálni. Minden egyes tippelés után jelzések mutatják meg, mennyire sikerült eltalálni a színeket és a sorrendjüket. Kék színnel jelzi darabszámra azokat a találatokat, amelyek benne vannak és jó helyen, fehér színnel pedig szintén darabszámra, amelyek szerepelnek ugyan, de nem a jó helyen.


A játék elején a program - vagyis az ellenfél - véletlen szerűen generál négy különböző színt, melyeket számokká konvertálva eltárol a memóriájában. Az eredeti játékban a színismétlés általában megengedett, de itt ezt a lehetőséget a játék egyszerűsítése miatt kizártam.

A játékos rendelkezésére áll 6 db, különböző színnel felcímkézett gyufásdoboz, melyekből négyet a léptetőmotor által hajtott szánhoz erősített rekeszbe kell helyezni. Az érintőszenzort megérintve a számkijelzőn megjelenik, hogy hányadik próbálkozás következik, majd a gyufásdobozok elhaladnak a színérzékelő alatt. A program beolvassa a színeket és azokat számokká konvertálva összehasonlítja a memóriájában eltárolt, rejtett adatokkal. Ezt követően a szán visszatér a kiindulási helyzetébe, majd a 4 LED-es kijelzőn látható az eredmény, ahogy a bal oldali szövegben is olvasható.

A készülék maximum 10 próbálkozást engedélyez. Ha addig nem sikerül mind a négy színt helyre is azonosan eltalálni, tehát nem világít kék színnel mind a négy LED, akkor a játékos vesztett. Erre láthatunk példát a videó első részében. Ekkor a számláló lenullázódik, a program a háttérben újabb négy színt generál és kezdődhet egy újabb játék.

Ha viszont még a 10. próbálkozás előtt mind a négy színt eltalálja a játékos, akkor ő nyer. A videó második részében ez az 5. próbálkozásra sikerült.

Itt jegyzem meg, hogy a videóban a játékos szerepét életem párja volt szíves magára vállalni.

Ez egy olyan stilizált szobabicikli, melyen egy szintén stilizált emberke ül, aki a hátán hordja a készülék "agyát", és tekeri a pedálokat. Kétféle edzéstervet lehet infra távirányítóval kiválasztani, melyek végrehajtása után a LED mátrix kijelzőn megjelennek a főbb fitnesz paraméterek.

A közös tengelyű kerekeket egy encoder motor hajtja fogasszíj hajtáson keresztül. Az emberke lábai a kerekekhez rögzített, a pedálok szerepét betöltő féltengelyekhez csatlakoznak. Az encoder motor fordulatszáma változtatható, ez teszi lehetővé a kétféle üzemmódot, melyeket a LED mátrixon megjelenő ábrák is szimbolizálnak:

  • 5 lépcsőben, 6 másodpercenként fokozatosan növekvő, illetve .

  • 6 másodpercenként növekvő majd csökkenő sebesség.

Hogy minél jobban hasonlítson egy valódi szobabiciklihez, a kétféle üzemmód végén megjelenő paraméterek (pulzusszám, a "megtett" távolság, a gyakorlat ideje és az elégetett energia) a menet közbeni terhelés különbözőségére utalnak. Természetesen ezek a számok csak részben alapulnak fizikai összefüggéseken, hiszen itt nincs nyomaték terhelés, az időtartam sem valós, és hát az emberünknek szíve sincs, tehát pulzusa sem lehet. (A LED mátrix kék színű alakzatai - mint minden más esetben - most is torzultan jelennek meg a videóban, ezért külön feliratban is feltüntettem azokat.)

És akkor íme a Százhuszadik!

Híven a hagyományokhoz, ez a készülék is számokkal játszik, de most természetesen a 120 - ra van kihegyezve.

Mondhatnánk, hogy ez a robot jó példa arra, hogyan lehet számtani alapműveleteket mechatrónikai eszközökkel reprezentálni.

A lelkét két DC motor tengelyére erősített tárcsa és két, impulzus adóként funkcionáló érzékelő alkotja. A bal oldali tárcsa kerülete mentén 12 db csavar van, melyek fejei forgás közben egy föléjük erősített mikrókapcsolót nyomogatnak, ily módon impulzusokat generálva. A jobb oldali tárcsa fekete alapszínen egy sugárirányú, széles fehér csíkot tartalmaz, mely ha a fölötte lévő szenzor alá fordul, akkor jelváltozást, tehát ez is impulzust generál.

A működés alapelve az osztás. Az osztandó mindig 120, az osztó pedig egy 1 és 10 közötti szám (kivéve a 7-et és a 9-et), melyet a bal oldali tárcsa véletlenszerűen generál. A jobb oldali tárcsa annyi teljes fordulatot végez, amennyi az eredmény. De a program nem egyesével számolja ezeket, hanem fordulatonként (impulzusonként) egy számlálót az osztó értékével megnöveli, így a forgás akkor áll le, ha ez a számláló éppen eléri a 120 -at. Pl.: legyen az osztó 8, így a jobb oldali tárcsa 120 : 8 = 15 fordulatot végez, de fordulatonként 8-al növeli a számláló értékét, így 15 * 8 = 120.

A hangvezérlésre induló ciklus elején a bal oldali tárcsa előállítja az osztót, mely megjelenik a kijelzőn, ezt követően a jobb oldali tárcsa kezd el forogni, melynek során a kijelzőn is látható, hogy a számláló értéke fordulatonként az osztó értékével növekszik, egészen 120-ig. Ekkor a kerethez erősített LED-ek háromszor felvillannak, a kijelző lenullázódik, és jöhet egy újabb ciklus. (Mivel a tárcsáknak nincs kitüntetett kezdő helyzete, így azok a ciklus végén nem fordulnak el.)

A videóban négy ciklus látható, melyekben az osztók értéke rendre: 6, 8, 4 és 10.

Valahogy kimaradt a sorból a száztizedik jubileum, ezt most pótolom.

Figyeljék a kezemet, mert csalok, mivel valójában ez már a százhuszadik...

A talpcsapágyra épített keretszerkezetet egy léptetőmotor fogasszíj áttételen keresztül forgatja. A keret egyik oldalához két szervomotort erősítettem, melyek a római 100-as (C) és a tizes (X) feliratokat mozgatják. A cél az, hogy a keret elfordulásakor a két számjegy állásszöge szemből nézve ne változzon. Ez azt jelenti, hogy a keret adott szögelfordulása során a szervomotorok ellenkező irányban, de ugyanolyan mértékben forgatják a feliratokat.

Először vezeték nélküli, soros Bluetooth terminálon meg kell adni a keret 0 helyzethez viszonyított induló szöghelyzetét. A keret balra, a feliratok pedig a már említett módon fordulnak el. Ezután a keret 5°-onként visszafelé "lépkedve" eléri a 0 helyzetét, majd ellenkező irányban folytatja, vagyis dupla szögtartományt jár be. Mindeközben a szervomotorok irányban tartják a feliratokat. Ezután a rendszer visszaáll a 0°-os alaphelyzetébe és várja a következő inputot. A keret éppen aktuális előjeles szöghelyzete a számkijelzőn látható.

A videóban 30, 45 és 60° -os induló szögekre látunk példát. A keret tehát rendre 60, 90 és 120°-os tartományt jár be, miközben a CX felirat mindig a kamera felé néz. A már említett 5°-os "vissza lépkedés" miatt az induló szögnek 5-el osztható számnak kell lennie.

Egyszerű mechanika és némi elektronika. Ennél a készüléknél a kihívást az algoritmus kitalálása és a programozás jelentette.

Egy kézzel billenthető, viszonylag hosszú rúd és a talapzat egy csapágyazott tengellyel kapcsolódik egymáshoz. A rúdhoz - teljes hossza mentén - a programozható, 15 db-os LED csíkot erősítettem. Ugyancsak a rúddal együtt mozog a szöghelyzet érzékelő, mely az éppen aktuális értéket a számkijelzőn jeleníti meg. A billenthetőség szögtartománya nagyjából +20...22 ° és - 20...22 ° közötti.

A LED csíkon 3 db szomszédos, pirosan világító LED képez egy egységet, ezt nevezzük csúszkának. Ha a csúszka a rúd egyik végénél van, és a rudat ellenkező irányba billentjük, a csúszka először középre ugrik, majd onnan halad tovább a lejtő irányába. Minél meredekebb a lejtő, annál távolabb megy a forgásponttól. A jó szeműek a videóban (oldal- és felülnézetben) azt is észrevehetik, hogy a csúszka sebessége egyenesen arányos a dőlésszöggel, vagyis minél meredekebb a lejtő, annál rövidebb a shiftelési késleltetés.

Az alapötletet az internetről loptam, de a konstrukció és a programozás saját termés.

A készülék valódi homokóra működését szimulálja. Itt a két üvegtartályt számkijelzők reprezentálják úgy, hogy a mindenkori felső (30-tól kezdve másodpercenként) csökkenő, az alsó pedig növekvő irányban számol, mint ahogy a homok pereg felülről lefelé.

Mivel nincs két azonos számkijelző a készletemben, ezért kénytelen voltam az egyiket a LED mátrix-szal helyettesíteni. Másik sajátosság, hogy a kijelzők meghajtó szoftverébe nincs lehetőség beavatkozni, így a mindenkori felső fejjel lefelé mutatja a számokat, de azért ettől még olvasható. (Lehetőség lenne ugyan a mechanikus átfordításukra - mondjuk szervomotorral -, de ez az igénybevétel károsítaná a csatlakozásokat és a kábeleket.)

A készülék lelke a már ismert helyzetérzékelő, melynek Y hossztengelye kb. 45 fokos szöget zár be a vízszintessel. Ugyanis csak így képes érzékelni, hogy a szerkezet éppen melyik oldalán áll. (Az egyik esetben a kiolvasott szög értéke negatív, a másik esetben pozitív.) A videóban látható, hogy ha a készüléket vízszintes helyzetbe döntjük, akkor a számlálás szünetel, hiszen egy megdöntött homokórában is megáll a homok pergése. Ezt a helyzetet a szenzor X tengelye érzékeli. Ha a készülék függőlegesen áll, akkor az X érték elvileg 0 fok, ha vízszintes helyzetben van, akkor 90 fok. A kisebb-nagyobb pontatlanságok miatt a program persze nem diszkrét szög értékekkel, hanem tartományokkal számol.

A LED mátrix kék színű pixeleinek videózása sajnos mindig torzítja a képet, ezt most valamennyire igyekeztem a videószerkesztővel korrigálni.

Ezen a fotón a próbapad felépítése látható

Ebben a videóban látható a 4 db érzékelő adatainak folyamatos megjelenítése



Az előző posztban arra láttunk példát, hogy Bluetooth kapcsolaton keresztül hogyan lehet adatokat átküldeni a robotnak. Most az ellenkező irányú adatáramlást mutatom be, vagyis a robot - jelen esetben egy 4 db érzékelőt tartalmazó próbapad - folyamatosan küld adatokat a laptopon futó soros terminálnak, ugyancsak Bluetooth kapcsolaton keresztül.

Alul, a bal oldali fotón a próbapad felépítése látható, a jobb oldali videóban pedig az érzékelők által mért adatok folyamatos megjelenítése. A programozás miatt angol elnevezéseket használok:

DISTANCE - az ultrahangos távmérő által mért távolság cm-ben, COLOR - a színmérő eredményei speciális kódolással, LIGHT - a fényerő értékei és végül a SOUND- a hangerő értékei. 4-4 adat kiolvasása közötti késleltetési idő 2 másodperc, vagyis a képernyőn az egyes sorok kb. ilyen időközönként követik egymást.

Végre sikerült megoldani, hogy a mikrokontrollerbe ne csak vezérlő karaktereket, hanem paraméterként akár több számjegyű adatokat is át lehessen küldeni, vezeték nélküli (Bluetooth) kapcsolaton keresztül.

(Előzmény: Bluetooth soros terminál demó)

Ez a deszkamodell ezt hivatott bemutatni. Ha a beépített szervomotor 0 foktól 180 fokig terjedő beállási szögtartományán belüli számot továbbítunk a soros terminálon keresztül, akkor az eszköz ezt a szöghelyzetet veszi fel. A terminál most egy Androidos mobiltelefonon futó applikáció, melynek révén lehet átküldeni - jelen esetben - 3 jegyű számokat. Ebbe a vezető nulla is beleszámít, mert ha például a 85-ös számot akarjuk betáplálni, mely éppen a szervomotorhoz erősített kar vízszintes állásszöge, akkor a terminálon - vagyis a telefonon - 085-öt kell bepötyögni. Ahogy a videóban is látható, ekkor a számkijelző 85-öt mutat és szimbolikusan a LED-es kijelző valamint a LED mátrix is a vízszintes helyzetre utal. A 85-nél nagyobb számok esetében a szervomotor karja lefelé, kisebb számok esetében felfelé mozdul el.

A Bluetooth soros terminálnak van PC-re illetve laptopra telepíthető változata is, amely Windows 10 alatt fut. Ez az alkalmazás látható egy korábbi, a "Bluetooth soros terminál demó" című videóban, de a most bemutatott 2.0 verzióban az Androidos változatot használtam. A mobiltelefon akár 10 méterre is lehetne a robottól, csupán a jobb láthatóság miatt tartom a videóban az objektív látóterében.

Természetesen alapkövetelmény, hogy a robot és a terminál applikációt futtató eszköz Bluetooth kapcsolata párosítva legyen.


Az alapötletet a kódzáras széf adta, mely jobb szállodai szobákban is megtalálható.

Itt viszont a nyitáshoz szükséges 4 számjegyű kódot - sajátos módon - nem mi állítjuk be, hanem maga a készülék generálja. Ha jól olvassuk ki és - ugyancsak sajátos módon - jól adjuk be inputként, vagyis ha a két szám megegyezik, akkor nyílik ki az ajtó, akkor mondhatjuk, hogy a Szezám kitárul.

Mindenképpen arra törekedtem, hogy a készülék működés közben ne legyen a számítógéppel "köldökzsinórral " összekötve, így a négyjegyű kód bevitelét infra távirányítóval szándékoztam megoldani, de sajnos nem jött össze. Aztán Bluetooth kapcsolaton keresztüli soros terminállal is próbálkoztam, de az sem sikerült. Így a jobb oldalon olvasható megoldást a kényszer szülte.


A készülék főbb részegységei:

  • a rekesz és annak "SZEZÁM" feliratú, szervomotorral mozgatott ajtaja,

  • a 0-tól 9-ig (nem sorrendben) beskálázott, léptetőmotorral hajtott kódtárcsa,

  • a 4 LED-es kijelző,

  • a 4 digites számkijelző,

  • és két érintő szenzor (a jobb oldali megérintésére indul egy ciklus, a bal oldalinak a kód bevitelekor van szerepe).

A kód generálása: az alaphelyzetben fehéren világító 4 LED-es kijelző bal oldali LED-je kékre vált és a kódtárcsa véletlenszerűen elfordul. A kód első számjegye a két fehér pont vonalába eső szám lesz. Majd a felső LED vált kékre, ekkor kell a kódtárcsát ismét leolvasni, ez lesz a kód második számjegye. A maradék két LED is az óramutató járásával egyező irányban vált kékre, az ekkor leolvasott számjegyek adják a kód harmadik és negyedik elemét. (A kódtárcsa alaphelyzetében az 5-ös számjegyen áll. Ha egy újabb LED világít kék fénnyel, de a tárcsa nem mozdul, akkor értelemszerűen az 5-ös számjegy az értékes.)

A fenti módon kiolvasott kód bevitele: a számkijelzőn négyszer futnak végig 0-tól 9-ig a számok, itt ugyancsak a kékre váltó LED-ek jelzik, hogy hányadik szériánál tartunk. A bal oldali érintőszenzort akkor kell megérinteni, ha az adott szériában megjelenik a beadandó számjegy. Ha mind a négy sorozat lefutott, rövid ideig a LED-ek fehéren égnek. Majd ha minden stimmel, zöldre váltanak és kinyílik az ajtó. Ha a bevitt kód eltér a szükségestől, az ajtó csukva marad és a 4 LED pirosan világít.

A videóban mindkét esetre láthatunk példát.


Heuréka! Feltaláltam a világ legkisebb és legegyszerűbb színes fénymásolóját!

Már csak szabadalmaztatni kéne...

Az egyszerű tartókeret elülső részén, a bal oldalon a szín, a jobb oldalon egy érintő érzékelő, középen a 4 LED-es kijelző, mögöttük pedig a mikrokontroller, vagyis az alaplap található. Mozgó alkatrész tehát nincs, csak elektronika és a program.

Ha egy színes papírcsíkot csúsztatunk a szín érzékelő alá, majd megérintjük az érintő szenzort, a kijelző LED-jei a papírcsíkéval megegyező színnel világítanak. Itt azonban van egy kis trükk: az összes LED kigyulladását két LED vízszintes vagy függőleges irányú felváltva villogása, vagy egy körbefutó fény előzi meg. Hogy éppen melyik variáció működik, azt a program véletlen szerűen választja ki. Miután az összes LED kialudt, a folyamat újra indulhat, célszerűen más színű papírcsíkkal.

Ahogy a videóban is látható, a készülék piros, zöld, kék, sárga és fehér papírcsíkokkal működik. (A szenzor a fekete színt is felismerné, ám mint tudjuk, fekete fényt nem lehet kibocsátani, így ezért nincs fekete papírcsík.)

Ennek a robotnak a megépítéséhez az unokáktól "kölcsönvett" színes fakockák adták az ötletet .

Egy általam kitalált szisztéma szerint - a színeket alapul véve - manipulál a kockákkal. Így ismét szerepet kapott a színérzékelő szenzor.

4 db kockát lehet a léptetőmotor-fogasszíj kombóval mozgatott szánra helyezni. A készülék bal oldalán először a szenzor megállapítja a kockák színét, majd a szán jobbra haladása után egy szervomotorhoz erősített lengőkar - nevezzük kilökőnek - bizonyos szisztéma szerint a kockákat egy fix csúszdába juttatja.

Mivel csak 3 szín van, de 4 db kocka, így legalább 2 db kockának azonos színűnek kell lennie (extrém esetben mind a 4 db azonos színű). A színeknek viszont prioritási sorrendje van: 1. piros, 2. sárga, 3. zöld. Ez azt jelenti, hogy a csúszdába ilyen sorrendbe kerülnek a kockák, azaz legalul a piros(ak), majd a sárgá(k) végül a zöld(ek) következnek. Természetesen ha valamelyik szín hiányzik, akkor a sorrendben őt követő lép a helyébe.

A program először egy tömbben (array) eltárolja - jobbról balra haladva - a szánon lévő kockák színkódját és pozícióját, majd ebből előállít egy másik tömböt, mely - a színek prioritását alapul véve - a kiürítendő pozíciók sorrendjét tartalmazza. Tehát ez utóbbi tömb vezérli a szán kiürítését.

A videóban két hangvezérlésre induló ciklus látható: az elsőben két piros, egy sárga és egy zöld kocka szerepel, a másodikban két sárga és két zöld (itt tehát a piros hiányzik).

Egy egyszerű példa arra, hogyan lehet egy adott paraméterrel (ultrahangos távérzékelő inputjával) más paramétereket (motor fordulatszámát, LCD kijelzőn megjelenő sorok számát) vezérelni.

A DC motor tengelyére rögzített fogasszíj tárcsa 1:1 áttételen keresztül egy másikat hajt meg, melyhez egy korong van erősítve. Ennek persze nem sok értelme van, de így legalább kipróbálhattam a két kis méretű tárcsához újonnan beszerzett határoló gyűrűket is, melyek a szíjat a nyomvonalán tartják. (A nagyobb tárcsákhoz eleve volt a készletben.)

A készülék 3 féle üzemmódját infra távirányítóval lehet kiválasztani:

  • a kéz távolsága az UH érzékelőtől lineárisan vezérli a motor fordulatszámát,

  • a LED mátrixon a távolsággal arányos magasságig gyulladnak ki a sorok,

  • a kettő kombinációja.

Mindegyik esetre igaz, hogy az arányosság 4 cm és 24 cm kéztávolságig áll fent (az alatt illetve afölött a motor áll, illetve inaktív a LED mátrix), és 25 másodperc után automatikusan leállnak.

A videóban mindhárom esetre láthatunk példát.

Ez egy olyan zászlórúd, amely képes öt európai ország színes papírsávokból összerakott zászlóit (trikolór) beazonosítani, majd azokat felvonni és kis késleltetés után leereszteni.

A készülék két üzemmódban működhet: csak beazonosít illetve beazonosít, majd ezt követően felvonja a zászlót. Az üzemmód kiválasztása és indítása infra távirányítóval történik.


A színek beazonosítását magától értetődően a színérzékelő végzi. Ezt követően a program a készülék memóriájában eltárolt öt zászló adataival összehasonlítja, és amelyik esetében fennáll az egyezőség, a LED mátrixon megjeleníti az adott ország nemzetközi betűjelét.

A szenzor egy szervomotor által billenthető karhoz van erősítve, mely az azonosításkor a zászlóval párhuzamosan áll, egyébként azzal szöget zár be a jobb láthatóság kedvéért. A zászló papírsávjai egy olyan tartóhoz vannak cserélhető módon erősítve, melyet egy encoder motor által forgatott menetes rúd mozgat függőleges irányban.

A videóban először a magyar zászló példáján a teljes folyamatot láthatjuk, ezt követően az osztrák, a holland és a bolgár zászló beazonosítását, végül a német zászló esetében ugyancsak a teljes folyamatot. Az első ciklus eredeti sebességgel került a videóba, a másik négy háromszoros sebességre felgyorsítva, de így is közel 4 perces lett a teljes felvétel. Mivel az erősebb környezeti fényviszonyok befolyásolhatják a szenzor helyes működését, ezért a felvétel a megszokotthoz képest diszkrét félhomályban készült.

A mechanikus elemkészletem is bővült, mégpedig egy talpcsapággyal. Ennek felhasználásával készült ez a kis demonstrációs készülék.

A Ferrari modellt egy DC motor forgatja fogaskerék áttételen keresztül. A nagyobbik, azaz a hajtott fogaskereket rögzítettem a talpcsapágyhoz. Az autót pedig ugyancsak a hajtott kerékhez erősített tartószerkezet rögzíti.

Néhány kiegészítő eszközt is tartalmaz a készülék: a LED csíkot és a 4 LED-es áramkört a megvilágításhoz, a LED mátrixot a "fényújsághoz" használtam fel.

A videó elején - szokás szerint - a szerkezet felépítését mutatom be, ezt követően egy ciklus lefutása látható, mely hangvezérlésre indul, és 20 másodperc után automatikusan leáll.

Megjegyzem, hogy a mikrokontroller ugyan méri a bekapcsolásától (indításától) eltelt időt milliszekundumban, de időzítő funkciója nincs, így azt szoftveresen lehet csak megoldani. A ciklus indításakor egy változó értéke az akkori (aktuális) időpont lesz, a program pedig folyamatosan figyeli a pillanatnyi idő és a változó értéke közötti különbséget. Ha ez eléri a 20000 milliszekundumot, akkor állítja le a ciklust.

Új eszközzel bővítettem a szenzorok körét: egy színérzékelővel. Ezt kipróbálandó - első sorban a programozását - építettem meg ezt a készüléket.

Egy léptető motor által forgatott tárcsa szegmenseire 6 különböző színű címkét ragasztottam, a jobb láthatóság érdekében a szegmensek belső oldalára ugyanolyan színű 2-2 pötty is került. A színérzékelőt a tárcsától balra, függőleges helyzetben rögzítettem. Egy másik léptetőmotor egy olyan függőleges tengelyű korongot forgat, melyre sugárirányban ráírtam a 6 színt. Egy kicsit megbolondítottam a dolgot, mert a színes címkék és a feliratok sorrendje eltérő. Alaphelyzetben a színtárcsa kék címkéje van az érzékelővel szemben, míg a korong fehér feliratára mutat az indikátor csík.

A hangvezérlésre induló ciklus indulásakor először egy véletlenszerűen kiválasztott szegmens, azaz szín fordul az érzékelő elé, az azonosítása után pedig a korong megfelelő felirata kerül az indikátor jelzéshez. Ezt követően a maradék 5 szín beazonosítása történik. Amikor a számkijelző elérte a 6-os számot, a tárcsa és a korong visszaáll az alaphelyzetébe, és újra indulhat a folyamat. A videóban két ciklus követi egymást, az első a fehér, a második a piros színnel indul.

Lehet-e a matekot a hajtástechnikával ötvözni?

Ez a készülék hivatott arra, hogy a fenti kérdésre pozitív választ adjon.

Van egy 16 fogú, egy léptetőmotor tengelyére erősített meghajtó fogaskerék, melyhez jobb oldalon egy 80 fogú, a bal oldalon pedig egy 48 fogú, szabadonfutó fogaskerék csatlakozik. A kérdés: legalább hány fordulatot kell megtennie a meghajtó keréknek, hogy a két másik kerék néhány egész fordulat megtétele után - a kiinduló helyzethez hasonlóan - ismét együtt álljon? Könnyen belátható, hogy 15-öt, azaz a jobboldali és a baloldali áttételek, vagyis a 80/16=5 és a 48/16=3 legkisebb közös többszörösét. Ekkor ugyanis az együttállás a jobboldali kerék 3 és a baloldali kerék 5 teljes fordulata után következik be.

Egy infra távirányítóval két variácót lehet indítani. A videóban az első esetben a meghajtó kerék egyesével fordul egészen 15-ig, a hajtott kerekek teljes fordulatait a megfelelő oldalon egy-egy LED fehér fénnyel jelzi. A második esetben a hajtókerék folyamatosan forog, itt csak az együttállást jelzi a két LED. Mindkét variációban - a léptetőmotor programozása miatt - ellenkező irányban, ugyancsak 15 fordulat megtétele után, vissza kell állni a kiinduló helyzetbe. Bármelyik variáció akkor indítható, ha mind a 4 LED zölden világít.

Szó ami szó, nem ez lett a legkisebb és a legkönnyebb robotom. Robusztus ide, robusztus oda, egy vízszintesen mozgó platformról egy függőlegesen mozgóra helyez át egy gyufásdobozt némi rafinériával.


A tartólemezek egy vízszintesen és egy függőlegesen - léptetőmotorok és fogasszíjak révén - mozgatott szánhoz vannak erősítve. A vízszintesen mozgó lemez egy bizonyos pozícióban a másikhoz képest egy picit magasabban van, így a ráhelyezett gyufásdoboz, ha a hátsó oldalát megtámasztjuk, átcsúszik a másik lemezre, amíg az első "kihátrál" alóla. A támasztékul szolgáló billenőkart szervomotor mozgatja. A készüléket egy infravörös távirányítóval lehet különböző módokon indítani. A készülék 4 LED-es kijelzőjének két funkciója van: egyrészt az éppen mozgó szán irányát egy zölden világító LED jelzi, másrészt, ha mind a 4 LED fehéren világít, a készülék várja a távirányító újabb "parancsát".

A program moduláris felépítése lehetővé teszi, hogy a működési fázisokat akár egyenként, akár egy ciklusba foglalva indítsuk a távirányítóval. A videóban mindkét lehetőséget bemutatom.

Az ipari robotok világában vannak olyan szerkezetek, amelyek a szerelőszalagon haladó nagyobb munkadarabokat fordítanak át egy következő munkafolyamathoz. Ez a kis készülék egy ilyen berendezés működését leegyszerűsítve szimulálja.

A munkadarabot itt egy gyufásdoboz jelenti, amelyet egy szán mozgat az átfordító gripper nyitott karmai közé. Ezt követően a gripper megfogja, majd a szán kismértékben jobbra kitér, így elkerülve az esetleges felakadást, aztán visszatér a már 180 fokban elfordított és elengedett munkadarabért és azt visszaviszi a kiinduló helyzetbe. Végül a gripper üresjáratban visszafordul.

A szánt egy léptetőmotor mozgatja, a grippert egy encoder motor forgatja, míg annak karmait saját mikró DC motorja nyitja/zárja.

A munkadarab, azaz a gyufásdoboz mindkét oldalára a gripper jobb tapadása érdekében öntapadó filc darabokat ragasztottam.

A videóban a fent leírt ciklus látható, mely hangvezérlésre indul. A LED mátrix az éppen folyamatban lévő művelet piktogramját mutatja.

Férfiasan bevallom, az alapötletet az internetről merítettem.

Ez egy nem helyhez kötött kis szerkezet, ilyet már régen készítettem. Infra távvezérléssel indítható és állítható meg.

A mechanikai felépítése nagyon egyszerű: két, téglalap alakú keret felső "éleit" egy közös tengely, az alsó "éleiket" pedig két, szabadon forgó tengely alkotja. Ez utóbbiakra kisméretű műanyag kerekeket erősítettem, melyeket a fémépítő játékból kölcsönöztem. A szerkezet váza tehát oldalról nézve egy fordított "V" betűhöz hasonlít, melyek szárai egymáshoz képest különböző szögeket zárhatnak be. Egy normál DC motor által hajtott forgattyús mechanizmus adott határok között csökkenti/növeli ezt a szöget. Ha a két keretszerkezet súlyaránya és a motor sebessége jól van beállítva, azaz az inerciaviszonyok megfelelőek, akkor a földre helyezve a szerkezet - a periódikus szögváltozás hatására - a négy kerekén araszoló mozgást végez.

Elég sok időbe tellett, amíg sikerült megfelelően elosztani a súlyokat, sőt, a teleptartót hordozó oldalra kiegészítő súlyokat is rögzíteni kellett.

Az Arduino programja nagyon egyszerű, csak néhány soros, ahogy a "Minta programok" között is látható.

Centenáriumhoz érkeztem: elkészült a századik! Bevallom öncélú, mert a 100-as számra van kihegyezve. Kicsit hasonlít a Hetvenedikhez, de van néhány különbség, melyet a jobb oldali szövegben részletezek.

Alapvető különbségek a Hetvenedikhez lépest:

  • Fémépítőből készült arab számjegyei vannak.

  • A számokat szervomotorok forgatják be: az 1-est egy mikró, a két 0-át pedig normál méretűek.

  • A bal oldali encoder motor (tengelyén egy tárcsával) szakaszosan 10+20+30+40=100 fordulatot tesz meg. A rövid szünetekben a számkijelző az addig megtett fordulatok összegét mutatja.

  • Miután a motor megtette a 100 fordulatot, a LED csíkon 5 db LED fehéren világít, egészen addig, amíg mindhárom számjegy befordul. Az elsőként beforduló számjegyet véletlenszerűen választja ki a program, ezt követi a mindenkori baloldali, majd a jobboldali. A "kész" 100-as szám váltakozó színű, rivaldaszerű megvilágítást kap, majd néhány másodperc elteltével a készülék alaphelyzetbe áll.

A videóban a hangvezérlésre induló ciklusban a fenti teljes folyamat látható, melyben az elsőként beforduló számjegy a jobb szélső 0. Ezt követi egy töredék ciklus, melyben az elsőként beforduló karakter a bal szélső 1-es.

Eddig valahogy kimaradt az Arduino programozásból a beépített mikró DC motorral működő, nagyméretű megfogó, azaz a gripper. Ez a készülék ezt a hiányt pótolja.


A gripper oda-vissza irányú, 90 fokos elfordítását illetve a 45 fokos fel-le döntését két, összeépített szervomotor, a karmok nyitását-zárását pedig a saját mikrómotorja végzi.

A szerkezet nélkülöz minden különösebb látványosságot, csupán egy dobozt helyez át jobbról balra, vagy fordítva. A hangvezérlésre induló ciklus elején a program megvizsgálja, hogy a beépített ultrahangos szenzor "látja-e" a dobozt. Ha igen, akkor az átrakás jobbról balra történik, ellenkező esetben fordított irányban. Az elnevezése is ebből adódott, hiszen egy feltételtől függ a további működése.

A két szótár szerepe csupán az, hogy a dobozt a biztonságos megfogáshoz szükséges magasságban tartsa.

No para! Nem nukleáris, nincs atomtöltet, így nem is robbanhat, csak reakcióidőt mér.

A szerintem találó elnevezés tehát a "reakcióra" utal. Ennek ellenére bízom benne, hogy senkiben sem indít be láncreakciót...

Ez a kis kompakt készülék 3 kijelzőből (LED mátrix, 4 LED, számkijelző) és két, + és - jellel ellátott, mikrókapcsolókat működtető (billenő) nyomógombból áll.

Egy ciklus 10 reakcióidő mérést végez, a végeredmény ezek számtani átlaga. A folyamat a következő:

  • Hangvezérlésre piros-sárga-zöld jelzéssel indul.

  • A számkijelzőn megjelenik a mérés sorszáma, ezzel egyidejűleg a LED mátrixon 0.5 mp-ig felvillan véletlenszerűen egy + vagy - jel.

  • Ha a megfelelő gombot nyomjuk meg, a számkijelzőn megjelenik az aktuális reakcióidő ezred mp. pontossággal. (A program az időt a jel kialvásától a gomb megnyomásáig méri.)

  • A 10. mérés után a mátrixon először egy OK felirat jelenik meg, majd egy = jel. Ekkor a számkijelző már a végeredményt, azaz az átlagértéket mutatja.

  • Ha menet közben nem a megfelelő gombot nyomjuk meg, a 4 LED pirosan világít. Ekkor nincs kiértékelés, a ciklust elölről kell kezdeni. (A videó elején erre látható példa: a 4. méréskor rossz gombot nyomtam meg.)

Ez a készülék a már többször használt (pl. a Csereberélőben) Encoder motor Arduino programozási lehetőségeit demonstrálja.

Az Encoder motor egy olyan DC motor, melynek a végén egy, a tengelyére erősített forgórész található. A forgórész palástján 8 db hasíték (strigula) van, melyeket egy optoelektronikai egység érzékel, így lehetővé téve az elfordulási szög vagy az elfordulások meghatározását, a helyzetbe állást, stb. Kevésbé pontos, mint a léptetőmotor, de bizonyos célokra megfelel.

Csupán a teljesség kedvéért: ehhez a motorfajtához külön vezérlő áramkör (driver) is tartozik.

Az Encoder motort négyféle módon lehet Arduino nyelven programozni, erre mutat példát a videó. Az első fázisban az elforduló strigulák száma és a sebesség, a másodikban a fokban megadott szögelfordulás és a sebesség, a harmadikban a sebesség és a forgás ideje, a negyedikben pedig a megteendő fordulat abszolút száma és a sebesség a két-két vezérlő paraméter. Ezek közül bármelyik lehet tizedes tört is, de az utolsó eset kivételével egész számokat programoztam. A strigulák száma és szögelfordulás negatív szám is lehet, ezért az első két fázisban a visszaállás önmagában is megoldott. A harmadik esetben viszont nem, ezért volt szükség befejezésként a 0,36 fordulatra.

A videóban a LED mátrixon az éppen aktuális paraméterek szimbólumai, a számkijelzőn pedig a mértékei láthatók:

  • || - a strigulák száma = 500,

  • o - a szögelfordulás =540, vagyis 1,5 fordulat,

  • t - az idő = 4

  • n - a fordulat száma = 0,36

  • v - a sebesség = 100,

  • - - szünet.

Eddig kimaradt az Arduino programozásból az a bizonyos fekete-fehér érzékelő, ezért készítettem el a Szókirakót, mely az ARDUINO szó betűivel felcímkézett, és a rövid oldalukon kódolással ellátott gyufásdobozokból rakja ki a szót.

Elöljáróban megjegyzem, hogy a szenzor - lánykori nevén: Line Follower - eredeti funkciója önjáró robotok fekete vonalon történő nyomkövetése. De mint már láthattuk, egyéb módon is felhasználható, például a Dominó pötty számláló esetében.

A mostani készüléknél a fő hangsúlyt a programozás technikájára fektettem, ezért mechanikailag viszonylag egyszerű a felépítése. A gyufásdobozokat tetszőleges sorrendben kézzel lehet a léptetőmotor-fogasszíj hajtású szánra helyezni és a fekete-fehér dekódolás után az asztalra a szán által kijelölt helyre tenni. A fix dekódoló szenzor a szán bal oldali alaphelyzete mögött található.

A 7 betű rendre 0-tól 6-ig kódolt, de mivel a szenzornak csak 4 kimeneti értéke lehet (0-tól 3-ig), ezért minden betű kódja két (fél gyufásdoboznyi szélességű) kód összege. Pl.: az R esetében 0+1=1, az N esetében 2+3=5.

A ciklus érintésre indul, a szánra helyezett dobozok a két kód kiolvasása alatt oda-vissza mozgást végeznek, majd a végleges (összegzett) kódjuknak (ez megjelenik a LED mátrixon is) megfelelő helyre kerülnek. A szán üresen hangparancsra tér vissza az alaphelyzetébe. Ha mind a 7 db betű a helyére került, a LED mátrixon fényújságként háromszor végigfut az ARDUINO felirat.

Bármily hihetetlen, de ez egy napraforgó! Kicsit eltér a szokásostól, nem növény, hanem fémből, műanyagból és elektronikai alkatrészekből épül fel. Viszont megtalálja a legerősebb fényforrást, azaz a Napot szimbolizáló zseblámpát, és felé fordul.

A "tányérvirágot" a zavaró fények kiküszöbölése miatt leárnyékolt fényérzékelő testesíti meg. Ez - nevezzük fejegységnek - egy vízszintes tengelyű szervomotorhoz csatlakozik, az pedig egy függőleges tengelyűhöz. Így a fejegység vízszintesen és függőlegesen is bizonyos szögtartományban képes elfordulni.

A hangvezérlésre induló ciklusban a fejegység először vízszintes irányban 5°-onként végiglépked a - jelen esetben 60°-ra beállított - szögtartományon, miközben minden pozícióban méri a fényerősséget. A program az adatokat egy tömbben tárolja, majd kiválasztja a maximális értéket és a fejegységet annak pozíciójába visszaállítja . Ebben a helyzetben a fejegység a függőleges irányú, ugyancsak 60°-os szögtartományt tapogatja végig hasonló módon, és itt is visszaáll a maximális érték pozíciójába. Így a kétirányú letapogatás és a visszaállások után a fejegység, azaz a "tányérvirág" a megvilágító zseblámpa felé néz, majd kis késleltetés után alaphelyzetbe áll.

Ciklus közben a 4 LED-es kijelzőn a letapogatás iránya, a numerikus kijelzőn az éppen mért értékek láthatók, a végbeállás után pedig az abban a helyzetben mért érték.

A videóban egy gyengébb és egy erősebb környezeti fényviszonyok között lefutó ciklus látható.

Ez a készülék lényegében a Konvejornál vagy a Libegőnél használatos technikán alapszik, csak kissé másképpen. A végtelenített gumilánc és a hozzá erősített két, átfordulás közben a függőleges helyzetét megtartó fülke-imitáció a páternoszter működési elvét hivatott szemléltetni.

A valóságban két végtelenített és szinkronban mozgó hajtáslánc mozgatja és tartja vízszintes helyzetben azokat a rudakat, melyekhez a fülkék mereven csatlakoznak. (Lásd pl.: https://youtu.be/6o7K4ZW0pXc )

Mivel az én elemkészletem ilyen felépítést nem tesz lehetővé, ezért csak egy egyszerű mechanikai imitációra futotta.

A végtelenített szíjat az alsó tárcsa révén egy egyszerű DC motor hajtja, mely csak két paraméterrel vezérelhető: a fordulatszámával (szögsebességével) és a működési idejével.

Ahogy a videóban is látható, ez utóbbi 20 másodperc. A kijelző innen számol visszafelé egész másodpercenként, tehát a még hátralévő időt mutatja.

Az Arduino programmal feltöltött mikrokontroller a program futásának kezdetétől (tehát a tápfeszültség rákapcsolásától) milliszekundumban méri az időt. Ez azt jelenti, hogy meg kell határozni az adott időtartam (pl. a 20 mp.) kezdeti, azaz a ciklus hangvezérléses indításának aktuális időpillanatát. Ez a programban speciális függvények használatával oldható meg.

Sikerült megvalósítani a kétirányú kommunikációt Bluetooth kapcsolaton keresztül is. Ennek demonstrálására készült ez a szerkezet, mely különböző módon reagál a fogadott vezérlő karakterekre.

A számítógépen egy Bluetooth Serial Terminal nevű alkalmazás fut. (Ld. a videó végén!) Hasonlóan működik, mint az Analóg digitális mérőműszernél bemutatott serial monitor, de a mikrokontrollerrel nem vezetékes (USB) összeköttetésen keresztül kommunikál, hanem a két eszköz párosított Bluetooth rádió ki/bemenetein.

Az összesen három mikró szervomotorral mozgatott gripper, a 4 LED-es és a numerikus kijelző reagál a számítógéptől kapott vezérlő karakterekre. Bár jelen esetben ezek számjegyek, de a kétirányú kommunikáció az ASCII kódjait használja, ahogy az a videó végén megjelenő képernyőképen is látható. A KI a számítógépről küldött, a BE pedig a készülék által fogadott karakter ASCII kódját mutatja, melyeknek természetesen egyezniük kell. A numerikus kijelzőn történő megjelenítéshez a program a kódot visszakonvertálja az eredeti karakterre.

A vezérlő karakterek a számítógép numerikus billentyűzetén elfoglalt helyzetük révén alkalmazkodnak a mechanizmus mozgási irányához. Így például a felfelé billentést a 8-as, a jobbra billentést a 6-os vezérli, a semleges alaphelyzetet az 5-ös karakter.

Lényegében ugyan azt tudja, mint egy korábbi készülék, a Multiméter: fényerőt, távolságot és hangerőt mér. De az eredmények megjelenítése ennél a készüléknél más: egyrészt "analóg" formában egy forgó skála révén, másrészt digitális formában a négyjegyű számkijelzőn.

Fontos szerep jutott az ún. soros monitornak (serial monitor) is, mely a számítógépen fut. Éppen ezért van szükség a két eszköz közötti USB összeköttetésre, annak ellenére, hogy maga a vezérlő program a robot "agyába", azaz a mikrokontrollerbe került feltöltésre.

Itt jegyzem meg, hogy a kétirányú kommunikáció vezeték nélküli, azaz bluetooth kapcsolattal is megoldható, de ennek sikeres használatához van még mit tanulnom.

A készülék érzékelői tehát megegyeznek a korábbi változatéval. A fény- és a hangerő szenzorok kimenetei mértékegység nélküli, relatív mérőszámok, egyedül az ultrahangos távolságmérő mér abszolút távolságot cm-ben.

A léptetőmotor által hajtott, 3/4-ed körívet átfogó skála ezért nem tartalmaz számokat, csupán az óramutató járásával megegyező, vagyis növekvő irányban egyre hosszabb strigulákat a MIN és MAX feliratok között. Fénymérés esetén a két szélső érték 100 és 1000, távolságmérés esetén 0 és 300 cm, hangerő mérés esetén pedig 100 és 600. A program úgy vezérli a léptető motort, hogy az az aktuális mérés eredményével arányos mértékig forgassa a skálát a tőle balra elhelyezkedő jelzésig. A mérőszám egyúttal a számkijelzőn is megjelenik.

A program felépítése moduláris, azaz tetszőleges sorrendben kiválasztható a következő mérés típusa. (Csupán demó célokat szolgál a skála mérés nélküli, oda-vissza irányú forgatása.) A készülék egyébként típusonként 5 mintavételes mérést végez. Hogy éppen melyik mérés zajlik, azt a megfelelő szenzorhoz legközelebbi indikátor LED jelzi zöld fénnyel (bal oldali: fényerő mérés, felső: távolságmérés, jobb oldali: hangerő mérés ), a szenzor aktív állapotát, vagyis a mintavétel pillanatát pedig a legalsó LED felvillanása jelzi. Az 5. mérés után az indikátor LED egy rövid időre pirosra vált, a skála visszatér a MIN helyzetbe és a kijelző 0-át mutat

A következő mérés típusának kiválasztása vezérlő karakterrel történik. Nos, ennek bevitelére szolgál a soros monitor. A videóban az egyes mérések után ennek képernyőképe látható. A legfelső sorban a következő mérést kijelölő vezérlő karakter, ez alatt pedig a már lefutott mérések láthatók (az utolsó jelenik meg legalul).


"Az okos otthon technikai megoldások együttese, amelyek többé kevésbé egymással együttműködve lehetővé teszik a házban működő különböző rendszerek és alrendszerek központi irányítását... Ezt az egymással és a működtető személlyel hálózati kapcsolatban álló egyes fizikai tárgyakba és eszközökbe beágyazott elektronika, annak szoftvere, és az érzékelők (szenzorok) teszik lehetővé, amit a "dolgok internetjének" (Internet of Things - IoT) neveznek."

(Forrás: Wikipédia)


Az én kis okos otthonom a fenti táblázatban látható berendezésekből áll. Természetesen minden stilizálva van, pl. a mosógép forgódobját egy forgó tárcsa, a mosogatógépet egy billenő szórófej szimbolizálja, a légkondi központi egységét egy forgó ventilátor imitálja.

A mosó- és mosogatógépet egy-egy encoder motor, a légkondit egy DC motor, a kaput pedig egy léptetőmotor hajtja. A TV-t a LED mátrix szimbolizálja, a lámpát pedig négy LED alkotja.

A lámpa és a légkondi két működési fokozattal bír: min. és max., a többi vagy ki- vagy bekapcsolt állapotban van.

A videóban azok a táblázatban feltüntetett kezdési időpontok (órák) jelennek meg a számkijelzőn, amikor valamilyen változás bekövetkezik. Ez nagyjából egy átlagos család napirendjéhez igazodik (reggeli ténykedések, munkába ill. iskolába indulás, hazaérkezés, vacsora, TV nézés, lefekvés...)

A készülék időskálája szándékosan nem egyenletes, így feleslegesen nem hosszabbítja a videót, hiszen pl. 7-től 16 óráig nem történik semmi.

A nagy Arduino lázban majdnem átsiklottam egy újabb jubileumon. Az Arduino gyakorló deszkamodelljeit nem számítva, a kilencvenedik robothoz érkeztem. Ezért egy olyan készüléket raktam össze, melynek különféle részegységei, különböző módokon számolnak el kilencvenig.

És még egy harang is meg-megkondul.

A számolást egyesével egy számkijelző elektronikusan, és két, 0-tól 9-ig számozott tárcsa mechanikusan végzi. (A tárcsákat léptetőmotorok forgatják, a jobb oldali egyesével "lépked", a bal oldali pedig minden tizedikre.)

A kerek, tízzel osztható számok esetében az alul lévő LED csíkon egy-egy újabb LED gyullad ki, egyúttal megkondul a harang és a felette lévő LED mátrixon is megjelenik az adott szám.

A harang nyelve egy kapupánt csavar, melyet egy szervomotor billent alulról és belülről a harang palástjához, így megkongatva azt.

A hangvezérlésre induló ciklus tehát elszámol kilencvenig, de a fentieknek megfelelően minden tizedik számhoz "megkülönböztetett jelzések" is járulnak.

A kilencven elérése után a program még háromszor megvillogtatja a LED-eket, egyúttal a harangot is megkongatja.

A videóban két ciklus látható. Az elsőt állványra rögzített, a másodikat kézben tartott videó kamerával vettem fel. Így talán jobban látható a részegységek működése.

Az Univerzum legextrémebb, józan ésszel szinte felfoghatatlan objektumai a fekete lyukak. Egy csillag halálakor, a szupernóva robbanást követően keletkeznek, és hihetetlen mértékű tömegüknek akkora a gravitációja, hogy onnan még a fény sem jut ki.

Nos, mostanában elég sok ilyen témájú ismeretterjesztő filmet láttam, ez inspirált, hogy egy olyan készüléket konstruáljak, melynek révén - bár más törvényszerűségen alapszik - kellőképpen tisztelegjek ezen csodálatos képződmények előtt.

A készülék azt az ismert jelenséget használja ki, hogy természetes nappali fényben a fehér felület a fény nagy részét visszaveri, a fekete majdnem mindent elnyel.

Egy, az egyik oldalán fehér, a másik oldalán pedig fekete korongot egy 180 fokban elforduló szervó motorra erősítettem, és ezt az egységet pedig egy olyan egyenesen haladó szánra, melyet egy menetes rúd mozgat oda-vissza kb. 8-8 cm-nyit. A menetes rudat egy DC motor forgatja, a szán két oldalán pedig végállás kapcsolóként működő mikrókapcsolók vannak.

A korong fehér fényű megvilágítását 4 db LED biztosítja, a korongról visszavert fényerősséget pedig egy szenzor érzékeli, és a mért értékeket egy számkijelző mutatja.

A ciklus elején a szán középen áll és a korong fekete oldala fordul a fényforrás felé. Ezt követően a szán elmegy a bal oldali (a fényforráshoz közelebbi) véghelyzetéhez, majd onnan távolodik az ellentétes véghelyzete felé, miközben a kijelzőn folyamatosan láthatjuk a visszavert fény erősségét. Elérve a jobb oldali véghelyzetét, a mérés leáll, a szán beáll középre, a korong átvált a fehér oldalára, és innentől megismétlődik a fenti folyamat. A ciklus végén a szán ismét középre áll.

Ahogy a kijelzőn látható, a korong fekete oldala esetében a visszavert fény a távolságtól függően kb. 540-480 közötti értékeket generál, a fehér esetében pedig kb. 950-570 közöttieket. Ebből az is kiolvasható, hogy a fehér felület a legtávolabbi helyzetében is több fényt ver vissza (570), mint a fekete a fényforráshoz legközelebbi helyzetében (540). Íme a fekete lyuk...:-)



Ez a kompakt kis szerkezet egy léptetőmotor, két standard és két mikró szervomotor révén végső soron egy öt szabadságfokú megfogó szerkezetet (grippert) működtet.

A robotkarnak három szabadságfoka van. Egyrészt függőleges tengely körül elfordulhat, másrészt a tartóoszlopa dőlésszögétől függetlenül azzal tetszőleges szöget zárhat be. Így arra is van lehetőség, hogy önmagával párhuzamosan elmozdulhasson.

A végéhez erősített gripper nem csak nyitható-zárható, hanem billenthető is. Így maga a gripper végül is 5 szabadságfokú.

A forgatás fogasszíj hajtáson keresztül léptetőmotorral történik. A tartóoszlop két sztenderd szervomotorból áll, az alsó az oszlop, a felső pedig a kar döntését végzi, míg a gripper billentését illetve nyitását-zárását két mikró szervomotor.

A programban a paramétereket úgy állítottam be, hogy az oszlop oda-vissza 1/4-1/4 fordulatot végezzen, az oszlopot alkotó és a grippert billentő szervomotorok elfordulási szöge pedig 45° legyen. A gripper nyitási-zárási szöge egyedi, az függ a megfogandó tárgy méretétől. Természetesen bizonyos határok között más értékek is beállíthatók lennének.

A program - mely a Minta programok között megtalálható - moduláris felépítésű, a különböző mozgásokat összesen hét szubrutin írja le, melyek egyedileg, infra távvezérlővel hívhatók meg. Ez azt jelenti, hogy a programnak nincs önállóan lefutó, egybefüggő ága.

Az Arduino (C/C++ ) programnyelv az ékezetes betűket nem tudja kezelni, csupán a // jel utáni megjegyzésekben. Ezért a szubrutinoknak angol nevet adtam, de a mellettük lévő megjegyzésből magyarul is kiolvasható, hogy mi a rendeltetésük.





Remélhetőleg a jobb oldali magyarázó szövegben minden lényeges információt leírtam, így talán érthető, hogy a szerkezet működése nem tökéletes, nem az elvárt módon "viselkedik".


Még annyi megjegyzést bátorkodom hozzáfűzni, hogy a TÜV-Cert auditorok szíveskedjenek a kritikai megjegyzéseiket kíméletes formában előadni, mert mint tudjuk, ők borzalmas emberek...:-)

A Kamera csúszka elkészülte után a nagy szellemek (Gabi és Gyuri bácsi) ismét találkoztak. Kölcsönösen úgy vélték, hogy a mobil kamera folyamatos iránytartását a Makeblock "Me 3-Axis Accelerometer and Gyro Sensor" nevű áramkörével is meg lehetne oldani, kiváltva a trigonometriai függvény használatát.

Nos, a korábbi tapasztalataimra, újabb kísérleteimre és az interneten fellelhető, ezzel kapcsolatos angol nyelvű anyagokra támaszkodva arra a következtetésre jutottam, hogy erre a célra, vagyis a függőleges tengely körül elforduló mobiltelefonhoz ez az eszköz nem alkalmas. Az indoklással több oldalt is teleírhatnék, itt csak annyit jegyeznék meg, hogy

  • a Makeblock áramköre a neve ellenére egy lebutított változat, mert csak szögelfordulás mérésére alkalmas, outputként szögsebességeket, gyorsulási adatokat nem lehet kiolvasni belőle,

  • a beépítési pozíciója erősen behatárolt,

  • a függőleges tengelye körüli elfordulás értéke instabil.

Létezik ugyan az originál ARDUINO mikrokontrollerhez használható mindentudó eszköz (Pl.: az MPU 6050 áramkör), én viszont egyikkel sem rendelkezem.

Úgyhogy kényszerűségből koncepciót váltottam, és egy olyan kétcsuklós eszközt építettem, melyben a kamera (vagyis a mobiltelefon) elvileg állandó, függőleges helyzetben marad.

A telefon tartót egy kézzel billenthető, vízszintesen csapágyazott rúdra építettem. Mégpedig oly módon, hogy azt a billenő karhoz erősített, szintén vízszintes tengelyű DC motor tartsa függőleges helyzetben, a billenthető rúd pillanatnyi szöghelyzetétől függetlenül. A DC motort a telefon tartóra erősített gyro eszköz vezérli. (A szakirodalom az ilyen jellegű készülékeket "Camera glimbal" néven emlegeti.)

A videó ezt a működést mutatja be, a bal alsó sarokban a mobil kamerája által rögzített felvétel látható. Sajnos a már említett korlátok miatt az iránytartás így sem tökéletes, a függőlegesbe állás nem stabil. A viszonylag nehéz, így nagy tehetetlenségű telefon + tartó miatt bizonyos gyorsulási adatokra lenne szükség, de ahogy már említettem, azok az általam használt szenzorból nem kinyerhetők.

Egy nagyméretű, de egyszerű konstrukció, egy kis trigonometria, Arduino programozás és egy kis operatőrködés. Ez a Kamera csúszka lényege.

A profi filmes Kamera csúszka (angolul: Camera slider) egy olyan szerkezet, melyen maga a kamera egyenesvonalú mozgást végez, de az optikáját ettől függetlenül tetszőleges irányba lehet állítani, ki- vagy bezoomolni, pásztázni, stb.

Ennek mintájára építettem meg a saját készülékemet. A már korábbról ismert, léptetőmotorral és fogasszíjjal hajtott és egyenesbe vezetett csúszkára egy másik léptetőmotort erősítettem. Ennek tengelyére pedig egy mobiltelefon tartót applikáltam úgy, hogy a hátlapi kamerát szabadon hagyja, és az a motor forgástengelyének képzeletbeli meghosszabbításába essen. A telefon oda-vissza 30 cm-nyi egyenesvonalú mozgást végezhet, miközben akár 180 fokot is elfordulhat.

A program négyféle ciklust vezérel, melyek kiválasztása infra-távirányítóval, indításuk hangutasításra történik.

  1. A mobil kamera oda-vissza 30 cm-t tesz meg elfordulás nélkül.

  2. A mobil kamera 90 fokot elfordul, ezután halad oda-vissza, majd visszafordul.

  3. A mobil kamera 180 fokot fordul el, ezután halad oda-vissza, majd visszafordul.

  4. A mobil kamera négy diszkrét helyzetben (0, 10, 20 és 30 cm) néhány másodpercre megáll, miközben annyit fordul el, hogy a látótere közepén a külső kamera látszódjon. Visszamenetben már az eredeti síkjában pásztázza a környezetet.

Itt segítségül kellett hívnom a trigonometriát, ahogy az a mellékelt vázlaton látható. A külső kamera a derékszögű háromszög O pontjában, a mobil pedig a B pontban van, így a mobil kamera mindenkori "fi" állásszöge arcus tangens függvénnyel határozható meg. Az Arduino nyelv a tangens függvényt ismeri, de az inverzét nem. Ezért egy trükkhöz folyamodtam: a "fi" szöget az arcus tangens hatványsorával közelítve számítja ki a program mind a négy helyzetben.: x=0, x=10, x=20 és x=30 cm. A külső kamera optikájának merőleges távolsága állandó, azaz L= 80 cm.

A videó a szokásos módon először a felépítést mutatja be, ezután következik a külső kamerával rögzített négy ciklus, végül az egyidejűleg rögzített mobil kamera felvétele. Ezen jól kivehető, hogy a 4. ciklus négy diszkrét helyzetében valóban a külső kamerára fókuszál.

A teljes Arduino program a Minta programok között megtalálható.