(le scritte in verde permettono di attivare un link di contesto se vi si clikka sopra)        01 Marzo 2020
Pagina ecologica no pubblicità no scherzetti no virus no messaggi subliminali


Questo progetto nasce dalla necessità di poter monitorare in tempo reale lo stato dell'inquinamento da polveri sottili. L'istituto
preposto a certificare l'andamento delle polveri PM10 e PM2.5 nella nostra regione è ARPAE che pubblica la media dei valori
misurati nelle 24 ore precedenti, il giorno successivo. Nella provincia di Ravenna disponiamo di solo due centraline, una
posizionata nel parco Bertozzi di Faenza e una a Ravenna. A dire di ARPAE le centraline sono posizionate in punti strategici
al fine di individuare statisticamente collocazioni che di norma rilevano valori medi cittadini. Tutto questo la dice lunga sul fatto
che la distribuzione delle polveri non è omogenea all'interno comunale e tanto meno stabile nelle varie ore della giornata, in
quanto gli agenti inquinanti, metereologici, da circolazione, da riscaldamento, industriali, da polline variano da ora in ora. Da
tutto ciò nasce la necessità di poter vedere l'andamento dell'inquinamento in tempo reale e nelle varie fasce orarie. L'esposizione
prolungata alle polveri sottili provoca asma, bronchiti e perfino l'insorgenza del cancro, in particolar modo sono colpiti i bambini.
Studi del OMS stimano in 400000 le morti di prematuri nelle sola Europa per l'anno 2005.
Il monitoraggio di ARPAE serve a stabilire per quante giornate si è superato la soglia di attenzione 50
µg/m³ per non più di 35
giorni all'anno e la media massima consentita in un anno è di 40 µg/m³. Al fine di evitare il superamento dei limiti di legge le
amministrazioni mettono in atto blocchi di traffico ed altro onde limitare la produzione di inquinante.
Vi propongo uno studio che ho effettuato sulla città di Faenza per vedere come le polveri si distribuiscono in una giornata con
la media che ha superato di 5 punti il valore consentito quindi 55.

Il sensore usato per questo scopo è il SDS011 prodotto in Cina a quindici euro, è composto da ovvia elettronica di controllo
una ventola per aspirare ed espellere l'aria, che transitando in una camera, permette ad un laser di poter contare il numero e la
grandezza delle particelle che transitano, l'elettronica traduce i dati letti in valori di PM10 e PM2,5 per µg/m³ (microgrammi per
metro cubo). Da statistiche effettuate il valore PM10 è quello più significativo e pertanto sarà solo lui preso in esame.

Dalle specifiche tecniche si apprende che l'uscita dei dati è a 3.3 Volt, pertanto serve adattare tale tensione a quella di Arduino
Uno che lavora a 5 Volt, inoltre la durata di funzionamento è garantita per sole 8000 ore. Il sensore deve essere posizionato in
orizzontale e con la ventola in basso. Tali specifiche mi hanno permesso di realizzare il progetto illustrato nello schema
sottostante.
 

Il segnale utile viene inviato, dal sensore, sul  pin TXD e per adattarlo ai 5 Volt, utilizziamo un diodi 1N4148 che entra in
conduzione ad ogni valore di tensione zero, portando l'ingresso RXD di Arduino a 0,7 Volt e quando su TXD del sensore viene
inviato un valore di 3,3 Volt il diodo non interviene e la resistenza di 1k collegata tra RXD di Arduino e i + 5 Volt mantiene i 5
Volt del segnale.
Per allungare la vita del sensore si utilizzerà per un minuto ogni 14 minuti.  Tramite la resistenza da 4,7Kohm collegata al pin 7 di
Arduino, si manderà in conduzione il transistor BC337 che fornirà al sensore la tensione a 5 volt di alimentazione.
La coppia di condensatori, sull'alimentazione dei 5 Volts,  mantengono l'alimentazione del sensore stabilizzata e immune da
disturbi attraverso un 100nanoFarad e un elettrolitico da 10microFarad. Infine il diodo 1N4007 elimina le sovratensioni indotte
dalla bobina della ventola del sensore.
Arduino provvede a scartare le prime 25 letture e calcola la media delle successive e invia il solo dato PM10 al pc  tramite
la porta di comunicazione USB, un programma sul pc provvede a creare un file di log, un altro a realizzare il  grafico e infine un
ultimo programma provvede a inviare sistematicamente l'immagine del grafico al server per la pubblicazione.
Un esempio del risultato finale è quello che si vede andando sul link seguente:

http://www.faenzashiatsu.it/Fisica/Vonair/Station_Faenza_PM10_1.jpg

Ora vediamo come si realizza il tutto, serve una basetta preforata, un saldatore, forbici, stagno e dei fili per i collegamenti.
Serve realizzare una piccola basetta con i sette componenti.


Tutto il materiale è acquistabile in un negozio di elettronica o su
internet.
Elenco del materiale:
- scheda Arduino Uno o compatibile con cavetto USB;
- sensore SDS011;
- condensatore poliestere da 100 nanoFarad;
- condensatore elettrolitico da 10 microFarad;
- diodo 1N4007 e 1N4148;
- resistenza da 4.7 Kohm e 1 Kohm 1/4 wat;
- Transistor
BC337;
- fili elettrici isolati da 0,6 mm meglio vari colori, tipo trecciola telefonica;
- una prolunga USB da 5 mt;
- scatolina di plastica per proteggere il tutto.

Iniziamo col montare la parte elettronica...

L'unico filo non saldato sarà quello che collega la porta RXD di Arduino, in quanto, al momento del caricamento del programma
su Arduino, dovrà essere distaccato perché il pin RXD verrebbe condiviso nello stesso momento sia dal programma in
caricamento che dal sensore che invia i dati creando una confusione tale da impedire il caricamento del programma.

 

Dopo aver ricontrollato il tutto, rivedendo e verificando la corrispondenza con lo schematico iniziale, possiamo iniziare a
configurare la parte Software.
Premessa indispensabile è aver testato e verificato il perfetto funzionamento della piattaforma del sistema di sviluppo IDE con
una scheda Arduino Uno.

Ora colleghiamo la scheda Arduino al PC tramite un cavetto USB con attacco da stampante.
Per prima cosa avviamo il programma Arduino e controlliamo il numero della porta com assegnata alla scheda dal menù
strumenti->porta, per caricare il programma PM10_online serve averlo precedentemente scaricato da questo link.
Sconpattate il file .zip compresa la directory che ha lo stesso nome e dal menù File->apri selezionate il file PM10_online.ino
verrà visualizzato il programma nella finestra, caricatelo sulla scheda clikkando il menù, tondo con freccia a destra di Arduino.
Nel dubbio rivedetevi le indicazioni già date per l'uso del sistema di sviluppo per caricare il programma su Arduino.
Di seguito il listato.

// Lettura sensore per PM10 tipo SDS011 media su 34 letture ogni 15
// minuti previo svuotamento dell'aria nel tubo per 25 secondi
// versione del 27 febbraio 2020
// Listato adattato da originale pubblicato da JOY-IT
// Gira su Arduino Uno e Cloni, entra in crash con Wemos
#define LEN 9
unsigned char incomingByte = 0;
unsigned char buf[LEN];
int media10 = 0;
int media25 = 0;
int PM2_5Val = 0;
int PM10Val = 0;
int ciclo = 0;
int letturetot = 59; // Letture totali
int inlettureda = 25; // inizio letture dalla, per svuotare aria
void setup() {
Serial.begin(9600);
pinMode(7, OUTPUT); //Usa pin 7 per dare alimentazione al Sensore PM
}

void lettura ()
{
  int i;
  unsigned char checksum;
  if (Serial.available() > 0) {
    incomingByte = Serial.read();
    if (incomingByte == 0xAA) {
      Serial.readBytes(buf, LEN);
        if ((buf[0] == 0xC0) && (buf[8] == 0xAB)) {
          for (i=1; i<=6; i++) {
            checksum = checksum + buf[i];
          }
          if (checksum != buf[7]) {
            PM2_5Val=((buf[2]<<8) + buf[1])/10;
            PM10Val=((buf[4]<<8) + buf[3])/10;
            if (ciclo > inlettureda) {
              media10 = PM10Val + media10;
              media25 = PM2_5Val + media25;
             }
            ciclo = ciclo +1;
          }
        }
      }
  }
}

void loop() {
digitalWrite(7, HIGH); 
if (ciclo <= letturetot)
{
 // non esegue nulla
// Serial.print(ciclo);
// Serial.print(" ");
// Serial.println(media10);
}
  else
{
media10 = media10 / (letturetot - inlettureda);
//media25 = media25 / (letturetot - inlettureda);
//Serial.print("Media PM2.5: ");
//Serial.print(media25);
//Serial.println(" ug/m3");
//Serial.print("Media PM10 : ");
Serial.println(media10);
//Serial.println(" ug/m3");
//Serial.println();
media10 = 0;
media25=0;
ciclo=0;
digitalWrite(7,LOW); // Spegni Sensore x allungargli la vita
delay(840000); // Metti a riposo per 840000= 14 minuti

}
lettura();

}

Controlliamo tramite il menù del sistema di sviluppo IDE "Tools-serial Monitor" se i dati arrivano ad ogni 15 minuti. Per
comodità potete modificare la quartultima riga di comando accorciando il tempo di riposo a 15 secondi, inserite 15000 anziché
840000 ricordandovi di rimettere il dato originale prima di mettere in esercizio il tutto. Ricordatevi che prima di caricare il
programma serve staccare temporaneamente il filo sul pin RXD di Arduino.
E' importante scegliere il luogo adatto per posizionare il tutto, tenendo a mente alcuni fattori. Le condizioni meteorologiche
possono ossidare i circuiti, quindi serve un minimo di protezione anche se il tutto non può essere messo in un contenitore
ermetico perché l'aria deve circolare, deve essere aspirata e espulsa dal dispositivo senza creare differenze di pressioni. Non
usate lunghezze esagerate del tubo aspirante massimo uno o due metri facendo attenzione a non creare sbalzi di pressione.
Io ho scelto di tenere il PC in taverna, con un cavo USB da 5 Mt arrivo tramite la bocca di lupo al piano terreno e ho posto la
scatola con il sensore e Arduino sul davanzale di una finestra con un tubicino di 30 cm ricurvo leggermente in basso per evitare
che l'umidità si condensi nella camera del sensore rendendolo inutilizzabile. Ovviamente assicuratevi che il contenitore sia forato
per permettere l'uscita senza sforzo dell'aria aspirata per il controllo.


Dopo questo passaggio ci serve un programma che crei il file di log sul PC.
Lo potete scaricare da questo link.


 

A questo punto ci serve un programma per mettere su un grafico i dati registrati nel file di log e utilizzeremo il programma
completamente gratuito Gnuplot che dovrà essere installato sul pc. Scaricate da questo link la versione da 32 o 64 bit a seconda
delle capacità elaborativa del vostro processore.
Lanciando il programma vi apparirà l'interfaccia con vari menù, andate su File e poi Open selezionate la dir dove risiede il log
impostate la ricerca su tutti i tipi di file e caricate il file di configurazione gnuplot_commands_for_PM10.txt che potete
configurare a piacere con un editor di testo, o chiedermi di farlo per voi, al momento potete scaricare quello che uso io da
questo link.

Ora sul monitor avrete la videata col grafico realizzato coi dati acquisiti dal vostro dispositivo e vi verrà salvato su un file
al momento preimpostato come Station_Faenza_PM10_1.jpg ma che potrete ridefinire a piacere modificando il file
gnuplot_commands_for_PM10.txt.


Se volete condividere, i dati rilevati dalla vostra postazione, su internet vi servirà un programma per realizzare una connessione
FTP con il vostro server.
Per fare ciò vi servono due file, uno che lanci il comando FTP tramite un comando DOS inserito in un file.bat e il secondo che
contiene i dati da gestire, inseriti in un file di testo. I due file sono personalizzabili ed editabili con un qualsiasi editor di testi.

Come avvio si deve lanciare il file.bat dove dopo i ":" dovete mettere il nome del file che contiene i dati di connessione e il
nome del file da trasferire. Nel file .txt dovete mettere al posto delle "x" i 4 numeri dell'indirizzo ip per raggiungere il vostro
server, sostituire la scritta "USER" con la vostra user per entrare nel server e sostituire la scritta "Password" con la password
necessaria, inoltre dovete posizionarvi sulla dir dove volete copiare la vostra immagine e si utilizzano i comandi cd seguiti dal
nome della directory, eseguite tanti cd seguito dal nome della dir sino a raggiungere la dir giusta, poi col comando put inviate il
vostro file, indicando con precisione dove risiede. Per comodità vi allego i due file pronti per essere editati per il vostro scopo:
link per scaricare Vonair_ftp_run.bat             link per scaricare Vonair_ftp_upload.txt

La maniera più semplice e automatica per inviare periodicamente l'aggiornamento del vostro grafico su internet, è quella di
pianificare un'operazione, da eseguirsi ad ogni 5 minuti, andando sul pannello di controllo del vostro pc e scegliendo "operazioni
pianificate" ne aggiungete una nuova con queste caratteristiche:

Il processo descritto sopra, necessita di manutenzione, in quanto saltuariamente si blocca, pertanto sono passato ad un
programma, che compilo, che realizza in automatico la funzione FTP a cadenza specifica che non si blocca mai.

Non mi resta che augurarvi buona sperimentazione e se avete qualche problema nella realizzazione e gestione sono disponibile
a darvi una mano.

Vi ricordo il link per vedere il mio grafico sulle polveri sottili:
http://www.faenzashiatsu.it/Fisica/Vonair/Station_Faenza_PM10_1.jpg

Per contatti: