blogy logo
login PRIHLÁS SA
BLOG deadawp
ČLÁNKY
DISKUSIE
3
SLEDUJETE BLOG
PHP, Arduino programátor
deadawp



Hladinomer - úpravy finálnej verzie
pridal deadawp 3.3. 2021 o 15:37



Projekt Hladinomer som už na tomto blogu spomínal viac krát. Najprv ako základný - vytvorený projekt pre záznam dát z ultrazvukových senzorov vzdialenosti, ktorý bol následne vylepšený a rozšírený či už o funkcionality na webovom rozhraní, ktoré zjednotili HTTP metódu posielaných dát na POST, pridali možnosť prepočtu nameraných údajov na objem studne. Zmena a úpravy sa týkali aj programových implementácii pre mikrokontroléry, ktoré priniesli podporu okrem Arduino dosiek aj pre ESP8266 a ESP32 dosky, ktoré dokážu prenášať dáta cez WiFi rozhranie s podporou šifrovaného prenosu zabezpečeným kanálom.

Po tejto revízii - vylepšení sa do projektu pridali funkcionality pre nízku spotrebu elektrickej energie a to uspávaním hlavného procesora pre mikrokontroléry z rady Espressif Systems - ESP8266 a ESP32. Taktiež vznikla podpora pre prenos dát cez IoT sieť Sigfox, ktorá pokrýva skoro 90% Slovenska a je vhodná predovšetkým pre oblasti, kde nie je pokrytie pevným, alebo mobilným internetom, ktorý by zabezpečil konektivitu pre prenos údajov. Aj tento spôsob je vhodný a radí sa k riešeniam, ktoré je možné prevádzkovať na batériu.

Posledný a finálny update priniesol úpravy, ktoré nadväzovali na testovaciu fázu a problémy, ktoré pri nej vznikli. Jedným z hlavných problémov bol prevádzkový režim s nízkou spotrebou (Deep Sleep) - ULP na mikrokontorléri ESP8266. Zistilo sa, že interné počítadlo, ktoré dáva signál WAKE na prebudenie hlavného procesora z GPIO16 (D0) vývodu je nastavené softvérovo na 5 minút, ale jeho presnosť kolíše o 10 až 15% oproti nastavenému času. To spôsobovalo, že sa doska zobudila niekedy aj o 30 až 45 sekúnd pred plánovým prebudením. Webové rozhranie - backend umožnil zapisovať dáta do MySQL databázy, iba ak bol rozdiel medzi aktuálnym časom a posledne zaznamenaným údajom 300 sekúnd - t.j. 5 minút. Z toho dôvodu sa z ESP8266 v režime ULP zaznamenalo až každé druhé meranie, nakoľko sa request vykonal skôr ako o 300 - pôvodne plánových sekúnd. Úprava sa realizovala na webovom rozhraní, ktoré akceptuje nové dáta o minútu skôr ako pôvodne plánované.

Pre presnejšie meranie ultrazvukovými senzormi vzdialenosti - HC-SR04 / JSN-SR04T sa z pôvodných 5 meraní vykonáva 10, ktoré sa priemerujú. Taktiež sa vykonáva nové meranie, ak zlyhá meranie (rozvírená hladina, zlý odraz)... Zmeny sa týkali aj existujúcich programových implementácii pre mikrokontroléry Arduino, ESP8266, ESP32, ktoré boli zjednodušené a statické reťazce z programu (vypísané na Serial monitor) boli doplnené o F makro, ktoré ich ukladá do flash pamäte mikrokontroléru a nie sú uložené v RAM pamäti. Využitie RAM pamäte je kritické najmä o Arduino dosiek, ktoré jej majú len 2kB a musia ňou obslúžiť celý Ethernet stack i komunikáciu s ultrazvukovým senzorom vzdialenosti.

Programové implementácie boli z Githubu skopírované aj priamo do webového rozhrania, ktoré na základe domény a cesty k cieľovému .php súboru, ktorý realizuje zápis do MySQL databázy dokáže vygenerovať zdrojový kód s kompatibilnými cestami. Programová implementácia pre StandBy režim bola zjednotená do jedného zdrojového kódu, ktorý na základe direkvít pre kompilátor kompiluje iba časť zdrojového kódu určeného pre danú architektúru mikrokontroléru. Z AVR architektúr je možné využiť AtMega328P (Arduino Uno, Nano), AtMega1280 a AtMega2560 (Arduino Mega 1280/2560), ktoré sú vývodmi kompatibilné. Pre platformy ESP8266 a ESP32 pribudla okrem StandBy a ULP režimu aj OTA režim, ktorý umožňuje cez LAN sieť vzdialene do mikrokontroléru nahrať nový firmvér prostredníctvom Arduino IDE prostredia cez Python, ktorý automatizovane vykoná update.

Časti zdrojového kódu, ktoré vyžadujú aktivitu / kontrolu používateľa sú vo web rozhraní vyznačené červenou farbou - (SSID, heslo, knižnica pre Ethernet - podpora Wiznet W5100, W5500, W5500 verzie 2, ENC28J60). Všetky knižnice pre Ethernet moduly a shieldy sú vyberané podľa plnej kompatibility zdrojových kódov implementácie (rovnaké príkazy využívajú všetky Ethernet moduly, líšia sa len použitou knižnicou s takýmto návrhom príkazov). Aby bolo posielanie dát do webového rozhrania bezpečnejšie, do systému bol pridaný API kľúč, ktorý si manuálne nakonfiguruje používateľ. Tento kľúč sa vloží do zdrojových kódov a oprávňuje mikrokontróler pre zápis údajov do webového rozhrania. Pre Sigfox sketch je nutné API kľúč vložiť manuálne do Sigfox backendu do formátu posielaných dát. Nakoľko je však zdrojový kód s touto citlivou informáciou dostupný na webovom rozhraní, ktoré môže byť verejne dosiahnuteľné bolo ho zabezpečiť.

Využil som HTTP Basic Auth, kedy je možné vyžadovať prihlásenie od používateľa menom a heslom, ktoré je tiež možné nastaviť v konfiguračnom súbore webaplikácie. HTTP Auth sa využíva všade tam, kde sa zadávajú informácie, alebo na podstránkach, ktoré majú oprávnenie administrátora - vymazanie údajov v časti História merané, alebo pre nastavenia, kde je možné meniť hĺbku, názov studne a jej priemer, ktorý sa používa pre prepočet a merateľný odhad v studni bez odrazov. Pre bezpečné použitie HTTP Auth je vhodné mať webserver na HTTPS protokole pre šifrovanie spojenie medzi vami a serverom pre výmenu dát. Používateľské meno a heslo sa posiela ako base64 hodnota.

Grafické reprezentácie čiarovými grafmi boli rozšírené o reprezentáciu nameraných údajov za 30 dní a 365 dní pre ponúknutie širšieho okna vývoja nameraných údajov. Budíkové reprezentácie maxím a miním dostali rozšírenie rozsahu z pôvodných 400 až na 500 cm výšky hladiny, nakoľko majú oba využité ultrazvukové senzory vzdialenosti merateľný rozsah do 450 cm. Do webového rozhrania boli doplnené informácie k projektu, ktoré popisujú kompatibilný hardvér po stránke mikrokontrolérov, senzorov, opisuje princíp merania ultrazvukovými senzormi vzdialenosti a jednotlivé prevádzkové režimy mikrokontrolérov, ktoré podporujú v existujúcich programových implementáciách. Ponúka krok po kroku nastavenie Sigfox backend callbacku pre úspešný prenos údajov do webového rozhrania. Popisuje veľkosť posielanej správy spoločne s možnosťami doplnenia systémových informácii do správy. Opisuje možnosti HTTPS impementácie pre platformu ESP8266 a ESP32. 

Nakoľko je testovacie rozhranie na HTTP protokole, je to primárny protokol pre testovacie programové implementácie, nakoľko freehosting Endora nepodporuje HTTPS na doméne 3. radu, teda programové implementácie pre tento protokol by nefungovali. Pre lepšiu propagáciu projektu a jeho indexovanie je podstránka informácii o projekte aj samostatne dostupná na Github Pages, ktoré sú hostované priamo z repozitáru na Githube, kde sú dostupné aj zdrojové kódy a knižnice projektu.  Github Pages bežia na HTTPS protokole a umožňujú vytvárať jednoduché HTML stránky.

Využil som HTML5 spoločne s Bootstrapom pre jednoduché menu a Grid systém, ktorý sa prispôsobí veľkým i malým obrazovkám. Informácie sú rozdelené pre samostatný projekt Hladinomer a Hladinomer + zrážkomer, ďalšou podstránkou sú schémy zapojenia spolu s tabuľkovým zapojením. V súčasnosti je stránka dostupná v Angličtine a Slovenčine. Používateľ má priamo možnosť prekliku z Github pages navštíviť testovacie webové rozhranie, kde môže okamžite využiť zdrojové kódy pre testovanie a vizualizáciu dát na tomto webovom rozhraní. Github má relatívne dobrý pagerank a tak je na popredných priečinkach Google Search.

Iné senzory pre výšku hladiny vody
S niekoľkými úpravami na webovom rozhraní by ho bolo možné využívať aj s inými senzormi výšky hladiny vody - hydrostatickými, ponornými, plavákovými. Primárne je však orientované na údaj o výške hladiny vody v centimetroch, ktoré dokáže prepočítať na litre a tak reprezentovať aj aktuálny objem studne. Hladinomer je vhodný do kopaných studní, do vŕtaných sa nehodí z dôvodu veľkej detekčnej charakteristiky. Aktuálne úpravy vo webovom rozhraní a v programových implementáciách je finálne a neplánujú sa jeho zmeny do budúcna. Aktuálna stable verzia zdrojových kódov na Githube v repozitári projektu 1.0.1.

Odkazy:



Prístupov 1587
Kvalita článku
hlasov 0

PRÍSPEVKY
SLEDOVAŤ
Prosím prihláste sa pre možnosť pridania komentáru.
Prihláste sa, alebo použite facebook login facebook login
ĎALŠIE ČLÁNKY V BLOGU
Práca s obrázkami - MATLAB
[ 19.7.2021] (príspevkov 1)
Flash Encryption a jeho implementácia v ...
[ 18.7.2021] (príspevkov 0)
Secure Boot V1 a jeho implementácia v ES...
[ 13.7.2021] (príspevkov 0)
Senzor Bosch BME280 v prostredí ESP-IDF
[ 8.7.2021] (príspevkov 0)
Podpora ESP32 do projektu WiFi termostat
[ 1.7.2021] (príspevkov 0)
Beamforming vizualizácia - MATLAB
[ 29.6.2021] (príspevkov 0)
Výroba DPS - AISLER - RFID DOMINATOR
[ 18.6.2021] (príspevkov 0)
Podpora ESP-IDF do projektu Hladinomer
[ 4.6.2021] (príspevkov 0)
WiFi termostat - Rozšírenie o manuálny r...
[ 28.3.2021] (príspevkov 0)
RFID DOMINATOR - stopky pre Airsoft | Pa...
[ 14.3.2021] (príspevkov 0)