Inhoudsopgave:

Kamerthermostaat - Arduino + Ethernet: 3 stappen
Kamerthermostaat - Arduino + Ethernet: 3 stappen

Video: Kamerthermostaat - Arduino + Ethernet: 3 stappen

Video: Kamerthermostaat - Arduino + Ethernet: 3 stappen
Video: Elektor Webinar - Dive into the Future of Matter and IoT with Elektor & Espressif 2024, Juli-
Anonim
Kamerthermostaat - Arduino + Ethernet
Kamerthermostaat - Arduino + Ethernet

Op het gebied van hardware gebruikt het project:

  • Arduino Uno / Mega 2560
  • Ethernet-schild Wiznet W5100 / Ethernet-module Wiznet W5200-W5500
  • DS18B20 temperatuursensor op de OneWire bus
  • Relais SRD-5VDC-SL-C gebruikt voor ketelschakeling

Stap 1: Beschrijving van de Ethernet-thermostaat

Beschrijving van de Ethernet-thermostaat
Beschrijving van de Ethernet-thermostaat

Arduino is een handig embeeded platform waarmee je bijvoorbeeld een kamerthermostaat kunt bouwen, wat we vandaag zullen laten zien. De thermostaat is toegankelijk vanaf het LAN-netwerk waarin hij zich bevindt, terwijl hij is uitgerust met een webinterface waarmee alle elementen van de thermostaat kunnen worden geconfigureerd. De webinterface draait rechtstreeks op de Arduino in de webservermodus. De webserver maakt het mogelijk om verschillende onafhankelijke HTML-pagina's te draaien, die informatief of zelfs functioneel kunnen zijn. De webserver draait op poort 80 -

Het elektromagnetische relais SRD-5VDC-SL-C, dat in het project wordt gebruikt, maakt schakelen mogelijk tot 10A bij 230V - vermogen 2300W. Bij het schakelen van een DC-circuit (belasting) is het mogelijk om 300W (10A bij 30V DC) te schakelen. Als alternatief is het OMRON G3MB-202P SSR-relais volledig compatibel voor het bedradingsschema, dat alleen geschikt is voor niet-inductieve belastingen en uitsluitend voor AC-circuits. Maximaal schakelvermogen 460W (230V, 2A). Verbruik van Arduino met Ethernet-schild en andere randapparatuur ligt op het niveau van 100-120mA met het relais open. Indien gesloten, minder dan 200mA bij 5V voeding.

Stap 2: Webinterface

Webinterface
Webinterface

De webinterface voor de thermostaat maakt het volgende mogelijk:

  • Bekijk de realtime temperatuur van de DS18B20-sensor
  • Bekijk de realtime relaisstatus met dynamische uitgangswijziging op pagina
  • Wijzig de doeltemperatuur (referentie) in het bereik van 5 tot 50 ° C met een stap van 0,25 ° C
  • Wijzig de hysterese in het bereik van 0 tot 10 ° C met een stap van 0,25 ° C

De webinterface is ontworpen voor grotere en kleinere schermen. Het is responsief, ondersteunt breedbeeld high-definition schermen, maar ook mobiele apparaten. De interface maakt gebruik van geïmporteerde CSS-stijlen van het Bootstrap-framework van een externe CDN-server, die het apparaat aan de clientzijde laadt bij het openen van een pagina die op Arduino wordt uitgevoerd. Omdat de Arduino Uno geheugenbeperkt is, kan hij slechts pagina's van enkele kB groot uitvoeren. Door CSS-stijlen van een externe server te importeren, worden de prestaties en geheugenbelasting van de Arduino verminderd. De software-implementatie (voor Arduine Uno) gebruikt 70% van het flashgeheugen (32kB - 4kB Bootloader) en 44% van het RAM-geheugen (2kB).

Statische delen van een webpagina (kop- en voettekst van HTML-document, Bootstrap CSS-koppeling, metatags, HTTP-responsheader, inhoudstype, formulier en meer) worden rechtstreeks opgeslagen in het flashgeheugen van Arduino, wat de hoeveelheid RAM die wordt gebruikt voor de gebruiker aanzienlijk kan verminderen. -gegenereerde inhoud. De webserver is dus stabieler en kan tegelijkertijd meerdere apparaten in het netwerk aan.

Om de ingestelde waarden ook na een stroomstoring te behouden, worden ze opgeslagen in het EEPROM-geheugen van de Arduino. Referentietemperatuur tot offset 10, hysterese tot offset 100. Elk van de waarden neemt maximaal 5B in beslag in het EEPROM-geheugen. De EEPROM-transcriptielimiet ligt op het niveau van 100.000 transcripten. Gegevens worden alleen overschreven wanneer het HTML-formulier wordt ingediend. Als het apparaat bij de eerste keer opstarten niets heeft opgeslagen op de genoemde EEPROM-offsets, wordt automatisch schrijven uitgevoerd met standaardwaarden - referentie: 20.25, hysteresis 0.25 ° C

De Refresh-metatag ververst elke 10 seconden de hele Arduino-pagina. Tegen die tijd is het noodzakelijk om de wijziging voor de thermostaat te schrijven, anders worden de invoervensters gereset wanneer de pagina wordt vernieuwd. Omdat de Ethernet-bibliotheek het gebruik van een asynchrone webserver niet omvat, moet de hele pagina worden herschreven. De dynamische gegevens die voornamelijk veranderen, zijn de huidige waarde van de uitgang - Aan / Uit.

Stap 3: HTML-pagina's die worden uitgevoerd op webserver, schema's, broncode

HTML-pagina's die worden uitgevoerd op webserver, schema's, broncode
HTML-pagina's die worden uitgevoerd op webserver, schema's, broncode

HTML-pagina's die op Arduino draaien:

  • / - hoofdpagina met het formulier, de huidige lijst met logische uitgangen voor het relais, temperatuur
  • /action.html - verwerkt waarden uit het formulier, schrijft ze naar het EEPROM-geheugen, leidt de gebruiker terug naar de hoofdpagina
  • /get_data/ - distribueert gegevens over de huidige temperatuur, referentietemperatuur en hysterese naar een derde partij (computer, microcontroller, andere client …) in JSON-formaat

Er is ook een uitgebreide versie van deze thermostaat met:

  • Handmatige modus voor relais (onbeperkte tijd, hard AAN / UIT)
  • Watchdog-timer
  • Beschikbare meer sensoren, bijvoorbeeld: SHT21, SHT31, DHT22, BME280, BMP280 en anderen
  • Koelmodus
  • Besturing en configuratie via RS232 / UART onafhankelijk van Ethernet
  • PID-temperatuurregeling voor thermostaat
  • Mogelijkheid om ESP8266-, ESP32-platforms voor thermostaat te gebruiken

De programma-implementatie voor het project is te vinden op: https://github.com/martinius96/termostat-ethernet/ De implementatie bevat programma's voor het statische / dynamische IPv4-adres dat is toegewezen aan het Ethernet-schild.

De thermostaat is alleen bedoeld voor binnentemperaturen! (boven 0°C), waarop de systeemlogica is aangepast. Het is mogelijk om een bestaande kamerthermostaat te vervangen door een thermostaat, het is mogelijk om tijdelijk een thermostaat in een koelkast te vervangen, een constante temperatuur te handhaven in een terrarium en dergelijke.

Aanbevolen: