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



ESPlan - PHY Ethernet termostat
pridal deadawp 31.12. 2024 o 18:00 (naposledy upravené 1.1. 2025 o 13:22)

ESPlan od Laskakitu je zaujímavý devkit osadený ESP32-WROOM-32 a LAN8720A kontrolérom, čo ho predurčuje pre aplikácie s využitím Ethernetu pre domáce, či industriálne aplikácie. Nájde využitie aj pre rôzne aplikačné protokoly pre klient-server komunikáciu, kedy môže fungovať ako klient, ako server, ale aj ako oba súčasne v závislosti na požiadavkách aplikácie. Medzi najpoužívanejšie protokoly môžeme zaradiť HTTP(S), MQTT(S), CoAP, UDP. Nájde využitie aj v HMI a SCADA (Modbus) systémoch, aj streamovacích službách. Taktiež vhodný aj pre systémy s využitím času a časovej synchronizácie pre automatizácie, či časovo kritické apikácie skrz podpory NTP protokolu.

Dnes sa vrátime k projektu PHY Ethernet termostat, ktorý vznikol v Auguste 2022 pod Arduino Core 2.0.7, ktoré bolo postavené ešte na ESP-IDF v4.4.1. Termostat mal logiku pre automatický režim, ktorého cieľom je udržiavať nastavenú teplotu so zohľadnením hysterézy. Cieľová teplota a hysteréza bola uložená do "EEPROM" pamäte. Nakoľko ESP32-WROOM-32 nemá EEPROM pamäť, je emulovaná na sektore flash pamäte. Z pohľadu programovej implementácie pri zápise do EEPROM pamäte, alebo emulovanej EEPROM pamäte nie je žiaden rozdiel. Fyzicky bude limit počet prepisov, ktorý bude niekde na úrovni 10 000 prepisov oproti 100 000 prepisom. Vzhľadom na početnosť zápisov a frekvenciu zmien pri tejto aplikácii je to úplne jedno a môžeme hovoriť o doživotnom úložisku. 

Rovnako tak termostat obsahoval aj funkcionalitu pre manuálny režim, kedy bolo možné natvrdo zapnúť, alebo vypnúť relé. Samotný termostat fungoval autonómne a konfiguroval sa skrz webové rozhranie cez prehliadač v rámci LAN siete. Bežal teda na ňom HTTP webserver. Z dôvodu, že bol pôvodný projekt termostatu klonovaný z Arduino Ethernet termostatu, ktorý vznikla ako prvý, bol vytvorený ako lightwerigh webaplikácia, teda nebol v šablóne, avšak používal grid systém Bootstrap vo verzii 3.4.1, ktorý bol pre úsportu flash pamäte ťahaný klientom z CDN servera pri pripojení do web rozhrania.

PHY Ethernet termostat bol navrhnutý pre ESP32 s LAN8720, čomu odpovedá aj hardvér ESPlanu. Pôvodnú verziu, ktorá bola dostupná od Augusta ako .bin, ktorý bolo možné nahrať do ESP32 skrz ESPTOOL.py nástroja nie je možné použiť na ESPlane, nakoľko je tam konflikt medzi určitými GPIO. PHY Ethernet termostat používal GPIO5 pre pripojenie teplotného snímača Dallas DS18B20 na OneWire zbernici v klasikom, alebo parazitnom zapojení. GPIO4 bolo použité ako výstup s invertovanou logikou pre elektromagnetické relé SRD-05VDC-SL-C, alebo pre SSR relé OMRON G3MB-202P, ktoré sa spínali logickým signálom LOW.

ESPlan používa na GPIO5 pripojenie k nRST pinu kontroléra LAN8720 (pôvodný PHY Ethernet termostat tento pin na LAN8720 ani nepoužíval), skrz ktorý sa vykonáva jeho reštart. Rovnako tak tento GPIO nie je ani vyvedený na dostupných pinholes. V prípade GPIO4 ESPlan nemá tento GPIO vyvedený vôbec. ESPlan má dostatočný počet GPIO, avšak u niektorých je potrebné dbať na možnosti nastavenia GPIO na výstup / vstup. Niektoré z nich sú totiž iba INPUT_ONLY a komunikácia s teplotným snímačom by nefungovala a v prípade relé by ho nebolo možné riadiť logikou úrovňou. Ide najmä o GPIO34 a GPIO35.

Nakoľko sa bezpečné piny na použitie vybrali už pri Watmonitore a implementácii jeho senzorového uzla, rozhodol som sa použiť GPIO32 pre teplotný snímač Dallas DS18B20 a jeho OneWire zbernicu a GPIO33 ako invertovaný výstup pre riadenie elektromagnetického, alebo SSR relé. Pre zapojenie na stole určite odporúčam Pluggable terminal pre DS18B20, ktorý má integrovaný kondenzátor a aj rezistor 4K7.


Rovnako tak som sa rozhodol použiť poslednú verziu Grid systému Bootstap 5.3.3 tak, ako sa patrí. Rovnako tak do implementácie použijeme aj mDNS (Multicast DNS), ktorý mal napríklad WiFi termostat na báze ESP32 z Augusta 2022 a používal doménové meno wifi-termostat.local, čo má výhodu predovšetkým v tom, že nemusíte hľadať konkrétnu IP adresu v rámci DHCP rozsahu, kde termostat dostal náhodnú IP adresu z poolu. 

Rozhodol som sa tak pre mDNS meno esplan-termostat.local, ktoré sa nastaví v momente pridelenia IP adresy z DHCP služby. Zároveň mDNS toto doménové meno nastaví vždy, keď sa zmení aj IP adresa, nakoľko štandardne lease time je 2 hodiny. Používateľ tak vždy použije mDNS záznam a je mu jedno, na akej IP adrese sa PHY Ethernet termostat práve nachádza. Čo sa týka webservera, použil som identický, zmeny sa týkali predovšetkým zmien v HTML kóde, ale šlo skôr o nalinkovanie správnej Bootstrap CSS a JS knižnice.

Finálna programová implementácia PHY Ethernet termostatu pod ESPlan (Laskakit) devkitom funguje. Otestoval som aj mDNS funkcionalitu a funguje dobre na štandardnej domácej LAN sieti, aj prostredníctvom WiFi klienta, ktorý sa cez mDNS pripája k Ethernet termostatu na štandardnej WiFi 4 sieti. Ako je vidieť v Serial monitore, Ethernet termostat sa štandardne spustí s manuálnom režime s vypnutým relé. Je to z toho dôvodu, aby nedošlo k situácii, že po výpadku napájania by sa samovoľne spustilo relé a je to také fail-safe riešenie. Preto ani aktuálny režim nie je uložený v EEPROM pamäti, ale je vždy uložený iba v RAM pamäti ESP32 počas operačného stavu zariadenia.

PHY Ethernet termostat - prvotné spustenie web rozhrania na "čistom" zariadení:

Nakoľko emulovaná EEPROM neobsahuje žiadne údaje na preddefinovaných ofsetoch, boli do EEPROM zapísané údaje pri štarte zariadenia 20.25°C pre cieľovú teplotu a 0.25°C pre hysterézu,aby mohol byť termostat v automatickom režime operatívny od štartu v rozumných hodnotách. Pozn. v manuálnom režime systém nevypisuje formulár pre zaradenie teplôt, ale sú nastavené len pri úvodnom štarte. Následne pri zmene a odpojení a pripojení napájania sa už vždy používajú nové hodnoty, ktoré sú permanentne zapísané do EEPROM 

 

 



A ak ste dočítali tento článok až pod screenshoty ESPlan termostatu môžete si ho vyskúšať na vlastnom hardvéri. ESPlan má v ponuke Laskakit či už v prevedení ESP32 s IPEX konektorom, alebo integrovanou PCB anténou na ESP32-WROOM-32. Tento ESP32 modul má aj navýšenú flash pamäť a to až na 16 MB, čo určite môžete využiť, ale vzhľadom na projekt PHY Ethernet termostatu by úplne postačovala aj verzia s najmenšou 4 MB flashkou. Arduino IDE umožňuje nastaviť aj Flash size a aj schému partícii.

V dostupných sú aj varianty pre 16 MB, ale ako je vidieť, využívajú 2 alebo 3 MB pre aplikáciu (2 partície, teda možná aj OTA) a 12,5, resp. takmer 10 MB pre FatFs (Generic FAT Filesystem), čo sa hodí na veľké aplikácie, kde sa do flashky ukladajú napr. fotografie z kamerového modulu a podobne. Väčšina vývojárov používa iné file systémy ako SPIFFS, alebo LittleFS, tie sú ďaleko obľúbenejšie.  Tiež si môžete urobiť vlastnú partition table v .csv formáte.

Ak by ste chceli PHY Ethernet termostat postavený na najnovšom Arduino Core 3.1.0 (ESP-IDF v5.3.2) posunúť ešte o level vyššie, určite by som odporúčil doplniť OTA update skrz virtuálny sieťový port. Miesto emulovanej EEPROM použiť napríklad Preferences, čo je priamym odporúčaním na čo prejsť miesto EEPROM knižnice. Má to viacero výhod. Ukladanie prebieha do NVS pamäte a používa sa tu kľúč a hodnota, pričom rovnako tak obsahuje fail-safe hodnotu, ktorá sa nastaví, ak použijete zariadenie po prvý krát.

Celkovo má táto pamäť 16 kB a počet prepisov odhadovaný v rozpätí 10 000 až 100 000, avšak má wear leveling. To je technológia, ktorá rovnomerne zapisuje do buniek pamäte, teda nezapisuje sa stále na rovnakú pozíciu, ako je to v aktuálnom prípade a násobne to predlžuje živnotnosť. Práca s Preferences knižnicou je veľmi jednoduchá a podporuje všetky dátové typy.

Taktiež webserver je možné dostať na inú úroveň s použitím asynchrónnych volaní (Async webserver), kedy sa na webe môže zobrazovať hodnota priamo v momente, keď snímač hodnotu nameria bez potreby prepisovania celej HTML stránky tak, ako je to v aktuálnej verzii. Je to ale dosť pracné, no výsledok bude stáť zato.

Programovú implementáciu aktuálneho PHY Ethernet termostatu na báze ESPlanu z Laskakitu nájdete na: 
https://github.com/martinius96/termostat-ethernet/blob/master/examples/PHY_termostat/ESPlan.ino

Rovnako tak s príchodom Silvestra 2024:
Pre projekty WiFi termostat (ESP32 a ESP8266), Ethernet termostat (Arduino + Wiznet W5100 až W5500) a PHY Ethernet termostat (ESP32 + LAN8720 cez RMII rozhranie - pôvodný, ktorý nie je kompatibilný s ESPlan z dôvodu GPIO5) boli sprístupnené zdrojové kódy pôvodných firmvérov z roku 2022 a sú voľne k použitiu. Termostat používa snímač DS18B20 a digitálny výstup s invertovanou logikou pre elmg. alebo SSR relé.

Pre ESP32 je zdrojový kód postavený na Arduino Core 2.0.7 a pre ESP8266 3.0.1, čo odpovedá dátumu pôvodného projektu z Augusta 2022. Napr. WiFiManager už rozhodne s verziami Arduino Core 3+ pre ESP32 nebude fungovať, teda ak ho plánujete použiť s najnovším Arduino Core, musíte si vymyslieť hard-coded WiFi údaje, alebo použiť náhradu WiFiManagera napr. SmartConfig of TI. Rovnako tak ani PHY Ethernet nebude fungovať s aktuálnym Arduino Core 3+ pre ESP32.

V prípade Ethernet termostatu, ak použijete Arduino Mega, môžete termostat postaviť aj na ENC28J60 s UIPEthernet knižnicou s identickým kódom (stačí naozaj prepísať len názov knižnice, aby implementácia fungovala). Do Arduina Uno sa implementácia nezmestí, je treba viac RAM pamäte, flashka by to ešte zvládla.

WiFI termostat (Arduino Core 2.0.7 pre ESP32): https://martinius96.github.io/WiFi-termostat/
PHY Ethernet termostat (Arduino Core 2.0.7 pre ESP32): https://martinius96.github.io/termostat-ethernet/phy_ethernet.html
 



Prístupov 625
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
Úpravy QR skenera - Instascan HTML5
[ 14.1.2025] (príspevkov 0)
Tester vstrekovačov s IRF520 - časť 1/X
[ 9.1.2025] (príspevkov 0)
ESPlan - PHY Ethernet termostat
[ 31.12.2024] (príspevkov 0)
ESPlan od Laskakitu pre Watmonitor
[ 28.12.2024] (príspevkov 0)
Ako získať ESP32-C5 ešte pred CES 2025?
[ 27.12.2024] (príspevkov 0)
RFID DOMINATOR 2.0 - XLoader, DEMO firmw...
[ 25.12.2024] (príspevkov 0)
Zaujímavé použitie NFC tagov
[ 23.12.2024] (príspevkov 0)
Dymový generátor do 20€
[ 18.12.2024] (príspevkov 0)
RFID čítačka PN532 V3 vs. V4
[ 5.12.2024] (príspevkov 0)
Ako nainštalovať Watmonitor?
[ 21.11.2024] (príspevkov 0)