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.

Ja, igen, magamról pár sor, hogy honnan veszem a bátorságot, hogy egy ilyen oldalba belevágjak. Nagyjából húsz éve foglalkozok automatizálástechnikával (főleg Simatic rendszerekkel). Eleinte gyártósori programokat fejlesztettem és helyeztem üzembe világszerte, majd erőművi rendszereket fejlesztettem (méréstechnikát terveztem és programot írtam). Az utóbbi tíz évben vasúttechnikával foglalkozok, itt már az architektúra tervezése, a normák egyeztetése is a munkámhoz tartozik a szoftver-íráson (és modellezésen) kívül. Jelenleg az új német szuperexpressz, az ICE4 (kép itt lent) egyik főrendszerét fejlesztem. Ebben a húsz évben jórészt Németországban dolgoztam, és jelenleg is itt élek a családommal együtt. Az Arduino-val otthon, hobbiból foglalkozok.

ICE4

Ennek az oldalnak a nyelvezetét megpróbálom gyerek- és emberbarátira 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