Progetto controllo remoto (Bluetooth) dispositivi ed illuminazione con Arduino

banner

Questo progetto è nato principalmente per accendere e spegnere dispositivi a distanza tramite qualunque dispositivo che dispone di una connessione bluetooth senza interagire direttamente con gli interrutturi dei dispositivi, ma può diventare qualcosa di più grande ed ampio se viene implementato nell’ambito della domotica. Così facendo si potrà restare tranquillamente seduti sul divano mentre si guarda la tv e poter spegnere una luce che è stata dimenticata accesa. Oppure può essere utilizzato per risparmiare sulla spesa della corrente elettrica. Infatti basta pensare all’angolo televisione per rendersi conto di quanti led luminosi ci siano accesi e talmente è la luce emessa che per passare dalla stanza non c’è nemmeno bisogno di accendere la luce.

Dopo che ho presentato la versione gestibile tramite Web con l’ausilio di un Raspberry Pi e la versione con Arduino comandato da un Telecomando IR, non potevo non presentare la versione Bluetooth.
Alla base di tutto questo ci sono gli stessi motivi che mi hanno spinto a realizzare questo progetto, come quello di prima, cioè il bisogno di non di non dovere attaccare e staccare fisicamente i dispositivi dalla presa di corrente ogni volta che ne ho bisogno e per non lasciare dei fili volanti dalla presa della scrivania e poter accendere e spegnere delle luci ed elettrodomestici a distanza utilizzando qualunque dispositivo che dispone di una connessione bluetooth.
Rispetto all’utilizzo di un telecomando IR, in questo modo è possibile aumentare il raggio di azione. Infatti, il telecomando IR deve essere puntato verso il sensore mentre con l’ausilio del bluetooth, ciò non è necessario.
Nulla vieta di implementare questo progetto insieme con quelli indicati in precedenza. Fondendo i diversi progetti si contribuirebbe ad estendere le capacità del proprio (piccolo) sistema domotico. Questo perchè oltre a poter attivare e disattivare dei dispositivi da fuori casa, quando si è in casa si può scegliere se tenere con se un telecomando o un dispositivo che possegga una connessione bluetooth (può essere uno smartphone, un tablet, un computer…) tramite il quale comandare i dispositivi collegati al sistema.

Come la versione con Telecomando IR, anche questa idea l’ho sviluppata e testata con l’ormai famosa piattaforma di sviluppo e prototipazione Arduino. E’ un progetto davvero molto semplice, più versatile di quello presentato in precedenza e può essere creato da chiunque ne abbia bisogno e abbia un minimo di competenza, ma anche da coloro che ne hanno bisogno ma non hanno molta esperienza, dato che tramite questo Blog è possibile accrescere il proprio sapere e ricevere l’aiuto necessario per realizzare qualunque cosa (se ci si impegna). a questo proposito, vi segnalo che nel Forum c’è un pronto Feedback praticamente per ogni domanda. approfittatene!

Ecco un elenco con indicato il necessario per realizzare questo progetto:

  • Arduino (io ho utilizzato la board Arduino UNO, ma può essere utilizzata qualunque versione di Arduino) ;
  • Modulo Bluetooth HC-05
  • Board 8 relè;
  • Cavetteria varia;
  • Se si vuole, anche se non è strettamente necessario, si può costruire la mia shield per Arduino UNO tramite la quale è possibile effettuare i collegamenti della board dei relè ed il modulo bluetotth ad Arduino in maniera semplice e veloce senza utilizzare fili volanti. File Fidocad e PCB in allegato.

L’HC-05 è un modulo di ricezione/trasmissione Bluetooth a basso costo.
I contatti del modulo non sono facilmente saldabili in quanto il loro passo è di 1.9 mm, perciò per poterlo utilizzare con una breadboard o semplicemnete per semplificare la creazione del circuito, bisogna utilizzare un adattatore che, appunto, converte ed allinea i pin necessari al collegamento tramite UART da 1.9mm a 2.54mm.
Ecco le caratteristiche principali di questo modulo Bluetooth a basso costo:

  • Alimentazione: +3.3 VDC 50 mA (Tramite l’adattatore, del quale ho parlato in precedenza, è possibile alimentarlo direttamente a 5V)
  • 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)
  • Emission power: ≤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

Per quello che riguarda la board dei relè voglio ricordare che è possibile utilizzarne una con più o con meno relè.
Per lo scopo, quella da 8 relè che già posseggo è ottima. Però, in base al numero di relè che si vorranno utilizzare, bisogna considerare il tipo di alimentazione e la corrente necessaria per pilotare il circuito.

Per collegare il Modulo Bluetooth SH-05 ad arduino bisogna seguire il seguente schema:

La shield per Arduino UNO che ho proposto è già predisposta per effettuare il collegamento con una board di 8 relè ma nel caso in cui non si voglia utilizzare la shield è possibile eseguire direttamente i collegamenti nel seguente modo:

PIN 2 DI ARDUINO - PIN 1 INPUT SCHEDA RELE
PIN 3 DI ARDUINO - PIN 2 INPUT SCHEDA RELE'
PIN 4 DI ARDUINO - PIN 3 INPUT SCHEDA RELE'
PIN 5 DI ARDUINO - PIN 4 INPUT SCHEDA RELE'
PIN 6 DI ARDUINO - PIN 5 INPUT SCHEDA RELE'
PIN 7 DI ARDUINO - PIN 6 INPUT SCHEDA RELE'
PIN 8 DI ARDUINO - PIN 7 INPUT SCHEDA RELE'
PIN 9 DI ARDUINO - PIN 8 INPUT SCHEDA RELE'
PIN 5V DI ARDUINO - PIN VCC SCHEDA RELE'
PIN GND DI ARDUINO - PIN GND SCHEDA RELE'

E’ evidente che i componenti necessari allo scopo sono pochi e facilmente collegabili tra di loro, perciò dovrebbe risultare abbastanza semplice realizzare questo progetto.

Bene, dopo aver parlato della parte Hardware, vediamo, ora, della parte Software.
Per prima cosa bisogna installare un software che permette di comunicare con il nostro Arduino tramite Bluetooth.
Nel mio caso, per l’esperimento ho voluto utilizzare il mio smartphone con sistema Android.
Perciò, per prima cosa mi sono munito di un programma adatto allo scopo.
Giusto mentre stavo realizzando l’applicazione per Android, ho trovato sul Play Store di Google un programma chiamato Bluetooth Control Device, che permette di connettersi ad Arduino in modo semplice e veloce per gestire i propri carichi.
Una interessante funzione di questa applicazione è la possibilità di inserire un Timer che stabilisce quanto tempo il dispositivo selezionato debba rimanere acceso.
Ecco uno Screenshot del programma:


Perciò, ho risparmiato un po’ di tempo e mi sono messo a scrivere lo sketch per Arduino.
Quì di seguito il codice commentato, che dobbiamo caricare su Arduino:

/*
2013-11-19
Applicazione realizzata da Ivan Scordato, tutto il materiale 
disponibile sul sito EMC ELETTRONICA 

http://it.emcelettronica.com/user/18420

Contatti: ivanwebmaster@rocketmail.com
*/
#include  // includo la libreria per la comunicazione seriale

SoftwareSerial mySerial(10, 11); // imposto i pin per la comunicazione seriale
// Collegare i pin nel seguente modo: RX=>11 TX=>10

void setup()
{
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(9, OUTPUT);

   mySerial.begin(9600); // setto la comunicazione
   Serial.println("Ivan Scordato Creation");
   delay(1000);
}


void loop()
{
   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, HIGH); // eccito il relè collegato al pin2
            mySerial.println("Relè 1 ON");
           break;
         }
         case 'a': // Se ricevo la lettera a
         {
  digitalWrite(2, LOW); // Spenfo il relè
           mySerial.println("Relè 1 OFF");
           break;
         }    
                   // E così anche di seguito...
                  case 'B':
         {
  digitalWrite(3, HIGH);
            mySerial.println("Relè 2 ON");
           break;
         }
         case 'b':
         {
  digitalWrite(3, LOW);
           mySerial.println("Relè 2 OFF");
           break;
         }    


         case 'C':
         {
  digitalWrite(4, HIGH);
            mySerial.println("Relè 3 ON");
           break;
         }
         case 'c':
         {
  digitalWrite(4, LOW);
           mySerial.println("Relè 3 OFF");
           break;
         }    
                  case 'D':
         {
  digitalWrite(5, HIGH);
            mySerial.println("Relè 4 ON");
           break;
         }
         case 'd':
         {
  digitalWrite(5, LOW);
           mySerial.println("Relè 4 OFF");
           break;
         }    
                  case 'E':
         {
  digitalWrite(6, HIGH);
            mySerial.println("Relè 5 ON");
           break;
         }
         case 'e':
         {
  digitalWrite(6, LOW);
           mySerial.println("Relè 5 OFF");
           break;
         }    
                  case 'F':
         {
  digitalWrite(7, HIGH);
            mySerial.println("Relè 6 ON");
           break;
         }
         case 'f':
         {
  digitalWrite(7, LOW);
           mySerial.println("Relè 6 OFF");
           break;
         }    
                  case 'G':
         {
  digitalWrite(8, HIGH);
            mySerial.println("Relè 7 ON");
           break;
         }
         case 'g':
         {
  digitalWrite(8, LOW);
           mySerial.println("Relè 7 OFF");
           break;
         }    
                  case 'H':
         {
  digitalWrite(9, HIGH);
            mySerial.println("Relè 8 ON");
           break;
         }
         case 'h':
         {
  digitalWrite(9, LOW);
           mySerial.println("Relè 8 OFF");
           break;
         }    
       }       
   } 
}
// BUONA SPERIMENTAZIONE!

Come avete potuto vedere anche questa versione del progetto è molto semplice da realizzare, ma allo stesso tempo molto utile ed ingegnosa; d’altronde le cose semplici sono le migliori.
Anche quì, un accortezza da prendere è quella di inserire il circuito in un contenitore isolato in quanto i collegamenti tra i relè e i propri dispositivi da collegare al sistema sono stati effettuati con la rete elettrica e quindi collegati a 220 V. Spero che questo progetto possa essere utile a qualcuno.
In allegato una cartella compressa nella quale è presente tutto il materiale necessario per creare questo dispositivo.


Cosa ne pensate?
Pensate che questo progetto possa essere migliorato?
Se si, Come?
Quale potrebbe essere un suo ulteriore utilizzo?

 

Sono a disposizione nei commenti per ogni approfondimento.

30 Comments

  1. scunucchiuz 30 gennaio 2014
  2. Andrea.Cavallero 17 marzo 2014
  3. Piero Boccadoro 1 febbraio 2014
  4. Ivan Scordato 1 febbraio 2014
  5. adrirobot 29 dicembre 2013
  6. Ivan Scordato 29 dicembre 2013
  7. adrirobot 31 dicembre 2013
  8. Gianfranco.Pantaleo 9 febbraio 2014
  9. Ivan Scordato 10 febbraio 2014
  10. alex272 10 febbraio 2014
  11. Emanuele 10 febbraio 2014
  12. alex272 10 febbraio 2014
  13. Ivan Scordato 10 febbraio 2014
  14. Antonello.90 18 dicembre 2013
  15. Ivan Scordato 23 giugno 2014
  16. Ivan Scordato 18 dicembre 2013
  17. Tiziano.Pigliacelli 18 dicembre 2013
  18. Antonello.90 18 dicembre 2013
  19. Ivan Scordato 18 dicembre 2013
  20. gioam.lorenzini 18 dicembre 2013
  21. gioam.lorenzini 18 dicembre 2013
  22. Ivan Scordato 18 dicembre 2013
  23. Giorgio B. 19 dicembre 2013
  24. Piero Boccadoro 19 dicembre 2013
  25. gioam.lorenzini 19 dicembre 2013
  26. Antonello.90 19 dicembre 2013
  27. Piero Boccadoro 20 dicembre 2013
  28. Antonello.90 20 dicembre 2013
  29. Ivan Scordato 3 gennaio 2014
  30. salvatore.castorina 1 10 giugno 2014

Leave a Reply