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
eGPIO_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.
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.