Arduino Kids

robot Saját gyerekeimet (négyen vannak) is meglehetősen érdekelték a különböző kütyük, amiket építettem otthon, így adta magát az elhatározásom, hogy megtanítom őket programozni és áramköröket tervezni és építeni. Ez így egyszerűen hangzik, de nem az.

A programozás és elektromos áramkörök tervezése valami olyasmi, amitől a felnőttek is hajlamosak irtózni annak bonyolultsága és összetettsége miatt. Meg kell találni azt a pontot, ahol bele lehet kezdeni ennek a világnak az elmagyarázásába, és olyan eszközök és példák kellenek ehhez, amik amellett, hogy felkeltik a gyerekek érdeklődését, mintegy öt percen túl meg is tartják azt.

A tesztcsapat nálam rendelkezésre állt, ismerem is a technológiát (mintegy húsz éve ipari automatizálással foglalkozok), az internet-oldalam, az OB121 is már itt volt, úgyhogy adta magát a nagy lehetőség, az Arduino Kids megírása.

A hívószó - saját tapasztalataim alapján - a robotika, robotok építésének a lehetősége; ennek az oldalnak a szerkezetét is megpróbálom ennek a célnak alárendelni. Ezzel ugyanis nem "hülyítem" a gyerekeket, sőt! A robotok építése csak egy lehetőség, ami ezekkel a mini-kontrollerekkel megvalósítható, de ott van még az egész IoT, épületautomatizálás, quadkopterek vezérlése, ipari automatizálás, és még sorolhatnám napestig a lehetőségek végtelen sorát. Ez a technológia ugyanis - ha a kölykök megszeretik - olyan eszköz lesz a kezükben, amivel bárhová, de tényleg bárhová eljuthatnak.

Igazság szerint ennek a rendszernek a megtanulása így is komoly kihívást jelenthet bárkinek, így őszintén javaslom a kedves szülőknek, főleg az apukáknak (de persze vállalkozó kedvű anyukák is belevághatnak!), hogy nosza, a gyerekükkel közösen kezdék el ezt a világot megismerni.

Ez egy remek apa-fiú (vagy anya / lány) program, higyjék el! Ráadásul önök is új ismeretekre tehetnek szert ezáltal, az önök világlátását is szélesítheti ez a tudás. Ráadásul a gyerekükhöz is közelebb kerülhetnek a dolgok bogarászása közben, segíthetik őket abban, hogy ne adják fel a küzdelmet amikor az első problémába ütköznek.

Mert problémák, azok lesznek!

Ha megoldhatatlannak tűnő problémába ütközött, vagy megosztaná a tapasztalatait, esetleg ötletei, kérdései vannak az oldallal kapcsolatban, az email címem az Impresszumban megtalálható, és a Facebook-on is létrehoztam egy (zárt) csoportot az OB121-hez: https://www.facebook.com/groups/131889847534947 (ez egy zárt csoport). Kérem, jelentkezzen!

Nagyon sok ilyen oktatási anyagot láttam már, és az iskolában is végigszenvedtem azt a - szerintem - rendkívül elavult gyakorlatot, hogy az ismeretek megszerzését az elmélettel kell kezdeni. Ez egy baromság szerintem (bocs), ugyanis így a kölykök kezdeti érdeklődését sikeresen belefojthatjuk a tömény unalomba, az ásításokkal szegélyezett tompa bólogatásba. Ebben az anyagban megkísérelem a lehetetlent, és csak nagyon minimális elmélet mellett próbálom érdekes projektekkel fenntartani az érdeklődést; az elméletet úgy is meg fogják tanulni, ha már tényleg érdekli őket a téma, ebben talán segítségükre lehet az OB121 összes egyéb (KIDS-en kívüli) oldala - lásd balra, a fejezeteket.

Ennek az oldalnak a nyelvezetét megpróbálom gyerekbarátra szabni, a szabatos definíciókért kérem kattintson itt bal oldalt valamelyik másik fejezetcímre.

Kezdjük!

Az Arduino egy kicsi, tenyérnyi kontroller. A kontrollerek elektromos műveletek felügyeletét végzik. A bonyolultabbak erőműveket, vonatokat és akár űrhajókat irányítanak, a kisebbeket robotok és kisebb gépek irányítására szokás használni. Ezek a kontrollerek egymással is tudnak kommunikálni, a nagyobbak utasításokat tudnak küldeni a kisebbeknek, és kérdéseket, melyek re válaszokat várnak.

