L’ESP8266 è un ottimo dispositivo hardware, che permette di aggiungere a qualsiasi prodotto, una connessione WiFi per trasferire e ricevere informazioni.
Il sistema Adapter è un adattatore che ci permette di far comunicare il nostro tablet o smarphone con il nostro progetto arduino. (link per acquisto su eBay)
Fase 1 Creazione del progetto Blynk
L’APP di riferimento è Blynk, permette di creare sul nostro dispisitivo un progetto sul quale poter posizionare Led, Bottoni Display ed altri controlli.
La prima operazione sarà quella di creare un progetto tramite Blynk e selezionare come “Hardware Model” ESP8266.
Al progetto verrà associato un “Auth Token” un codice alfanumerico utilizzato da blynk per associare la tua schedina Adapter al tuo progetto Appena creato, in modo sicuro.
Una vota creato il tuo progetto Blynk potrai inserire dei “Widget“. I Widget sono dei controlli che permettono di creare la tua App, con operazioni per usare bottoni, led ecc.
Occorre copiare in memoria il Token creato dal progetto, poichè servirà in seguito per incollarlo all’interno del adapter.
Fase 2 Collegamento Adapter
Ora colleghiamo elettricamente il nostro adapter, il sistema funziona a 5v e può essere collegato direttamente alla 5V del nostro arduino, collegando quindi i pin
5V e GND. I restanti pin RX e TX dovranno essere collegati al nostro arduino in modo inverso sulla porta da noi scelta, quindi se prendiamo la porta1
di Arduino Mega, collegheremo RX1 a TX e TX1 a RX. Ora il nostro adapter è collegato e funzionante.
Fase 3 Associazione Adapter Blynk
Ora accendiamo il nostro arduino, la schedina Adapter creerà una propria rete con il nome Adapter_xxxx collegandoci a questa rete ed entrando con un
browser al indirizzo 192.168.4.1 si avàà accesso alla sua configurazione.
Entrare nella voce Blynk ed inserire il codice precedentemente copiato (preso dalla voce Auth Token) inserire il codice di sicurezza 1234 e premere save.
Tornare nella schermata precedente ed entrare nella seconda voce Wifi, selezionare la propria rete di casa, sul quale si ha l’accesso ad internet inserire la password
ed il solito codice di sicurezza (1234). Se tutto è stato scritto in modo corretto si è già pronti.
Fase 4 il protocollo (opzionale)
Blynk permette di pilotare degli ingressi fisici delle schede sul quale è installato e degli ingressi virtuali,
il protocollo di comunicazione funziona tramite gli ingressi virtuali. Ogni Widget che si inserisce nel progetto può essere un controllo di
Inputo o di Output al quale noi andremmo ad associare un ingresso virtuale da V1 a V50. Il protocollo per inviare e ricevere stringhe è molto semplice
ecco la sintassi:
Vx,Data##
dove
Vx = Rappresenta l’ingresso virtuale es V1
Data = È il campo dati che può essere una stringa
## = fine comando
ecco alcuni esempi:
Scrivere Ciao su un Widget LCD associato al ingresso V10
V10,Ciao##
Ricevere l’evento della pressione di un pulsante associato al ingresso V1:
se il pulsante è premuto
V1,1##
se il pulsante non è premuto
V1,0##
Il protocollo di comunicazione è molto semplice funziona tramite una normale comunicazione seriale con un baudrate di default di 115200bps.
Nel protocollo di comunicazione ogni messaggio che si invierà da Arduino al App Blynk avrà un ritardo di 200ms.
Fase 5
Anche se il protocollo di comunicazione è già molto semplice ed intuitivo è stata scritta una libreria per Arduino Mega e Arduino Due
(la scheda a 5 volt è compatibile a livello hardware solo con Arduino Mega), per facilitare la comunicazione con l’App senza dovere inviare o ricevere nessun messaggio, ecco un semplice esempio:
#include <IotDevSerLib.h> #if defined SOFTWARE_SERIAL_OK #include <SoftwareSerial.h> // If used Software Serial // X Software serial #define _SS_MAX_RX_BUFF 256 // RX buffer size //BEFORE WAS 64 #define rxPin 11 // Software Serial #define txPin 10 // Software Serial SoftwareSerial swSer(rxPin,txPin); // If use SoftwareSerial port #endif IotDevSerLib IotDev; void mngIotDev(int param, String Data) { switch(param) { case IOT_V1: Serial.println("IOT_V1: "+Data); if (Data.toInt()==1){ IotDev.send(IOT_V6,"Hello, World!"); //Write On Display IotDev.send(IOT_V7,"by Adapter Iot"); //Write On Display } break; case IOT_V2: Serial.println("IOT_V2: "+Data); if (Data.toInt()==1){ IotDev.send(IOT_V6," "); //Write On Display IotDev.send(IOT_V7," "); //Write On Display } break; default: Serial.print("Unknow Param: "); Serial.println(param); break; } } void setup() { Serial.begin(115200); IotDev.beginHW(&Serial1,115200); // Hardware Serial //IotDev.beginSW(&swSer,115200); // Software Serial IotDev.setCallBack(mngIotDev); //callback Serial.println("Start"); } void loop() { IotDev.run(); }
Nello Sketch inizializziamo la porta di comunicazione ed associamo una funzione di callback per cattuarare gli eventi che arrivano dalla nostra App.
Se invece volessimo inviare qualcosa al App per comunicargli una determinata informazione dovremmo usare il metodo send (es. IotDev.send(IOT_V6,”Hello, World!”) ).