Szilágyi Sándor Zoltán hobbielektronika és rádiótechnika oldala

Arduino kezdőknek cikksorozatom, melynek első 13 része publikálásra került. Amatőr robot építés. Múzeális rádiók és más eszközök gyűjtése és restaurálása.

Arduino kezdőknek 1

Szilágyi Sándor Zoltán   Villamosmérnök, mérnök-informatikus

 

A cikket megírtam: 2021. 06. 28-án

A Rádiótechnikában megjelent: 2022. február 

Ez a blog oldal tehát az eredeti, saját tulajdonomban levő dokumentum, és nem a nyomtatásban megjelent (beküldött) másolata. A cikket én írtam, én küldtem be, és csak azután jelent meg nyomtatott formában is. A nyomtatásban megjelent cikkeimre szerződést nem kötöttek velem, és anyagi juttatást se kaptam soha érte. Mivel a magazin már nem kapható, ezért a megjelent 13 cikkemet itt folytatnám, mivel Magyarországon jelenleg nincs hobbielektronikával foglalkozó magazin.

 

Ahogy a cím is elárulja, ennek a cikknek a célja az alapok bemutatása. Mint kísérletező amatőr szeretném megosztani az eddigi munkáimat és elért eredményeimet úgy, hogy a teljesen kezdők számára is érthető legyen. Természetesen egy cikkbe nem fér el minden, így tervezem, hogy rendszertelen időközönként folytatásokkal egészítem ki.

 

Első találkozás az Arduino-val.

Néhány évvel ezelőtt (2019 tavaszán) egy korábbi munkahelyemen kaptam azt a feladatot, hogy tervezzek/építsek/programozzak egy beléptetőrendszert a cég bejáratához, ami egy Excel táblázatba menti le a beérkező kollégák kártyáinak egyedi azonosítóját a hozzárendelt névvel és időponttal együtt, majd kilépéskor ugyanazt ismételje meg. Előtte sose találkoztam Arduino-val, csak hallottam róla. A nulla szintről kb néhány nap alatt meg tudtam csinálni a fentebbi feladatot (teljesen nem fejeztem be, csak egy próba projekt volt). Két különböző board-ot is kipróbáltam a feladat során. Bár sose programoztam előtte ilyet, mégis szinte néhány óra alatt megtanultam a használatát, mivel az interneten elég sok segítséget lehetett találni, példaprogramokkal, áramköri megoldásokkal együtt. Akkor beleszerettem. Mivel gyermekkorom óta célom különböző amatőr robotok építése, tervezése, így a korábban próbálgatott  más jellegű mikrokontrollereket egy időre félretettem, és a sokkal könnyebben tanulható Arduino-ra váltottam. A tervezési/fejlesztési idő a töredékére csökkent, nem kellett napokig-hetekig küszködni, hogy sikerélményem legyen, szinte egy órán belül kész volt az első sikeres projekt!

 

Az eszköz (UNO REV3) bemutatása

Az interneten számos weboldalon bőségesen találhatunk információt a különböző board-okról. Itt csak egy kis bepillantást szeretnék nyújtani, hogy azok, akik nem ismerik, és érdeklődnek iránta, hogy megismerjék.

A hardver egy ATmega328P alapú fejlesztő eszköz, I/O egységekkel és egyéb eszközökkel. A szoftver nyílt forráskódú, mely ingyenesen letölthető (természetesen lehet adni támogatást is). A csomag (hardver/szoftver) előnye, hogy egyszerűen programozható, C-alapú, illetve könnyen csatlakoztathatók hozzá a különféle elektronikus alkatrészek vagy a készen kapható shield-ek. Hátránya egyedül az ára, mivel sokkal többe kerül, mint egy alap mikrokontroller és a hozzá tartozó alkatrészek (rezgőkvarc, passzív alkatrészek, csatlakozók, kis nyák, stb). A könnyű kezelhetősége, gyors programozása, és a sok sikerélmény viszont mindenképpen háttérbe szorítja ezt a tényt.

A fejlesztői környezet részei: board (pl Arduino UNO REV3), USB A-B kábel, Arduino IDE. Az alap környezetet bővíthetjük a shield-ekkel, de mi is építhetünk hozzál saját hardvert. A board-oknak elég sok különböző fajtája létezik, vannak, amelyek már nincsenek forgalomban, vannak viszont olyan speciálisok, amelyek, wifi, vagy bluetooth csatlakozási lehetőséggel is rendelkeznek. A shield-eket I/O perifériák csatlakoztatásához használjuk, pl motorvezérlés, LED-meghajtók, GPS, ethernet, wifi, stb.

A fejlesztés a fejlesztői környezetben történik, majd a kész programot fordítás után „feltöltjük” a board-unkba egy USB A-B kábel (nyomtatókábel) segítségével. Ezen keresztül kap tápfeszültséget is a  (amíg a fejlesztés történik). Ez később külön tápegységről vagy akkumulátorról is kaphat tápfeszültséget (pl robot autók esetében).

  

Arduino UNO REV3 felépítése (csak a fontosabb elemek és adatok)

-          Atmega328P mikrokontroller

-          16MHz-es processzor

-          6-20 V tápfeszültség

-          5 V üzemi feszültség (20 mA lehet a lábak maximális terhelése)

-          32 KB flash memória (A letöltött programokat és a saját működéséhez szükséges programokat is tárolja. Így kb 24-30 KB-ot használhatunk fel. A tartalmát megőrzi kikapcsolás után is.)

-          2 KB SRAM (a tartalmát nem őrzi meg, kikapcsolás után „elfelejti”. A program belső változóit tárolja)

-          1 KB EEPROM (a flash-hez hasonlóan szintén nem felejti el kikapcsolás után a tartalmát. Konfigurációkat és indulási alapbeállításokat tartalmaz.)

-          Digitális I/O: 14 db (ebből 6 db PWM és 2 db interrupt)

-          Analóg inputok: 6 db (digitálisként is használhatók)

-          Egyéb: SPI kommunikáció, soros (UART) port, alaplapi feszültség stabilizátor, tápcsatlakozó, reset-gomb, visszajelző LED, stb.

 

Az IDE fejlesztői környezet

A www.arduino.cc honlapról lehet letölteni.  Nyelve az angol, de át tudjuk alakítani magyarra: File/Preferences, majd az Editor language legördülő menüjéből kiválasztható. Telepítés után az első dolgunk beállítani az alaplapot, melyet az Eszköszök/Alaplap menüben választhatjuk ki. Ezután a programozót is be kell állítani, hasonló módon: Eszközök/Programozó menüből. Végül be kell állítani a portot (ez fizikailag változhat, ha az USB-kábelt a számítógépen másik helyre dugjuk. Az Eszközök/Port menüben találjuk. Érdemes a kábelt mindig ugyanoda csatlakoztatni, mert ha másik helyre tesszük, akkor a port száma változhat és előfordulhat, hogy újra be kell állítani.

Mielőtt az első önálló nagy programot megírjuk, érdemes tanulni, gyakorolni. A fejlesztői környezet mintapéldákat is tartalmaz, ezeket a Fájl/Példák menüpontban találjuk. Bármelyiket be lehet tölteni, és ha a megfelelő hardver csatlakoztatva van az Arudino-hoz, ki is lehet próbálni.

Az utolsó lépés a program fordítása, majd letöltése. A programot a menü alatti kis pipára kattintva fordíthatjuk le. Végül, ha nincs hiba, a mellette levő kis nyílra kattintva lehet feltölteni a kontrollerbe.

 

1. program: „Helló világ!” – a beépített L-LED folyamatos világítása

 

A lehető legegyszerűbb, kedvcsináló feladat. Egyszerűbb, mint ami a példaprogramok közt meg van adva. A board-on levő L-jelű LED-et használjuk fel benne. Ez egy LM358 kisjelű dual műveleti erősítő egyik felének 7-es kimenetére van kötve egy 1K-s ellenálláson keresztül. A katódja pedig a GND-re csatlakozik.  A program fontosabb elemei:

void setup() {}  - A beállításokat tartalmazza (deklaráció), melyek egyszer futnak le a program                      legelején. Csupa kisbetűvel, és szóközzel van írva, megváltoztatása hibát okoz.

pinMode();  - Ez egy olyan függvény, mellyel a ki- és bemeneteket lehet konfigurálni, illetve esetünkben a boardon levő L LED-et is. Pontosvesszővel zárjuk.

LED_BUILTIN - Az eszközön levő beépített LED-et aktivizálja (L). Csupa nagybetűvel és alulvonással írjuk.

OUTPUT - Az adott pin-t kimenetként használjuk fel. Csupa nagybetűvel írjuk.

INPUT - Az adott pin-t bemenetként használjuk fel.

void loop() {}  - A főprogram, mely ciklikusan újra és újra végrehajtódik.

digitalWrite();  - Függvény,  ez írja ki az adott pin-re a beállított értéket. Ezt is pontosvesszővel zárjuk. Mint az előző függvénynél, itt is egybeírjuk a két szót úgy, hogy csak a második szó első betűje lehet nagybetű (a W).

HIGH  - magas érték, azaz logikai „1” beállítása.

LOW  - alacsony érték, azaz logikai „0” beállítása. A HIGH és a LOW értékeket is csupa nagybetűvel írjuk.

A program mindegyik elemének tehát írási szabályai vannak. Pl a „pinmode”-ot beírva az fekete karakterekkel jelenik meg, majd fordításkor jelzi is a hibát. Viszont „pinMode”-ként beírva narancssárga színű lesz, jelezve, hogy jól gépeltük be. Ez a többire is érvényes, csak a színek lehetnek eltérőek.

Az 1. ábrán szereplő egyszerű program tehát felgyújtja a panelen levő beépített „L” feliratú LED-et, mely folyamatosan világít (a végtelenségig).

  1._abra.png

1. ábra

 

2. program: a beépített L-LED villogtatása.

Ezt nem szükséges begépelni, mivel a példaprogramok közt megtalálható „Blink” néven (2. ábra). Az inicializáló része megegyezik az előbbi példáéval, mivel itt is csak a beépített LED-et használjuk fel. A főprogram viszont három új sorral bővül: először magas szintre állítjuk az adott pint, majd ezt megtartjuk egy adott ideig.  Ezután a beépített LED-et alacsony szintre állítjuk be, így az elalszik. Végül ezt az állapotot szintén 1 sec ideig tartjuk fenn. Ezután a void loop() kapcsoszárójelei között levő program újra és újra lefut, a végtelenségig. Új parancs:

delay(); - késleltetés. Csupa kisbetűvel írjuk, és pontosvesszővel zárjuk. A zárójelben adhatjuk meg az értéket századmásodpercben, azaz a delay(1000); 1 másodperces késleltetést jelent.

 2._abra.png

2. ábra

 

Források:

https://hu.wikipedia.org/wiki/Arduino (2021 április)

https://www.farnell.com/datasheets/1682209.pdf

A cikket megírtam: 2021. 06. 28-án

A Rádiótechnikában megjelent: 2022. február 

Ez a honlap még 1 napig reklámmentes.
Weblap látogatottság számláló:

Mai: 32
Tegnapi: 114
Heti: 270
Havi: 313
Össz.: 528
Oldal: Arduino kezdőknek 1
Szilágyi Sándor Zoltán hobbielektronika és rádiótechnika oldala - © 2008 - 2024 - szilagyi-robot.hupont.hu

ÁSZF | Adatvédelmi Nyilatkozat