Például egy összetettebb robot több kisebb vezérlőt is tartalmazhat, de egy főnöknek is kell közöttük lenni (ezt később majd maszter-nek fogjuk hívni). A maszter felel a teljes robotért, és ha például a kezeknek (vagy manipulátoroknak) külön vezérlőegységeik vannak, utasításokat ad ezeknek, hogy éppen mit kell csinálniuk, és vár a válaszokra, hogy sikerült-e végrehajtaniuk az utasításokat - ezeket a vezérlőket majd szolgák-nak fogjuk hívni. A szolgák persze azon kívül, hogy a főnökükkel, a maszterrel kommunikálnak, egymással is tudnak adatokat cserélni.

Az Arduino egy kicsi, meglehetősen buta - de éppen ezért egyszerű - kontroller, mely alkalmas kisebb műveletek végrehajtására akár magában is, akár egy maszterhez kötve szolgaként. Sokfajta kontroller létezik az Arduino családon belül (Nano, Mega, Wemos,..), mi most kezdjük el a robotunkat az Uno-val (ezt később szolgaként is használhatjuk).

A kontrollerek sajnos nem látnak, nem tudnak közvetlenül érzékelni és mozgatni sem dolgokat, mindent, de tényleg mindent elektromos jelekké kell először alakítanunk, hogy megértsék (vagy legalábbis értelmezni tudják) a dolgokat, és ráadásul csak elektromos jeleket tudnak kiadni, melyeket valahogy mozgássá kell alakítanunk. Egyébként az emberi agy is hasonló abból a szempontból, hogy az is elektromos jelekkel tud beszélgetni a kezeinkkel, lábainkkal és mondjuk a szemeinkkel. Ezt mi a kontrollereinkkel kommunikáció-nak hívjuk, és a kontrollerek az érzékeléseket szenzorok-on keresztül kapják meg és a mozgásokat aktorok-on keresztül tudják irányítani.

A szenzorok tehát azok az egységek, amik a környezet jeleit elektromos jelekké tudják alakítani, hogy a kontrollerünk értelmezni tudja azokat. Ez olyasmi, mint az agyunknak is szüksége van a szemeinkre, amik a látott képeket alakítják elektromos jelekké, a füleink a hangokat, a bőrünk az érzékeléseiket, a meleget és a hideget. A kontrollerekhez nagyon sokfajta szenzor létezik, vannak érzékelők, melyek hőmérsékletet, fényt, mágnesességet, nyomást tudnak érzékelni, meg persze még nagyon sok más környezeti jelet.

A szenzorok érzékelésének alapvetően két nagy csoportja létezik, a digitális és az analóg szenzorok. A digitális szenzorok általában (de nem mindig) egyszerűbb konstrukciók, a kontrollernek csak egy igent vagy nemet tudnak mondani valamiről, amit megfigyelnek. Mondjuk egy digitális fényérzékelő, ha a kontroller megkérdezi tőle, hogy elég fény van-e, csak egy igennel, vagy nemmel tud a kérdésre válaszolni, attól függően, hogy hogyan állítottuk be. Tehát ha például az erkélyen van az érzékelőnk, és az a dolga, hogy reggel megmondja, hogy elég világos van-e már kint, nem fog szólni, hogy már egy kicsit dereng, vagy felhős az ég, de még süt a nap, vagy ragyogó napsütés van, hanem a napfelkelte után egyszer csak szólni fog, hogy "elég világos van". Ez a jelzés ott is fog maradni, míg le nem megy a nap, vagy felhőssé válik az idő, vagy a gyagya húgod rá nem terít egy törölközőt.

Ezzel szemben az analóg fényérzékelő meg tudja mondani, hogy mennyire van világos, mondjuk úgy, hogy a 0 a teljes sötétséget jelzi, és az 1000 a rettenetesen erős fényt. Így már tudni fogod, hogy kint reggel napfelkelte van, ha a szenzor mondjuk már nagyjából 200-at jelez, és ha befelhősödik az ég, a szenzor jelzése is szép lassan csökkenni fog. Ha a jelzés napközben hirtelen leesik 0 közelére, na az lesz a húgod a törölközővel. Tudod, mit? Kezdjünk egy ilyen analóg fényérzékelős projekttel, ezen keresztül kezdem el bemutatni az Arduino világát, így talán nem lesz ez olyan unalmas.

Sokan, igen gyakran az ilyen projekteket szétválasztják két részre, a hardverre és a szoftverre. Ez azt jelenti, hogy egyszer meg kell tervezni a projektünket, hogy milyen kontrollerből és szenzorokból áll. Ezeket vezetékekkel össze kell kötözgetni, áramot kell neki adnunk, hogy működjön és meg kell keresni a hibákat, ha valami mégsem úgy működik, ahogy azt szeretnénk. Ez a rész a hardver, sokszor magyarul egyszerűen és viccesen a "vas"-nak is szokták hívni, leegyszerűsítve minden, ami kézzel fogható.

Aztán van a szoftver, a program, ami ezt az egészet irányítja, olvassa a szenzorokat és felügyeli a működést. Ez a két rész nagyon szorosan összefügg, ezért itt mind a kettővel egyszerre fogunk foglalkozni, azaz. Azaz mégsem teljesen, hiszen ahhoz, hogy a programot meg tudjuk írni, legalább pár dolgot már össze kell tudnunk állítani, például kell egy kontroller, amire majd a szoftvert feltöltjük.

A projektjeinkhez pár dologra szükségünk lesz, például egy Arduino Uno kontrollerre. A kontroller kifejezetten a kísérleti fázisban levő projektekhez lett kifejlesztve, a csatlakozóihoz, nevezzük ezeket pin-eknek speciális végű vezetékek egyszerűen csatlakoztathatók. Hogy az alkatrészeket is kényelmesen össze tudjuk vele kötni, szükségünk lesz egy próbatáblára, egy breadboard-ra.

Breadboard

A breadboardot lehetne magyarítani kapcsolótáblának, vagy ilyesminek, de tudod mit? Hívjuk csak egyszerűen breadboard-nak.

breadboardbreadboard

A fenti képen egy szervó próbakapcsolást láthatsz. Balra a kék az Arduino, középen a breadboard és jobb oldalon egy szervó. A vezetékeket mindenütt egységesen a pin-ekbe lehet csatlakoztatni. A tápfeszültséget, az 5 voltot a piros, a grund-ot (GND) a kék vízszintes sávokhoz kell valahol csatlakoztatni. Ezeket a legegyszerűbb az Arduino-ról idevezetékezni, ahogy az a bal oldali képen is látható. Középen a pinek függőlegesen vannak összekötve, így aztán azok az alkatrészek, amik egy ilyen oszlopra csatlakoznak, össze lesznek egymással kötve, meg a vezetékekkel, amiket ezekbe a pinekbe csatlakoztatunk.

Vezetékek

A vezetékek végződhetnek - a csatlakozás módjától függően - tűben vagy csatlakozó-aljzatban. Ezeket az egyszerűség kedvéért (és nagyon slendriánul) apának és anyának fogom nevezni, így például a lenti vezetékeken a jobb oldalon "apa", a bal oldalon "anya" pinek vannak:

Vezetékek

Arduino board

Arduino Uno Róla már volt szó, ezt a kontrollert fogjuk használni a kezdeti időkben a projektjeinkhez. Nagyon olcsó, de ezzel együtt jár az is, hogy túl sok védelem nincs benne túl-áramra meg rövidzárlatokra, így azért erre ügyeljünk. A board táblát jelent angolul, magyarra leginkább kártyaként fordítható, de az sem túl szerencsés. Maradjunk a board-nál. Az Uno-ról itt bővebben is találhatsz információkat. Egyelőre maradjunk annyiban, hogy tud analóg és digitális jeleket is olvasni, és digitális jeleket kiadni. 5 volttal működik, de hogy áramot kapjon, elég lesz a számítógép USB-jéhez csatlakoztatni a hozzá csatolt vezetékkel. Egyébként is össze kell majd kötni őket a programozáshoz, így az Arduino board-nál az USB kábel két célt szolgál: tápellátást és programletöltést biztosít.

Maréknyi alkatrész

A projektjeinkhez mindig szükség lehet ellenállásokra, kondenzátorokra, LED-ekre, kapcsolókra, diódákra, ezeket érdemes beszerezni és mindig kéznél tartani. Áruk elenyésző, viszont ha éppen szükségünk volna rá, és nincsenek, no meg ráadásul mindez hétvégén történik.. nem a legjobb érzés.

Az Arduino egy nyílt forráskódú rendszer, ez azt jelenti, hogy a kódját bárki szabadon módosíthatja. Egyben azt is jelenti (de nem mindig) hogy a hozzá való szoftverek nagy része ingyen (és persze legálisan ingyen) letölthető az internetről. Az alap-szoftver, az Arduino IDE erre a célra a legegyszerűbb megoldás, ez az Arduino főoldaláról tölthető le.

Arduino IDE

Ezen az oldalon első nekifutásra a fenti IDE-n keresztül fogom ismertetni a programokat. Persze van más - sokkal egyszerűbb és átláthatóbb megoldás is, a Scratch, illetve annak az arduinos változata az S4A - de őszintén megvallom, ehhez jelenleg (még) nincs türelmem, hogy ezt is beillesszem ebbe a leírásba. Talán majd egyszer..

Vannak a programozásra más lehetőségek is, például a Visual Studio egy Arduino-s bővítménnyel, de ezeket sem fogom most itt ismertetni.

A szoftver elméletből - csakúgy mint a hardver esetén - a minimum átadására törekszem, mert a tömény elmélet még a felnőtteknek is unalmas, hát még a kölyköknek.

Itt érdemes folytatni az olvasást: Bevezetés, mit hol találsz