Innehållsförteckning:

Rumstermostat - Arduino + Ethernet: 3 steg
Rumstermostat - Arduino + Ethernet: 3 steg

Video: Rumstermostat - Arduino + Ethernet: 3 steg

Video: Rumstermostat - Arduino + Ethernet: 3 steg
Video: XLoader - upload strojového kódu (.hex) - Ethernet termostat - Arduino Uno 2024, Juli
Anonim
Rumstermostat - Arduino + Ethernet
Rumstermostat - Arduino + Ethernet

När det gäller hårdvara använder projektet:

  • Arduino Uno / Mega 2560
  • Ethernet-skärm Wiznet W5100 / Ethernet-modul Wiznet W5200-W5500
  • DS18B20 temperaturgivare på OneWire -bussen
  • Relä SRD-5VDC-SL-C används för att byta panna

Steg 1: Beskrivning av Ethernet -termostaten

Beskrivning av Ethernet -termostaten
Beskrivning av Ethernet -termostaten

Arduino är en praktisk inbyggd plattform som kan användas till exempel för att bygga en rumstermostat, som vi kommer att visa idag. Termostaten är tillgänglig från LAN -nätverket där den är placerad, medan den är utrustad med ett webbgränssnitt som används för att konfigurera alla element i termostaten. Webbgränssnittet körs direkt på Arduino i webbserverläge. Webbservern gör det möjligt att köra flera oberoende HTML -sidor, som kan vara informativa eller till och med funktionella. Webbservern körs på port 80 -

Det elektromagnetiska reläet SRD-5VDC-SL-C, som används i projektet, möjliggör omkoppling upp till 10A vid 230V-effekt 2300W. Vid omkoppling av en likströmskrets (belastning) är det möjligt att växla 300W (10A vid 30V DC). Alternativt är OMRON G3MB-202P SSR-reläet fullt kompatibelt för kopplingsschemat, som endast är lämpligt för icke-induktiva belastningar och uteslutande för växelströmskretsar. Maximal omkopplingseffekt 460W (230V, 2A). Förbrukningen av Arduino med Ethernet-skärm och andra kringutrustning ligger på 100-120mA med reläet öppet. När den är stängd, under 200mA vid 5V matning.

Steg 2: Webbgränssnitt

Webbgränssnitt
Webbgränssnitt

Webgränssnittet för termostaten tillåter:

  • Se realtidstemperaturen från sensorn DS18B20
  • Visa realtidsrelästatus med dynamisk utgångsändring på sidan
  • Ändra måltemperaturen (referens) i intervallet 5 till 50 ° C med ett steg på 0,25 ° C
  • Ändra hysteresen i intervallet 0 till 10 ° C med ett steg på 0,25 ° C

Webbgränssnittet är utformat för att rymma större och mindre skärmar. Den är lyhörd, stöder widescreen-HD-skärmar, men också mobila enheter. Gränssnittet använder importerade CSS-stilar i Bootstrap-ramverket från en extern CDN-server, som laddar enheten på klientsidan när du öppnar en sida som körs på Arduino. Eftersom Arduino Uno är begränsat med minne kan den bara köra sidor som är några kB stora. Genom att importera CSS -stilar från en extern server kommer det att minska prestandan och minnesbelastningen för Arduino. Programvaruimplementeringen (för Arduine Uno) använder 70% av flashminnet (32kB - 4kB Bootloader) och 44% av RAM -minnet (2kB).

Statiska delar av en webbsida (sidhuvud och sidfot i HTML -dokument, Bootstrap CSS -länkning, metataggar, HTTP -svarhuvud, innehållstyp, formulär med mera) lagras direkt i Arduinos flashminne, vilket avsevärt kan minska mängden RAM -minne som används för användaren -genererat innehåll. Webbservern är därmed mer stabil och kan hantera flera anslutningar av flera enheter i nätverket samtidigt.

För att behålla de inställda värdena även efter ett strömavbrott lagras de i EEPROM -minnet på Arduino. Hänvisningstemperatur till förskjutning 10, hysteres till förskjutning 100. Var och en av värdena upptar maximalt 5B i EEPROM -minnet. EEPROM -transkriptionsgränsen ligger på 100 000 transkript. Data skrivs bara över när HTML -formuläret skickas in. Om enheten inte har något lagrat på de nämnda EEPROM -förskjutningarna vid den första uppstarten, kommer automatisk skrivning att utföras med standardvärden - referens: 20.25, hysteres 0.25 ° C

Uppdatera metataggen uppdaterar hela Arduino -sidan var 10: e sekund. Vid den här tiden är det nödvändigt att skriva ändringen för termostaten, annars återställs ingångsfönstren när sidan uppdateras. Eftersom Ethernet -biblioteket inte inkluderar användning av en asynkron webbserver måste hela sidan skrivas om. Den dynamiska data som huvudsakligen förändras är utgångens nuvarande värde - På / Av.

Steg 3: HTML -sidor som körs på webbserver, scheman, källkod

HTML -sidor som körs på webbserver, scheman, källkod
HTML -sidor som körs på webbserver, scheman, källkod

HTML -sidor som körs på Arduino:

  • / - rotsida som innehåller formuläret, aktuell logisk utmatningslista för reläet, temperatur
  • /action.html - bearbetar värden från formuläret, skriver dem till EEPROM -minnet, omdirigerar användaren tillbaka till rotsidan
  • / get_data/ - distribuerar data om aktuell temperatur, referens temperatur och hysteres till en tredje part (dator, mikrokontroller, annan klient …) i JSON -format

Det finns också en utökad version av denna termostat som inkluderar:

  • Manuellt läge för reläer (obegränsad tid, hårt PÅ / AV)
  • Watchdog timer
  • Tillgängliga fler sensorer, till exempel: SHT21, SHT31, DHT22, BME280, BMP280 och andra
  • Kylningsläge
  • Styrning och konfiguration via RS232 / UART oberoende av Ethernet
  • PID temperaturkontroll för termostat
  • Möjlighet att använda ESP8266, ESP32 plattformar för termostat

Programimplementeringen för projektet finns på: https://github.com/martinius96/termostat-ethernet/ Implementeringen innehåller program för den statiska/dynamiska IPv4-adressen som tilldelats Ethernet-skölden.

Termostaten är endast avsedd för inomhustemperaturer! (över 0 ° C), till vilken systemlogiken är anpassad. Det är möjligt att byta ut en befintlig rumstermostat med en termostat, det är möjligt att tillfälligt byta ut en termostat i ett kylskåp, hålla en konstant temperatur i ett terrarium och liknande.

Rekommenderad: