(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: