blogy logo
login PRIHLÁS SA
BLOG deadawp
ČLÁNKY
DISKUSIE
2
SLEDOVAŤ BLOG
Programátor
deadawp



Senzorový uzol pre hladinomer - ESP32 s TFT displejom
pridal deadawp 25.12. 2022 o 19:18



Projekt hladinomer z mojej produkcie - t.j. webaplikácia pre záznam výšky hladiny vody zo senzorových uzlov je na mojom blogu známa.  Webaplikácia ponúkala okrem svojej tradičnej funkcionality aj rozličné ukážkové zdrojové kódy. Tieto zdrojové kódy slúžili pre prenos údajov na toto webové rozhranie cez populárne mikrokontroléry a ich prenosové periférie, napr. Arduino s Ethernetom, alebo aj pre WiFi mikrokontroléry ESP32 či ESP8266. Práve mikrokontróler ESP32 sa stal vlajkovou loďou pre rôzne rozšírené experimenty a vďaka dobrej podpore knižníc, výkonu a power manažmentu v režime hlbokého spánku je to adept na rôzne low-power IoT aplikácie.

Postupom času k ESP32 pribudli implementácie pre Over-The-Air update firmvéru. ESP32 ponúka aktualizáciu firmvéru vzduchom priamo cez LAN sieť z prostredia Arduino IDE, alebo aj cez webserver, či už v podobe Web OTA Updatera, alebo aj jeho integrácie do populárneho WiFiManagera, ktorý slúži okrem tejto funkcionality najmä na konfiguráciu WiFi siete na ktorú chceme ESP32 pripojiť pre získanie konektivity.

ESP32 s použitím PHY Ethernetu dokáže odosielať dáta aj vo Full-duplexnom režime štandardu Fast Ethernet 100 Mbps. Programová implementácia s PHY Ethernet modulom LAN8720 bola taktiež zahrnutá do ukážkových implementácií. Všetky senzorové uzly mali však totožnú vlastnosť, že nemali displej pre vizualizáciu aktuálnej výšky hladiny vody. Používateľ tak nemohol bez otvorenia webaplikácie vedieť o aktuálnej výške hladiny vody, aj keby sa nachádzal bezprostredne pri mikrokontroléri.

Preto som sa rozhodol doplniť programovú implementáciu o ESP32 s využitím TFT displeja rozmeru 2,4" (240x320 px), s identickou programovou implementáciou je možné použiť aj displej 2,2", ktorý má identické rozlíšenie. Displej umožňuje vizualizácie prostredníctvom vykreslovania geometrických útvarov, teda je možné pridať aj dynamické prvky nielen pravouhlé, ale aj zaoblené. TFT displej má aj backlight pin, ktorým je možné vypínať podsvietenie displeja digitálnym stavom LOW. Avšak pri použití PWM je možné kontrolovať intenzitu jasu podsvietenia displeja dynamicky a znížiť tak spotrebu.

Je však pravdou, že displej má zboku horšie pozorovacie uhly a aj farby sa javia tmavšie ako v skutočnosti sú. Na druhú stranu sú však vizualizácie pekné. V knižnici eTFT_SPI, ktorú pre komunikáciu s displejom využívam mi však absentuje využitie viacerých veľkostí textu, nakoľko sú podporované len 3. Na obrázkoch vizualizácii je použitá hodnota 2.

Pre vizualizáciu dát na displeji stačí aj verzia displeja bez dotyku. S dotykovým displejom je možné pridať iné - doplnkové funkcionality, ktoré môže používateľ ovládať, napríklad:

  • Časový interval odoslania dát (min)
  • Počet meraní a ich priemerovania pre získanie hodnoty
  • Režim spánku, odpojenie napájania displeja
  • Nastavenie upozornení (alertov)
  • Prenos dát na špecifickú adresu (webserver, cloud, MQTT) - tieto funkcionality umožňuje ľahko doprogramovať aj napr. WiFiManager

Štandardná implementácia využíva WiFiManager ihneď po spustení mikrokontroléra. Pokým nie je ESP32 pripojené k WiFi sieti, nevypíše aktuálne meranie. Ak sú už raz údaje o WiFi sieti zadané do WiFiManagera v Captive Portal, sú tieto údaje uložené do flash pamäte ESP32 a použité pre reconnect, teda ich už nie je nutné znova zadávať. Po získaní konektivity začne mikrokontróler v 5-minútových intervaloch zasielať aktuálnu výšku hladiny vody v studni. 

Nakoľko však ultrazvukový senzor zaznamenáva iba rozdielovú výšku hladiny (vzdialenosť medzi hladinou a vekom studne), vykoná po odoslaní dát mikrokontróler druhé request na JSON výstup z webového rozhrania. Tento výstup následne rozparsuje podľa kľúčov a hodnoty vypíše na TFT displej. Displej sa prepisuje raz za 5 minút, vykonáva sa spoločne s meraním.

Programová implementácia využíva FreeRTOS, pričom jeden task obsluhuje meranie a druhý odosielanie dát a následné čítanie JSON payloadu. Tasky využívajú blokovací mechanizmus Queue - FIFO buffer. Vyskúšajte projekt Hladinomer a programovú implementáciu pre tento senzorový uzol: 
https://github.com/martinius96/hladinomer-studna-scripty/blob/master/examples/Hladinomer/HTTP/TFT_ESP32/TFT_ESP32.ino

Viac o projekte:
https://martinius96.github.io/hladinomer-studna-scripty/



Prístupov 4872
Kvalita článku
hlasov 0

PRÍSPEVKY
SLEDUJETE
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
Oplatí sa teplovodivá pasta z Aliexpress...
[ 4.4.2024] (príspevkov 0)
Recenzia 3D podznačky BEZ KOMPRESE
[ 4.4.2024] (príspevkov 0)
GTA IV fix spustenia na Windowse 10 N
[ 24.3.2024] (príspevkov 0)
RFID DOMINATOR licencia na predaj
[ 4.1.2024] (príspevkov 0)
ATtiny85 Digispark - programovanie, použ...
[ 28.12.2023] (príspevkov 0)
Prečo by som si už nekúpil ESPD-35 2.0 /...
[ 26.12.2023] (príspevkov 0)
ATtiny85 - programovanie Arduino as ISP
[ 19.12.2023] (príspevkov 0)
MasterTherm - webscraper ESP32
[ 25.11.2023] (príspevkov 0)
RFID DOMINATOR 2.0 - rozdiely s 1.0
[ 15.11.2023] (príspevkov 0)
Rozšírená realita (AR) - IoT dashboard
[ 29.10.2023] (príspevkov 0)