Nova PM SDS011 per misurare la qualità dell’aria

“La libertà è come l’aria: ci si accorge di quanto vale
quando comincia a mancare.”

Piero Calamandrei

L’evoluzione tecnologica ha da un lato aumentato le prestazioni e la miniaturizzazione, dall’altro ha abbassato moltissimo i costi della tecnologia. Questo ha favorito la rinascita di tutto quel settore di elettronica hobbystica che dagli anni ’80 ha rinchiuso generazioni di italiani  nelle cantine e nei garages a costruire gadget elettronici da mostrare agli amici. Parlo della generazione di “Nuova Elettronica”, la famosa rivista nata nel 1969 le cui pubblicazioni sono state sospese nel 2012, anche a causa della profonda mutazione del settore hobbystico.

Sono praticamente cresciuto con “Nuova Elettronica” sul comodino, sognando progetti di ogni tipo combinando transistors, resistenze, condensatori, diodi zener e CMOS. O tutta l’elettronica TTL a 5V che gravitava intorno ai primi microprocessori Z80. E gli anni dell’ITIS, indirizzo Elettronica e Telecomunicazioni, dentro il laboratorio a sperimentare…

Altri tempi, sembra passata davvero un Era geologica. Sono invece passati poco più di 20 anni e tutto il settore è ormai evoluto anche grazie ad un progetto italiano, Arduino, che ha saputo coniugare la passione hobbystica con l’ormai prevalente mondo informatico: l’era dei transistor e dei circuiti integrati è ormai stata surclassata dai microcontrollori e dai moduli già pronti all’uso.

Il sensore SDS011 della iNova Fitness, azienda cinese, è un modulo che attraverso il principio fisico della diffrazione, grazie ad un raggio laser e relativo sensore, misura la quantità di particelle PM2.5 e PM10 presenti nell’aria.

L’interfaccia seriale è direttamente collegabile al microcontrollore (nel mio caso, un modulo ESP8266) ed attraverso una delle svariate librerie disponibili (come questa: github.com/ricki-z/SDS011) e poche righe di codice, si riesce a prelevare i valori misurati.

Particelle PM2.5 e PM10

Sono tutte quelle particelle di polvere dalle dimensioni microscopiche  (2,5 e 10 micrometri...) che rappresentano il cosiddetto “inquinamento atmosferico” e sono generate perlopiù dalla combustione, emissione dei gas di scarico dei veicoli, cucine e attività industriali.

Queste particelle penetrano nel nostro organismo e gli studi scientifici ci dicono essere causa di molte patologie respiratorie come asma e allergie.

Questa tabella ci mostra (colonna evidenziata in giallo) le concentrazioni degli inquinanti più comuni nell’atmosfera e le possibili conseguenze.

Technical Assistance Document
for  the Reporting of Daily Air Quality - EPA
Reporting of Daily Air Quality, the Air Quality Index (AQI) – EPA.gov

Caratteristiche del modulo

Direttamente dal sito web del produttore:

  • Accurate and Reliable: laser detection, stable, good consistency;
  • Quick response: response time is less than 10 seconds when the scene changes;
  • Easy integration: UART output (or IO output can be customized), fan built-in;
  • High resolution: resolution of 0.3μg/m3;
  • Certification: products have passed CE/FCC/RoHS certification.
  • Power Voltage: 4.7~5.3V
  • Power supply: >1W
  • Supply voltage ripple: <20mV
Dettaglio del connettore

Le dimensioni sono abbastanza compatte ed ha un aspetto abbastanza solido. A bordo ha già la ventolina che aspira l’aria dall’esterno ed è molto silenzioso. Inoltre questa centralina può essere messa in modalità “sleep” (basso consumo) per essere poi “risvegliata” nel momento dell’analisi dell’aria: funzionalità importante perché il tempo di vita del sensore è stimato in circa 8000 ore (poco più di 10 mesi complessivi) e l’uso dei comandi “sleep” e “wakeup” ne aumenta significativamente la vita.

Codice di prova

Se avete già a disposizione il modulo SDS011 (acquistabile a pochi euro su Aliexpress) potete collegarlo ad un modulo Arduino (o compatibile, come gli ESP8266 o ESP32) sulla porta seriale (avendo cura di rispettare i collegamenti TX->RX RX->TX) e con qualche riga di codice, verificarne il funzionamento:

// Dust detector
// https://github.com/ricki-z/SDS011
#include <SDS011.h>

// SDS010 SoftSerial port
#define SDS_TX 0 // D3
#define SDS_RX 2 // D4

SDS011 sds;

void setup() {
  sds.begin(SDS_TX, SDS_RX); //RX, TX
}

void loop() {
  int c;
  float p10, p25;
  c = sds.read(&p25, &p10);
  if(c) { 
     Serial.println("SDS011 error");
    } else {
      Serial.println("P2.5: " + String(p25));
      Serial.println("P10:  " + String(p10));
    }
}

Non voglio anticipare troppo ma sto utilizzando questo modulo per un progetto più interessante di centraline di misurazione della qualità dell’aria connesse in Rete…

(Visitato in totale 246 volte, oggi 1 visite)
2 comments

Rispondi

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.