Spisu treści:

Termostat pokojowy - Arduino + Ethernet: 3 stopnie
Termostat pokojowy - Arduino + Ethernet: 3 stopnie

Wideo: Termostat pokojowy - Arduino + Ethernet: 3 stopnie

Wideo: Termostat pokojowy - Arduino + Ethernet: 3 stopnie
Wideo: Терморегулятор на ESP8266 Часть 3. Устранение Багов и Доработки 2024, Lipiec
Anonim
Termostat pokojowy - Arduino + Ethernet
Termostat pokojowy - Arduino + Ethernet

Pod względem sprzętowym projekt wykorzystuje:

  • Arduino Uno / Mega 2560
  • Osłona Ethernet Wiznet W5100 / Moduł Ethernet Wiznet W5200-W5500
  • Czujnik temperatury DS18B20 na magistrali OneWire
  • Przekaźnik SRD-5VDC-SL-C używany do przełączania kotła

Krok 1: Opis termostatu Ethernet

Opis termostatu Ethernet
Opis termostatu Ethernet

Arduino to poręczna platforma do wbudowania, którą można wykorzystać np. do zbudowania termostatu pokojowego, który pokażemy dzisiaj. Termostat jest dostępny z sieci LAN, w której się znajduje, natomiast wyposażony jest w interfejs webowy, który służy do konfiguracji wszystkich elementów termostatu. Interfejs WWW działa bezpośrednio na Arduino w trybie serwera WWW. Serwer WWW umożliwia uruchomienie kilku niezależnych stron HTML, które mogą mieć charakter informacyjny, a nawet funkcjonalny. Serwer WWW działa na porcie 80 -

Zastosowany w projekcie przekaźnik elektromagnetyczny SRD-5VDC-SL-C umożliwia przełączanie do 10A przy 230V - moc 2300W. W przypadku przełączania obwodu DC (obciążenia) możliwe jest przełączenie 300W (10A przy 30V DC). Alternatywnie przekaźnik OMRON G3MB-202P SSR jest w pełni kompatybilny ze schematem okablowania, który jest odpowiedni tylko dla obciążeń nieindukcyjnych i wyłącznie dla obwodów prądu przemiennego. Maksymalna moc przełączania 460W (230V, 2A). Pobór Arduino z nakładką Ethernet i innymi peryferiami jest na poziomie 100-120mA przy otwartym przekaźniku. Po zamknięciu poniżej 200mA przy zasilaniu 5V.

Krok 2: Interfejs sieciowy

Interfejs sieciowy
Interfejs sieciowy

Interfejs sieciowy termostatu umożliwia:

  • Zobacz temperaturę w czasie rzeczywistym z czujnika DS18B20
  • Zobacz stan przekaźnika w czasie rzeczywistym z dynamiczną zmianą wyjścia na stronie
  • Modyfikuj temperaturę docelową (referencyjną) w zakresie od 5 do 50°C z krokiem 0,25°C
  • Zmodyfikuj histerezę w zakresie od 0 do 10°C z krokiem 0,25°C

Interfejs sieciowy został zaprojektowany z myślą o większych i mniejszych ekranach. Jest responsywny, obsługuje szerokoekranowe ekrany o wysokiej rozdzielczości, ale także urządzenia mobilne. Interfejs wykorzystuje importowane style CSS frameworka Bootstrap z zewnętrznego serwera CDN, który ładuje urządzenie po stronie klienta podczas otwierania strony działającej na Arduino. Ponieważ Arduino Uno ma ograniczoną pamięć, może uruchamiać tylko strony o rozmiarze kilku kB. Importowanie stylów CSS z zewnętrznego serwera zmniejszy wydajność i obciążenie pamięci Arduino. Implementacja oprogramowania (dla Arduine Uno) wykorzystuje 70% pamięci flash (32kB - 4kB Bootloader) i 44% pamięci RAM (2kB).

Statyczne części strony internetowej (nagłówek i stopka dokumentu HTML, łączenie Bootstrap CSS, metatagi, nagłówek odpowiedzi HTTP, typ treści, formularz i inne) są przechowywane bezpośrednio w pamięci flash Arduino, co może znacznie zmniejszyć ilość pamięci RAM używanej przez użytkownika -treść generowana. Serwer WWW jest dzięki temu bardziej stabilny i może obsługiwać wielokrotne łączenie kilku urządzeń w sieci jednocześnie.

W celu zachowania ustawionych wartości nawet po zaniku zasilania są one zapisywane w pamięci EEPROM Arduino. Temperatura odniesienia do offsetu 10, histereza do offsetu 100. Każda z wartości zajmuje maksymalnie 5B w pamięci EEPROM. Limit transkrypcji EEPROM jest na poziomie 100 000 transkryptów. Dane są nadpisywane dopiero po przesłaniu formularza HTML. W przypadku, gdy urządzenie nie ma nic zapisanego we wspomnianych offsetach EEPROM przy pierwszym uruchomieniu, zostanie wykonany automatyczny zapis z wartościami domyślnymi - odniesienie: 20,25, histereza 0,25°C

Metatag Refresh odświeża całą stronę Arduino co 10 sekund. Do tego czasu konieczne jest wpisanie zmiany dla termostatu, w przeciwnym razie okna wprowadzania zostaną zresetowane po odświeżeniu strony. Ponieważ biblioteka Ethernet nie obejmuje użycia asynchronicznego serwera WWW, należy przepisać całą stronę. Zmieniającymi się głównie danymi dynamicznymi jest aktualna wartość wyjścia - Wł./Wył.

Krok 3: Strony HTML działające na serwerze WWW, schematy, kod źródłowy

Strony HTML działające na serwerze WWW, schematy, kod źródłowy
Strony HTML działające na serwerze WWW, schematy, kod źródłowy

Strony HTML działające na Arduino:

  • / - strona główna zawierająca formularz, aktualną listę wyjść logicznych dla przekaźnika, temperaturę
  • /action.html - przetwarza wartości z formularza, zapisuje je do pamięci EEPROM, przekierowuje użytkownika z powrotem do strony głównej
  • /get_data/ - przesyła dane o aktualnej temperaturze, temperaturze odniesienia i histerezie do strony trzeciej (komputer, mikrokontroler, inny klient…) w formacie JSON

Istnieje również rozszerzona wersja tego termostatu, która zawiera:

  • Tryb ręczny dla przekaźników (nieograniczony czas, hard ON/OFF)
  • Zegar nadzoru
  • Dostępnych więcej czujników, np.: SHT21, SHT31, DHT22, BME280, BMP280 i inne
  • Tryb chłodzenia
  • Sterowanie i konfiguracja przez RS232/UART niezależnie od Ethernetu
  • Regulacja temperatury PID dla termostatu
  • Możliwość zastosowania platform ESP8266, ESP32 pod termostat

Implementacja programu dla projektu znajduje się pod adresem: https://github.com/martinius96/termostat-ethernet/ Implementacja zawiera programy dla statycznego/dynamicznego adresu IPv4 przypisanego do osłony Ethernet.

Termostat jest przeznaczony tylko do temperatur wewnętrznych! (powyżej 0°C), do którego przystosowana jest logika systemu. Istnieje możliwość zastąpienia istniejącego termostatu pokojowego termostatem, możliwa jest chwilowa wymiana termostatu w lodówce, utrzymanie stałej temperatury w terrarium i tym podobne.

Zalecana: