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…

Michele Pinassi

Nato a Siena nel 1978, dopo aver conseguito il diploma in "Elettronica e Telecomunicazioni" e la laurea in "Storia, Tradizione e Innovazione", attualmente è Responsabile del Sistema telefonico di Ateneo presso l'Università degli Studi di Siena ed esperto di sicurezza informatica nello staff del DPO. Utilizza quasi esclusivamente software libero.

Potrebbero interessarti anche...

Rispondi

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

%d blogger hanno fatto clic su Mi Piace per questo: