4.7 Progetto: Sistema di Controllo della Temperatura

In questo progetto, dimostreremo come utilizzare il sensore di temperatura e umidità, la ventola e il display LCD1602 per costituire un sistema intelligente di controllo della temperatura e dell’umidità.

Il sistema misura la temperatura e l’umidità ambiente e controlla la ventola per raffreddare secondo necessità. Quando la temperatura supera la soglia impostata, la ventola si accende automaticamente per ridurre la temperatura ambiente al di sotto del valore impostato. Nel frattempo, i valori attuali di temperatura e umidità verranno visualizzati sull’LCD1602.

Pertanto, realizza la regolazione automatica della temperatura e dell’umidità ambiente, il che è perfetto per progetti che richiedono queste funzioni.

img


4.7.1 Diagramma di Flusso

image-20230607121651834


4.7.2 Sensore di Temperatura e Umidità

Descrizione:

Il sensore di temperatura e umidità DHT11 emette segnali digitali. Applica i principi dell’acquisizione e conversione del segnale analogico, nonché la tecnologia di rilevamento della temperatura e dell’umidità, in modo da presentare stabilità a lungo termine e alta affidabilità. Inoltre, il sensore integra un sensore di umidità resistivo ad alta precisione e un sensore di temperatura termosensibile resistivo, ed è collegato a una MCU a 8 bit ad alte prestazioni.

img


Mezzi di Comunicazione DHT11:

DHT11 comunica tramite monobus (un singolo bus) che scambia e controlla i dati.

  • Monobus trasmette Bit di Dati:

    • Formato dati del monobus: trasmette 40 bit di dati ogni volta, con il bit più significativo per primo.

    • Valore intero di umidità a 8 bit + valore decimale di umidità a 8 bit + valore intero di temperatura a 8 bit + valore decimale di temperatura a 8 bit + parità di bit.

    • NOTA: Il valore decimale dell’umidità è uguale a 0.

  • Bit di Parità:

    • Valore intero di umidità a 8 bit + valore decimale di umidità a 8 bit + valore intero di temperatura a 8 bit + valore decimale di temperatura a 8 bit.

    • La parità a 8 bit è uguale agli ultimi 8 bit del risultato.

Diagramma di Temporizzazione:

img

NOTA:

L’host legge sempre i valori di temperatura e umidità dell’ultima misurazione dal DHT11. Pertanto, se l’intervallo tra due misurazioni è lungo, si prega di rilevare consecutivamente due volte e adottare il secondo risultato.

Per maggiori dettagli, si prega di visitare il sito web ufficiale di ASAIR: http://www.aosong.com/products-21.html


Schema di Cablaggio:

Collegare il sensore di temperatura e umidità a io17.

Attenzione: Collegare il giallo a S (Segnale), il rosso a V (Alimentazione) e il nero a GND. Non invertirli!

img


Codice di Test:

  • Inizializzare la porta seriale e il sensore.

img

  • Il monitor seriale stampa e aggiorna i valori di umidità e temperatura al secondo.

img

Codice completo:

img

Risultato del Test:

img

Aprire il monitor seriale e si vedranno i valori attuali di temperatura e umidità.

img


4.7.3 Modulo LCD 1602

Descrizione:

L’LCD 1602 possiede un’interfaccia standard a 14 pin (senza retroilluminazione) o 16 pin (con retroilluminazione), risparmiando i pin della MCU. Il suo display pilota l’IC per realizzare il controllo I2C.

img


Comunicazione Seriale I2C:

La comunicazione I2C, nota completamente come Inter-Integrated Circuit (IIC) o Two-Wire Interface (TWI), è un protocollo di comunicazione dual-bus (un host e uno slave) comunemente usato, sviluppato da Phillips Semiconductor (acquistata da US NXP Semiconductors).

Il più grande vantaggio è che solo due fili completano la trasmissione dei dati, il che semplifica notevolmente i circuiti. In totale, il bus I2C può collegare 127 nodi in parallelo, quindi supporta più host e slave.

Generalmente, non è necessaria un’alimentazione esterna per gli slave, poiché il bus I2C trasmetterà loro l’alimentazione:

img

Il bus I2C trasmette dati tramite trasmissione dati a 8 bit. Di solito, un dato di un byte è composto da nove segnali di clock, otto dei quali trasmettono dati e l’ultimo segna la fine della trasmissione.

Inoltre, il bus I2C supporta la trasmissione di dati multi-byte ripetendo il processo sopra descritto continuamente.

Il protocollo I2C consiste fondamentalmente in:

  • Segnale di avvio: Prima della trasmissione, il mittente trasmette un segnale di avvio per informare il ricevitore del punto di partenza.

  • Indirizzo: Notifica al ricevitore a chi vengono inviati i dati.

  • Dati: Vengono trasmessi un byte alla volta e bit per bit.

  • Segnale di fine: Al termine della trasmissione, il mittente termina i dati con un segnale di fine per informare il ricevitore che il processo è terminato.

Diagramma di Temporizzazione del Protocollo Seriale:

Per maggiori dettagli, si prega di visitare il sito web ufficiale: https://www.nxp.com/

img

img

Ti forniamo un file di libreria Wire.h per il protocollo I2C, in cui le funzioni possono essere chiamate direttamente per comunicare con dispositivi I2C/TWI.

Per i dettagli della libreria, si prega di fare riferimento a:

https://www.arduino.cc/reference/en/language/functions/communication/wire/


Schema di Cablaggio:

Collegare l’LCD al BUS I2C come mostrato di seguito.

Attenzione: Collegare il giallo a S (Segnale), il rosso a V (Alimentazione) e il nero a GND. Non invertirli!

img


Codice di Test:

  • Inizializzare l’indirizzo I2C dell’LCD e accendere la sua retroilluminazione.

img

  • Impostare la posizione del cursore LCD sugli assi X e Y (l’asse X visualizza un massimo di 16 caratteri e l’asse Y visualizza un massimo di 2 colonne).

img

  • Inserire il contenuto di stampa (Non più di 16 caratteri, altrimenti non sarà completo).

img

Codice completo:

img

Risultato del test:

LCD1602 accende la sua retroilluminazione e visualizza « HELLO WORLD 0 « e « HELLO WORLD 1 «.

img


4.7.4 Modulo ventola

Descrizione:

Il motore 130 è in grado di regolare la velocità tramite PWM. Nel processo, sono necessari due pin da collegare per il controllo.

Il modulo è adatto a molteplici applicazioni, come la dissipazione del calore del computer e la produzione industriale. Inoltre, è compatto e facile da installare, il che lo rende molto pratico.

img


Schema elettrico:

img


Schema di cablaggio:

Collegare il motore a io18 e io19.

Attenzione: Collegare il giallo a S (Segnale), il rosso a V (Alimentazione) e il nero a GND. Non invertirli!

img


Codice di prova:

  • Impostare il pin della ventola INA

img

  • Impostare lo stato del livello di potenza di INA, che determina la direzione di rotazione della ventola.

img

  • Impostare il pin della ventola INB.

img

  • Impostare l’uscita analogica su INB, che decide la velocità di rotazione.

    • Quando INA è alto, minore è l’uscita analogica su INB, più velocemente ruoterà la ventola.

    • Quando INA è basso, maggiore è l’uscita analogica su INB, più velocemente ruoterà la ventola.

img

Risultato del test:

Il motore 130 ruota alternativamente a sinistra e a destra ogni 2 secondi.

img

NOTA:

Esistono interruzioni intermittenti durante il cambio delle direzioni di rotazione. Esse impediscono una corrente eccessiva al momento dell’inversione. In caso contrario, potrebbe verificarsi un ripristino forzato a causa di un’alimentazione insufficiente sulla scheda di sviluppo.


4.7.5 Sistema di controllo della temperatura

Descrizione:

Qui, leggiamo il valore del sensore di temperatura e umidità DHT11 tramite comunicazione monobus, e i valori verranno visualizzati sull’LCD. Se i valori superano la soglia impostata, la ventola si accenderà per la deumidificazione e il raffreddamento per proteggere gli animali e le piante nella fattoria. In particolare, questo sistema è facile da installare con molteplici funzioni, come il controllo della velocità tramite PWM e la trasmissione dei dati tramite monobus.

Nel complesso, è un sistema pratico che aiuta gli agricoltori a monitorare e controllare lo stato in tempo reale per migliorare l’efficienza della produzione.


Schema di cablaggio:

  • Collegare il sensore di temperatura e umidità a io17.

  • Collegare il modulo motore (ventola) a io18 e io19

  • Collegare LCD1602 al BUS I2C.

Attenzione: Collegare il giallo a S (Segnale), il rosso a V (Alimentazione) e il nero a GND. Non invertirli!

img


Codice di prova:

Flusso del codice:

img

Codice:

  • Inizializzare l’LCD per impostare un indirizzo e cancellare il display. Accendere la retroilluminazione e impostare la posizione del cursore:

img

  • Inizializzare il sensore DHT11 e scegliere un pin corrispondente. Definire due variabili come valori di temperatura e umidità.

img

  • Nel loop, assegnare rispettivamente i valori rilevati alle due variabili.

img

  • Visualizzare i valori sull’LCD.

img

  • Determinare il valore di temperatura e umidità. Se la temperatura è superiore a 29° o l’umidità supera l’80%, la ventola ruoterà.

img

Codice completo:

img

Risultato del test:

Quando la temperatura raggiunge i 29°C, la ventola si accenderà per dissipare il calore. Quando è inferiore a 29°C, la ventola si spegnerà (la ventola simula solo la dissipazione del calore, quindi l’effetto non è buono), il che consente di risparmiare energia per la fattoria.


4.7.6 FAQ

#D: Il sensore di temperatura e umidità è impermeabile?

R: No. Rileva la temperatura e l’umidità ambiente (nell’aria), quindi si prega di non immergerlo in acqua.


#D: La scheda ESP32 si ripristina quando la ventola ruota.

R: Quando la ventola ruota, è necessaria più corrente rispetto ad altri sensori, quindi la tensione e la corrente possono fluttuare nel circuito. Soprattutto al momento dell’inversione della ventola, le fluttuazioni possono essere troppo forti, con conseguente ripristino a causa di una tensione e corrente estremamente basse nella scheda di sviluppo ESP32.