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.

Linux day a Orvieto

Spero di fare cosa gradita nell’inoltrare a innovazionelocale.it il programma del linux day di Orvieto:

il prossimo fine settimana e precisamente sabato 28 ottobre dalle ore 9.00 alle 17.30 presso i locali del Liceo Scientifico E. Majorana in Via dei Tigli a Ciconia di Orvieto si terrà il tredicesimo Linux Day orvietano, la giornata nazionale sull’informatica libera ed il sistema operativo GNU Linux.

Illustriamo di seguito il programma, ricchissimo quest’anno, realizzato grazie anche al supporto dell’Istituto Istruzione Superiore Scientifico e Tecnico di Orvieto, di Engineering, di Ergonet SRL e del B&B la Casa del Frenz:

Mattina dalle ore 9.00 alle 12.30 – Seminari e laboratori tematici per le aziende, scuole e cittadini

AULA AUDIOVISIVI

09.00 / 09.30 – Saluti istituzionali e presentazione Orvieto Linux User Group – Stefania Ragone, OrvietoLinux
09.30 / 10.00 – GNU Linux, il sistema operativo libero – Daniele Pezzato, Ergonet SRL
10.00 / 10.30 – Introduzione alla sicurezza informatica con Linux – Valerio Burla, Engineering

10.30 / 10.45 – PAUSA CAFFE’

10.45 / 11.15 – Pi-hole: Limitiamo la tracciabilità degli annunci pubblicitari – Andrea Draghetti, D3Lab
11.15 / 11.45 – Social Consapevole – Elena Sassara, Web Marketing Lazio
11.45 / 12.15 – Realizzazione di un sismografo con Python e Arduino – Diego Mocetti / Edoardo Ermini, Istituto Istruzione Superiore Scientifico Tecnico Orvieto
12.15 / 12.30 – Info e domande

AULA FCRO

09.30 / 11.30 – CoderDojo: crea il tuo videogioco con Scratch! – a cura di Leonardo Picchiami, OrvietoLinux ed in collaborazione con l’Istituto Comprensivo Orvieto-Baschi
10.30 / 10.45 – PAUSA CAFFE’

AULA INFORMATICA

09.30 / 11.30 – CoderDojo: crea il tuo videogioco con Scratch! – a cura di Fabio Fabbretti, OrvietoLinux ed in collaborazione con l’Istituto Comprensivo Orvieto-Baschi
10.30 / 10.45 – PAUSA CAFFE’

———–

12.30 / 15.00 – PAUSA PRANZO

———–

Pomeriggio dalle ore 15.00 alle 17.30 – Laboratori tematici ed installazioni Linux

15.00 / 17.00 – LINUX PARTY 2017.3 (OrvietoLUG installa Linux sui PC dei partecipanti)
15.30 / 17.00 – Crea il tuo videogioco con Scratch e Python – a cura di Leonardo Picchiami, OrvietoLinux

tutto il pomeriggio INFO POINT & PRE-ISCRIZIONI AI CORSI LINUX 2017/18.

Per ulteriori dettagli sui corsi potete consultare il nostro sito www.corsiinformaticalinux.eu

 

PRENOTAZIONI GRATUITE SU: https://www.linuxdayorvieto.it/programma-ufficiale-2017/

Grazie per l’attenzione e a sabato prossimo!
Vi aspettiamo numerosi.


Marco Ciammella

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.

In arrivo il IV corso di introduzione ad Arduino

volantino definitivo

di Teodor Ariton
Anche quest’anno l’Associazione InnovazioneLocale offre un corso di  introduzione all’uso del microntrollore Arduino. La storia è nota, nel 2014 l’Istituto Superiore Valdichiana ottenne un finanziamento dall’Autorità per la Partecipazione della Regione Toscana per l’introduzione alla scienza di cittadinanza. Nell’arco di alcuni mesi furono introdotte attrezzature a basso costo per applicazioni varie. Fu sicuramente un successo, ancora documntato dalla pagina specifica nel sito della Regione open.toscana.it (http://open.toscana.it/web/laboratorio-ambiente/). Quella pagina è stata giudicata “buona pratica” e indicata quindi ad esempio per altri progetti di partecipazione.
Sulla scia di quel successo, esaurito il finanziamento, l’associazione senza fine di lucro InnovazioneLocale ha, in collaborazione con la scuola, ripetuto per due anni il corso su Arduino: sei sessioni di due ore ciascuna. I vecchi allievi sono diventati docenti e hanno ripetuto il successo iniziale anche senza risorse. In questi anni sono state sperimentate innovazioni. La più importante è stata quella della cosiddetta classe capovolta. Sono stati prodotti video che chi frequenta vede in anticipo per avere più tempo in laboratorio per il lavoro sperimentale in piccoli gruppi.
Quest’anno ci saranno altre novità. Per quanto riguarda il corso tenteremo l’introduzione di una tecnica chiamata Kahoot! che permette di procedere verifiche durante la lezione utilizzando lo smartphone degli allievi.
Ma la novità più rilevante è che chi lo vorrà potrà continuare il laboratorio per arrivare alla costruzione di reti di rilevazione della qualità dell’aria. Una rete sarà dedicata alla scuola con il progetto già in parte iniziato denominato Aulapulita. La seconda sarà finalizzata alla costruzione di una rete esterna per la misurazione delle polveri sottili coinvolgendo così i cittadini interessati. Il progetto è ambizioso perché potrebbe rappresentare un importante progetto pilota. È un progetto finanziato e ne parleremo presto.