Air Self Control al Maker Faire 2018

di Marco Lombardi

L’evento romano conclusosi domenica 14 ottobre 2018 ha visto anche la partecipazione del progetto Air Self Control nelle sue due varianti: pm10 e co2.

I prototipi delle due centraline, ospitati nello stand dell’Istituto Istruzione Superiore Valdichiana , sono rimaste in funzione per tutta la durata dell’evento raccogliendo ed elaborando dati h24.

Il Maker Faire 2018 è stata anche l’occasione per confrontarsi con altri progetti analoghi, questi rispetto ad Air Self Control erano però limitati dall’uso di board tipo Arduino UNO o Mega e quindi con campionamenti più distanti nel tempo e senza possibilità di condivisione in rete dei dati acquisiti. A seguire qualche immagine dell’evento.

 

Air Self Control si confronta con un progetto analogo a Fabro

Air Self Control si confronta con un progetto analogo a Fabro

Ore 21 dell’8 maggio 2018: incontro a Colonnetta di Fabro per cercare una collaborazione fattiva per creare una rete di monitoraggio della qualità dell’aria tra le realtà di Chiusi e Fabro nel settore delle centraline a basso costo per il monitoraggio della qualità dell’aria.

Lo scopo è quello realizzare con tecnologie a basso costo e software open source stazioni di rilevamento distribuite a macchia di leopardo nel territorio a cavallo tra Toscana e Umbria.

Presenti per la Chiusi Teodor Ariton e Michele Sacco, ideatori del progetto Air Self Control, che si sono potuti confrontare con i fabresi Walter Moretti e Massimiliano Neri, quest’ultimo ideatore del portale meteofabro.it e che ha realizzato 3 centraline di rilevamento PM 2.5 e PM 10 già installate e che trasmettono in diretta i dati rilevati.

Questo primo incontro è stato molto proficuo. Prima di tutto sono state confrontate le centraline sviluppate in parallelo senza che i due gruppi sapessero niente l’uno dell’altro. I partecipanti hanno potuto constatare le molte analogie fra i progetti.

Terni Maker Festival: premiata l’attività della nostra Associazione

di Teodor Ariton

È un riconoscimento più che gradito. Incoraggia ad andare avanti nella nostra attività nell’associazione InnovazioneLocale.
Abbiamo partecipato anche quest’anno alla manifestazione “Terni Maker Festival 2018” (TRMF2018) che si è tenuto ieri sabato 24 marzo 2018. È un’iniziativa giunta ormai alla sua quarta edizione. Gli organizzatori l’hanno concepita ” come una mostra di progetti nel campo dell’artigianato tradizionale e digitale, dell’elettronica, della meccanica e dell’informatica, realizzati da singoli, gruppi, scuole o altri enti utilizzando preferibilmente Hardware e Software Open Source”.
Teodor Ariton ha presentato le centraline ideate e realizzate nell’ambito del progetto di scienza di cittadinanza Air Selfcontrol. La prima centralina riguarda il monitoraggio della concentrazione di CO2 nelle aule scolastiche. La seconda invece registra la presenza di polveri sottili nell’atmosfera esterna (PM10). Quest’ultima ha riscosso notevole interesse da parte dei visitatori ternani. Infatti è in corso da tempo un movimento cittadino di protesta contro le emissioni di alcuni impianti di trattamento rifiuti.
Oltre al secondo posto fra i progetti presentati, c’è da citare il riconoscimento del linux group di Terni (
http://www.ternignulug.org/) che ha premiato il progetto per il miglior utilizzo dell’open source..
Interessante anche una prospettiva di coordinamento fra iniziative presenti sul territorio di Umbra e Toscana per lo sviluppo del software libero e del cosiddetto artigianato digitale.

Polveri sottili e PM10 con il Novafitness sds018 – parte 2

di Marco Lombardi

sono appena state pubblicate dall’ARPA Lazio le medie giornaliere riferite al 28 gennaio 2018. Il valore rilevato presso la centralina Guido è pari a 33 ug/m3. Il nostro prototipo basato sul sensore Novafitness sds018 si è dimostrato all’altezza della sfida e infatti la nostra media rilevata nell’arco di circa sette ore è la stessa: 33 ug/m3. Il file CSV contenente le nostre rilevazioni è liberamente scaricabile e consultabile A seguire troviamo la schermata del sito ufficiale ARPALAZIO.

Polveri sottili e PM10 con il Novafitness sds018 – parte 1

di Marco Lombardi

Giovedì 25 gennaio ci è stato consegnato il sensore di polveri sottili Novafitness sds018, questo è in grado di rilevare mediante raggio laser il numero di particelle di polveri sottili presenti nell’aria, restituendo il valore pm2.5 e pm10. Quest’ultimo è quello che ci interessa rilevare per il progetto A.S.Co. – Air Self Control.

Il codice utilizzato per le prime prove ci è stato indicato dal venditore stesso ed è scaricabile da GitHub. Il codice è stato poi adattato e integrato nel core di AULAPULITA v0.2a dando così vita al firmware A.S.Co. pm10 v0.3, eseguito su board Wemos D1 ESP8266.

A Roma, città in cui vivo, le centraline dell’ARPA sono 25 e per confrontare i risultati ottenuti dal sensore sds018 ho deciso di affiancare il nostro prototipo ad una delle centralina della Regione così da verificare l’attendibilità della media dei risultati acquisiti da noi con quelli ufficiali pubblicati giornalmente.

Domani nei commenti pubblicheró i dati ufficiali e i dati da noi acquisiti ad un centinaio di metri da una delle centraline ufficiale ARPA (centralina Guido). Le prospettive di un buon risultato ci sono, poiché già a qualche chilometro di distanza da due centraline (centralina Malagrotta e centralina Guido) i risultati ottenuti sono simili.

Il riferimento temporale nei progetti di acquisizione dati

di Marco Lombardi

Abbiamo visto, sin dal primo articolo dedicato ad AULAPULITA, l’utilizzo di un orologio hardware fornito di batteria tampone da 3v. Molti di voi, durante questi mesi, mi hanno chiesto qual’è il modo più corretto per gestire in modo automatico il cambio di orario con il passaggio dall’ora legale a quella solare e viceversa senza dover riprogrammare l’orologio hardware collegandolo ad un PC attraverso Arduino.

Occorre fare una premessa: qualsiasi orologio hardware che acquistiamo da utilizzare con Arduino e simili è sprovvisto di orario, questo infatti va impostato e salvato come quando acquistiamo un orologio nuovo. Nei miei progetti ho sempre utilizzato il DS1307 della Maxim, ad oggi il più economico e facilmente reperibile sul mercato.

A questo punto è importante sapere quale orario va salvato alla prima accensione sulla memoria interna dell’orologio hardware. L’orario che va salvato è quello relativo al fuso orario di riferimento (UTC),  l’unico che può essere elaborato in maniera automatica dagli elaboratori elettronici per il passaggio dall’ora legale (DST, in inglese: daylight saving time)  a quella solare o standard che coincide con il fuso orario del meridiano riferimento (in Italia UTC+1) e viceversa.

In tre passaggi le accortezze da seguire prima di caricare lo sketch che memorizza l’orario sulla memoria dell’orologio hardware:

  1. Verifichiamo su Google l’orario corrente nel sistema di riferimento universale UTC. Basterà digitare sulla barra di ricerca le parole “utc time” e ci verrà restituito l’orario al netto del fuso orario e dell’ora legale o solare in vigore.
  2. A questo punto conosciamo l’orario di riferimento (UTC) che utilizza tutto il globo per elaborare il fuso orario e l’orario legale se questo è in vigore. Verifichiamo l’ora sul nostro PC e modifichiamola con quella restituita dalla rete. I minuti e i secondi vanno invece lasciati inalterati. A questo punto anche il nostro PC ha come orario quello di riferimento (UTC).
  3. Scegliamo lo sketch che più ci piace per caricare l’orario sull’orologio hardware, personalmente utilizzo lo sketch SetTime presente nella libreria DS1307RTC (per orologi basati su integrato della Maxim o suoi cloni), questa è disponibile per il download su GitHub ed è installabile anche direttamente dall’IDE di Arduino. Possiamo verificare l’orario salvato con lo sketch ReadTest che è parte della stessa libreria.

Una volta caricato lo sketch SetTime sull’Arduino ricordiamoci di rimettere l’ora corretta sul PC altrimenti continueremo a lavorare con l’orario UTC.

A questo punto nei nostri progetti possiamo prevedere l’uso di una libreria che automaticamente sposterà le lancette (virtuali) dell’orologio di un’ora quando entrerà in vigore l’ora legale o solare.

Da qualche tempo a questo scopo utilizzo la libreria Timezone. Questa è disponibile per il download su GitHub ed è installabile anche direttamente dall’IDE di Arduino. Tra gli esempi troveremo lo sketch HardwareRTC che possiamo usare come base per i nostri progetti.

Le variabili da impostare per comunicare alla libreria quando intervenire sull’orario sono due, nella prima indicheremo quando entrerà in vigore l’ora legale (DST) e nella seconda indicheremo invece quando tornerà in vigore l’ora solare o standard (ricordiamo che l’ora standard in Italia coincide con il riferimento UTC aumentato di una ora, così come definito dalle norme internazionali in materia di orari e fusi).

TimeChangeRule myDST = {“DST”, Last, Sun, Mar, 3, 120};    //Daylight time = UTC +2 hours

TimeChangeRule mySTD = {“STD”, Last, Sun, Oct, 2, 60};     //Standard time = UTC +1 hours

Se volete approfondire gli aspetti tecnici e legali legati agli orari nel mondo vi invito a consultare su Wikipedia le voci Tempo coordinato universaleOra legale, queste due voci mi sono state molto utili per comprendere lo stato dell’arte sui riferimenti temporali nelle acquisizioni di dati.

In conclusione un ulteriore appunto per gli smanettoni. La libreria Timezone può essere utilizzata su qualsiasi board che supporti l’uso del protocollo I2C e anche su Wemos o board basate su ESP8266. Su quest’ultime, dotate di connessione ad internet è possibile utilizzare in alternativa l’orologio software basato sul protocollo NTP e anche questo per definizione lavora solamente con l’orario di riferimento UTC ma è allo stesso modo manipolabile in automatico attraverso la libreria sopra citata.

Progetto “aulapulita” su Wemos D1 ESP8266 – parte 3

di Marco Lombardi

Nel precedente articolo abbiamo visto come è diventato lo schema e la relativa lista dei componenti utilizzati dalla versione 0.2a di AULAPULITA. Adesso vediamo alcune caratteristiche e funzionalità del software.

Da oggi è infatti disponibile il codice sorgente di AULAPULITA 0.2a e due versioni di firmware compilate con limite CO2 impostato a 1000ppm o 1500ppm. Come per la prima versione di aulapulita una volta superata la soglia limite il buzzer emetterà un segnale acustico. La soglia limite può essere impostata caricando via OTA la versione di firmware corrispondente e in futuro direttamente dalla pagina web di configurazione.

Anche per i futuri aggiornamenti saranno resi disponibili i firmware già compilati caricabili in modalità OTA senza necessità di collegare la Wemos D1 ESP8266 al PC.

Questa versione di aulapulita sfrutta tutte le possibilità messe a disposizione dal modulo ESP8266 utilizzandolo contemporaneamente sia in modalità AP (access point) sia in modalità STA (station). Possiamo quindi collegarci direttamente al modulo ESP8266 da qualsiasi dispositivo munito di WiFi oppure configurarlo per collegarlo ad una qualsiasi rete WiFi, ad esempio quella di casa.

E’ importante però che il primo upload avvenga da PC, in maniera tradizionale, caricando via IDE il codice sorgente. Per volte successive potremmo caricare il firmware, con estensione “.bin”, attraverso il browser.

Una volta caricato il codice sorgente di AULAPULITA via IDE o il firmware via OTA una serie di messaggi compariranno sul monitor LCD. Vediamone la sequenza:

Il primo messaggio mostra la versione di AULAPULITA e il l’identificativo univoco del modulo ESP8266.

lcd-avvio

Se è la prima volta che avviamo AULAPULITA un messaggio ci avvertirà che il modulo ESP8266 sta tentando la connessione. Dopo il quinto tentativo il modulo ESP8266 continuerà nella sua procedura di boot.

lcd-attempt

Se vogliamo settare le impostazioni WiFi basterà premere due volte, consecutivamente, il tasto di reset. Il software tornerà a fare il boot e a questo punto avremo 180 secondi per collegraci al modulo ESP8266 e riconfigurare la rete.

lcd-WiFiManager

Per la configurazione della connessione WiFi ci collegheremo quindi alla rete aperta con nome ESPxxxxxx (dove le x indicano il chip ID visto in precedenza) per scegliere la rete WiFi a cui collegarci e inserire la password WEP-WPA.

Sotto lo screenshoot con l’elenco delle reti visto dal mio portatile e la pagina di configurazione raggiungibile all’indirizzo http://192.168.4.1 con l’elenco delle reti WiFi disponibili.

screenshoot-wifi

La libreria che implementa la funzione di salvataggio in memoria EEPROM delle impostazioni WiFi è la WiFiManager mentre quella per rilevazione del doppio reset è la DoubleResetDetector .

A questo punto possiamo scegliere se collegarci all’AP del modulo ESP8266, sempre disponibile attraverso la rete aperta avente per nome ESPxxxxxx (dove le xxxxxx indicano il chip ID visto in precedenza) all’indirizzo http://192.168.4.1 oppure se abbiamo configurato il modulo ESP8266 in modalità STA con la nostra WiFi possiamo collegarci attraverso l’indirizzo IP che comparirà sul monitor LCD durante la fase di avvio.

Le screenshoot che seguono mostrano come appare il messaggio di avvenuta connessione e l’indirizzo IP assegnato.

lcd-WiFi lcd-IP

Una volta completato il boot dal monito LCD vedremo in tempo reale i dati acquisiti e gli eventuali errori dei sensori.

lcd-log

Connetendoci al modulo ESP8266 attraverso l’interfaccia web si possono effettuare le seguenti operazioni:

  • Verifica dello stato dei sensori, informazioni relative al firmware e al limite CO2 impostato;
  • Verifica dei dati acquisiti in tempo reale con aggiornamento automatico della pagina;
  • Download dei file CSV da interfaccia web;
  • Aggiornamento del firmware direttamente da interfaccia web;
  • Configurazione della connessione di rete se connesso a rete WiFi.

Di seguito alcuni screenshoot dell’interfaccia web della versione 0.2a:

La pagina “Device status” ci fornisce informazioni sulla versione firmware, chip ID (che ci aiuta anche ad identificare il SSID del modulo ESP8266), la soglia limite di CO2 oltre il quale il buzzer ci avvertirà con un suono e infine lo stato dei sensori.webserver-status

 

La pagina “Current log” mostra in tempo reale i dati acquisiti e il refresh automatico della pagina offre la possibilità di visualizzarli con un intervallo di 5 secondi.
webserver-log

 

La pagina “Stored log files” mostra i file salvati sulla scheda di memoria, questi possono essere scaricati per essere consultati comodamente sul proprio pc.webserver-files

 

La pagina “Update board” permette invece di caricare, senza collegare la Wemos al PC, nuovi firmware. webserver-upgrade

 

La pagina “Network setup” mostra nella prima voce il SSID a cui siamo connessi, l’indirizzo MAC del modulo ESP8266, di seguito troviamo tutti i parametri liberamente modificabili relativi alla configurazione della connessione alla rete: IP, SUBNET e GW. La pagina di configurazione prende esempio dal progetto Embedded Ethernet Setup Webpage using EEPROM.

webserver-setup

I prossimi aggiornamenti del software potranno prevedere l’implementazione tra le altre cose di un sistema client/server di tipo MQTT con server su Raspberry PI B così da gestire automaticamente il download da ogni nodo aulapulita della rete di rilevazione e la relativa elaborazione grafica.


Nota alla versione 0.2a: il codice sorgente conta un migliaio righe di codice ovvero quasi il doppio della versione 0.1a. La differenza sostanziale è data dalla quantità di codice necessaria alle funzionalità di rete fin quì esposte. Per chi vorrà cimentarsi con la costruzione della centralina usando un codice “semplice” consiglio la versione 0.1a pubblicata su GitHub ad agosto 2016.

Progetto “aulapulita” su Wemos D1 ESP8266 – parte 2

di Marco Lombardi

Dall’ultimo articolo dedicato al progetto AULAPULITA sono passati circa due mesi, in questo intervallo di tempo ho concluso il porting del codice versione 0.1a pubblicato su GitHub ad agosto 2016. Rispetto allo schema presentato a luglio 2017 c’è stata qualche modifica orientata soprattutto a semplificare il codice e minimizzare i componenti.

aulapulita-ESP8266_bbSopra lo schema elaborato in Fritzing senza il bit expander che proponevo, senza i led per segnalare eventuali guasti ai sensori e con il K30 collegato in modalità UART anzichè in modalità I2C.

Ecco l’elenco dei componenti da noi utilizzati per questa nuova versione di AULAPULITA:

  • Wemos D1 o scheda basata su ESP8266;
  • shield SD o microSD con a bordo il modulo RTC DS1307 per avere il riferimento temporale;
  • shield LCD 16×2 I2C, per visualizzare in tempo reale i dati acquisiti e gli eventuali guasti;
  • sensore CO2 K30 Senseair;
  • sensore SHT30, per il monitoraggio di temperatura e umidità relativa;
  • buzzer o cicalino, per l’allarme acustico di superamento soglia;
  • alimentatore 9-12v;
  • cavetti e breadboard per i collegamenti.

Qualche nota applicativa sulle shield e i sensori utilizzati con le relative librerie:

  1. La shield SD utilizzata da noi è un clone della logger shield Adafruit v1.0, con a bordo il modulo RTC basato sul DS1307 e fornita di batteria tampone CR1220. Sulla shield è stata effettuata una piccola modifica ovvero è stata rimossa la resistenza pull-up tra il CS della shield e il pin digitale D10 della scheda Wemos D1 e il collegamento è stato realizzato in modo diretto saldando un cavetto tra il CS e il pin digitale D10. Le librerie utilizzate per comunicare con la scheda di memoria sono la SPI e SD mentre quelle per comunicare con il DS1307 sono la Wire e la RTClib tutte presenti tra quelle scaricabili dalla Gestione librerie dell’IDE di Arduino. sku_244273_3
  2. La shield LCD 16×2 I2C è basata sul 16bit expander MCP23017 collegato ai pin digitali D3 e D4 (alimentazione 5v), la scheda offre anche la possibilità di avere cinque pulsanti e un joystick ma in questa fase del progetto non sono stati utilizzati. La libreria utilizzata per comunicare con il monitor LCD è la LiquidTWI2 disponibile su GitHub, quest’ultima necessita della libreria Adafruit-MCP23017-Arduino-Library scaricabile dalla Gestione librerie dell’IDE di Arduino.Tastiera-font-b-LCD-b-font-Shield-per-font-b-arduino-b-font-font-b-16x2
  3. Il sensore per la CO2, il K30 prodotto dalla Senseair, viene collegato in modalità UART ai pin digitali D8 e D9 (alimentazione 5v). La libreria utilizzata per comunicare con il sensore è la SoftwareSerial già presente nella IDE di Arduino. Esempi di utilizzo si possono trovare nella libreria AN126-K3x-sensor-arduino-uart liberamente scaricabile.
  4. Il sensore per il monitoraggio di temperatura e umidità relativa utilizzato è il SHT30, questo viene collegato in modalità I2C ai pin digitali D3 e D4 (alimentazione 5v). La libreria utilizzata per comunicare con il sensore è la WEMOS_SHT3x_Arduino_Library scaricabile da GitHub. Original-I2C-interface-SHT30-SHT30-D-Digital-Output-Temperature-Humidity-Sensor-Accuracy-Breakout-Weather-SHT30-DIS

Nel prossimo articolo presenterò il software versione 0.2a di AULAPULITA con una breve descrizione delle caratteristiche e delle funzionalità introdotte rispetto alla precedente versione.