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.

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.

Wemos D1 ESP8266 – programmazione OTA ovvero senza fili

 

FF79SR8IYYTNHRZdi Marco Lombardi

Nel precedente articolo abbiamo visto come utilizzare l’IDE per programmare la scheda Wemos D1 e come varia il pinout rispetto alla scheda UNO di Arduino.

E adesso parliamo di OTA: vi starete chiedendo cosa vuol dire, iniziamo dicendo che è l’acronimo di Over-The-Air, in altre parole è il metodo che permette di aggiornare un dispositivo ricevendo wireless il software o lo sketch se parliamo di Arduino.

Quante volte abbiamo sentito la necessità di aggiornare uno sketch ma la nostra board Arduino è fisicamente irraggiungibile? Penso ad un progetto come aulapulita, sigillato nel suo contenitore in un’aula di scuola ma connesso in rete, o per esempio una centralina di rilevamento connessa in rete posta e all’esterno magari su di un palo.

Ebbene si, tra le caratteristiche di una scheda basata sul chipset ESP8266 c’è anche la possibilità di aggiornare il firmware, o se preferite sketch, senza bisogno di dover connettere la board al pc. Una grande rivoluzione degna del Web 2.0 e dell’epoca IoT.

La documentazione ufficiale OTA del progetto ESP8266 Arduino Core descrive in maniera chiara le modalità di upload wireless dello scketch. Personalmente sto studiando quella via web browser che permetterebbe la condivisione degli aggiornamenti ad una eventuale comunità di utenti interessati ad un progetto di scienza di cittadinanza (per esempio una centralina di rilevamento connessa in rete per polveri sottili o simili). Il sistema OTA prevede anche un sistema di aggiornamento automatico con il controllo da parte della board di nuovo software disponibile, così come accade per cellulari e tablet di ultima generazione.

Se invece vogliamo usare un metodo più “semplice” c’è la possibilità, dopo aver installato Python 2.7, di aggiornare la board direttamente dal’IDE di Arduino ma siamo costretti ad usare sempre lo stesso pc da cui abbiamo fatto l’upload la prima volta. Troppo limitativo a mio parere ma comunque utile. Sul web ci sono molti video su questo metodo “semplice” e questo è molto esplicativo.

In questo articolo puramente divulgativo ho volutamente evitato di trattare codice che comunque troviamo commentato tra gli esempi disponibili nell’IDE di Arduino. Non escludo comunque un articolo con qualche applicazione.

Nella categoria ESP8266 trovate altri articoli su questa scheda.

Wemos D1 ESP8266 – primi passi per una facile migrazione

di Marco Lombardi

Nel precedente articolo abbiamo visto una scheda con lo stesso layout della UNO: la Wemos D1 “R1”.

Per utilizzarla con l’IDE di Arduino non dobbiamo fare altro che aggiungere il supporto alla board attraverso il menu “File->Impostazioni” inserendo nel campo “URL aggiuntive per Gestore schede:” il seguente indirizzo:

http://arduino.esp8266.com/stable/package_esp8266com_index.json

screen_impostazioni

Una volta cliccato su “Ok” sotto il menu “Strumenti” alla voce “Scheda:  ->Gestore schede” sarà possibile installare il core di Arduino per il chip ESP8266. Successivamente cliccando su “Installa” sarranno scaricate tutte le librerie necessarie e al successivo riavvio della IDE sotto il menu “Strumenti” alla voce “Scheda:  ” nel menu a scorrere verso il basso avrete la possibilità di selezionare la board Wemos D1 “R1” con chip ESP8266.

La Wemos D1 “R1”, così come tutte le schede basate sul chip ESP8266, ha un pinout diverso ovvero una nomenclatura tutta sua per i pin digitali, per esempio se stiamo lavorando con Arduino UNO e si vuol far lampeggiare un led collegato al pin 7 basta definirlo così come segue:

pinMode(7, OUTPUT);

se vogliamo fare la stessa su una Wemos D1 “R1” con un led collegato al pin 7 la definizione diventa questa:

pinMode(13, OUTPUT);

in rete è possibile trovare schemi comparativi ma tutti incompleti. L’immagine che trovate di seguito è il risultato del montaggio di due immagini per me esplicative: quella di destra è la tabella con la comparazione tra la nomenclatura dei pin sulla scheda UNO/R1 e i corrispettivi per il chip ESP8266, l’immagine di sinistra è invece lo schema dove è possibile individuare tali pin sul chip. In basso segue l’immagine con le due schede.

comparison-of-wemos-r1-vs-ESP12-E-pinoutsD1vsUNO

Sperando di aver fatto cosa gradita vi segnalo il driver può essere scaricato al seguente link: https://wiki.wemos.cc/_media/ch341ser_win_3.4.zip

Nella categoria ESP8266 trovate altri articoli su questa scheda.

Wemos D1 ESP8266 vs Arduino UNO

di Marco Lombardi

Era da tempo che volevo provare un modulo WiFi basato sul chip ESP8266 e la scelta è ricaduta su una shield economica (con scarsa documentazione disponibile) che ospita a bordo il modello ESP-12F.

u4354_2

Per fortuna in rete è disponibile un’ampia documentazione e librerie in costante aggiornamento ma far funzionare la shield è stata un’impresa…causa un errore di progettazione della stessa sono stato costretto ad una modifica hardware. Rimane comunque una buona scelta visto il costo e la presenza di un regolatore di tensione che evita di usare un’alimentazione separata (il chip ESP8266 lavora a 3.3V contro i canonici 5V della quasi totalità dell’elettronica che spesso utilizziamo con Arduino e simili). L’unico vero difetto è la velocità di comunicazione con la board di Arduino che avviene in modalità seriale virtuale, troppo limitata per gestire grandi quantità di dati e connessioni multiple.

Cercando la soluzione al problema della velocità di comunicazione su internet, scopro una cosa troppo interessante per non essere approfondita: il chip ESP8266 ha un suo processore che è addirittura più veloce dell’ATmega328P di Arduino UNO. Dati alla mano parliamo di 80Mhz (ESP8266) contro 16 MHz (ATmega328P) e una memoria di 96kB (ESP8266) contro i 32kB (ATmega328P), una vittoria netta del chip ESP8266 ai danni dell’ATmega328P anche in termini di costi.

Un gruppo di sviluppatori già da un paio di anni sta lavorando al porting di Arduino sul chip ESP8266, infatti già da qualche tempo è disponibile per l’IDE il supporto a questo chip. Il progetto è consultabile su https://github.com/esp8266/Arduino e su internet ci sono ottimi tutorial per cominciare a sperimentare. Su internet si trovano moltissime board con chip ESP8266 e molte di queste sono con layout simile ad Arduino.

Nell’immagine che segue possiamo vedere una board Arduino UNO confrontata con una board WeMos D1, layout identico e alta compatibilità con moltissime shield in commercio.

D1vsUNO

Qualche considerazione: una board WiFi compatibile con la UNO ma con chip ESP8266 al posto dell’ATmega328P costa quanto un clone di Arduino. I pin disponibili su board ESP sono 12 di cui 1 solo analogico invece su Arduino UNO sono 20 di cui 6 analogici ma la prima ha una potenza 5 volte maggiore della seconda e una memoria 3 volte più capiente. Per me è vittoria netta per questa nuova generazione di board low cost già provviste di connettività WiFi, ad Arduino UNO va ovviamente il merito di aver lanciato la sfida per una tecnologia accessibile sempre più performante e meno costosa.

Un progetto come aulapulita se trasportato su una board con connettività WiFi come la Wemos D1 potrebbe diventare un interessante iniziativa di comunità, con una rete di centraline per l’acquisizione dati, con condivisione e analisi in tempo reale.

Spero di aver solleticato la vostra curiosità e vi saluto con l’augurio di veder pubblicato qualche altro progetto su questo blog.

Nella categoria ESP8266 trovate altri articoli su questa scheda.