Sommario:

Termostato Ambiente - Arduino + Ethernet: 3 passaggi
Termostato Ambiente - Arduino + Ethernet: 3 passaggi

Video: Termostato Ambiente - Arduino + Ethernet: 3 passaggi

Video: Termostato Ambiente - Arduino + Ethernet: 3 passaggi
Video: Cronotermostato FAIDATE con Arduino- DIY Arduino Programmable Thermostat 2024, Luglio
Anonim
Termostato Ambiente - Arduino + Ethernet
Termostato Ambiente - Arduino + Ethernet

In termini di hardware, il progetto utilizza:

  • Arduino Uno / Mega 2560
  • Schermo Ethernet Wiznet W5100 / Modulo Ethernet Wiznet W5200-W5500
  • Sensore di temperatura DS18B20 sul bus OneWire
  • Relè SRD-5VDC-SL-C utilizzato per la commutazione della caldaia

Passaggio 1: descrizione del termostato Ethernet

Descrizione del termostato Ethernet
Descrizione del termostato Ethernet

Arduino è una pratica piattaforma incorporata che può essere utilizzata, ad esempio, per costruire un termostato ambiente, che mostreremo oggi. Il termostato è accessibile dalla rete LAN in cui si trova, mentre è dotato di un'interfaccia web che permette di configurare tutti gli elementi del termostato. L'interfaccia web viene eseguita direttamente su Arduino in modalità web server. Il server web consente l'esecuzione di diverse pagine HTML indipendenti, che possono essere informative o anche funzionali. Il server web funziona sulla porta 80 -

Il relè elettromagnetico SRD-5VDC-SL-C, utilizzato nel progetto, consente di commutare fino a 10A a 230V - potenza 2300W. In caso di commutazione di un circuito CC (carico) è possibile commutare 300 W (10 A a 30 V CC). In alternativa, il relè SSR OMRON G3MB-202P è completamente compatibile con lo schema elettrico, che è adatto solo per carichi non induttivi ed esclusivamente per circuiti CA. Potenza di commutazione massima 460W (230V, 2A). Il consumo di Arduino con Ethernet shield e altre periferiche è al livello di 100-120mA con il relè aperto. Quando è chiuso, sotto i 200 mA con alimentazione a 5 V.

Passaggio 2: interfaccia web

Interfaccia web
Interfaccia web

L'interfaccia web del termostato consente:

  • Visualizza la temperatura in tempo reale dal sensore DS18B20
  • Visualizza lo stato del relè in tempo reale con la modifica dinamica dell'uscita a pagina
  • Modificare la temperatura target (di riferimento) nell'intervallo da 5 a 50 ° C con un passo di 0,25 ° C
  • Modificare l'isteresi nell'intervallo da 0 a 10 ° C con un passo di 0,25 ° C

L'interfaccia web è progettata per ospitare schermi più grandi e più piccoli. È reattivo, supporta schermi widescreen ad alta definizione, ma anche dispositivi mobili. L'interfaccia utilizza stili CSS importati del framework Bootstrap da un server CDN esterno, che carica il dispositivo lato client quando si apre una pagina in esecuzione su Arduino. Poiché Arduino Uno ha una memoria limitata, può eseguire solo pagine di pochi kB. Importando stili CSS da un server esterno, ridurrà le prestazioni e il carico di memoria di Arduino. L'implementazione software (per Arduine Uno) utilizza il 70% di memoria flash (32kB - Bootloader 4kB) e il 44% di memoria RAM (2kB).

Le parti statiche di una pagina web (intestazione e piè di pagina del documento HTML, collegamento CSS Bootstrap, meta tag, intestazione della risposta HTTP, tipo di contenuto, modulo e altro) sono archiviate direttamente nella memoria flash di Arduino, il che può ridurre significativamente la quantità di RAM utilizzata per l'utente -contenuto generato. Il web server è quindi più stabile e può gestire la multiconnessione di più dispositivi in rete contemporaneamente.

Al fine di mantenere i valori impostati anche dopo un'interruzione di corrente, questi vengono memorizzati nella memoria EEPROM dell'Arduino. Temperatura di riferimento per offset 10, isteresi per offset 100. Ciascuno dei valori occupa un massimo di 5B nella memoria EEPROM. Il limite di trascrizione EEPROM è al livello di 100.000 trascrizioni. I dati vengono sovrascritti solo quando viene inviato il modulo HTML. Nel caso in cui il dispositivo non abbia nulla in memoria sugli offset EEPROM citati al primo avvio, verrà eseguita la scrittura automatica con i valori di default - riferimento: 20.25, isteresi 0.25 °C

Il meta tag Refresh aggiorna l'intera pagina Arduino ogni 10 secondi. A questo punto è necessario scrivere la modifica per il termostato, altrimenti le finestre di input verranno ripristinate al refresh della pagina. Poiché la libreria Ethernet non include l'uso di un server Web asincrono, l'intera pagina deve essere riscritta. Il dato dinamico che cambia principalmente è il valore corrente dell'uscita - On/Off.

Passaggio 3: pagine HTML in esecuzione su server Web, schemi, codice sorgente

Pagine HTML in esecuzione su server Web, schemi, codice sorgente
Pagine HTML in esecuzione su server Web, schemi, codice sorgente

Pagine HTML in esecuzione su Arduino:

  • / - pagina principale contenente il modulo, l'elenco delle uscite logiche correnti per il relè, la temperatura
  • /action.html - elabora i valori dal modulo, li scrive nella memoria EEPROM, reindirizza l'utente alla pagina principale
  • /get_data/ - distribuisce i dati su temperatura attuale, temperatura di riferimento e isteresi a una terza parte (computer, microcontrollore, altro client…) in formato JSON

Esiste anche una versione estesa di questo termostato che include:

  • Modalità manuale per relè (tempo illimitato, hard ON/OFF)
  • Timer watchdog
  • Disponibili più sensori, ad esempio: SHT21, SHT31, DHT22, BME280, BMP280 e altri
  • Modalità di raffreddamento
  • Controllo e configurazione tramite RS232/UART indipendente da Ethernet
  • Controllo della temperatura PID per termostato
  • Possibilità di utilizzare piattaforme ESP8266, ESP32 per termostato

L'implementazione del programma per il progetto è disponibile all'indirizzo: https://github.com/martinius96/termostat-ethernet/ L'implementazione contiene programmi per l'indirizzo IPv4 statico/dinamico assegnato allo shield Ethernet.

Il termostato è previsto solo per temperature interne! (sopra 0°C), a cui è adattata la logica del sistema. È possibile sostituire un termostato ambiente esistente con un termostato, è possibile sostituire temporaneamente un termostato in un frigorifero, mantenere una temperatura costante in un terrario e simili.

Consigliato: