Innholdsfortegnelse:

Romtermostat - Arduino + Ethernet: 3 trinn
Romtermostat - Arduino + Ethernet: 3 trinn

Video: Romtermostat - Arduino + Ethernet: 3 trinn

Video: Romtermostat - Arduino + Ethernet: 3 trinn
Video: Magnet attack on mechanical water meter 2024, Juli
Anonim
Romtermostat - Arduino + Ethernet
Romtermostat - Arduino + Ethernet

Når det gjelder maskinvare, bruker prosjektet:

  • Arduino Uno / Mega 2560
  • Ethernet-skjerm Wiznet W5100 / Ethernet-modul Wiznet W5200-W5500
  • DS18B20 temperatursensor på OneWire -bussen
  • Relé SRD-5VDC-SL-C brukes til kjeleskift

Trinn 1: Beskrivelse av Ethernet -termostaten

Beskrivelse av Ethernet -termostaten
Beskrivelse av Ethernet -termostaten

Arduino er en praktisk innebygd plattform som for eksempel kan brukes til å bygge en romtermostat, som vi skal vise i dag. Termostaten er tilgjengelig fra LAN -nettverket den er plassert i, mens den er utstyrt med et webgrensesnitt som brukes til å konfigurere alle elementene i termostaten. Nettgrensesnittet kjører direkte på Arduino i webservermodus. Webserveren tillater kjøring av flere uavhengige HTML -sider, som kan være informative eller til og med funksjonelle. Webserveren kjører på port 80 -

Det elektromagnetiske reléet SRD-5VDC-SL-C, som brukes i prosjektet, tillater bytte opptil 10A ved 230V-effekt 2300W. Ved bytte av en likestrømskrets (belastning) er det mulig å bytte 300W (10A ved 30V DC). Alternativt er OMRON G3MB-202P SSR-reléet fullt kompatibelt for koblingsskjemaet, som bare er egnet for ikke-induktive belastninger og utelukkende for vekselstrømskretser. Maksimal bryteeffekt 460W (230V, 2A). Forbruk av Arduino med Ethernet-skjold og andre eksterne enheter er på nivået 100-120mA med reléet åpent. Ved lukket, under 200mA ved 5V forsyning.

Trinn 2: Webgrensesnitt

Nettgrensesnitt
Nettgrensesnitt

Nettgrensesnittet for termostaten tillater:

  • Se sanntidstemperaturen fra DS18B20-sensoren
  • Se sanntids reléstatus med dynamisk utgangsendring på side
  • Endre måletemperaturen (referanse) i området 5 til 50 ° C med et trinn på 0,25 ° C
  • Endre hysteresen i området 0 til 10 ° C med et trinn på 0,25 ° C

Nettgrensesnittet er designet for å ta imot større og mindre skjermer. Den er lydhør, støtter widescreen-HD-skjermer, men også mobile enheter. Grensesnittet bruker importerte CSS-stiler i Bootstrap-rammeverket fra en ekstern CDN-server, som laster enheten på klientsiden når du åpner en side som kjører på Arduino. Fordi Arduino Uno er begrenset med minne, kan den bare kjøre sider som er få kB store. Ved å importere CSS -stiler fra en ekstern server, vil det redusere ytelsen og minnelasten til Arduino. Programvareimplementeringen (for Arduine Uno) bruker 70% av flashminnet (32kB - 4kB Bootloader) og 44% av RAM -minnet (2kB).

Statiske deler av en webside (topptekst og bunntekst i HTML -dokument, Bootstrap CSS -kobling, metakoder, HTTP -responsoverskrift, innholdstype, skjema og mer) lagres direkte i Arduinos flashminne, noe som kan redusere mengden RAM som brukes for brukeren betydelig -generert innhold. Webserveren er dermed mer stabil og kan håndtere multitilkobling av flere enheter i nettverket samtidig.

For å beholde de angitte verdiene selv etter et strømbrudd, lagres de i EEPROM -minnet til Arduino. Referansetemperatur til offset 10, hysterese til offset 100. Hver av verdiene opptar maksimalt 5B i EEPROM -minnet. EEPROM -transkripsjonsgrensen er på nivået 100 000 transkripsjoner. Data overskrives bare når HTML -skjemaet sendes inn. Hvis enheten ikke har noe lagret på de nevnte EEPROM -forskyvningene ved første oppstart, vil automatisk skriving utføres med standardverdier - referanse: 20.25, hysterese 0.25 ° C

Refresh meta tag oppdaterer hele Arduino -siden hvert 10. sekund. På dette tidspunktet er det nødvendig å skrive endringen for termostaten, ellers blir inngangsvinduene tilbakestilt når siden oppdateres. Fordi Ethernet -biblioteket ikke inkluderer bruk av en asynkron webserver, må hele siden skrives om. De dynamiske dataene som hovedsakelig endrer seg, er gjeldende verdi på utgangen - På / Av.

Trinn 3: HTML -sider som kjøres på webserver, skjemaer, kildekode

HTML -sider kjører på webserver, skjemaer, kildekode
HTML -sider kjører på webserver, skjemaer, kildekode

HTML -sider som kjører på Arduino:

  • / - rotside som inneholder skjemaet, gjeldende logisk utgangsliste for reléet, temperatur
  • /action.html - behandler verdier fra skjemaet, skriver dem til EEPROM -minnet, omdirigerer brukeren tilbake til rotsiden
  • / get_data/ - distribuerer data om nåværende temperatur, referansetemperatur og hysterese til en tredjepart (datamaskin, mikrokontroller, annen klient …) i JSON -format

Det er også en utvidet versjon av denne termostaten som inkluderer:

  • Manuell modus for reléer (ubegrenset tid, hard PÅ / AV)
  • Watchdog timer
  • Tilgjengelige flere sensorer, for eksempel: SHT21, SHT31, DHT22, BME280, BMP280 og andre
  • Avkjølingsmodus
  • Kontroll og konfigurasjon via RS232 / UART uavhengig av Ethernet
  • PID temperaturkontroll for termostat
  • Mulighet for bruk av ESP8266, ESP32 plattformer for termostat

Programimplementeringen for prosjektet finner du på: https://github.com/martinius96/termostat-ethernet/ Implementeringen inneholder programmer for den statiske/dynamiske IPv4-adressen som er tilordnet Ethernet-skjoldet.

Termostaten er kun beregnet for innetemperaturer! (over 0 ° C), som systemlogikken er tilpasset. Det er mulig å bytte ut en eksisterende romtermostat med en termostat, det er mulig å midlertidig bytte ut en termostat i et kjøleskap, opprettholde en konstant temperatur i et terrarium og lignende.

Anbefalt: