blogy logo
login PRIHLÁS SA
BLOG deadawp
ČLÁNKY
DISKUSIE
3
SLEDUJETE BLOG
Programátor
deadawp



WiFi Termostat - ESP8266 - WiFiManager - OTA
pridal deadawp 28.9. 2020 o 0:49



V minulom články sa rozoberali základy pri portovaní zdrojového kódu z Arduino platformy s Ethernetom na WiFi platformu ESP8266, kde sa spomenuli najvýrazenejšie špecifiká a zmeny, ktoré obnáša programová implementácia v závislosti od architektúry a dostupných funkcií. 

Dnes si naznačíme a vyzdvihneme okrem základnej koncepcie aj možnosti rozšírenia o ďalšie praktické funkcie, ktoré pomôžu s konfiguráciou, prípadne možnosťou uploadu nového firmvéru prostredníctvom WiFi siete.

Portovaná časť Izbového termostatu obsahuje:

  • Webové rozhranie s real-time prehľadom stavu relé (výstupu na kotol), nameranej teploty z teplotného senzora DS18B20 na OneWire zbernici.  
  • Možnosť modifikácie cieľovej (referenčnej) teploty v rozsahu 5 až 50°C, hysterézy v rozsahu 0 až 10°C, oba parametre s 0,25°C krokom
  • JSON výstup pre pripojenie iného mikrokontroléru / logera. Výstup obsahuje informácie 

Zapojenie:
 
Termostat na platforme ESP8266 je programovo rozšírený o:

  • WiFiManager
  • BasicOTA

WiFiManager
Manažér pre pripojenie k WiFi sieti s fall-back web captive portálom. Ak je WiFiManager implementovaný na ESP8266, po power-cycle sa doska prepne do režimu STA (Station) a snaží sa pripojiť k WiFi sieti, ktorú má uloženú v pamäti, ktorá je elektricky nezávislá.

Ak sa do istého timeoutu k WiFi sieti nepripojí (zlé meno, zlé heslo, sieť nie je v dosahu, prázdny DHCP pool a iné), prepne sa do AP (Access Point) módu a začne vysielať vlastnú WiFi sieť s preddefinovaným SSID s možnosťou hesla pod WPA/WPA2-PSK šifrovaním. Po pripojení k tejto WiFi sieti sa automaticky (v závislosti od operačného systému koncového zariadenia) otvorí webová stránka prostredníctvom Captive portal funkcionality. Stránka obsahuje jednoduché webové rozhranie, ktoré umožňuje vytvoriť sken siete pre prehľad dostupných WiFi sietí s automatickým refreshom. 

Priamo v tomto výpise je možné kliknutím vybrať konkrétnu WiFi sieť a nastaviť jej heslo, prípadne je možné sieť aj heslo manuálne nastaviť do príslušných HTML inputov formulára. V závislosti od konkrétneho príkladu WiFiManagera je možné pridať aj údaje k MQTT Brokeru s možnosťou autentizácie prostredníctvom tokenu - využívané predovšetkým pre Blynk App.

V čom spočíva hlavná výhoda WiFiManageru?
Možnosť klonovania totožného firmvéru na desiatky vývojových dosiek. Každý používateľ je schopný nastaviť si dosku na svoju WiFi sieť s uložením údajov o sieti do internej pamäte. V prípade, že je WiFi sieť pozmenená a ESP nie je schopné sa pripojiť, prepne sa do AP módu a očakáva nové údaje k dostupným WiFi sieťam.

BasicOTA
Možnosť Over The Air updatu firmvéru prostredníctvom WiFi siete. BasicOTA využíva možnosť vysielanie sieťového portu (v implementácii termostatu dostupné po pripojení k WiFi sieti v STA móde). Sieťové meno je tvorené názvom čipu a jeho MAC adresou, pričom je port dostupný na IP adrese ESP8266 a je možné k tomuto portu pristupovať priamo z prostredia Arduino IDE a nahrať priamo nový firmvér. Nahrávanie riadi Python vo vezii 3+, pre Windows 10 sa odporúča vypnúť bránu Firewall, ktorá väčšinou tieto updaty na sieti blokuje.

Vysielané hostname je možné upraviť, rovnako tak existuje možnosť pridať do OTA aktualizácii aj istú možnosť autentizácie v podobe mena a hesla, prípadne ich md5 hashom. Rovnako tak je možné pozmeniť aj cieľový port, na ktorom OTA vysiela sieťový port, predvolený je 3232. 

Nahrávaný firmvér musí mať OTA funkciu, v opačnom prípade nový firmvér nebude vysielať sieťový port a nebude ho možné aktualizovať prostredníctvom remote aktualizácie, iba fyzicky prostredníctvom UART (USB). Štandardná tabuľka partícii využíva 2 partície, pričom v jednej je bežiaci firmvér, do druhej sa zapisuje nový. BasicOTA nemožnuje využiť žiadny spôsob pre overenie integrity firmvéru, verzie. Akceptuje akýkoľvek firmvér (aj totožný bez zmeny). 

ESPTOOL a nahrávanie firmvéru
ESPTOOL je softvér (.py / .exe) pre komunikáciu s ROM Bootloaderom ESP8266. Umožňuje nahrávať firmvér, čítať obsah flash pamäte. Inštaláciou Arduino core pre ESP8266 je možné využívať aj tento nástroj (absolútnou cestou, nie je v default konfigurácii dostupný z akéhokoľvek umiestnenia). 

Ukážkový príkaz pre nahratie binárneho firmvéru na port COM4 z offsetu 0x1000:

esptool.py --port COM4 write_flash 0x1000 firmware.bin

Nahrávanie (upload proces) je automatické. Softvér po nahratí programu do ESP8266 vykoná aj reset a nový firmvér sa automaticky spustí. 

Repozitár projektu: https://github.com/martinius96/WiFi-termostat/
Viac informácii o projekte: https://martinius96.github.io/WiFi-termostat/

Binárny firmvér z Github repozitáru neobsahuje manuálny režim, OTA, EEPROM funkcionality pre záznam cieľovej teploty a hysterézy. Vždy pri power-on cykle je nastavená počiatočná hodnota 20.25°C pre cieľovú teplotu a 0.25°C hysterézu.  Prepočtová logika výstupu sa realizuje každých 10 sekúnd. WiFiManager je obsiahnutý v implementácii. Vysiela SSID --> WiFi_TERMOSTAT_AP bez hesla (OPEN WiFi). Ak sa captive portal neotvorí automaticky, je nutné spustiť HTML stránku v akomkoľvek prehliadači. IP adresa: 192.168.4.1. 

Princíp funkčnosti (pôvodne pre Arduino + Ethernet):



Prístupov 7415
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
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)