Inhaltsverzeichnis:

Raumthermostat - Arduino + Ethernet - Gunook
Raumthermostat - Arduino + Ethernet - Gunook

Video: Raumthermostat - Arduino + Ethernet - Gunook

Video: Raumthermostat - Arduino + Ethernet - Gunook
Video: Magnet attack on mechanical water meter 2024, November
Anonim
Raumthermostat - Arduino + Ethernet
Raumthermostat - Arduino + Ethernet

In Bezug auf die Hardware verwendet das Projekt:

  • Arduino Uno / Mega 2560
  • Ethernet-Schirm Wiznet W5100 / Ethernet-Modul Wiznet W5200-W5500
  • Temperatursensor DS18B20 am OneWire-Bus
  • Relais SRD-5VDC-SL-C zur Kesselschaltung

Schritt 1: Beschreibung des Ethernet-Thermostats

Beschreibung des Ethernet-Thermostats
Beschreibung des Ethernet-Thermostats

Arduino ist eine praktische eingebettete Plattform, mit der beispielsweise ein Raumthermostat gebaut werden kann, den wir heute zeigen. Der Thermostat ist über das LAN-Netzwerk, in dem er sich befindet, zugänglich, während er mit einer Webschnittstelle ausgestattet ist, mit der alle Elemente des Thermostats konfiguriert werden können. Das Webinterface läuft direkt auf dem Arduino im Webserver-Modus. Der Webserver ermöglicht das Ausführen mehrerer unabhängiger HTML-Seiten, die informativ oder sogar funktional sein können. Der Webserver läuft auf Port 80 -

Das im Projekt verwendete elektromagnetische Relais SRD-5VDC-SL-C ermöglicht das Schalten von bis zu 10A bei 230V - Leistung 2300W. Beim Schalten eines Gleichstromkreises (Last) können 300W (10A bei 30V DC) geschaltet werden. Alternativ ist das OMRON G3MB-202P SSR-Relais voll kompatibel zum Schaltplan, der nur für nicht-induktive Lasten und ausschließlich für Wechselstromkreise geeignet ist. Maximale Schaltleistung 460W (230V, 2A). Der Verbrauch von Arduino mit Ethernet-Shield und anderen Peripheriegeräten liegt bei 100-120 mA bei geöffnetem Relais. Im geschlossenen Zustand unter 200mA bei 5V Versorgung.

Schritt 2: Webinterface

Webinterface
Webinterface

Die Weboberfläche des Thermostats ermöglicht:

  • Sehen Sie sich die Echtzeittemperatur des DS18B20-Sensors an
  • Echtzeit-Relaisstatus mit dynamischer Ausgangsänderung auf Seite anzeigen
  • Ändern Sie die Ziel-(Referenz-)Temperatur im Bereich von 5 bis 50 ° C mit einem 0,25 ° C-Schritt
  • Ändern Sie die Hysterese im Bereich von 0 bis 10 ° C mit einem 0,25 ° C-Schritt

Die Weboberfläche ist für größere und kleinere Bildschirme ausgelegt. Es ist reaktionsschnell, unterstützt Breitbild-High-Definition-Bildschirme, aber auch mobile Geräte. Die Schnittstelle verwendet importierte CSS-Stile des Bootstrap-Frameworks von einem externen CDN-Server, der das clientseitige Gerät lädt, wenn eine Seite geöffnet wird, die auf Arduino ausgeführt wird. Da der Arduino Uno speicherbegrenzt ist, kann er nur Seiten mit einer Größe von wenigen KB ausführen. Durch den Import von CSS-Stilen von einem externen Server wird die Leistung und Speicherbelastung des Arduino reduziert. Die Softwareimplementierung (für Arduine Uno) verwendet 70% des Flash-Speichers (32kB - 4kB Bootloader) und 44% des RAM-Speichers (2kB).

Statische Teile einer Webseite (HTML-Dokument-Header und -Fußzeile, Bootstrap-CSS-Verknüpfung, Meta-Tags, HTTP-Response-Header, Inhaltstyp, Formular und mehr) werden direkt im Flash-Speicher von Arduino gespeichert, was den für den Benutzer verwendeten RAM erheblich reduzieren kann -generierte Inhalte. Der Webserver ist dadurch stabiler und kann die Mehrfachverbindung mehrerer Geräte im Netzwerk gleichzeitig verarbeiten.

Um die eingestellten Werte auch nach einem Stromausfall beizubehalten, werden diese im EEPROM-Speicher des Arduino abgelegt. Referenztemperatur auf Offset 10, Hysterese auf Offset 100. Jeder der Werte belegt maximal 5B im EEPROM-Speicher. Die EEPROM-Transkriptionsgrenze liegt bei 100.000 Transkripten. Daten werden nur überschrieben, wenn das HTML-Formular gesendet wird. Falls das Gerät beim ersten Start nichts auf den genannten EEPROM-Offsets gespeichert hat, wird automatisch mit Standardwerten geschrieben - Referenz: 20,25, Hysterese 0,25 ° C

Das Meta-Tag Refresh aktualisiert die gesamte Arduino-Seite alle 10 Sekunden. Zu diesem Zeitpunkt ist es notwendig, die Änderung für den Thermostat zu schreiben, ansonsten werden die Eingabefenster beim Aktualisieren der Seite zurückgesetzt. Da die Ethernet-Bibliothek die Verwendung eines asynchronen Webservers nicht beinhaltet, muss die gesamte Seite neu geschrieben werden. Die sich hauptsächlich ändernden dynamischen Daten sind der aktuelle Wert des Ausgangs - Ein / Aus.

Schritt 3: HTML-Seiten, die auf Webserver ausgeführt werden, Schaltpläne, Quellcode

HTML-Seiten, die auf Webserver ausgeführt werden, Schaltpläne, Quellcode
HTML-Seiten, die auf Webserver ausgeführt werden, Schaltpläne, Quellcode

HTML-Seiten, die auf Arduino ausgeführt werden:

  • / - Stammseite mit dem Formular, der aktuellen logischen Ausgangsliste für das Relais, Temperatur
  • /action.html - verarbeitet Werte aus dem Formular, schreibt sie in den EEPROM-Speicher, leitet den Benutzer zurück zur Stammseite
  • /get_data/ - verteilt Daten zur aktuellen Temperatur, Referenztemperatur und Hysterese an Dritte (Computer, Mikrocontroller, anderer Client …) im JSON-Format

Es gibt auch eine erweiterte Version dieses Thermostats, die Folgendes umfasst:

  • Manueller Modus für Relais (unbegrenzte Zeit, hart EIN / AUS)
  • Watchdog-Timer
  • Weitere Sensoren verfügbar, zum Beispiel: SHT21, SHT31, DHT22, BME280, BMP280 und andere
  • Kühlmodus
  • Steuerung und Konfiguration über RS232 / UART unabhängig von Ethernet
  • PID-Temperaturregelung für Thermostat
  • Möglichkeit, ESP8266-, ESP32-Plattformen für Thermostat zu verwenden

Die Programmimplementierung für das Projekt finden Sie unter: https://github.com/martinius96/termostat-ethernet/ Die Implementierung enthält Programme für die dem Ethernet-Shield zugewiesene statische / dynamische IPv4-Adresse.

Der Thermostat ist nur für Innentemperaturen bestimmt! (über 0°C), an die die Systemlogik angepasst ist. Es ist möglich, einen vorhandenen Raumthermostat durch einen Thermostat zu ersetzen, es ist möglich, einen Thermostat in einem Kühlschrank vorübergehend zu ersetzen, eine konstante Temperatur in einem Terrarium zu halten und dergleichen.

Empfohlen: