Apertura Cancello con telecomando Bluetooth e Arduino

di Ivan Scordato
Quello che vedremo in questo articolo è un progetto che porterà alla realizzazione di un sistema che, tramite un telecomando Bluetooth, permetterà l’apertura del cancello della propria abitazione in maniera semplice ed economica. Utilizzeremo pochi componenti facilmente reperibili, e vedremo alcune modifiche che possono essere effettuate per cambiare la destinazione d’uso del progetto.
Il sistema che realizzeremo è diviso in due parti: il modulo ricevitore e il modulo emettitore. Il modulo ricevitore consiste in una scheda elettronica sulla quale è presente un relè che si eccita ogni qualvolta riceve un segnale di attivazione, mentre il modulo emettitore consiste in una scheda elettronica portatile, alimentata a batteria, che permette di inviare il segnale di attivazione.
[iscritti]

 

Collegamento tra i moduli

Per effettuare il collegamento tra il modulo ricevitore e il modulo emettitore, utilizzeremo due moduli bluetooth HC-05. Si tratta di un modulo di ricezione e trasmissione Bluetooth a basso costo, che è possibile trovare già saldato in un adattatore che converte ed allinea i pin necessari al collegamento, da 1.9mm a 2.54mm, e converte il livello di interfaccia da 5V a 3.3V Ecco le sue caratteristiche principali:
•Alimentazione: +3.3 VDC 50 mA (5V Tramite l’adattatore);
•Frequenza di funzionamento: 2.4GHz ISM band;
•Misura: 26.9 mm x 13 mm x 2.2 mm;
•Basato sul CSR Bluetooth chip BC417143;
•Bluetooth specification v2.0 + EDR;
•Baudrate supportati 2400 – 1382400;
•Modulazione: GFSK (Gaussian Frequency Shift Keying);
•Potenza di emissione: ≤4dBm, Class 2;
•Sensitivity: ≤-84dBm at 0.1% BER;
•Velocità: Asincrona: 2.1Mbps(Max) / 160 kbps, Sincrona: 1Mbps/1Mbps;
•Sicurezza: Autenticazione e criptazione;
•Temperatura di funzionamento: -20°C/+75 °C
Il modulo HC-05 è molto versatile, in quanto è possibile configurare ogni suo parametro tramite i comandi AT. Ad esempio nel nostro caso vedremo il procedimento per accoppiare i due moduli che installeremo nella board ricevitore ed emettitore, assegnare il ruolo di master e slave e cambiare il baud rate. Nel caso in cui voi voleste effettuare altre modifiche, in tabella potete trovare alcuni comandi AT che vi potranno essere utili.
 

 

Modulo ricevitore

Per ottenere una scheda compatta e facilmente installabile, ho optato per l’installazione di un trasformatore incapsulato che permetta di alimentare il circuito direttamente tramite la corrente alternata di casa. Per il modulo ricevitore avremo bisogno dei seguenti componenti:
•Trasformatore incapsulato HLK-PM05;
•Arduino Pro Mini;
•Modulo Bluetooth HC-05;
•Modulo 1 relè.
Per prima cosa, bisogna assemblare il circuito del modulo ricevitore secondo il seguente schema di collegamento, senza effettuare i due collegamenti evidenziati dentro il riquadro rosso, che faremo in un secondo momento. Questo perché prima di completare il circuito, dobbiamo provvedere a configurare correttamente il modulo bluetooth tramite alcuni comandi AT. Dopo avere assemblato correttamente il circuito, possiamo procedere con il caricamento del codice, che non fa altro che restare in attesa del collegamento del modulo emettitore, e nel momento in cui avviene la connessione e riceve il carattere “A”, eccita il relè al quale abbiamo collegato il contatto di apertura del cancello automatico. Per effettuare il caricamento del codice, dovremo utilizzare un adattatore seriale-USB, o in alternativa una board Arduino Uno dopo avere rimosso il microcontrollore. I collegamenti da effettuare sono molto semplici, infatti basterà collegare i pin nel seguente modo:
Arduino TX  => RX Convertitore
Arduino RX  => RX Convertitore
Arduino VCC => VCC Convertitore
Arduino GND => GND Convertitore
Arduino RST => RST Convertitore
Quindi apriamo l’IDE di Arduino, selezioniamo la board Arduino Pro Mini, e carichiamo il codice.

Modulo emettitore

Il modulo emettitore si occuperà di stabilire la connessione con il modulo ricevitore e  di inviarvi il carattere “A”, in modo da segnalare la propria presenza. Il circuito è alimentato tramite una batteria li-ion, che è possibile ricaricare tramite un normale alimentatore per smartphone con connettore micro USB. Per realizzare questo modulo avremo bisogno del seguente materiale:
•Arduino Pro Mini;
•Modulo Bluetooth HC-05;
•Batteria li-ion 3.7V 300 mAh;
•Modulo caricabatteria li-ion;
•Switch di accensione.
Prima di tutto assembliamo il circuito secondo lo schema sottostante, assicurandoci, come abbiamo già fatto in precedenza, di non effettuare per il momento il collegamento evidenziato dentro il riquadro rosso. Dopo avere assemblato correttamente il circuito, come abbiamo già fatto con il modulo ricevitore, possiamo procedere con il caricamento del codice tramite un convertitore USB-seriale.

Configurazione dei moduli Bluetooth

Per fare in modo che la comunicazione tra i due moduli avvenga correttamente, si presenta la necessità di configurare i due moduli bluetooth tramite alcuni comandi AT, che ci permetteranno di assegnare il ruolo di Master al modulo ricevitore e il ruolo di Slave a quello emettitore, di accoppiare i due moduli in modo che il collegamento avvenga automaticamente, e di scegliere quale baud rate utilizzare. Questo è il motivo per cui vi ho chiesto di non effettuare momentaneamente i collegamenti dei pin di comunicazione del modulo bluetooth, in modo da potere effettuare la configurazione senza riscontrare degli errori. Cominciamo con il modulo bluetooth che vogliamo configuare come SLAVE. Colleghiamo quindi il modulo bluetooth che abbiamo installato nella scheda emettitore al convertitore USB-seriale nel seguente modo:
 

 
Bluetooth TX  => RX Convertitore
Bluetooth RX  => TX Convertitore
Bluetooth VCC => VCC Convertitore
Bluetooth GND => GND Convertitore
Sul modulo bluetooth è presente un pin chiamato KEY, che durante la fase di configurazione dovremo collegare a VCC, mentre potremo scollegarlo una volta che avremo finito. Adesso colleghiamo il convertitore al computer, apriamo la porta seriale dell’IDE di Arduino, e dopo avere scelto il baud rate di 38400 e impostato come fine riga entrambi i caratteri di controllo, procediamo inviando i seguenti comandi AT al nostro HC-05:
AT+ORGL
AT+RMAAD
AT+PSWD=1234
AT+ROLE=0
Una volta che abbiamo finito con il primo modulo, procediamo con la configurazione del secondo, che configureremo come MASTER, e lo accoppieremo con il modulo SLAVE. Anche stavolta colleghiamolo al convertitore seriale, tenendo in considerazione la configurazione precedente, e sempre tramite il monitor seriale dell’IDE di Arduino, procediamo con l’invio dei seguenti comandi AT:
AT+ROLE=1
AT+CMODE=1
AT+INIT
Adesso avviamo la ricerca di dispositivi bluetooth per effettuare il paring dei due moduli, digitando:
AT+INQ
Dopo qualche secondo apparirà una lista dei moduli bluetooth, e uno di questi, che saremo capaci di identificare immediatamente, sarà il nostro modulo bluetooth slave, che rispetterà la configurazione seguente:
+INQ:address,type,signal Es: 14:3:130007,0,7FFF
Sapendo quindi quale sia il nostro modulo slave, possiamo ora procedere con il paring, sostituendo <address> con l’indirizzo che abbiamo appena visto. Quindi eseguiamo i seguenti comandi:
AT+PAIR=<address>,<timeout>
AT+BIND=<address>
AT+CMODE=0
AT+LINK=<address>
Adesso, se tutto quanto è andato a buon fine, vedrete i led di stato di entrambi i moduli lampeggiare velocemente. N.B. Nel caso in cui dopo avere inviato dei comandi, il sistema dovesse rispondere con un errore, riprovate più volte, dopo avere resettato il modulo se dovesse essere necessario.
 
 

 

Ultimazione del circuito

Appena finito di configurare i moduli bluetooth, possiamo ultimare il circuito, effettuando in un attimo i collegamenti evidenziati che in precedenza non erano stati effettuati. Collegando al relè il contatto per l’apertura del nostro cancello automatico, non ci resta altro che installare il modulo ricevitore, alimentandolo alla rete elettrica. Accendete il circuito emettitore, e vedrete il cancello aprirsi.
 

 

Conclusione

Il progetto di questo articolo è stato utilizzato per l’apertura di un cancello automatico, ma la stessa scheda può essere utilizzata anche per altri scopi, visto che comunque sono presenti molti pin inutilizzati che potremo sfruttare. Se invece ci si vuole limitare a realizzare questo progetto per questa singola funzione, impiegare un Arduino Pro mini risulta essere uno spreco visto che non si necessita di tutti i suoi pin. Si potrebbe invece optare per un microcontrollore con meno pin di IO, a patto che supporti la connessione seriale con il modulo bluetooth. Buona sperimentazione!
 

Alcuni comandi AT

 
Comando reset: AT+RESET
Visualizzare la versione: AT+VERSION?
Ripristinare le impostazioni iniziali: AT+ORGL
Visualizzare indirizzo: AT+ADDR?
Modificare nome: AT+NAME=<Param>
Modificare Password: AT+PSWD=<Param>
Rimuovere moduli accoppiati: AT+RMAAD
Se avete bisogno di una lista più completa di comandi AT, potete guardare il seguente link:
http://www.linotux.ch/arduino/HC-0305_serial_module_AT_commamd_set_201104_revised.pdf
 
 

Listato del Codice MASTER
// -------------------- SEZIONE BLUETOOTH
 #include  <SoftwareSerial.h> // includo la libreria per la comunicazione seriale
 SoftwareSerial mySerial(3, 4); // imposto i pin per la comunicazione seriale
 // Collegare i pin nel seguente modo: RX=&gt;11 TX=&gt;10
 // -------------------- FINE SEZIONE BLUETOOTH
void setup(){
 mySerial.begin(38400); // SETTO LA COMUNICAZIONE PER IL MODULO BLUETOOTH
 Serial.begin(9600); // SETTO LA COMUNICAZIONE SERIALE
 Serial.println("Ivan Scordato Creation");
 pinMode(2, OUTPUT);
 digitalWrite(2, HIGH);
 }
void loop(){
 // -------------------- INIZIO SEZIONE BLUETOOTH
 while (mySerial.available())
 {
 char dato= mySerial.read(); // "dato" è il valore che viene ricevuto dalla seriale
 switch(dato)
 {
 case 'A': // Se ricevo la lettera A
 {
 digitalWrite(2, LOW); // eccito il relè aprendo il cancello
 mySerial.println("Relè attivo!");
 }
 }
 if(mySerial.available() == -1){ // Se si è persa la connessione
 digitalWrite(2, HIGH); // eccito il relè aprendo il cancello
 mySerial.println("Relè spento!");
 }
 }
Listato del Codice SLAVE
// -------------------- SEZIONE BLUETOOTH
 #include  <SoftwareSerial.h> // includo la libreria per la comunicazione seriale
 SoftwareSerial mySerial(2, 3); // imposto i pin per la comunicazione seriale
 // Collegare i pin nel seguente modo: RX=&gt;11 TX=&gt;10
 // -------------------- FINE SEZIONE BLUETOOTH
 int led = 13;
 void setup(){
 mySerial.begin(38400); // SETTO LA COMUNICAZIONE bluetooth
 Serial.begin(9600); // SETTO LA COMUNICAZIONE
 Serial.println("Ivan Scordato Creation");
pinMode(led, OUTPUT);
 }
void loop(){
 // -------------------- INIZIO SEZIONE BLUETOOTH
 mySerial.println("A");
 digitalWrite(led, HIGH);   // turn the LED on (HIGH is the voltage level)
 delay(100);               // wait for a second
 digitalWrite(led, LOW);    // turn the LED off by making the voltage LOW
 delay(100);
}

 
[/iscritti]
 
 
 
 

GIOVANNI DI MARIA