Skip to content

Platforms ‐ HU

Gajdos Tamás edited this page Jan 7, 2024 · 2 revisions

Platformok

A dokumentáció, rajzok, áramköri vázlatok CC BY-SA-4.0 license alatt érhetőek el.

A ventillátor fordulatszám szabályozó projektet több platformon is megvalósítható, és idővel meg is valósítom. Az ötletet erre a RealWorld adta, ahol a kihívás, hogy egy specifikáció alapján valósítsuk meg ugyanazt a webes alkalmazást.

Az egyes platformokban nem fogunk elmélyedni, a projekt szempontjából domborítanék ki dolgokat. Igyekszem viszont linkekkel teletűzdelni, hogy aki még tudásra szomjazik, az sem maradjon szomjas.

Arduino

Az Arduino egy nyílt forrású mikrovezérlő platform. A hardver termékek és leírások CC BY-SA 2.5 licensz alatt, míg a szoftver és a forráskódok LGPL vagy GPL alatt érhetőek el. Nagyon jól dokumentált. Ez egy olyan igazi nyílt forrású hardver, hogy akár mi is megépíthetjük magunknak otthon és az kompatibilis lesz az összes rá írt kóddal. Fontos a nyílt forráskód. 2005 óta kisebb belső jogi viták ellenére töretlen a népszerűsége. Személyes véleményem, hogy aki mikrovezérlős projektbe szeretne kezdeni vagy csak elektronikával ismerkedni és tanulni, az kezdje kalandjait egy Arduino UNO vagy NANO lappal.

A futtatandó progamokat egy C szerű nyelvben kell megírni, amit vagy a régi Arduino IDE 1 vagy az új Arduino IDE 2 környezetben tudunk megtenni. Régen elmúltak már azok az idők, amikor assembly nyelven kell a mikrovezérlőt beállítani, majd leghatékonyabb programot megírni. Szerencsére az Arduino környezet és a telepített bootloader sok dolgot elvégez helyettünk. Manapság fontosabb az, hogy a fejlesztés gyorsan történjen, mint az hogy az utolsó órajelciklus is hatékonyan kihasználjuk. Ez továbbra is megmarad mint lehetőség.

Az első lépés, amit ki kell próbálni, az a mikrovezérlők Hello World! programja, a Blinky!. A programokat Arduino zsargonban szkeccs-nek nevezzük. A Fájl > Példák között meg is találjuk már előre elkészítve. Ha sikerült fordítani és feltölteni, akkor a választott Arduino lapunkon az egyik led 50%-os kitöltési idővel fog villogni egy 2 másodperces időablakban.

img

Vagy válasszunk egy másikat a rengeteg beépített példa közül. Az általam legtöbbet látogatott oldal a nyelvi hivatkozásos oldal, ahol minden függvény, változótípus, és egyéb nyelvi struktúra dokumentálva van. Ha programot írunk én 5 részt határoznék meg:

  • Fejléc - a használt licensz és rövid dokumentáció helye, akár érintve a hardvert is. Természetesen /* */ blokk kommentek között.
  • Könyvtárak behívása és a globális változók helye - ha szeretnénk mások által megírt kiegészítéseket használni, akkor azt az #include kezdetű sorral tudjuk megtenni. Globális változóinkat, a Nano kimeneteinek az elnevezését is itt tudjuk megtenni. A változó tipikusan lehet:
    • bool az igaz-hamis típusú adatokhoz
    • byte a 8 biten tárolt egész számoknak a 0 - 255 tartományon.
    • float vagy double a 32 biten tárolt lebegőpontos számoknak, ATmega mikrovezérlőn nincs eltérés a két típus között.
    • short, int, long - az első kettő 16 biten, míg az utóbbi 32 biten tárolja el az egész számokat. Arra figyeljünk, hogy a 8 bites mikrovezérlőnk ezekkel a számokkal csak több órajel alatt tud műveleteket végezni.
    • char az ASCII karaktereknek, akiket egész számként is használhatunk.
    • Serial - a karakterláncok tárolására egy osztály, sok életünket könnyítő függvénnyel. Cserébe eszi az erőforrásokat.
  • setup() - ez a függvény kötelező, és minden indításkor egyszer fut le. Itt állítjuk be a bemenetek és kimenetek beállításait például, vagy indítjuk el a Soros port kommunikációját.
  • Saját függvényeink - ide írjuk a saját függvényeinket, vagy szervezzük ki őket a loop() részből. Ezeket akár más projektben is újra tudom használni, tehát igyekszem jól kommentelni őket.
  • loop() - ez egy while(1) {} jellegű függvény, ami mindig fut, amíg feszültség alatt van a mikrovezérlő. Ide írjuk a programunk fő részét, itt szoktak a csúnya dolgok történni.

Nem szükséges ezt követni, sok féle megoldás van. Nekem ez vált be.

Arduino projektjeim:

Arduino Nano

A projekthez az Arduino Nano lapot választom, kis mérete és kényelmes tüskeelrendezése miatt. Ezek mind megkönnyítik a termékekbe történő beépítést. Csak a méretek miatt, összehasonlítva egy szabvány grafitceruzával. Szeressétek a Turris csapatot, ők elérhetővé teszik a terveket és a forráskódot.

nano-scale

A klasszikus Arduino lapok lelke egy ATmega328P 8-bites mikrovezérlő ami 16 MHz-es órajellel fut. Hardveresen támogatott a I2C, az SPI, és hardveres Soros portja (akarom mondani elágazás nélküli portja) is van.

A külvilággal 14 digitális lábbal tudunk kapcsolatot teremterni, amiből 6 PWM képes (páronként csatlakoznak a három Timer egyikéhez) és 2 érzékeny a külső megszakításokra datasheet. További 8 lábbal pedig analóg feszültségmérést tudunk végezni a beépített 10-bit felbontású A/D átalakítóval. Mind a digitális, mind az analóg lábak 0 - +5 V tartományon működnek, maximum 40 mA-re terhelhetőek, de inkább tartsuk őket 20 mA-nél vagy alatta.

pinout-nano

Tápellátást alapvetően USB-ről tudunk neki adni, de egy külső + 12V-os tápegységet is rá tudunk kötni a VIN és a GND lábakra, természetesen a megfelelő polaritással. Az Arduino Nano akár mindkettő forrásról is egyszerre táplálható. A +12 V-on történő működéséhez a beépített LM1117MPX-5.0 állandó feszültségű szabályozó biztosítja a +5 V feszültséget.

Eltérések az Arduino Nano Every-től

A jövőben a Nano Every-t tervezem még kipróbálni. Ez egy újabb mikrovezérlőre épít, az ATmega4809-re. Hardveresen nagyrészt egyezik a mezei Nanóval, míg a szoftveres támogatás külső könyvtár szinten nem biztos hogy minden esetben biztosított. Egy lényeges eltérést említenék, hogy 6 helyett csak 5 PWM képes kimenet érhető el.

Eltérések az Arduino UNO-tól

Azért nem az UNO-ra esett a választás, mert sokkal körülményesebb termékbe építeni. Tanulni és játszani megfelelő viszont, talán egyszerűbb is. Pár eltérést emelnék ki amit az ATmega328P mikrovezérlő eltérő tokozása okoz:

  • Egyszerűen cserélhető, tehát akár javítható is kis erőbedobással.
  • Csak 6 darab analóg bemenet van, nem úgy mint a Nano esetében, ahol 8.

Eltérések az Arduino Leonardo-tól

Korábban a Leonardo volt a kedvencem az erősebb ATmega32u4 mikrovezérlő miatt. 7 PWM csatorna, 12 ADC bemenet, 5 külső megszakítás de rossz helyen. Két dolgot emelnék még ki:

  • Van Timer4, ki is van vezetve és akár 96 MHz-ig meg lehet hajtani. ref
  • Nincsen hardveres soros port, így a SerialEvent() függvény megívásáról magunknak kell gondoskodnunk.

További anyagok

Aki videó formában szeretne tanulni:

Raspberry Pi