Utilizzare la BlueRelay per progetti di domotica

Ho ricevuto da Mauro Alfieri una shield per Arduino da lui sviluppata in collaborazione con Luca Dentella che permette, tramite una comunicazione seriale via Bluetooth, di interagire con Arduino.

LemontechBluetooth

Il cuore della scheda è un transceiver HC-05 che permette di instaurare la comunicazione bluetooth di inviare e ricevere dati utilizzando il semplice protocollo seriale. La shield possiede anche due relè che possono essere utilizzati per comandare direttamente altri dispositivi.


Le caratteristiche principali della shield sono elencate nella tabella seguente:

Modulo Bluetooth HC-05
Quantità relè 2
Carico massimo relè 250V 10A

La Bluerelay shield permette di realizzare una serie di applicazioni tipiche della domotica, infatti il segnale bluetooth avendo un corto raggio si presta bene in ambienti circoscritti. Lo standard bluetooth è impiegato tipicamente per creare reti WPAN (Wireless Personal Area Network) ed essendo ormai una tecnologia di comunicazione molto diffusa permette di far interagire tra loro una numerosa tipologia di dispositivi (PC, smarthphone, tablet, schede embedded ecc..).

Configurare il pc per la comunicazione bluetooth (Windows 8.1)

Ho acquistato un piccolo adattatore usb Bluetooth 4.0 da collegare al pio pc. I driver vengono installati automaticamente da Windows 8.1 e viene caricata anche l’utility ‘Dispositivi bluetooth‘ nella system tray.

bluetooth utility

Dopo aver collegato la shield Bluerelay ad Arduino UNO, alimentiamola con il cavo usb. Ora per stabilire una connessione wireless col pc dobbiamo eseguire l’operazione di associazione tipica del protocollo bluetooth.
Apriamo il Pannello di controllo in modalità desktop, clicchiamo sulla voce ‘Hardware e suoni‘ e poi sulla voce ‘Dispositivi e stampanti‘. Dalla finestra ‘Dispositivi e stampanti‘ clicchiamo sulla voce ‘Aggiungi dispositivo‘. Viene avviata la ricerca dei nuovi dispositivi collegati al pc

installazione hc-05

dopo alcuni istanti il modulo bluetooth HC-05 della Bluerelay shield viene rilevato. Eseguiamo un doppio click sulla voce HC-05. Viene caricata la finestra per l’immissione del passcode, inseriamo quello di default (1234) e clicchiamo sul pulsante avanti:

hc-05 passcode

viene automaticamente avviata l’installazione dei file sul sistema:

bluetooth hc-05

Al termine dell’installazione nella finestra ‘Dispositivi e stampanti‘ sarà presente una nuova icona con la dicitura HC-05:

modulo bluetooth

Scambiare dati con la shield

Ora che il sistema è pronto e configurato possiamo eseguire alcuni test per verificare il corretto scambio dati tra il pc e la Bluerelay shield. Per prima cosa dobbiamo ricavare la porta Com virtuale che il sistema operativo ha assegnato al dispositivo HC-05. Dalla finestra ‘Dispositivi e stampanti’ eseguiamo un doppio click sull’icona HC-05. Viene caricata la finestra ‘Proprietà HC-05‘.

Proprieta_hc05

Nella scheda servizi viene mostrata la porta seriale COM associata al dispositivo bluetooth HC-05, nel mio caso la COM7. Notate inoltre la spunta nella casella di selezione, questa deve essere presente per abilitare la comunicazione seriale.

Proprieta_hc05_serv

Quindi per inviare dati tra il pc e la scheda BlueRelay shield devo usare una connessione seriale utilizzando la Com7.

Lo sketch di esempio

Per usare la shield dobbiamo conoscere la sua pin function:

Numero pin  Funzione del pin
3 pin TX modulo bluetooth
4 pin RX modulo bluetooth
5 pin selezione comandi AT
6 pin relè 1
7 pin relè 2

quindi sapendo che la trasmissione seriale per comunicare con lo shield è sui pin 3 e 4 è sufficiente usare la libreria SoftwareSerial per inviare e ricevere dati tramite il modulo bluetooth.
Il pin 5 invece serve per abilitare o meno la modalità AT. Tenendo a livello logico alto questo pin abilitiamo la modalità AT, in questo modo potremmo ad esempio cambiare il passcode o il nome del modulo. Solitamente terremo a livello logico basso questo pin, in modo da sfruttare la classica comunicazione seriale.

Lo sketch di esempio seguente permette di ricevere un carattere e di azionare i relè della shield:

[c]
#include <SoftwareSerial.h>

SoftwareSerial SoftSerial(3, 4);

void setup() {

//Definisco il pin 5 come uscita
pinMode(5, OUTPUT);
//Setto a livello logico basso
//per attivare la modalità seriale
digitalWrite(5, LOW);

//imposta i pin per pilotare i relè
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
digitalWrite(6, LOW);
digitalWrite(7, LOW);

// Imposto la velocità a 9600bps
SoftSerial.begin(9600);
}

void loop() {

//controllo se ci sono dati sulla seriale del modulo
if (SoftSerial.available())
{
//leggi il carattere
char RX = SoftSerial.read();

//gestisci i relè in base al dato ricevuto
if(RX==’a’)
{
//attiva il relè 1
digitalWrite(6, HIGH);
SoftSerial.println("Relè 1 attivato");
}
else if (RX==’s’)
{ //disattiva il relè 1
digitalWrite(6, LOW);
SoftSerial.println("Relè 1 disattivato");
}
//gestisci i relè in base al dato ricevuto
if(RX==’z’)
{
//attiva il relè 2
digitalWrite(7, HIGH);
SoftSerial.println("Relè 2 attivato");
}
else if (RX==’x’)
{
//disattiva il relè 2
digitalWrite(7, LOW);
SoftSerial.println("Relè 2 disattivato");
}
}
}

[/c]

Dopo aver caricato il codice sulla Arduino, utilizzeremo Putty per instaurare una connessione seriale tra pc e modulo bluetooth.
Avviamo Putty e configuriamolo per aprire una connessione seriale, specifichiamo la Com7 così come è riportato nella voce ‘Servizi Bluetooth’ vista precedentemente e clicchiamo sul pulsante Open:

Blue relay shield

Dopo qualche istante viene caricata una finestra terminale dove è possibile digitare i comandi per attivare i relay della BlueRelay shield. Quando viene instaurata la connessione il led CONN (blu) sulla shield si accende confermando il collegamento tra i due sistemi. Ora basta semplicemente digitare i caratteri a, s, z, x per provocare l’attivazione/disattivazione dei relè.

Puttycom

In conclusione penso che questa shield risulti molto utile per tutti quei progetti dove è necessario usare uno smartphone per comandare carichi o per far eseguire alla nostra scheda Arduino una infinità di compiti.