Monitor dell'aria della stanza con ESP32-S3

Un sensore SCD40 misura la CO2, la temperatura e l'umidità della stanza, e uno schermo 20x4 le mostra. Tre LED dicono quando aprire la finestra: verde sotto i 1000 ppm, giallo fino a 1500, rosso sopra. L'aria viziata stanca molto prima che te ne accorga.

Il programma

Chip BASIC: ogni riga è un'istruzione che leggi e puoi cambiare. Il compilatore lo verifica a ogni rilascio del sito.

REM Aria della stanza
REM @part aria = scd40
REM @part schermo = lcd2004
10 schermo(0) = "Aria della stanza"
20 schermo(1) = "CO2 ppm  ", aria.CO2
30 schermo(2) = "Temp C   ", aria.TEMP
40 schermo(3) = "Umid %   ", aria.HUM
50 LED green, off : LED yellow, off : LED red, off
60 IF aria.CO2 < 1000 THEN LED green, on
70 IF aria.CO2 >= 1000 AND aria.CO2 < 1500 THEN LED yellow, on
80 IF aria.CO2 >= 1500 THEN LED red, on
90 WAIT 5s
100 GOTO 20

Cosa devi vedere: lo schermo mostra la CO2 in ppm, la temperatura e l'umidità, aggiornate ogni 5 secondi; un LED alla volta, verde, giallo o rosso secondo la CO2. Nel simulatore porta il cursore della CO2 sopra 1500 e si accende il LED rosso.

▶ Aprilo nell'IDE

Nel simulatore vedi la logica girare subito, senza hardware. Il simulatore non verifica i cavi: quelli li controlli sulla scheda, e la verifica collegamenti dell'IDE ti guida.

I pezzi

Il compilatore ricava i pezzi dal programma. Per ognuno, la sua pagina ha il programma di prova da usare prima di montare tutto.

  • 3 × LED (con le resistenze: 220 Ω, o 470 Ω su UNO R4)
  • Sensore di CO2 SCD40Misura la CO2 dell'aria in ppm: dice quando la stanza va arieggiata.
  • Schermo LCD 20x4 I2CUno schermo a caratteri retroilluminato, quattro righe da 20: per un piccolo terminale.

Collegamenti con ESP32-S3

  1. + rosso → ESP32-S3: GPIO4Con una resistenza da 220 Ω
  2. + giallo → ESP32-S3: GPIO2Con una resistenza da 220 Ω
  3. + verde → ESP32-S3: GPIO1Con una resistenza da 220 Ω
  4. − → ESP32-S3: GNDMassa comune: questo collegamento è obbligatorio.
  5. LV1 → ESP32-S3: GPIO38Il traslatore porta il bus della scheda (3,3 V, lato LV) ai 5 V dello schermo (lato HV): i 5 V non arrivano mai ai pin della scheda
  6. LV2 → ESP32-S3: GPIO39
  7. LV → ESP32-S3: 3V3
  8. GND → ESP32-S3: GNDMassa comune: questo collegamento è obbligatorio.
  9. HV → ESP32-S3: 5V
  10. schermo: SDA → Traslatore di livello I2C: HV1Lo schermo va solo sul lato HV (5 V) del traslatore, mai sui pin della scheda
  11. schermo: SCL → Traslatore di livello I2C: HV2
  12. schermo: VCC → Traslatore di livello I2C: HV
  13. schermo: GND → Traslatore di livello I2C: GND
  14. SDA → ESP32-S3: GPIO38Il bus dei sensori: ogni modulo I2C condivide questi due pin
  15. SCL → ESP32-S3: GPIO39
  16. VCC → ESP32-S3: 3V3
  17. GND → ESP32-S3: GNDMassa comune: questo collegamento è obbligatorio.

Se non funziona

Le luci: il programma gira ma non succede niente
Il LED è girato al contrario, o manca la resistenza in serie. La gamba lunga va dal lato del piedino della scheda, la corta verso GND, con la resistenza in mezzo (220 Ω, o 470 Ω su UNO R4).

Cosa puoi cambiare

I limiti sono le righe da 60 a 80: 1000 e 1500 ppm sono i valori consigliati di solito per una stanza. Chiedi all'assistente un bip quando diventa rosso, o di mandare le misure al telefono per vederle nel corso della giornata.

Su quali schede funziona

  • ESP32-S3 Freenove: sì
  • Nordic nRF54LM20 DK: no: uno dei suoi pezzi non funziona ancora su questa scheda
  • Arduino UNO R4 WiFi: sì