Omet navegació

Comunicacions bluetooth

Anem a comunicar-nos per Bluetooth des del mòbil Android amb la targeta ESO32 per dir-li que engegue un Led o ature un led al rebre un caràcter per Bluetooth. Aquest és el cas més senzill però atenció modificar aquest cas per controlar el motor de un cotxe teledirigit és elemental.

Al telèfon Android:

  • Cal instal·lar el Bluetooth terminal.

Bluetooth terminal a l'Android

  • Cal habilitar el dispositiu Bluetooth del telèfon.

Bluetooth habilitat a l'Android

A l'ordinador:

  • Cal tindre instal·lat Arduino IDE com s'explica a les primeres seccions d'aquest tutorial.

Construïm el següent esquema elèctric amb el nostre ESP32.

El Bluetooth ja està incorporat dins del ESP32, no cal cap HC06 com en Arduino.

ESP32 Bluetooth + Led

Ara obrim l'IDE i escrivim el programa següent:

//This example code is in the Public Domain (or CC0 licensed, at your option.)
//By Evandro Copercini - 2018
//
//This example creates a bridge between Serial and Classical Bluetooth (SPP)
//and also demonstrate that SerialBT have the same functionalities of a normal Serial

// Hem afegit un Led que controlarem des del terminal del telefon
// on rebrem missatges indicant les accions fetes.
// Carles Ferrando - 2020

#include "BluetoothSerial.h"

#if !defined(CONFIG_BT_ENABLED) || !defined(CONFIG_BLUEDROID_ENABLED)
#error Bluetooth is not enabled! Please run `make menuconfig` to and enable it
#endif

BluetoothSerial SerialBT; //Definim el serial Bluetooth del telefon.
int pinLed = 18; //led a controlar
int valorRebut; // Variable que mostrara el valor rebut amb el serial Bluetooth per ESP32 

void setup() {
  Serial.begin(115200);
  SerialBT.begin("ESP32_Robotet"); //Nom del dispositiu Bluetooth
  Serial.println("The device started, now you can pair it with bluetooth!");
  pinMode(pinLed, OUTPUT); // Definim el led que es una eixida
}

void loop() {
   if (Serial.available()) { // Comprova si funciona serial de Arduino IDE
    SerialBT.write(Serial.read()); // llegeix serial
  }
  if (SerialBT.available()) { // si tenim dispoible el serial Bluetooth
    Serial.print("Lectura Bluetooth ="); // escriu al serial de Arduino IDE
    valorRebut = SerialBT.read(); // llegeix i guarda el valor en valorRebut
    Serial.println(valorRebut);
      if (valorRebut == 49){ // Si escrivim "1" al terminal BT el serial ESP32 rep el valor "49" 
// i llavors es compleix aquesta condició
    digitalWrite(pinLed,HIGH); // engega el led     SerialBT.println("Led engegat"); // avisa el serial Bluetooth per terminal telèfon que el led esta engegat     delay(1000); // atura el programa 1 s    }    if (valorRebut == 48){ // Si escrivim "0" al terminal BT el serial ESP32 rep el valor "48"
// i llavors es compleix aquesta condició
    digitalWrite(pinLed,LOW); // engega el led     SerialBT.println("Led aturat"); // avisa el serial Bluetooth per terminal telèfon que el led està aturat     delay(1000); // atura el programa 1 s    }    // Ací baix pot afegir mes if per nous leds o per controlar varis motors amb una targeta L298          }// final if del serial Bluetooth    delay(20); // espere 20 ms entre cicles } // final del cicle loop i del programa
Si mirem el Monitor serie del Bluetooth al telèfon Android veuràs l'execució del programa.
Serial BT en Android envia i rep


i ara mira la mateixa execució al monitor serie IDE d'Arduino mostrant el que rep ESP32 connectat a l'ordinador.
Monitor Sèrie IDE a l'ordinador (ESP32)

Pots veure que a l'enviar un "0" per telèfon ESP32 rep un "48".
Les xifres següents son 13 , i 10 després de cada caràcter enviat.
Pots veure que a l'enviar un "1" per telèfon ESP32 rep un "49".
Les xifres següents son 13 , i 10 després de cada caràcter enviat.
Mira els altres caràcters enviats i que ha rebut ESP32.
Així ja saps com mirar els codis equivalents per programar en ESP32 les altres
accions d'un parell de motors o un altre dispositiu a controlar.

Creat amb eXeLearning (Finestra nova)