Cha aria tira? Ce lo dice il sensore di particolato PMS5003
Come funziona la tecnologia di diffusione laser per il conteggio delle polveri sottili
Occupiamoci ora di un dispositivo piccolo ma... molto intelligente: il sensore PMS5003.
Spesso sentiamo parlare di inquinamento, ma come facciamo a misurarlo concretamente? Questo sensore è lo strumento adatto per capire, dati alla mano, la qualità dell'aria che respiriamo ogni giorno.
PM... cosa?
Prima di vedere come funziona, definiamo cosa misura. Parliamo di PM, ovvero Particulate Matter.
Sono particelle minuscole sospese nell'aria, classificate in base al loro diametro: PM1.0, PM2.5 e PM10. Le più pericolose per noi sono le PM2.5, perché sono così piccole da riuscire a penetrare in profondità nei nostri polmoni. Per proteggerci, dobbiamo prima essere in grado di 'vederle'.
Bello, ma come funziona?
Il funzionamento del PMS5003 si basa sulla diffusione laser.
Immaginatelo come un piccolo tunnel:
All'interno c'è una ventolina che aspira l'aria ambiente.
Appena l'aria entra, le particelle attraversano un raggio laser.
Quando una particella colpisce il raggio, la luce viene deviata — un po' come quando vediamo la polvere illuminata da un raggio di sole che entra dalla finestra.
Un sensore sensibile, chiamato fotodiodo, cattura questi flash di luce. Il chip interno analizza quanti flash arrivano e quanto sono intensi, trasformando questi impulsi elettrici in un dato preciso sulla concentrazione di polveri.
Colleghiamoci!
Questo sensore è estremamente versatile e poco costoso, inoltre non richiede un progetto troppo complesso: basta un microcontrollore come Arduino per creare una stazione di monitoraggio personale.

Il sensore PMS5003 (a sinistra) e
quello di temperatura / umidità DHT11
collegati ad Arduino R4
Il sensore utilizza la comunicazione UART (Seriale).
È importante incrociare i pin TX e RX fra sensore e Arduino: il PMS5003 invia i dati sulla sua porta TX e il microcontroller li riceve sul pin RX.
Viceversa Arduino può inviare dei comandi tramite la sua porta di trasmissione seriale dedicata (TX di Serial1) verso il pin in ricezione RX del sensore.
Pin PMS5003 Funzione Pin Arduino R4 VCC Alimentazione (+5V) 5V GND Ground GND TX Dati in uscita dal sensore Serial1 RX RX Dati in ingresso al sensore Serial1 TX A differenza dell'Arduino classico, ho utilizzato l'Arduino R4 che mette a disposizione più porte seriali hardware.
Questo ha permesso di dedicare la porta fisica Serial1 esclusivamente al sensore.
Il vantaggio è una maggiore affidabilità nella ricezione dei dati e un codice più efficiente, poiché il processore non deve simulare la comunicazione seriale via software.
Trucchi per una collaborazione armoniosa
Il sensore PMS5003 è un componente elettronico che funziona internamente a 3.3V: i suoi pin di comunicazione (in particolare il pin RX, che riceve i dati) sono progettati per gestire segnali elettrici che non superano questa soglia.
La compatibilità dei livelli logici
In elettronica digitale, un segnale è composto da due stati:
- 0 (LOW)
- 1 (HIGH)
Per un componente che funziona a 3.3V, un segnale HIGH è solitamente riconosciuto se è superiore a circa 2.4V - 2.6V
Il microcontroller Arduino lavora invece a 5V e, se lo collegassimo direttamente, invierebbe al PMS5003 un segnale "troppo alto" che il componente interpreta correttamente come "1", ma che tecnicamente è fuori specifica (fenomeno di overvoltage).
In queste condizioni, anche se tutto sembra funzionare per brevi periodi, stiamo in realtà stressando i circuiti interni di protezione del sensore.
Questo può portare a un surriscaldamento del chip o, nel peggiore dei casi, alla distruzione permanente del ricevitore seriale del sensore.
Evitiamo i rischi
Ricapitoliamo un momento il problema: immaginate che il sensore sia un orecchio umano e Arduino sia una persona che deve parlargli.
Arduino parla a un volume sonoro 5 (che è il suo standard), ma l'orecchio del sensore è progettato per sentire bene solo fino a un volume di 3.3.
Se Arduino gli... urla direttamente nelle orecchie a volume 5 rischia di danneggiarle.
Dobbiamo quindi adottare un partitore di tensione che agisce come un riduttore di volume: mantiene il messaggio (l'informazione digitale) intatto, ma lo abbassa a un livello che il sensore può ricevere in totale sicurezza.
![]() |
| Il partitore di tensione |
Nella foto qui sopra si vedono le due resistenze da 1kΩ e 2kΩ che formano il partitore di tensione.
Perché questi due valori?
Questa combinazione è considerata "da manuale" per diverse ragioni tecniche:
- Tensione ideale: il calcolo teorico
restituisce esattamente 3.33V, che è il valore ottimale per le logiche a 3.3V del sensore. - Sicurezza: riduce il segnale da 5V (inviato da Arduino) a un livello sicuro, evitando di stressare o distruggere il ricevitore seriale del sensore.
- Basso consumo: l'uso di resistenze nell'ordine dei kilo-Ohm mantiene la corrente molto bassa (circa 1.6mA), evitando di sovraccaricare i componenti o generare calore eccessivo.
- Stabilità: questa configurazione non introduce ritardi significativi, mantenendo la comunicazione seriale veloce e precisa
In conclusione...
Abbiamo tirato fuori pinze, cacciaviti, cavetti e resistenze ed ora siamo pronti per un'altra tappa della nostra avventura tecnologica.
Ancora un po' di lavoro con il software e presto inizierà la fase di acquisizione dei dati per conoscere meglio la situazione dell'ambiente in cui viviamo (e... respiriamo) ogni giorno.
Alla prossima puntata!







Commenti
Posta un commento