INHOUDSOPGAWE:

Kamertermostaat - Arduino + Ethernet: 3 stappe
Kamertermostaat - Arduino + Ethernet: 3 stappe

Video: Kamertermostaat - Arduino + Ethernet: 3 stappe

Video: Kamertermostaat - Arduino + Ethernet: 3 stappe
Video: Thermostaat aansturen met Arduino 2024, November
Anonim
Kamertermostaat - Arduino + Ethernet
Kamertermostaat - Arduino + Ethernet

Wat hardeware betref, gebruik die projek:

  • Arduino Uno / Mega 2560
  • Ethernet-skild Wiznet W5100 / Ethernet-module Wiznet W5200-W5500
  • DS18B20 temperatuursensor op die OneWire -bus
  • Relais SRD-5VDC-SL-C word gebruik om ketels te skakel

Stap 1: Beskrywing van die Ethernet -termostaat

Beskrywing van die Ethernet -termostaat
Beskrywing van die Ethernet -termostaat

Arduino is 'n handige ingeboude platform wat byvoorbeeld gebruik kan word om 'n kamertermostaat te bou, wat ons vandag sal wys. Die termostaat is toeganklik vanaf die LAN -netwerk waarin dit geleë is, terwyl dit toegerus is met 'n webkoppelvlak wat gebruik word om alle elemente van die termostaat op te stel. Die webkoppelvlak loop direk op die Arduino in die webbedienermodus. Die webbediener laat verskeie onafhanklike HTML -bladsye toe, wat insiggewend of selfs funksioneel kan wees. Die webbediener werk op poort 80 -

Die elektromagnetiese relais SRD-5VDC-SL-C, wat in die projek gebruik word, maak dit moontlik om na 10A by 230V te skakel-2300W krag. In die geval van die skakel van 'n GS -stroombaan (las) is dit moontlik om 300W (10A by 30V DC) oor te skakel. Alternatiewelik is die OMRON G3MB-202P SSR-relais volledig versoenbaar vir die bedradingsdiagram, wat slegs geskik is vir nie-induktiewe belastings en uitsluitlik vir wisselstroombane. Maksimum skakelkrag 460W (230V, 2A). Verbruik van Arduino met Ethernet-skild en ander randapparatuur is op die vlak van 100-120mA met die relais oop. As dit gesluit is, onder 200mA by 5V -toevoer.

Stap 2: Webkoppelvlak

Webkoppelvlak
Webkoppelvlak

Die webkoppelvlak vir die termostaat laat toe:

  • Kyk na die intydse temperatuur vanaf die DS18B20-sensor
  • Bekyk intydse aflosstatus met dinamiese verandering in uitset op bladsy
  • Verander die teiken (verwysing) temperatuur in die omgewing van 5 tot 50 ° C met 'n stap van 0,25 ° C
  • Verander die histerese in die reeks 0 tot 10 ° C met 'n stap van 0,25 ° C

Die webkoppelvlak is ontwerp om groter en kleiner skerms te akkommodeer. Dit reageer, ondersteun hoë-definisie-skerms op groot skerm, maar ook mobiele toestelle. Die koppelvlak gebruik ingevoerde CSS-style van die Bootstrap-raamwerk vanaf 'n eksterne CDN-bediener, wat die toestel aan die kliënt laai wanneer 'n bladsy op Arduino oopgemaak word. Omdat die Arduino Uno geheue beperk is, kan dit slegs bladsye met 'n paar kB groot wees. Deur CSS -style van 'n eksterne bediener in te voer, verminder dit die prestasie en geheue -las van die Arduino. Die sagteware -implementering (vir Arduine Uno) gebruik 70% van die flitsgeheue (32kB - 4kB Bootloader) en 44% van die RAM -geheue (2kB).

Statiese dele van 'n webblad (kop- en voettekst van HTML -dokumente, Bootstrap CSS -koppeling, metatags, HTTP -antwoordkop, inhoudstipe, vorm en meer) word direk in die flitsgeheue van Arduino gestoor, wat die hoeveelheid RAM wat gebruik word vir gebruikers aansienlik kan verminder -gegenereerde inhoud. Die webbediener is dus meer stabiel en kan die multi-verbinding van verskeie toestelle in die netwerk op dieselfde tyd hanteer.

Om die ingestelde waardes te behou, selfs na 'n kragonderbreking, word dit in die EEPROM -geheue van die Arduino gestoor. Verwysingstemperatuur na offset 10, histerese tot offset 100. Elkeen van die waardes beslaan 'n maksimum van 5B in die EEPROM -geheue. Die limiet van die EEPROM -transkripsie is op die vlak van 100 000 transkripsies. Data word slegs oorgeskryf wanneer die HTML -vorm ingedien word. As die toestel by die eerste aanvang niks op die genoemde EEPROM -offset gestoor het nie, word outomatiese skryfwerk met standaardwaardes uitgevoer - verwysing: 20.25, histerese 0.25 ° C

Die Meta -tag Refresh verfris elke 10 sekondes die hele Arduino -bladsy. Teen hierdie tyd is dit nodig om die verandering vir die termostaat neer te skryf, anders word die invoervensters herstel as die bladsy opgedateer word. Omdat die Ethernet -biblioteek nie die gebruik van 'n asynchrone webbediener insluit nie, moet die hele bladsy herskryf word. Die dinamiese data wat hoofsaaklik verander, is die huidige waarde van die uitset - Aan / Uit.

Stap 3: HTML -bladsye wat by webbediener uitgevoer word, skemas, bronkode

HTML -bladsye loop by webbediener, skemas, bronkode
HTML -bladsye loop by webbediener, skemas, bronkode

HTML -bladsye wat op Arduino loop:

  • / - wortelbladsy wat die vorm bevat, die huidige logiese uitsetlys vir die aflos, temperatuur
  • /action.html - verwerk waardes uit die vorm, skryf dit na die EEPROM -geheue, herlei die gebruiker terug na die wortelbladsy
  • / get_data/ - versprei data oor huidige temperatuur, verwysingstemperatuur en histerese aan 'n derde party (rekenaar, mikrobeheerder, ander kliënt …) in JSON -formaat

Daar is ook 'n uitgebreide weergawe van hierdie termostaat wat die volgende insluit:

  • Handmatige modus vir aflosse (onbeperkte tyd, harde AAN / UIT)
  • Watchdog timer
  • Meer sensors beskikbaar, byvoorbeeld: SHT21, SHT31, DHT22, BME280, BMP280 en ander
  • Koelmodus
  • Beheer en konfigurasie via RS232 / UART onafhanklik van Ethernet
  • PID -temperatuurbeheer vir termostaat
  • Moontlikheid om ESP8266, ESP32 platforms vir termostaat te gebruik

Die programimplementering vir die projek kan gevind word op: https://github.com/martinius96/termostat-ethernet/ Die implementering bevat programme vir die statiese/dinamiese IPv4-adres wat aan die Ethernet-skild toegeken is.

Die termostaat is slegs bedoel vir binnenshuise temperature! (bo 0 ° C), waarby die stelsellogika aangepas is. Dit is moontlik om 'n bestaande kamertermostaat met 'n termostaat te vervang, dit is moontlik om 'n termostaat tydelik in 'n yskas te vervang, 'n konstante temperatuur in 'n terrarium en dies meer te handhaaf.

Aanbeveel: