Az Arduino bemutatása

Szerzők: Makan Gergely, Somogyi Anikó, Dr. Mingesz Róbert és Mellár János
A tananyag elsősorban az Elektronikai alapok programozóknak és a Digitális architektúrák című kurzusokhoz készült, az elsajátításához szükséges idő: 45 perc.

Összefoglalás

A lecke bemutatja a széleskörben elterjedt Arduino platformot, egy konkrét hardvert (Arduino UNO), annak főbb tulajdonságait, valamint a hardver és a fejlesztőkörnyezet használatát. Az oldal végén önellenőrző kérdések is találhatók.

Tartalom

  • Az Arduino platform
  • Az Arduino UNO felépítése és tulajdonságai
  • Az Arduino IDE – fejlesztőkörnyezet
  • Önellenőrző kérdések

Az Arduino platform

Az Arduino egy széleskörűen elterjedt, nyílt forrású fejlesztőplatform. Az Arduinót oktatási céllal hozták létre, de előszeretettel használják otthoni projektekhez, a kisebb automatizálási feladatoktól kezdve az okosotthonok kialakításáig. Ezek mellett ma már az ipari alkalmazások sem ritkák és rengeteg IOT eszköznek is az alapja.

Az Arduino platform része egy elektronikai áramköri lap és a szoftveres környezet. Maga az áramköri lap nagyon sokféle felépítésben megtalálható.

Az elérhető Arduino  áramköri lapok fajtáinak egy kis része.

Arduino UNO felépítése és tulajdonságai

Az egyik legelső és leginkább elterjedt áramkör az Arduino UNO. A továbbiakban ennek a kártyának a felépítését, tulajdonságait és használatát lehet megismerni.

Az Arduino UNO áramköri lap az egyik legelterjedtebb a sokféle kártya közül.

Az Arduino áramkörök leglényegesebb alkatrésze a mikrovezérlő. Az UNO esetében ez egy ATmega328/P típusú, 8 bites mikrovezérlő. A mikrovezérlő egy integrált áramkör (IC, chip), amiben a processzor és a memória mellett számos egyéb periféria is megtalálható. A legfontosabb perifériák egy általános mikrovezérlőben a következők lehetnek: időzítő áramkörök, analóg és digitális be- és kimenetek, kommunikációs perifériák és még sok egyéb. Ilyen mikrovezérlőkből egyre több található meg a minket körülvevő hétköznapi használati tárgyainkban is, háztartási kis- és nagygépekben például: mosógépben, digitális órában, távirányítóban, mobiltelefonban. Segítségükkel mérhetjük szenzorok jelét, beolvashatjuk nyomógombok állapotát, vezérelhetünk velük LED-eket, motorokat, kommunikálhatunk más áramkörökkel és még sok egyéb feladatra használhatók.

Az Arduino UNO áramköri lap szerepe, hogy a rajta elhelyezett mikrovezérlőnek a lábai ki vannak vezetve egy kényelmesen hozzáférhető és könnyen használható csatlakozókra, valamint megtalálható rajta a mikrovezérlő működéséhez és programozásához szükséges egyéb alkatrészek.

A mikrovezérlők általában lényegesen kisebb számítási teljesítménnyel rendelkeznek egy hagyományos PC-hez képest, de ezáltal sokkal alacsonyabb a fogyasztásuk és méretük is sokkal kisebb lehet. Mivel általában nem fut rajtuk operációs rendszer, ezért a rendelkezésre álló erőforrásnak megfelelő valós-idejű feladatokra is alkalmazhatók, azaz egy adott eseményre a mikrovezérlő gyorsan és egy garantált maximális idő alatt képes reagálni. (Megjegyzés: léteznek valós idejű operációs rendszerek, azonban ezek több erőforrást is igényelnek, mint a natív kód.) Az ATmega328/P típusú mikrovezérlő lényegesebb paraméterei:

  • 8 bites architektúra
  • 16 MHz-es órajel
  • EEPROM (csak olvasható memória): 1 KB
  • SRAM (változók tárolására): 2 KB
  • A flash (programot tároló ROM): 32 KB
Az Arduino UNO áramköri lapon lévő legfontosabb alkatrészek. (az alaplap forrása: pixabay.com)

Ahhoz, hogy külső áramköröket is használjunk, tudnunk kell a lábkiosztást, azaz, hogy a kódból hogyan tudunk hivatkozni az adott kivezetésre. A Arduino áramköri lap két szélén lévő tüskesor aljzat melletti számokkal érjük el az adott kivezetést a kódból. Ezek a kivezetések lehetnek digitálisak (0-tól 13-ig jelölve) vagy analóg bemenetek (A0-tól A5-ig jelölve). Az A0-A5 kivezetések még digitális be- és kimenetek is lehetnek, ha a kódban úgy állítjuk be az adott kivezetést. Külső áramkörök esetén a fix feszültségű kivezetésekről kényelmesen tudunk tápfeszültséget adni az áramkör számára.

A csatlakozókhoz kényelmesen köthetünk szenzorokat, digitális IC-ket és egyéb külső áramköröket. Ahhoz, hogy ezeket biztonságosan tudjuk használni, előbb meg kell ismernünk a be- és kimenetek működésének korlátait. A tantárgyhoz szükséges ismerni a következő, legfontosabb szinteket és korlátokat:

  • Működési feszültség: 5 V
  • Maximális kivehető/befolyatható áram egy digitális kimenetből: 20 mA
  • Maximális kivehető áram a 3,3 V-os kimenetből: 50 mA

Az feszültségszintekre és áramkorlátokra nagyon figyelni kell az Arduino használata során. Csak egyforma feszültségszinteken üzemelő áramköröket szabad összekapcsolni, az áramerősségeket pedig a számolás során kapott értéknek megfelelő, sorba kapcsolt ellenállással lehet a maximális megengedett érték alatt tartani.

Az Arduinóhoz számos “feltét” áramkör is kapható, amiket Arduino shieldeknek neveznek. Ezeknek az áramköri lapoknak az előnye, hogy egyszerűen, egyetlen mozdulattal rá lehet helyezni az Arduinóra és máris kiegészítettük az Arduinót valamilyen hasznos funkcióval. A kompatibilitásra figyelni kell, mert léteznek 3,3 V tápfeszültséget igénylő shieldek, amik tönkremehetnek az 5 V-os jelszintet használó Arduino UNO-tól.

