Arduino Due alkalmazás GridEye szenzorral
Cikksorozatunk befejező részében a GridEye szenzorral megvalósítunk egy önállóan futó Arduino Due alkalmazást, mely a mini hőkamera képét egy 8X8-as RGB LED mátrixon jeleníti meg, miközben a céltárgy mozgását egy szervomotorral igyekszünk követni.

 

Cikksorozatunk első részében bemutattuk a Panasonic GridEye termoelem mátrix szenzort és annak felhasználási lehetőségeit, valamint írtunk arról, hogy hogyan lehet ezt a szenzort egy önállóan működő mini-hőkameraként felhasználni. A cikksorozat második részében a korábban megismert kiértékelő kit Arduino pajzsként való felhasználásával szimuláltunk egy gesztusvezérelt elektronikai rendszert (jelenlét-érzékelésen alapuló vezérlés), és egy PC alapú mozgáskövető világításkapcsolási megoldást is bemutattunk.

A GridEye szenzor

Mint azt  az olvasó már tudja, a Panasonic GridEye eszköze egy 8X8-as MEMS technológiára épülő hőelem mátrix, azaz 64 különálló szenzorral képes abszolút hőmérsékletet detektálni az objektum által kibocsátott infravörös sugárzás érzékelésével.

 

 

A GridEye képes a hőmérséklet és a hőmérsékleti gradiens észlelésére és egyszerű, kisfelbontású (8X8=64 pixeles) hőkép felvételére is. A végtermék fejlesztés megkönnyítésére készített, a szenzort és soros kommunikációs interfészt tartalmazó kártya kialakítása alkalmassá teszi azt Arduino Due miniszámítógéphez illeszkedő „shield” -ként való használatra.

 

 

Fontos felhívnunk a figyelmet arra, hogy a GridEye kiértékelő kit 3.3V-os kártya, így csak az Arduino Due számítógépekkel működik. Az UNO-hoz már csak fizikai kialakítása miatt sem alkalmazható, a MEGA verziók, bár rendelkeznek a megfelelő csatlakozókkal melyek látszólag illeszkednek is a kártya fizikai csatlakozásaihoz, azok 5V-os feszültségszintje miatt nem kompatibilisek a 3.3V-os GridEye Evaluation kittel.

A feladat

A megvalósítandó szimulációs feladat során a GridEye előtt mozgó objektum, jelen esetben az emberi kéz és annak közvetlen környezetének hőmérsékleti adatait az Arduino számítógéppel az I2C buszon keresztül a szenzorból kiolvassuk. Szoftveres feldolgozás során kiemeljük a kéz hőképét, majd ezt egy a kereskedelemben kapható WS2812B meghajtóval rendelkező 8X8-as RGB LED mátrixon jelenítjük meg.

 

 

A lapon található egy termisztor is, mely a NYÁK környezeti hőmérsékletét méri, természetesen ennek adatára is szükség van. A kéz érzékelését az egyszerűség kedvéért úgy végezzük, hogy azon pixelek hőmérsékletadatait, melyek a szenzor környezeti hőmérsékleténél jelentősen nagyobb értékkel rendelkeznek piros, melyek pedig ezzel egyezőek zöld színnel jelenítjük meg az RGB LED mátrixon. Az így kiemelt „piros folt” mozgását egy szervó motorral követjük.

Az Arduino Due számítógép

Az Arduino Due az Atmel SAM3X8E ARM Cortex-M3 CPU-ra épülő mikrokontroller lap. Ez az Arduino család első 32-bit ARM magra épülő tagja. 54 digitális I/O porttal rendelkezik, melyek közül 12 PWM kimenetként is használható. Meghajthatunk vele például egy szervomotort, mely segítségével követhetjük a hőforrás mozgását.

Mint említettük a korábbi verzióktól eltérően a Due 3.3V-os kártya, így a GPIO portok maximális jelszintje is csak 3.3V. Emiatt a szervomotor meghajtásához kiviteltől függően esetleg gondoskodni kell a feszültségillesztésről (3.3V-ról  5V-ra), például a sorozat előző részében kifejtett módon, az SN74HC125N vonalmeghajtó alkalmazásával.

A WS2812B alapú RGB LED mátrix

A WS2812B 5050 RGB LED diódákból készített 8X8-as mátrix ideális kijelző a GridEye szenzor számára, hiszen egy az egyben hozzárendelhetők a LED-ek a szenzor pixeleihez.

 

 

A WS2812B tartalmazza a címezhető LED drivert és az R,G,B chipeket is. Az egyes fénypontok összefűzhetők LED szalaggá, vagy az általunk használt eszközben egy 64 pontból álló fénymezővé. A panelen nem találunk előtétellenállásokat sem, mivel a WS2812B a fizikai chipeket impulzusszélesség modulált áramgenerátoros táplálással hajtja meg. Az egyes LED-ek címzéséhez egy soros bit-stream küldése szükséges a lánc első WS2812B elemére.

 

 

Az adatfolyam 3 byte-os RGB intenzítás értékeket tartalmaz a lánc minden meghajtója számára, így esetünkben az Arduino Due 3x8x64 = 1536 bitnyi adatot kell, hogy küldjön a 64 LED számára másodpercenként tízszer, mivel ez a GridEye szenzor mintavételezési frekvenciája (10 Hz). A lánc minden WS2812B eszköze továbbadja a Dout kimeneten keresztül az adatokat a következő láncelem Din bemenetére, így minden LED megkapja a saját 24 bites színinformációját.

Miután az adatok minden WS2812B-n rendelkezésre állnak, az Arduinonak szinkronizáló jelet kell kiküldeni, ezzel  minden láncelem egyidejűleg jeleníti meg a számára előírt színt. Az egyes színeket így a mért hőmérsékletértékeknek feleltehetjök meg. Egyszerűbb megoldás lehet, ha egy adott küszöbérték alatt zöld, afelett piros színnel érzékeltethetjük a kéz jelenlétét, mint ahogy a példánkban mi is tettük.

Mivel az egyes LED-ek árama kb 3X20 mA, a teljes modulra vetítve az áramfelvétel kb 3.8A-re tehető maximális kivezérlésnél, tehát mindenképpen erős külső tápegységre van szükség.

 

 

A LED mátrix meghajtására természetesen gyakorlott programozóként magunk is vállalkozhatunk, de erre nincsen szükség, mert az Arduino közösség számára elérhetők olyan könyvtárak, mint például a Fastled Animation Library, mely egyszerű interfészt biztosít nem csak a WS2812B, de más hasonló elven működő modulok számára is (Neopixel, WS2801, WS2811, LPD8806, TM1809).

 

 

A fenti kódrészlet megmutatja milyen egyszerű a 64 egymáshoz fűzött LED programozása az Arduino Due egyik digitális kimenetén keresztül. A színek mért hőmérsékleti adatokhoz való igazítása a cikksorozat előző részében leírtak és némi fantázia segítségével könnyen elvégezhető. Természetesen a szerző minden szükséges segítséget megad az érdeklődők számára.

Szervomotor illesztése

A WS2812B 5050 RGB LED márix az előzőekben tárgyaltak alapján kiválóan alkalmazható a GridEye szenzorral mért hőmérsékleti adatok kijelzésére, azonban gesztusvezérlési alkalmazásokban a kijelzés nem elegendő, valamilyen vezérlésre és beavatkozásra is szükség van. Ennek modellezésére az Arduino számítógéphez egy szervomotort illesztünk és a mozgó objektum (kéz) hőképének követésére utasítjuk.

 

 

A DC szervo kiviteltől (áramfelvételtől) függően vagy külső tápforrásról, vagy az Arduino lapról közvetlenül, esetleg feszültségillesztésen (3.3V –> 5V) keresztül táplálható, a pozícionálás pedig az Arduino Due egyik PWM (impulzusszélesség modulált) kimenetéről oldható meg. Szerencsére a bonyolult programozási algoritmusok megírása itt is elkerülhető, mindössze az ingyenesen elérhető SERVO könyvtárra van szükség. Az alábbi programrészlet bemutatja, hogy miként tudjuk a szervomotort 5 fokonként pozícionálni a „hotspot” GridEye szenzoron megjelenő képének jobbra és balra mozgásának követésére.

 

 

Természetesen a fent bemutatott példák nem teljes programok, mindösszesen csak arra hivatottak, hogy megmutassuk, milyen egyszerű is egy ilyen rendszer elkészítése. Amennyiben az olvasó komolyabban érdeklődik a téma iránt, az Endrich budapesti irodájában bármikor lehetőség van személyes konzultációra és a működő modellek is megtekinthetők.

 

Cikkünk az Endrich Bauelemente Vertriebs GmbH közreműködésével készült. Szerzője Kiss Zoltán okleveles villamosmérnök, kelet-európai értékesítési vezető.
 
Értékesítési iroda: H-1188 Budapest, Kölcsey u. 102/A.
 
E-mail: z.kiss@endrich.com
 
Web: www.endrich.com
 
További konzultációért és mintákért, adatlapokért keresse a szerzőt!

 

IoT-fejlesztések támogatása az Endrich Cloud Database szolgáltatásával
Európa egyik vezető elektronikaialkatrész-forgalmazója által fejlesztett online szenzorhálózati infrastruktúra minden komponense a cég által képviselt gyártók alkatrészeiből épül fel.
Ilyen lesz a jövő gyára
Megnyitotta első kelet-európai innovációs bemutatóközpontját a Schneider Electric a plovdivi okosgyárban. A vállalat a régióban több, tevékenységében fontos szerepet betöltő létesítményt működtet, köztük a szigetszentmiklósi CEELogot, ami a közép-kelet-európai térséget kiszolgáló logisztikai központ.
Globális robbanás a távgyógyításban
Az elemzők korábban azt várták, hogy a globális e-egészségügyi piac 2022-re 308 milliárdosra nőhet, melyen belül a távorvoslást 37 milliárd eurós üzleti területként határozták meg.
Megkezdődött a kísérleti erőmű összeszerelése
Az Energiatudományi Kutatóközpont mérnökeinek és kutatóinak a részvételével megkezdődik a világ első erőműméretű fúziós kísérleti berendezésének összeszerelése.
A gyorsuló átalakulás válik majd az új normává
A Cisco nemrégiben két nemzetközi kutatást is végzett, amelyek az informatikai szakemberek és vezetők (CIO-k, CTO-k) által tapasztalt kihívásokat, valamint a nagymértékű digitális átalakuláshoz kapcsolódó technológiai stratégiákat, terveket térképezte fel.