2025 Autore: John Day | [email protected]. Ultima modifica: 2025-01-13 06:57
Qui vorrei costruire un indicatore di temperatura e umidità per la mia stanza. Ho usato una singola matrice LED 8x8 per visualizzare numeri a due cifre e penso che parte del progetto sia diventata più utile. Ho inscatolato il finale costruito utilizzando una scatola di cartone, dipinta come il legno.
Forniture
- Arduino Nano x1
- DHT11 Sensore di temperatura e umidità x1
- Matrice LED 8x8 con MAX7219 x1
- Resistenza da 10K x1
- Fili dell'intestazione
- Alimentazione 5V x1
- Scatola di cartone (4x8x13 cm)
Passaggio 1: Schema
Il sensore digitale di temperatura e umidità DHT11 fornisce temperature tra 0 - 50°C e umidità tra 20% e 90%. La precisione della temperatura è ±2°C (massimo) e la precisione dell'umidità è ±5%.
DHT11 fornisce anche valori del punto di rugiada. Il punto di rugiada è la temperatura alla quale l'aria deve essere raffreddata per saturarsi di vapore acqueo. Quando ulteriormente raffreddato, il vapore acqueo nell'aria si condenserà per formare acqua liquida.
Passaggio 2: cablaggio e inscatolamento
Per prima cosa ho dipinto la scatola di cartone usando colori acrilici e dopo aver asciugato per 1 giorno ho finito con una lacca per capelli. Ho realizzato una finestra quadrata per display a LED sulla copertina. Inoltre ho aperto un piccolo foro rettangolare per l'alimentatore Arduino Nano e ho messo diversi fori vicino al sensore DHT11.
Ho fissato l'Arduino nell'angolo della scatola principale usando una piccola scatola e silicone caldo.
Ho posizionato la matrice LED nella finestra utilizzando strisce di nastro trasparenti. Qui è importante posizionarlo con una rotazione antioraria di 90° perché il codice utilizzerà le 4 righe superiori per le cifre delle decine e le 4 righe inferiori per le cifre delle unità. Per il modulo che ho usato il lato con MAX7219 dovrebbe essere sul lato base.
Perché ho posizionato Arduino e sensore sul lato di chiusura della scatola non ho potuto chiuderlo completamente?. È meglio selezionare l'altro lato:).
Passaggio 3: codice
Prima carica la libreria per DHT11 (https://github.com/adidax/dht11) e matrice LED (https://github.com/wayoda/LedControl) se non l'hai già fatto.
Il codice utilizza le prime 4 righe della matrice LED come decine e le ultime 4 righe come unità. Quindi, ad esempio, se controlli il codice per "uno" vedrai "11" ruotato di 90° in senso orario. Se desideri modificare questi codici, prenditi cura di questo dettaglio.
byte uno = {B00000000, B01000100, B01111100, B01000000, B00000000, B01000100, B01111100, B01000000};
I codici per ottenere le cifre dalla lettura del sensore sono:
unità = umido % 10; decine = (umido /10) % 10;
Per le decine il ciclo for funziona come segue:
if (decine == 1) { for (int c=0;c<4;c++) { lc.setRow(0, c, uno[c]); }
Per le unità, il ciclo for funziona come segue:
if (unità == 1) { for (int c=4;c<8;c++) { lc.setRow(0, c, one[c]); }
L'ordine di visualizzazione è in loop come segue:
"°C" -> temperatura -> "ronzio" -> umidità -> "dp" -> punto di rugiada -> significato del punto di rugiada (spiegato di seguito)
Ho alcune informazioni su come le persone percepiscono il tempo in base al punto di rugiada e inserisco queste informazioni nel codice come segue:
dp < 10: secco
9 < dp < 15: buono (g..d)
14 < dp < 18: Afoso (sw)
17 < dp < 24: Afoso più (sw +)
dp > 23: bagnato
Il display per queste parole non è buono ma è comunque comprensibile per un singolo display 8x8