Programmare la RLY con Arduino per progetti IoT

In prossimità dell’uscita di due nuove schede della serie RLY, vogliamo dedicare una serie di articoli sull’utilizzo della scheda miniaturizzata con relè e WiFi RLY-1601 come scheda di sviluppo programmabile in maniera autonoma utilizzando l’IDE e gran parte delle librerie di Arduino. Questa possibilità non è cosa da poco poiché fa si che chiunque possa realizzare progetti IoT anche complessi utilizzando la scheda RLY e sfruttando la semplicità della programmazione Arduino.

Introduzione

La scheda RLY, come ben noto, è utilizzabile in maniera autonoma utilizzando le applicazioni sia per iOS che per Android disponibili sui relativi store. Questo è possibile grazie al firmware caricato sulla RLY che consente il dialogo tra smartphone e la scheda stessa utilizzando un semplice protocollo di richiesta/risposta basato su TCP/IP. Il firmware, tra le altre cose, dispone di API facilmente utilizzabili per permettere di integrare la RLY all’interno di altri progetti facilmente e velocemente. Ad esempio, sfruttando le API è possibile realizzare un software per PC che dialoghi con la RLY oppure realizzare una App o un’applicazione Web che interagisca con la RLY. Il Manuale per lo Sviluppatore ove vi è descritto l’utilizzo delle API è scaricabile nella pagina del prodotto RLY-1601.

Immaginiamo, adesso, di voler realizzare un’applicazione che chiuda il relé della RLY e contemporaneamente invii una email di notifica a qualcuno oppure, ancora più semplice, accenda il led a bordo della RLY per notificare che il relè è stato chiuso. E’ possibile realizzare un’applicazione del genere con la RLY-1601? Certamente, ma non è possibile sfruttare le API da noi scritte poiché non possiedono quelle funzionalità, è invece possibile scrivere un firmware personalizzato da caricare sulla RLY. La possibilità di poter scrivere un firmware con tutte le funzionalità di cui si ha bisogno è utilissimo per la RLY-1601 ma lo sarà ancora di più per le schede della serie RLY di nuova uscita poichè, essendo dotate di una serie di I/O utili per la connessioni di dispositivi esterni come sensori e/o attuatori, sarà fondamentale per l’utente poter avere la libertà di interagire con tutti gli I/O disponibili e poter creare le combinazioni di cui ha necessità. Ad esempio, creando un proprio firmware potrà essere modificato un Output in caso uno o più Input cambino stato.

Grazie al fatto che tutte le RLY si basano sul SoC ESP8266, è possibile creare il proprio firmware utilizzando l’IDE di Arduino e quindi il linguaggio di programmazione di Arduino e gran parte delle librerie scritte per Arduino. Questo rende la programmazione estremamente facile e veloce.

Per poter scrivere un firmware per il SoC ESP8266 montato sulla serie di schede RLY e successivamente effetuarne il caricamento è necessario:

  1. configurare l’IDE di Arduino per gestire la scheda RLY;
  2. connettere la RLY e quindi l’ESP8266 ad un programmatore, necessario per caricare il firmware sul ESP8266 (flash della memoria);

Nei prossimi paragrafi andremo a vedere come configurare l’IDE di Arduino per scrivere un semplice firmware che faccia lampeggiare il led a bordo della RLY e come connettere la RLY-1601 al programmatore uUSB-PA5 disponibile nel nostro Shop per effettuarne il caricamento.

Setup del IDE di Arduino

Se non si ha già a disposizione, andare sul sito di Arduino (arduino.cc) e fare il download dell’ultima versione dell’IDE. Alla data di questo articolo l’ultima versione è la 1.8.5.

Aprire l’IDE e spostarsi in Arduino -> Preferenze. Nella sezione “URL Aggiuntive per il Gestore schede:” incollare il seguente link e premere OK:

arduino-url-aggiuntive

Spostarsi nella sezione Strumenti -> Scheda: “xxx” -> Gestore Schede… e selezionare “esp8266 by ESP8266 Community“. Scegliere la versione 2.3.0 e premere Installa.

arduino-esp8266-library

Attendere la conclusione della procedura di installazione delle librerie necessarie per l’ESP8266.

arduino-esp8266-install

Conclusa l’installazione delle librerie spostarsi nella sezione Strumenti -> Scheda: “xxx” e selezionare la scheda “NodeMCU 1.0 (ESP-12E Module)“. La RLY monta il modulo ESP-12E ed è quindi corretto impostare tale scheda.

arduino-nodemcu

La configurazione dell’IDE di Arduino è terminata. Nella prossima sezione verrà spiegato come scrivere un semplice firmware per far lampeggiare il led a bordo della RLY-1601.

Blink

Prima di passare al codice vero e proprio è necessario specificare che:

  • tutte le schede della serie RLY montano il modulo ESP-12E della Espressif;
  • il modulo ESP-12E è formato dal pinout riportato nella figura seguente;

