IoT senza senza programmare, con Blynk e Wemos D1 Mini

Questo articolo introduce all’uso di Blink, un framework che permette di programmare, comandare e monitorare progetti Arduino attraverso internet, il tutto senza scrivere una riga di codice.

Come board ho scelto la Wemos D1 mini, basata su ESP8266. Una soluzione molto più economica (€3-4), piccola e semplice, di un Arduino Yun o Uno con shield WiFi.

Wemos D1 mini

Si tratta di una board basata su ESP8266 che include alcune soluzioni atte a semplificarne l’uso. Tra queste:

  • regolazore di tensione on board, per alimentare la scheda a 5V;
  • connettore microusb, grazie al quale non è necessario usare un debugger seriale per caricare gli sketch;
  • partitore di tensione sul pin analogico, che permette di leggere valori fino a 3,3V;
  • pulsate fisico di reset;
  • resistenze di pullup/pulldown già applicate intelligentemente ai pin GPIO_0, GPIO_2 e GPIO_15 dell’ESP8266, in modo da avviare automaticamente la corretta modalità di boot. Per info leggere qui.

La board in sè non è altro che un adattatore per l’ESP-12F saldata sul retro. Questo modulo ha molto da offrire in più rispetto ai più diffusi ESP-01. In particolare 11 pin I/O (di cui 10 digitali e 1 analogico) contro 4 pin (tutti digitali), e ben 4MB di memoria flash, contro 512KB - 1MB.

Ma il Wemos D1 Mini ha anche altri assi nella manica. Ad esempio, i produttori vendono delle piccole shield (come quelle dell’Arduino Uno) che permettono di estendere con facilità le potenzialità della board.

Un altra cose che ho apprezzato è che la scheda viene venduta correlata di diversi tipi di pin header (maschio, femmina e femmina stackable) non saldati, il che rende la scheda ancora più versatile.

Personalmente ho intezione di usarla come un piccolo Arduino, su cui testare gli sketch per ESP8266 in modo più semplice e veloce, anziché dover ricoprire ogni volta la scrivania di cavetti per collegare il PC a ESP-01 e ESP-12. Invece continuerò ad utilizzare questi ultimi nei progetti ultimati su PCB, perchè più piccoli ed economici.

Infatti la prima cosa che ho fatto, appena ricevuta la board, è stata quella di saldare il pin header femmina, rendendola anche esteticamente similie, appunto, ad un Arduino in miniatura.

Ad ogni modo esiste anche una variante della stessa board, chiamata Wemos D1 R2, che ha anche lo stesso layout, le stesse dimensioni e lo stesso aspetto dell’Arduino Uno, e anche una parziale compatibilità con gli shield Arduino.

Arduino IDE

Attenzione

Prima di poter programmare il Wemos D1 mini con l’Arduino IDE va installato il relativo supporto seguendo la stessa procedura già descritta in un articolo precedente

Prima dell’upload è necessario selezionare la voce “Wemos D1 mini” dal menu “Strumenti” > “Scheda”.

Pin

Testando la board sono accorto che lo schema dei nomi dei pin usato dall’Arduino IDE è diverso da quello stampato sulla scheda (che è invece coerente con quello NodeMCU).

Una lettura meno distratta delle documentazione ufficiale mi ha portato a questa “stele di Rosetta”:

Pin Funzione ESP8266 Arduino Arduino IDE
TX I/O digitale, TX (seriale) GPIO_1, TXD D1 1
RX I/O digitale, RX (seriale) GPIO_3, RXD D3 3
A0 Input analogico ADC A0 A0
D0 I/O digitale GPIO_16 D16 16
D1 I/O digitale, SCL (I2C) GPIO_5 D5 5
D2 I/O digitale, SDA (I2C) GPIO_4 D4 4
D3 I/O digitale GPIO_0 D0 0
D4 I/O digitale GPIO_2 D2 2
D5 I/O digitale, SCK (SPI) GPIO_14 D14 14
D6 I/O digitale, MISO (SPI) GPIO_12 D12 12
D7 I/O digitale, MOSI (SPI) GPIO_13 D13 13
D8 I/O digitale, SS (SPI) GPIO_15 D15 15
G Massa GND GND
5V 5V 5V
3V3 3.3V VCC 3.3V
RST Reset RST RESET

Pin del Wemos D1 mini

Blynk: getting started

Blynk permette di programmare il nostro Wemos D1 mini (e molte altre board) attraverso l’interfaccia grafica di una immediata app per Android e iOS.

App

  • Per prima cosa installare l’app ed avviarla. Verrà chiesto di registrare un nuovo utente.
  • Dopo averlo fatto creare un nuovo progetto e selezionare “ESP8266” dal menu “Hardware Model”. È necessario appuntare il codice sotto la voce “Auth Token”. Per comodità è possibile farselo spedire via mail con l’apposito tasto. Quindi proseguire.
  • Fare tap sul “+” per aggiungere un nuovo widget e scegliere “Button”.
  • Dalla schermata “Button settings” scegliere un pin, ad esempio gp5. I numeri si riferiscono ai pin dell’ESP8266. Fare riferimento alla tabella sopra.
  • Infine premere il tasto “play”, insomma, il triangolino.

L’app lamenterà che il dispositivo non è online. Quindi connettiamolo.

Caricare lo sketch di Blynk

Dopo aver installato il supporto alla board, occorre installare anche la libreria Blynk.

Quindi scaricare l’ultima versione da qui e copiare il contenuto dell’archivio nella sottocartella libraries della cartella degli sketch dell’Arduino IDE.

Dopo avviare l’Arduino IDE ed aprire “File” > “Esempi” > “Blynk” > “BoardsAndShields” > “ESP8266_Standalone”.

Modificare la riga 34 inserendo il codice prima appuntato/inviato per email, e la riga 39 inserendo le credenziali della rete WiFi domestica.

Infine dopo essersi assicurati che in “Strumenti” > “Scheda” sia selezionato “Wemos D1 mini”, caricare lo sketch.

Enjoy

Se al pin prima scelto abbiamo collegato un led, tornando all’app sarà possibile accenderlo e spegnerlo facendo tap sul pulsante prima creato.

Led controllato via internet

E adesso?

Come è possibile notare dal menu “+”, nonostante non sia versatile e potente come la programmazione con l’Arduino IDE, Blynk ha da offrire molto di più del controllo remoto di un LED (cosa non da poco, perchè quel led può essere sostituito con un modulo relè, con cui è possibile controllare illuminazione ed elettrodomestici di casa).

Cito solo i pin “virtuali”, ossia una specie di variabili temporanee in cui è possibile salvare lo stato di sensori e widget per poi riutilizzarli in altri widget e attuatori.

Gli utenti che sono già a loro agio con la programmazione con Arduino IDE, avranno l’opportunità di estendere i loro sketch con le funzionalità offerte da Blynk. Ad esempio è possibile comandare il proprio progetto con il widget “Two Axis Joystick” che trasforma lo schermo dello smartphone in un controller.

Rimando il lettore alla documentazione ufficiale.

Commenti