Otthoni Mini IOT rendszer

Kedves Blogolvasók

Töredelmesen bevallom, hogy mostanában nem szántam annyit időt a modulok tesztelésére és leírások készítésére, de van mentségem. Készítettem, itthonra egy mini webalapú IOT rendszert, amit folyamatosan bővíteni szeretnék. Egyenlőre az elkészült kis rendszerem béta tesztelése folyik. Nem gondoltam volna, hogy ennyire sok buktató van egy ilyen kis projektben, de napról napra szembesülök vele, hogy elég sok.

A rendszer ismertetése:

A rendszer lelke egy Bananapi M1, amire csatlakozik egy webkamera és fut rajta egy apache2 szerver a szokásos php, sql, etc. körítéssel. Van továbbá 2 db NodeMcu, amire szenzorokat illesztettem. Az egyik beltéri a másik kültéri szenzorként funkcionál.

A beltéri egység felépítésében semmi extra sincs. Van benne a Node, van benne egy mozgásérzékelő, van benne egy DS18B20 hőmérő szenzor, és ennyi. A kültéri szenzor felépítése kicsit komplikáltabb. Abban van ugye a Node és a DHT22 ami az adatokat szolgáltatja, viszont ennek a tápellátását egy 18650-es 2200mAh-s akksi szolgáltatja, továbbá az akksival párhuzamosan be van kötve egy szolár panel, ami egy TP4056-os akkutöltővel csepegtet neki némi pluszt.

A külső szenzor:

A belső szenzor:

 Amit látni kell, hogy a külső szenzorban lévő akksi miatt, nem próbanyákra forrasztottam be a Node-ot, mert nem lett volna erre hely. Sőt a helyhiány miatt fejjel lefelé forrasztottam be, ezért a hardware reset a Node-on lévő gombbal nem megoldott. Viszont az akku eltávolításával ez ugyanúgy megoldható.

A belső szenzor az könnyen kezelhető volt mert nem ment bele akksi. A további beltéri szenzorokba pedig már csak egy mozgásérzékelő fog menni, ezért még könyebb lesz a beszerelés.

A Bananapi-re kötött webkamera pedig az ffmpeg encoderrel az ffserveren keresztül stream-eli az élő képet. Ezt a weboldara mjpeg formátumba illesztettem be. Ennek a hátránya, hogy statikus képet ad, az előnye az, hogy sávszélesség kímélő. Ha live streamet akarok a vlc-vel becsatlakozok az ffserverre és már is nézhetem mi van itthon.

Most ismertetem a webes felületet, amin kezelem az itthoni kis rendszeremet.

A kezdőoldal:

startItt látható, hogy közvetlenben csak azok a szolgáltatások érhetőek el, amik amúgy is authentikációt igényelnek. Ilyen pl az Own Cloud és a Transmission webkliense is.

Bejelentkezés után:

mainItt lehet látni, hogy 3 ikon vár minket, az első a hőmérsékleti adatok ikonja, a második a kamera ikonja, a harmadik pedig a mozgásérzékelőké.

Belső hőmérsékleti adatok:

temp_inItt is 3 ikon van, az első vissza visz  a “main” page-re a második kinti hőmérsékleti adatokat mutatja meg, a harmadik pedig visszadob a bejelentkező oldalra.

Kinti hőmérsékleti adatok:

temp_outAz itteni ikonok ugyanazok mint a bentinél kivéve a középsőt, mert az a benti adatokhoz visz vissza.

Kamera oldal:

cameraMozgásérzékelő adatok:

motionsA webes felület összesen ennyi lenne egyenlőre, bár még rengeteg dolgot akarok belezsúfolni, de az ismert mondás szerint: Rómát sem egy nap alatt fejlesztették le.

A bemutatás után pedig írok egy kicsit a tapasztalataimról.

Az első és legfontosabb tapasztalat: a Bananapi iszonyat stabil. Hónapok óta nem volt újraindítva. Mindegy volt neki, hogy éppen filmet nézek róla DLNA-n keresztül, vagy éppen képeket töltök fel az owncloudra Brüsszelből. Nem nagyon sikerült lehalnia. 100%-os a rendelkezésre állása.

Ami a beépített elemeket illeti inkább alkatrészenként írnám le a tapasztalatokat.

NodeMcu:

Kicsit kevés a memóriája, de mivel elég vékony a kód amit írtam rá, így ez nem okozott gondot. Ami ezt ellensúlyozza, az a 4Mb-os programtárhely. Komplett weblapok férnek el rajta. Lua firmware-el használom, és elégedett vagyok vele.

DHT22:

A DHT22 pontosságában annyira nem csalódtam, ami inkább zavar, hogy nem egy igazi kültéri szenzor. Ha egy csepp víz éri, akkor órákig 100%-os páratartalmaz mutat. Ezen felül, túl nagy áramot vesz fel. Ha másfél naponta nem cserélnék akksit a kültéri egységemben, akkor lemerülne. A lemerülést most nem is a szó klasszikus értelmében véve kell érteni. A szenzor azt a jelenséget produkálja, hogy ha egy bizonyos szint alá esik a feszültség, akkor napokig ugyanazt a jelet küldi. A grafikon kisimul mint egy halott EKG-ja. Ettől a NodeMcu még üzemképes napokig, mert kb 4 napig képes küldeni a jelet. Ennek a problémának az orvosolására, még a megoldások résznél visszatérek.

DS18B20:

A DS18B20 egy már-már tökéletes szenzor. Alacsony fogyasztású és pontos értéket ad. Nem fagy ki nem hibásodik meg. Egyetlen egy hibajelenséget vettem észre. Bekapcsolás után az első mért érték, soxor 85. Ezt ki lehet kóddal küszöbölni. Ezzel a szenzorral semmi egyéb problémám nem akadt.

TP4056:

Ez a töltő egy egyszerű de jól működő 18650-es akksikhoz ajánlott töltőáramkör. Nekem sose volt vele problémám. Sajnos egy darab napelem nem képes meghajtani, talán ha módosítanám a program resistort, akkor ez is elég lenne. Viszont nem akarom kicserélni egy az 1.2-est egy 330-asra. Inkább berakok egy másik napelemet. Mert ugye a probléma az az, hogy a minimum bemenő töltőáramnak 150mA-nek kellene lennie. Ezt csak akkor tudom produkálni, ha a legjobb beesési szögben csőgázon süt a nap.

Napelem: Ennek a napelemnek 5V és 160mA a kimenője. Alapjáraton elégedett vagyok vele, bár nem képes a Tp4056-ot meghajtani.

HC-SR501: Ez a klasszikus mozgásérzékelő panaszmentes. Egy kicsit játszani kell beállításnál a potikkal, hogy az érzékenység és a meghúzási idő optimális legyen, de a hibáit kóddal ki lehet küszöbölni.

Amik megoldások lehetnek:

Két esetben írtam azt, hogy nem vagyok teljesen elégedett. Az egyik a DHT22 a másik pedig a TP4056 napelem kombó. A napelemes esetben csak a cellák duplázásával tudok javítani a helyzeten. A program ellenállás módosításával az a probléma, hogy az csak a töltési sebességet módosítaná. Ezért az első megoldás, az hogy a napelemeket megduplázom. Valószínű hogy ez a megoldás fog bejönni, mert a kinti szenzorba szeretnék rakni egy LDR-t hogy tudjam mikor kel a nap. Máris magyarázom, hogy a másik megoldás miért nem jönne be.

Azt tudni kell, hogy a Nodemcu most megy folyamatosan és csak 10 percenként ad hozzá egy rekordot az adatbázishoz. Konklúzió? A szenzor folyamatosan vesz fel áramot, és a Node is tartja a kapcsolatot a Wifi routerrel. Tehát folyamatosan áramot “zabál”. Ennek megvan az az előnye, hogy távolról bármikor újra tudom indítani a Node-ot szoftveresen. A hátránya viszont az, hogy ZABÁL.

Megoldási alternatíva lehetne az, hogy a Node-ot el kellene altatni deepsleep-el, és csak 15 percenként felébreszteni. Ezzel elég sok áramot takarítanánk meg, mert offline lenne a Node és le lenne húzva minden IO. Nos, igen ám, de ezzel a lehetőséget is elvenném, hogy távolról újraindítsam, vagy bármilyen műveletet hajtsak vele végre távolról. Továbbá itt jön be amit írtam, az LDR. Abban az esetben ha így oldanám meg a dolgot, akkor a napfelkeltét is csak 15 perces intervallumokban belül tudnám meghatározni.

Az akkumulátor üzemidő növeléséhez és a folyamatos kapcsolat fenntartásához a tapasztalataim szerint legjobb megoldás az ha duplázom a napelemeket.

Esetleg ha valakinek van erre már bevált alkalmazható megoldása, akkor alternatívaként szívesen fogadnám. MÉLtuMÍ

(Statisztika: 61 megtekintés)

Vélemény, hozzászólás?

Az email címet nem tesszük közzé.