esp8266 esp12e pinout

  • per poter comandare una porta digitale del modulo ESP-12E (i vari GPIOx) è possibilie utilizzare le classiche funzioni di Arduino pinMode(pin, mode), digitalRead(pin, value) e digitalWrite(pin, value), dove come numero di pin è necessario impostare uno dei vari GPIO (ad esempio volendo impostare come un Output digitale il pin del ESP-12E denominato GPIO12 sarà sufficiente utilizzare la funzione pinMode(12, OUTPUT))
  • la scheda RLY-1601 ha connesso al GPIO12 il relè ed al GPIO2 il led. Questi due GPIO devono essere impostati sempre come OUTPUT e variandone lo stato è possibile accendere/spegnere il led ed aprire/chiudere il relè;
  • le librerie utilizzabili sono molto vaste ed è possibile leggere la guida a questo indirizzo: http://arduino-esp8266.readthedocs.io/en/latest/libraries.html

Chiariti i concetti di base passiamo al codice:

Il codice è molto semplice. All’inizio viene definito il pin ove è connesso il led che, per le precedenti considerazioni, è il numero 2. Nella funzione setup() viene definito il pin 2 come un OUTPUT. All’interno della funzione loop() viene semplicemente cambiato lo stato dell’uscita del pin da alto a basso e viceversa ogni secondo. Notare che per far accendere il led è necessario mettere il pin a LOW e non ad HIGH.

Copiare il codice nell’IDE di Arduino e premere Verifica. Lo sketch verrà compilato senza alcun errore. Il passo successivo è il caricamento del firmware compilato sul modulo.

Connessione della RLY al Programmatore e Programmazione

Per poter programmare la RLY-1601 è necessario dotarsi di un convertitore USB-seriale 3.3V uguale o simile al modello uUSB-PA5 disponibile nel nostro Shop. Esistono molti convertitori acquistabili sia su Amazon che eBay ma verificare sempre che siano originale e non cloni. Molti cloni che costano pochi euro non riescono a programmare correttamente la RLY restituendo un errore.

La scheda RLY dispone di 3 PAD chiamati, nel manuale d’uso, TX, RX e PROG. I tre PAD si trovano accanto al moduelo ESP-12E come mostrato nella figura seguente.

RLY-1601

Tramite il PAD TX si accede alla linea di trasmissione seriale, equivalente, volendo fare un parallelo con il mondo Arduino, con il pin TX che si trova su tutte le schede Arduino. Tramite il PAD RX si accede alla linea di ricezione seriale (equivalente a RX su schede Arduino) mentre tramite il PAD PRG si accede ad un PIN speciale, che non ha equivalenti sulle schede Arduino, che abilita la programmazione.

Il PIN TX del convertitore USB-seriale 3.3V deve essere connesso al PAD RX della RLY mentre il PIN RX del convertitore deve essere connesso al PAD TX della RLY. Inoltre devono essere connessi insieme i riferimenti a potenziale zero (GND) sia del convertitore che della RLY come riportato in figura sottostante.

rly-uUSB

Con questo collegamento, aprendo il Monitor Seriale sull’IDE di Arduino ed avendo scelto in Strumenti -> Porta la corretta porta (COM su Windows o TTY su MAC/Linux) relativa al convertitore USB-seriale tramite, sarà possibile osservare tutti i messaggi di debug inviati dal modulo ESP-12E. Vedremo in un prossimo articolo come sia possibile inviare un messaggio seriale utilizzando semplicemente la funzione Serial.print() in maniera del tutto equivalente a quanto può essere fatto con Arduino.

Abbiamo detto che il PAD PRG ha la funzione di abilitare o meno la programmazione. Il suo funzionamento è il seguente:

  • se il PAD PRG è sconnesso nel momento in cui la RLY viene alimentata la scheda si avvia in modalità di funzionamento normale eseguendo il firmware al suo interno;
  • se il PAD PRG è connesso a GND nel momento in cui la RLY viene alimentata la scheda si avvia in modalità di programmazione e resta in attesa di ricevere il nuovo firmware tramite le connessioni seriali TX ed RX.

Attenzione che questa particolare funzionalità sul PAD PRG funziona SOLO durante il primo avvio ovvero nel momento in cui viene alimentata la RLY. Se la scheda fosse già alimentata e venisse posto il PAD PRG a GND non accadrebb niente di niente.

Quindi, per poter programmare la RLY è necessario:

  1. connettere il convertitore USB-seriale 3.3V come spiegato;
  2. appurare che la RLY sia spenta (non alimentata);
  3. connettere il PAD PRG a GND per mettere la RLY in modalità programmazione;
  4. accendere la RLY alimentadola.

Arrivati a questo punto è sufficiente premere sul pulsante Carica nell’IDE di Arduino per caricare il firmware sulla scheda. Dopo pochi istanti il led a bordo del modulo ESP-12E inizierà a lampeggiare velocemente ad indicare il caricamento in corso. Al termine del caricamento il Monitor dell’Ide di Arduino indicherà il caricamento al 100% come nella figura sottostante ed il led inizierà a lampeggiare ad intervalli di 1 secondo proprio come scritto nel codice.

RLY-uUSB-Arduino-Loaded

In questo articolo siamo riusciti a far lampeggiare il led a bordo della RLY, nei prossimi tralasceremo la parte di Configurazione del IDE e della connessione con il programmatore e ci soffermeremo solo sul codice per implementare alcuni interessanti applicazioni. Un anticipo? Riusciremo a controllare il relè tramite browser!

A presto

 


One Response to Programmare la RLY con Arduino per progetti IoT

  1. […] Programmare la RLY con Arduino per progetti IoT […]

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *