Controllare ESP8266 con uno smartphone Android e i comandi vocali

Il progetto permette di controllare una scheda ESP8266 Node MCU facendo uso di comandi vocali forniti attraverso uno smartphone Android.

Per fare questo utilizziamo il modulo Bluetooth HC-05 e un'app Android disponibile su Play Store. L'applicazione, che permette di controllare l’accensione o lo spegnimento di due diodi LED, è semplice e facilmente riproducibile ma può essere modificata ed estesa senza difficoltà per realizzare progetti utili e molto diffusi quali il controllo di un motore o di una caldaia, di un impianto di irrigazione o di un cancello automatico, delle luci di un giardino o di una telecamera di sorveglianza, ecc.

 controllovocaleesp8266

Scarica il progetto completo (.rar con sketch e tutorial)

Vai alla pagina dei downloads Categoria: Arduino ESP8266 IoT

 

Sketch Arduino

 

/* 
 *  Controllare ESP8266 con uno smartphone Android e i comandi vocali  -  Prof. Mauro De Berardi
 * ----------------------------------------------------------------------------------------- 
 * Il progetto permette di controllare una scheda ESP8266 Node MCU  facendo uso di comandi vocali forniti 
 * attraverso uno smartphone Android. Per fare questo utilizziamo  un'app  disponibile su Play Store
 * e il modulo Bluetooth HC05
 * L'applicazione, che permette di controllare l’accensione o lo spegnimento di due diodi  LED, è semplice 
 * e facilmente  riproducibile ma   può essere modificata ed estesa senza difficoltà  per realizzare progetti
 * utili e molto diffusi quali  il controllo di un motore o di una caldaia, di un impianto di irrigazione 
 * o di un cancello automatico, delle luci di un giardino o di una telecamera di sorveglianza, ecc.
 */
#include <SoftwareSerial.h>
#define ledGiallo D0  // pin di ESP8266 Node MCU collegato al led giallo che vogliamo comandare da smartphone
#define ledVerde  D1  // pin di ESP8266 Node MCU collegato al led rosso che vogliamo comandare da smartphone
#define Rx D3         // pin Rx SotwareSerial mi permette di definire i pin RX e TX per la comunicazione seriale del software
#define Tx D4         // pinTx 
  String messaggio;
  SoftwareSerial myBluetooth(Rx, Tx); // Rx e Tx nell'ordine
 
void setup() 
{
  delay(1000);
  // impostiamo i pin dei due led come output
  pinMode(ledGiallo, OUTPUT);       
  pinMode(ledVerde,OUTPUT);
  digitalWrite(ledGiallo,LOW);
  digitalWrite(ledVerde,LOW);
  Serial.begin(115200);        // apre una connessione seriale. A scopo di debug inviamo messaggi al monitor seriale
 
  Serial.println("Pronto per la connessione bluetooth tra ESP8266 e smartphone\n Password sullo smartphone: 1234 oppure 0000");   
  myBluetooth.begin(9600);
}
 
void loop() 
{
  while(myBluetooth.available()) 
  {
    delay(10);
    char car=myBluetooth.read();
    if(car=='#')break; 
      messaggio += car;
  }
  if (messaggio.length() > 0) 
  {
    messaggio.toLowerCase();
    Serial.println(messaggio);
    if (messaggio.indexOf("accendi tutto")>0)
    { 
      digitalWrite(ledGiallo, HIGH);
      digitalWrite(ledVerde, HIGH);  
    }
    if (messaggio.indexOf("spegni tutto")>0)
    {
      digitalWrite(ledGiallo, LOW); 
      digitalWrite(ledVerde, LOW);       
    }
    if (messaggio.indexOf("accendi led giallo")>0)  digitalWrite(ledGiallo, HIGH); 
    if (messaggio.indexOf("spegni led giallo")>0)   digitalWrite(ledGiallo, LOW); 
    if (messaggio.indexOf("accendi led verde")>0)   digitalWrite(ledVerde, HIGH); 
    if (messaggio.indexOf("spegni led verde")>0)    digitalWrite(ledVerde, LOW); 
 
    if (messaggio.indexOf("lampeggia")>0)
    {
        for(int i=0;i<5;i++)
        {
            digitalWrite(ledGiallo, HIGH);
            digitalWrite(ledVerde, HIGH);
            delay(500);
            digitalWrite(ledGiallo, LOW);
            digitalWrite(ledVerde, LOW);
            delay(500);
        }
 
    }   
    messaggio="";
  }
 
}