Az Arduinóhoz kényelmesen hozzáilleszthető feltét áramkör, ún. Arduino shield. (forrás: http://dx.doi.org/10.6084/m9.figshare.11971794.v1)

Az ATmega328/P lényegesebb belső perifériái és gyakorlati alkalmazásaik:

  • Digitális be- és kimenet: digitális jelek, állapotok beolvasásához és kiadásához
  • PWM: vezérelhető kitöltési tényezőjű digitális jelhez
  • ADC: analóg feszültségek méréséhez
  • UART: soros kommunikáció a számítógéppel, külső digitális áramkörökkel

Az Arduino UNO perifériáinak elérésében a kódból a következő ábra segíthet.

Az Arduino UNO perifériáinak lábkiosztása. (forrás: https://upload.wikimedia.org/wikipedia/commons/c/c9/Pinout_of_ARDUINO_Board_and_ATMega328PU.svg, Unknown author, CC BY-SA 4.0 https://creativecommons.org/licenses/by-sa/4.0, via Wikimedia Commons)

Az gyakran használt perifériákat a későbbi tananyagok során ismerhetünk majd meg részletesebben.

A korlátokról, a perifériákról és a használatról bővebben: http://dx.doi.org/10.6084/m9.figshare.11971794.v1; https://store.arduino.cc/arduinouno-rev3 (FAQ)

Arduino IDE – fejlesztőkörnyezet

A leglényegesebb paramétereket megismerve rátérhetünk az Arduino használatára. Az áramkört USB kábellel csatlakoztathatjuk a számítógéphez, amiről alapesetben tápfeszültségét is kapja, valamint ezen keresztül lehet felprogramozni és kommunikálni vele miközben fut rajta a program. Mint azt az oldal elején is említettük, az Arduinóhoz egy szoftverfejlesztő környezet is tartozik: az Arduino IDE és az Arduino függvények. Az Arduino függvények C++ nyelven érhetők el, de a fejlesztés során elegendő az alapvető C nyelvi elemek használata. Ezek a függvények nagyon megkönnyítik az adott Arduino kártyán lévő mikrovezérlő konfigurálását és használatát. Az IDE fontosabb részei: a szövegszerkesztő; a fordító és az Arduinótól érkező üzenetek megjelenítésére használható Soros monitor és Soros plotter.

A szoftveres környezet fejlesztői az egyszerűségre törekedtek, ezért egy eléggé lecsupaszított integrált környezetet használhatunk, aminek cserébe könnyű megtanulni a használatát. Az IDE-t megnyitva egy sablonkódot kapunk, ami két függvényből áll. Az első a setup függvény, ahova a beállításokat kezelő függvényeket érdemes írni és, ami csak egyszer fog lefutni a program indulásakor. A másik a loop függvény, amibe írt kód folyamatosan ismétlődni fog, azaz egy végtelen ciklus. A mikrovezérlőn futó kódok esetén a főprogramból nem szabad visszatérni, mivel nincs rajtuk operációs rendszer. Amikor a mikrovezérlő tápfeszültséget kap a rajta lévő kód automatikusan elindul és egészen addig futni fog, amíg a tápfeszültséget le nem kapcsoljuk.

Az Arduino szoftverfejlesztő környezete, az Arduino IDE.

Az Eszközök/Alaplap menüben az éppen használt Arduino kártyát kell kiválasztani, pl. Adruino UNO. Az Eszközök/Port menüben pedig azt kell kiválasztani, hogy az eszköz melyik virtuális soros porton érhető el. Ha több COM port is látható a listában, akkor szerencsés esetben az Arduino neve is megtalálható listában és akkor azt kell választani. Ha ez mégsem lenne így, akkor legegyszerűbben úgy deríthetjük ki, hogy melyik COM portot kapta az Arduino, hogy kihúzzuk és megfigyeljük, hogy melyik port tűnik el, majd újra csatlakoztatjuk és már ki tudjuk választani a megfelelőt.

A megírt kódot a bal felső sarokban lévő Ellenőrzés gombra (pipa ikon) kattintva lehet lefordítani. (A gyakran használt Arduino függvényekkel a következő tananyagban ismerkedhetünk majd meg.) Az Ellenőrzés gombot legtöbbször nem szükséges megnyomni, mert a mellette lévő Feltöltés gombra (nyíl ikon) kattintva először elindul a fordítás majd pedig a lefordított kód feltöltése a mikrovezérlőre. A fordító és az IDE üzeneteit az ablak alján lévő fekete hátterű terminálban láthatjuk. Ha a fordítás vagy a feltöltés során hibát kapunk az narancssárga színnel jelenik meg. Gyakori hiba, hogy a Feltöltés gombra kattintás előtt nem választottuk ki a megfelelő COM portot. Ekkor persze szól a környezet, hogy nem tud csatlakozni az adott porton lévő eszközhöz.

Nagyon hasznos funkciója a környezetnek, hogy meg tud jeleníteni a mikrovezérlőtől érkező üzeneteket a monitoron. Az Eszközök/Soros monitor menüpontra kattintva egy felugró kis ablakban láthatjuk a bejövő az üzeneteket. Az ablak jobb alsó sarkában ki kell választani a kommunikáció sebességét (baud), aminek a kódban beállított sebességgel kell megegyeznie.

A Serial monitorban a mikrovezérlőtől érkező üzeneteket jeleníthetjük meg a számítógép monitorján.

Az Eszközök/Serial plotter menüpontban a mikrovezérlőtől érkező szám formátumú üzenetek grafikonon történő megjelenítését érhetjük el. Itt is ki kell választanunk a megfelelő baud rate-et. Ez az eszköz nagyon hasznos analóg jelek mérése során, amivel a későbbi tananyagok során fogunk foglalkozni.

A Serial Plotter menüpontban a mikrovezérlőtől érkező adatokat egy grafikonon jelenítheztük meg.

A Fájl/Példák menüpontban számos példakódot találhatunk megfelelően kategorizálva, amik sokat tudnak segíteni a környezet megismerésében és akár később is, egy adott projekt elindulásban.

További hasznos oldalak:

Az önellenőrzéshez következzen egy rövid kvíz a legfontosabb résztémákból:

Results

#1. Milyen jellemző igaz a mikrovezérlőkre a PC-hez viszonyítva?

#2. Milyen periféria segítségével kommunikál az Arduino UNO a számítógéppel?

#3. Legfeljebb mekkora áramot szabad kivenni vagy befolyatni egy digitális kimenetből/-be?

#4. Hogyan lehet elindítani az Arduinóra feltöltött programot?

#5. Melyik igaz a setup nevű függvényre?

#6. Milyen lépést szükséges mindig megtenni az első feltöltés előtt?

finish