Ezt a készüléket első sorban az új beszerzésű alkatrészek kipróbálása céljából építettem meg.
Beszereztem néhány új alkatrészt: egy fényérzékelőt, egy második robusztus szervó motort, egy közepes hosszúságú négyzet keresztmetszetű rudat, egy kereszt alakú tartó lapot és egyéb apróságokat.
Ezek kipróbálásához építettem meg a Fényjátékot. A lényege: egy léptető motor által hajtott, egyenes vonalú mozgást végző szánszerkezethez erősítettem a két szervó motort, melyek a fényérzékelőt és a négy LED-es áramkört forgatják egymással szembeni (DIREKT megvilágítás) illetve hátra "néző", tehát szórt fényt érzékelő (INDIREKT megvilágítás) helyzetbe. A méréseket a szán 3 helyzetében végzi a készülék. A fényérzékelő a fény intenzitását méri világító (MAX) illetve nem világító LED-ek (MIN) esetében. A szán egy adott helyzetében három MAX és három MIN érték számtani átlagai felváltva jelennek meg a kijelzőn, melyeket a videó végén látható táblázatokban is regisztrál a program.
A táblázatok 1. sora a szán bal szélső helyzetében, a 2. sora a szán középállásában, a 3. sora pedig a szán jobb szélső helyzetében mért értékeket mutatja.
Ez a kis készülék dominók pöttyeit számolja meg és jelzi ki. A videóban példaként a 2, az 5 és a 8 pöttyös dominók leolvasása látható.
Egyelőre a dominók adagolása kézzel történik, de a jobb oldalon ismertetett alapelv megtartásával a készülék továbbfejleszthető (pl. gépi adagolás, sorba rendezés, válogatás, stb.)
Nincs kizárva, hogy az elkövetkezendőkben - természetesen a hardver adta lehetőségeken belül - fogok valami ilyesmit konstruálni. Persze ehhez megfelelő ihlet is szükségeltetik...
Már többször használtam azt a fekete-fehér érzékelőt, amelynek két szenzora egymástól függetlenül érzékeli a fekete (B) és fehér (W) színeket. Az áramkör kimeneti értéke - 0-tól 3-ig - ezek kombinációjától függ. Nos, most ismét elővettem és azon spekuláltam, hogyan lehetne ennek felhasználásával dominók pöttyeit megszámolni. A dominó készlet még megboldogult gyerekkoromból származik, fából készült, fekete alapon fehér pöttyökkel, melyek darabszáma oldalanként 0-tól 8-ig terjed.
Egy dominó egyik felén a pöttyök 3 oszlopot és 3 sort alkotnak. Ha a két szenzor, azaz az áramkör hosszanti szimmetria tengelye egybe esik két szomszédos oszlop felezővonalával, akkor a szenzorok külön-külön, de egy időben érzékelik, hogy van-e pötty a bal és a jobb oldalon. Ezt a lépést soronként, tehát háromszor meg kell ismételni.
És most jön a csavar: a metódust elegendő csak a középső és a jobb szélső oszlopra vonatkozóan alkalmazni. Ebben az esetben ugyanis az áramkör soronkénti, azaz három db kimeneti értékének összege éppen megegyezik a dominó összes pöttyeinek a számával. Ezt a nyilvánvalóan véletlen egybeesést akaratlanul fedeztem fel.
Példaként a 8 pöttyös dominó esetében, felülről lefelé haladva:
1. sor: WW = 3; 2. sor: BW = 2; 3. sor: WW = 3, összesen tehát: 8.
Nos, ezen az elven működik a videóban látható készülék. Az érzékelő egy mechanizmushoz van erősítve, melyet szervómotor mozgat. A kockákat kézzel kell az ütközőkkel ellátott tárgyasztalra helyezni. Egy-egy kiolvasási ciklus végén a kijelzőn a teljes pöttyszám villogva jelenik meg. A jobb láthatóság érdekében olyan dominó kockákat választottam, melyek mindkét oldalán ugyanannyi pötty van.
Ennek a készüléknek a megalkotásakor a kihívást nem a mechanikai felépítése jelentette, hanem a geometriai alapokon nyugvó vezérlése. Erről bővebben a jobb oldali szakaszban olvasható.
A kar forgatását és hosszváltoztatását egy-egy léptetőmotor végzi, a tolófej forgatását pedig egy szervo motor.
A cél: egy tengely körül elforduló, változtatható hosszúságú karra épített, arra alkalmas fejjel egy korongot egy egyenes mentén eltolni A pontból B pontba. Mivel az AB szakasz lényegében egy R sugarú körcikk húrja, ezért szükséges az elforduló kar hosszát változtatni. Ha ez a feltétel nem teljesülne, a tolófej egy körív mentén mozogna.
Nem kívánom a nyájas olvasót geometriai összefüggések taglalásával terhelni, csupán csak annyit emelnék ki, hogy a kar hosszváltozásának mértékét, mely a szögelfordulásától függ, szögfüggvényekkel lehet meghatározni.
A megvalósított kivitelben a kar maximális hossza - ez lényegében a körcikk R sugara - 22 cm, a körcikk központi szöge, azaz a kar maximális elfordulása 60 fok, melyet 12 lépésben, 5 fokonként tesz meg.
Ahhoz, hogy a korong a húr mentén mozogjon, szükséges még a tolófejet is 5 fokonként elforgatni a kar hossztengelyéhez viszonyítva.
Mivel a vezérlő program nem tud szögfüggvényeket kezelni, ezért a 12 karpozícióhoz tartozó hosszváltozások mértékét egy Excel táblázatban számoltam ki, az eredményeket pedig egy olyan listába töltöttem fel, melyet a program már tud kezelni.
A videóban nem csak a készülék felépítése és két kameraállásban rögzített működése látható, hanem a geometriai vázlatok, és a már említett Excel táblázat is.
A legújabb készülékem nem mozgat, nem tologat, nem emel, és nem válogat, hanem matekozik.
Konkrétabban: először egy kilenc bitből álló bináris (kettes számrendszer-béli) számot alakít át decimális számmá, majd azt visszakódolja binárissá.
A mechanikája egyszerű, viszont majdnem olyan okos, mint a kitalálója...
Mint ismeretes, egy bitnek két értéke lehet: 0 vagy 1. Éppen ezért alkalmasak erre a célra a korábban már megismert fehér és fekete korongok: a fehér jelen esetben a 0-át jelenti, a fekete pedig az 1-est.
Az előrajzolt mezőkre tetszőleges sorrendben elhelyezett korongok közül a jobb szélső a legkisebb helyi értékű bitet (20=1), a bal szélső pedig a legnagyobbat (28=256) reprezentálja. Ezen adatokat a mezők alatt is feltüntettem. Megjegyzem, hogy mindkét színből 9-9 db korongom van, ez jelenti a mennyiségi korlátot.
A hangvezérlésre induló ciklusban először a csúszkára erősített fekete-fehér érzékelő beolvassa a kijelzőn is megjelenő „biteket”, majd a kapott bináris számot átalakítja decimálissá, mely szintén megjelenik a kijelzőn. A visszakódolás az ismert, sorozatos 2-vel történő osztáson alapuló algoritmussal történik, ahol a 0 vagy 1 maradékok jelentik a biteket. Ezt követően a korongok mögötti LED csíkon kék fénnyel kigyulladnak az 1 értékű bitek. Ha minden stimmel, akkor ezek egybeesnek a fekete korongokkal.
A videó 3 példán keresztül mutatja be a működést. 1-1 ciklus után az mBlock programban használt segédtáblázatok képei is láthatóak. A BITEK és a HATVÁNYOK szorzatösszegei adják a decimális számot, a MARADÉKOK a visszaosztás eredményei, melyek a LED csíkot is vezérlik. (A program automatikusan 1-től kezdve számozza a sorokat, ezért nem 0-tól 8-ig, hanem 1-től 9-ig sorszámozottak az adatok.)
Íme a SpeaQR angol nyelvű verziója.
Örömmel tapasztaljuk, hogy a Blogunkat egyre többen olvassák külföldön, főként az USA-ban. Az ő tiszteletükre készítettem el a SpeaQR angol nyelvű verzióját. A hardver nem változott, csupán a kódolt/dekódolt és a felolvasott szöveg.
We are happy to see that our blog is read more and more abroad, especially in the US. In their respect, I prepared the SpeaQR English version. The hardware has not changed, only the encoded / decoded and the read text.
Hogy mennyire tekinthető robotnak ez a készülék, azt elmondja ő maga.
A recept:
Végy elő egy tartalék mobil telefont, tanulmányozd a QR kód fortélyait, építs egy vázat Makeblock elemekből, szerelj rá egy léptető motort, amely négy QR kódot tud a telefon kamerája elé forgatni, végül adj hozzá néhány áramkört.
A telefont ízesítsd megfelelő QR kód olvasó programmal és egy, a PC-ről (laptopról) vezérelni képes szoftverrel (TeamViewer).
Ennyi. A hangszórót kéretik bekapcsolni, mert a többit a videóban elmondja maga a készülék, amely a keresztségben a SpeaQR nevet kapta.
Ez a kis készülék nem lett volna alkalmas a nácik titkos üzeneteinek megfejtésére, mint a zseniális Alan Turingé. Csupán az volt a célom, hogy egy áramkör eleddig még ki nem használt jellemzőjét demonstráljam.
A készülék lelke a már más robotokban (pl. a Válogató-ban) is használt ún. Line follower (vonalkövető) érzékelő, amely képes megkülönböztetni a fekete (Black) és fehér (White) színeket. Az áramkör két szenzort tartalmaz, melyek külön-külön is felismerik a színeket, így négy lehetséges kimeneti értéket ad vissza: BB=0, BW=1, WB=2 és WW=3.
Erre alapozva készítettem egy tárcsát, mely 90 fokonként tartalmazza a 4 kódvariációt. A kódtárcsa fölé építettem be az érzékelőt. A tárcsát egy léptetőmotor forgatja véletlenszerűen 1/4, 1/2 vagy 3/4 fordulatot megtéve. (Hogy két egymást követő kód ne legyen azonos, ezért a teljes fordulat kizárva.)
A kiolvasott kód megjelenik a kijelzőn, a LED soron pedig annyi egymás melletti LED villog, amennyi a kód értéke. (0 esetén egy sem gyullad ki.)
Egy-egy ciklus hangjelzésre indul, elvégez 4 dekódolást, majd a kijelzőn megjelenő 9999 szám után leáll. A videó két ciklust mutat be, eltérő szemszögekből.
A legújabb robotom lényegében az alapkészlet elemeiből épült, a legegyszerűbb DC motorok felhasználásával.
Alapvető célom volt viszont egyrészt egy új érzékelő (3-Axis Accelerometer and Gyro Sensor) kipróbálása, másrészt bizonyos motorok vezérlését úgy programozni, hogy azok sebessége egy adott függvény szerint változzon.
Így készült el az Önjáró robotkar, amely egy erre a célra készített tárgyat megközelít, előtte lelassít, majd minimális sebességgel olyan közel megy hozzá, hogy a megfogója (gripper) elérje, és ott megáll.
A gripper ezután megfogja a tárgyat, felemeli és egy rövid hátramenet után leteszi és elengedi.
A távolságot a már "megszokott" ultrahangos távmérő, a grippert mozgató mechanizmus szöghelyzeteit pedig a fentebb említett érzékelő méri.
A videóban mindezek működés közben is láthatóak.