ESP8266 – termostat

Cele

Celem projektu było stworzenie programu dla ESP8266 który odczytuje temperaturę z czujnika DS18B20 i zależnie od nastaw wprowadzonych przez użytkownika włącza lub wyłącza grzałkę. Dodatkową funkcją jest obsługa pompy, która umożliwia wykorzystanie układu jako sterownika pieca centralnego ogrzewania. Urządzenie pełni funkcję termostatu sterowanego przez przeglądarkę internetową i jest podłączone do wybranej sieci WiFi.

Podzespoły urządzenia

Z uwagi na to, że za cel projektu zostało obrane jedynie stworzenie oprogramowania a nie całego układu elektronicznego, został on zbudowany na płytce stykowej. Nie została też podłączona grzałka, a jej funkcję w układzie symbolizuje czerwony LED. By sterować np. grzałką w bojlerze lub piecyku należy zamiast czerwonej LED podłączyć transoptor sterujący triakiem. Niebieski LED natomiast jest wyjściem obsługującym pompę.
Odczyt temperatury dokonywany jest przez układ DS18B20, który występuje również w wersji wodoodpornej.
Układem sterującym jest ESP8266, w tym przykładzie znajduje się na płytce PCB która zawiera między innymi CP2102 będący mostkiem USB – UART, na płytce znajduje się również stabilizator napięcia i inne – co znacznie upraszcza proces prototypowania. Ten model płytki występuje pod nazwą „NodeMCU v1.0”.

termostat_www-300x199 ESP8266 - termostatPrototyp na płytce stykowej (opracowany w programie Fritzing).

Szyna danych 1Wire do komunikacji z DS18B20 znajduje się na pinie D1 płytki „NodeMCU v1.0”. Stan wysoki włączający grzałkę pojawia się na pinie D2, natomiast włączający pompę na pinie D3

Wsad dla ESP

Gotowy wsad w postaci pliku „termostat.bin” dla ESP został udostępniony w repozytorium, natomiast sposób jego użycia jest opisany w artykule „Wgrywanie pliku BIN do ESP„.

Konfiguracja sieci

Po graniu firmware do ESP należy nawiązać z nim połączenie za pośrednictwem portu UART (prędkość: 115200 baud).
Ważnym jest by jako zakończenie linii wybrać „nowa linia”, czyli znak „\n” – informuje on ESP o zakończeniu wysyłania instrukcji, bądź ciągu znaków.

Po wysłaniu znaku „h” (i znaku nowej linii) wyświetlane jest menu:

IP address:
0.0.0.0
s – skanuj sieci
c – konfiguruj siec
o – czytaj konfiguracje
j – polacz z siecia
h – wyswietl to menu

Układ nie jest jeszcze skonfigurowany, należy przeskanować dostępne sieci WiFi (wysyłając znak „s”):

scan start
scan done
5 networks found
1: SPOT-0ED0 (-86)*
2: Live-199 (-50)*
3: Darmowe_WiFi (-49)
4: NoweEnergie (-54)
5: 16_E30BBC (-83)*

Lista sieci zawiera SSID, poziom sygnału i informację o zabezpieczeniu („*”).
Kolejnym etapem jest podłączenie do wybranej sieci (w tym przypadku „NoweEnergie” – sieć otwarta).

Konfiguracja następuje po wysłaniu znaku „c”. Należy wpisać SSID sieci i podać hasło.

Podłączenie do sieci wykonywane będzie automatycznie po starcie urządzenia. W tej chwili możliwe jest podłączenie po wysłaniu znaku „j”:

Connecting to NoweEnergie
***
Connected

Gwiazdki to próby połączenia, jest podejmowane sześć prób.

Interface sterujący

Po wgraniu oprogramowania do ESP8266 i skonfigurowaniu sieci, użytkownik wpisuje w przeglądarce internetowej adres IP przypisany do termostatu. Zostaje wyświetlona strona na której w zakładce „temperatura” wyświetlona jest aktualna temperatura środowiska, zakładka „ustaw” umożliwia podanie oczekiwanej wartości jaka ma zostać utrzymywana przez grzałkę.

esp_termostat_interface-300x293 ESP8266 - termostatInterface termostatu.

Kod programu

Program został napisany w środowisku Arduino IDE. Kod źródłowy dostępny jest w repozytorium, do jego kompilacji konieczne jest posiadanie bibliotek „OneWire” oraz „DallasTemperature”.

Odnośniki

Pliki projektu:

Inne linki: