Progetto “aulapulita” su Wemos D1 ESP8266 – parte 1

di Marco Lombardi

Dopo una lunga pausa dovuta a esami e lavoro torno a parlare del progetto AULAPULITA.

Negli ultimi articoli, dedicati alla Wemos D1, proponevo il porting di tutto il codice AULAPULITA “standalone” e “connected” su questa scheda e sono giunto al punto in cui posso presentare qualche considerazione.

La lista dei componenti va leggermente cambiata, vediamo come:

  • Wemos D1 o scheda basata su ESP8266 anzichè Arduino UNO;
  • modulo microSD, per salvare i dati acquisiti su file in formato CSV; (vedi nota a fondo pagina)
  • modulo LCD 16×2 I2C, per visualizzare in tempo reale i dati acquisiti e gli eventuali guasti;
  • sensore CO2 K30 Senseair;
  • sensore SHT30 I2C anzichè DHT22, per il monitoraggio di temperatura e umidità relativa;
  • buzzer o cicalino, per l’allarme acustico di superamento soglia, collegato al pin digitale D10 (gpio15) o al pin digitale D8 (gpio0); (vedi nota a fondo pagina)
  • alimentatore 9-12v;
  • cavetti e breadboard per i collegamenti.

diventano opzionali:

  • modulo RTC PCF8563 I2C, per avere un riferimento temporale sui dati acquisiti (in alternativa possiamo usare il servizio NTP via internet);
  • 2x led, per segnalare eventuali guasti ai sensori;
  • 1x dip switch 2 canali, per impostare la soglia di allarme CO2.

N.B.: per l’utilizzo dei 2 led insieme ad un 1 dip switch due canali abbiamo bisogno di un 8bit expander collegato via I2C (tipo PCF8574) poichè i due pin digitali rimanenti, D2 (gpio16) e D9 (gpio2), sul ESP8266 basterebbero solo per 2 led o in alternativa per 1 dip switch due canali e quindi non sufficiente per tutte le periferiche (ne servirebbero almeno quattro). Utilizzando invece un bit expander rimarrebbero vuoti i due pin digitali, utililizzabili ad esempio per interfacciare altre perifierche come un sensore ottico Sharp GP2Y1010AU0F in grado di rilevare alcune polveri sottili.

Di seguito lo schema elaborato in Fritzing con gli aggiornamenti appena descritti, senza bit expander, con 2 led per segnalare eventuali guasti ai sensori.

aulapulita-ESP8266_bb

Per concludere, l’uso della scheda Wemos D1 o di una scheda basata su ESP8266 anzichè Arduino UNO, oltre agli evidenti vantaggi in termini di prestazioni, permetterebbe una facile condivisione dei dati via internet. Infatti, adeguando oppurtunamente il codice di AULAPULITA “connected”, parzialmente presentato con degli screenshot in questo articolo, sarebbe anche facilitata la fruizione degli aggiornamenti software installandoli con il sistema OTA presentato nell’articolo “Wemos D1 ESP8266 – programmazione OTA ovvero senza fili“.

Sarebbe utile confrontarsi per capire se la soluzione di adottare un 8bit expander sia una “complicazione” accettabile. Tutto questo in virtù della possibilità di avere fino a 4 led di avviso e la possibilità di regolare la soglia di allarme CO2 e anche la soglia di allarme polveri sottili con 2 dip switch a due canali. Attendo i vostri commenti 🙂

NOTA PER IL COLLEGAMENTO DEL MODULO microSD e del BUZZER o CICALINO: come per tutti i moduli microSD abbiamo necessità di collegare il pin CS ad un pin digitale della scheda Wemos. Possiamo collegarlo o al pin D10 (gpio15) che ha un ingresso pull-down o possiamo collegarlo al pin D8 (gpio0) che ha un ingresso pull-up, la scelta del pin andrà effettuata secondo le caratteristiche del modulo microSD in nostro possesso. Di conseguenza il pin digitale libero rimanente potrà essere utilizzato per collegare il buzzer o cicalino.

Progressi progetto “aulapulita” – parte 5

di Marco Lombardi

OLYMPUS DIGITAL CAMERA

Finalmente il prototipo di AULAPULITA “standalone” ha la sua scatola. Si tratta di una scatola ad incastro, disegnata in CAD e realizzata in cartonlegno da 3mm, il materiale utilizzato è stato tagliato con una macchina CNC dotata di testa di taglio pneumatica . La stessa scatola può essere anche stampata in 3d adeguando opportunamente il file CAD di partenza. I due led posti sotto il piccolo monitor lcd indicano eventuali problemi ai sensori.

OLYMPUS DIGITAL CAMERA

OLYMPUS DIGITAL CAMERA

In queste settimane anche AULAPULITA “connected” si è evoluta sino a diventare un modulo funzionante che può dialogare facilmente con la rete internet. Una volta connessi al webserver la pagina di benvenuto mostra quattro link: Device status,  Current log, Stored log files e Network setup.

webserver-home

La voce “Device status” offre una panoramica sui sensori collegati ad AULAPULITA con la possibilità di verificarne il corretto funzionamento.

webserver-status

La voce “Current log” invece mostra in tempo reale i dati acquisiti da AULAPULITA e il refresh automatico della pagina offre la possibilità di visualizzarli con un intervallo di 10 secondi.

webserver-current

La voce “Stored log files” mostra i file salvati sulla scheda di memoria, questi possono essere scaricati per essere consultati comodamente sul proprio pc. Con qualche riga di programmazione e un pc destinato a server si potrebbe programmare il download  così da raccogliere e analizzare i dati nel tempo in modo automatico .

webserver-stored

Infine la voce ” Network setup” offre la possibilità di variare le impostazione di rete della shield ethernet senza andare a riprogrammare l’Arduino, tutto questo è possibile utilizzando porzioni di memoria ROM del microcontrollore che solitamente non vengono utilizzate. Con lo stesso criterio si potrebbe creare una funzione per impostare la soglia per superamento limite CO2 da remoto.

webserver-network

Purtroppo lo sketch non è ancora maturo per essere pubblicato,  ad oggi lo sketch di AULAPULITA “connected” è composto da ben 849 linee di codice contro le 427 linee di codice di AULAPULITA “standalone”, quasi il doppio ed è facile perdersi  e disorientarsi durante la lettura.

Progressi progetto “aulapulita” – parte 4

di Marco Lombardi

2016-08-27 16.21.48

Sono giunto alla definizione del primo prototipo di centralina AULAPULITA “standalone” funzionante, ho abbandonato definitivamente la breadbord per passare ad una shield per prototipi e adesso tutti i collegamenti avvengono tramite cavetti con connettori Dupont femmina-femmina. In questo modo il prototipo può essere messo in scatola e quindi può agevolmente essere posizionato nell’ambiente da monitorare senza paura che qualcuno possa danneggiare la centralina.

Per questo primo prototipo ho acquistato su eBay un contenitore in perspex da assemblare che però si è rilevato troppo piccolo per ospitare tutti i sensori ma può essere facilmente replicato con l’ausilio di una fresa cnc, in puro stile maker 😉

L’idea è quella di ridisegnare il modello del contenitore in CAD, questo potrà poi essere adattato anche al più ingrombrante prototipo di centralina AULAPULITA “connected” che vede la presenza di un Arduino MEGA in coppia con una shield ethernet Wiznet W5100 oltre alla sopra citata shield per prototipi che raccoglie tutti i connettori per le periferiche.

Prossimamente un articolo sul prototipo di centralina AULAPULITA “connected” illustrerà in modo sintetico il suo funzionamento e le possibili implementazione con un sistema di raccolta dati centralizzato su Raspberry PI o PC di recupero.

Progressi progetto “aulapulita” – parte 3

di Marco Lombardi

Il modulo “standalone” è alla versione 0.1a e il codice è stato pubblicato su GitHub insieme allo schema disegnato con Fritzing. Rispetto al primo schema pubblicato su questo blog ci sono state due importanti modifiche che hanno variato anche il codice. La prima modifica è stata fatta per aver maggiore compatibilità con tutta la famiglia Arduino e suoi cloni, ho perciò connesso il K30 in modalità I2C anziché in modalità UART, questo ci permette anche di riutilizzare parte del codice su altre piattaforme di sviluppo perché questo è stato completamente svincolato dalle libreria necessarie al K30 in modalità UART che sono vecchie di qualche anno. Questa modifica ha reso necessario la sostituzione del modulo RTC, passando al PCF8563 poichè il DS1307 è risultato incompatibile con il K30 in modalità I2C (comunicano con l’Arduino con lo stesso identificativo e non è possibile variarlo).

Il modulo “connected” è anch’esso alla versione 0.1a e da browser è possibile verificare lo stato dei sensori e l’elenco dei file contenenti i dati raccolti, ordinati per data di acquisizione. Cliccando sul file relativo al giorno corrente è possibile vedere le acquisizioni in tempo reale facendo semplicemente un refresh della pagina web. A mio avviso sarebbe utile implementare la funzione di impostazione dei parametri di rete via web, così da non dover caricare ogni volta il codice sull’Arduino se si ha necessità di cambiare indirizzo IP o altro. Ho già trovato in rete delle porzioni di codice che implementano questa funzione e prevedono il salvataggio delle impostazione su una EEPROM esterna ma vanno fatte delle prove.

Progressi progetto “aulapulita” – parte 2

di Marco Lombardi

 

aulapulita_bb

Dopo molto silenzio (causa esami e lavoro) non ci siamo più sentiti. Rifaccio dunque un po’ di storia. Il progetto “aulapulita” prosegue e come noto nasce durante il primo corso Arduino nel 2015 durante la spiegazione dei sensori. Viene riportata l’informazione sulla diminuzione della concentrazione e produttività oltre una certa soglia di CO2. Si pensa così di utilizzare il sensore MQ135, a bassissimo costo, che potrebbe fornire i dati necessari e “avvertire” quando la soglia di CO2 viene superata. Purtroppo quell’ipotesi si rivela impraticabile perché il sensore MQ135 richiede tempi di riscaldamento di circa 24 ore e ha limiti di misurazione troppo bassi per un applicazione del genere. Va inoltre settato e verificata la bontà della calibrazione con uno strumento professionale (non disponibile). Sarebbe bastato un’interruzione di corrente a bloccare le rilevazioni per diverse ore.

Si è così passati alla sperimentazione di un sensore K30 della Senseair, che risolve l’inconveniente essendo già calibrato in fase di produzione e avendo un tempo di riscaldamento di pochi secondi.

La finalità del progetto rimane la stessa: la spiegazione di un kit poco costoso (anche se in crescita rispetto all’ipotesi di utilizzo dell’MQ135) che sia semplice da spiegare e da montare. Rimane un progetto modulare con valore soprattutto educativo, ma anche operativo. I moduli sono essenzialmente due: la creazione di un punto di rilevazione che possa funzionare da solo con raccolta dati su memoria esterna, ma con la possibilità di essere messo in rete (secondo modulo) perché in caso di più punti di rilevazione questi possano essere comunicati e quindi elaborati in un computer della scuola finalizzato allo scopo.

QUESTA LA SITUAZIONE: La sperimentazione del primo modulo è quasi al termine. Il K30 funziona bene e sono state scritte alcune routine per il controllo e la segnalazione degli errori tramite led e per l’avviso di superamento soglia attraverso segnale acustico e led. Con l’utilizzo di un dip-switch a 2 canali montato sulla scheda è possibile settare la soglia limite di allarme per un range compreso tra 1000ppm e 1500ppm con step di incremento di 500ppm così da non mettere mano allo sketch. Il secondo modulo prevede l’utilizzo di un Arduino MEGA e una shield Ethernet al posto di un Arduino UNO perchè quest’ultimo non ha abbastanza memoria per gestire anche la routine per la gestione della rete.

Per questo primo modulo, funzionante in modo “stand alone”, la lista della spesa è molto contenuta e vede l’acquisto dei seguenti componenti

  • Arduino UNO o compatibile;
  • RTC shield, per avere un riferimento temporale sui dati acquisiti;
  • microSD shield, per salvare i dati acquisiti su file in formato CSV;
  • modulo LCD 16×2 I2C, per visualizzare in tempo reale i dati acquisiti e gli eventuali guasti ai sensori;
  • sensore CO2 K30 Senseair;
  • sensore DHT22, per il monitoraggio di temperatura e umidità relativa;
  • buzzer o cicalino, per l’allarme acustico di superamento soglia;
  • 2x led, per segnalare eventuali guasti ai sensori;
  • 1x dip switch 2 canali, per impostare la soglia di allarme CO2;
  • alimentatore 12v;
  • cavetti e breadbord per i collegamenti.

Ad inizio articolo lo schema disegnato con Fritzing. A breve, disponibile il codice liberamente scaricabile.

 

Progressi progetto “aulapulita” – parte 1

di Paolo Scattoni e Marco Lombardi

IMG_20160527_100824

Procede il progetto “aulapulita”. Come già deciso si è proceduto alla replica della centralina di Alessandro, che chiameremo “Fedi box”

Dopo aver ordinato i componenti, Marco ha proceduto al montaggio. Marco ha preferito riscrivere tutto il codice per prenderne confidenza. Attualmente il progetto è documentato nella foto.

A breve seguirà il sorgente dell’applicazione.

Il progetto seguirà i seguenti ulteriori passaggi:

1) Realizzazione del circuito a componenti passivi per garantire l’alimentazione anche in caso di blackout al sensore MQ135. Questo è necessario per i tempi di “burn-in” del sensore che richiede fra le 18 e le 24 ore di accensione.

2) Calibrazione in ambiente aperto dell’ MQ135.

3) Collegamento in rete tramite shield ethermet con l’obiettivo di fare download remoto dei dati acquisiti e conseguente elaborazione statistica dei dati raccolti.

 

Tutti gli interessati sono invitati a collaborare.