Omet navegació

2) Provem el telèfon Android

Anem a comunicar-nos per Bluetooth des del mòbil Android amb la targeta Wemos D1 R32 per dir-li que engegue els motors A i B del cotxe  al rebre un caràcter per Bluetooth. Aquest és el cas per provar els les funsions motor que hem definit abans. Tu hauràs de modificar les funciona motor més tard.

Al telèfon Android:

1) Cal instal·lar el Bluetooth terminal.

1 Blutooth Terminal

2) Cal que carregues el següent programa a la targeta Wemos D1

//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 una connexió a un escut L298 on hi ha 2 motors d'un cotxet
// que controlarem des del terminal del telefon.
// i on rebrem missatges indicant les accions fetes.
// Carles Ferrando - gener 2023

#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 valorRebut; // Variable que mostrara el valor rebut amb el serial Bluetooth per ESP32 

// Motor A Horari
void Motor_A_Horari() {
  Serial.println("Escut L298 motor A Horari");
  Serial.println("Activem IN1=13");
  digitalWrite(13, HIGH);
  Serial.println("Desactivem IN2=12");
  digitalWrite(12, LOW);
}


// Motor B Horari
void Motor_B_Horari() {
  Serial.println("Escut L298 motor B Horari");
  Serial.println("Activem IN4=27");
  digitalWrite(27, HIGH);
  Serial.println("Desactivem IN3=14");
  digitalWrite(14, LOW);
}


// Motor A antiHorari
void Motor_A_antiHorari() {
  Serial.println("Escut L298 motor A antiHorari");
  Serial.println("Desactivem IN1=13");
  digitalWrite(13, LOW);
  Serial.println("Activem IN2=12");
  digitalWrite(12, HIGH);
}


// Motor B antiHorari
void Motor_B_antiHorari() {
  Serial.println("Escut L298 motor B Horari");
  Serial.println("Desactivem IN4=27");
  digitalWrite(27, LOW);
  Serial.println("Activem IN3=14");
  digitalWrite(14, HIGH);
}


// Atura motor A
void Atura_Motor_A() {
  Serial.println("Escut L298 motor A aturat");
  Serial.println("Desactivem IN1=13");
  digitalWrite(13, LOW);
  Serial.println("Desactivem IN2=12");
  digitalWrite(12, LOW);
}


// Motor B antiHorari
void Atura_Motor_B() {
  Serial.println("Escut L298 motor B aturat");
  Serial.println("Desactivem IN4=27");
  digitalWrite(27, LOW);
  Serial.println("Desactivem IN3=14");
  digitalWrite(14, LOW);
}

void setup() {  Serial.begin(115200);  SerialBT.begin("Wemos_Robotet"); //Nom del dispositiu Bluetooth  Serial.println("The device started, now you can pair it with bluetooth!");  pinMode(13, OUTPUT);  pinMode(12, OUTPUT);  pinMode(27, OUTPUT);  pinMode(14, OUTPUT); } 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 == 52){ // Si escrivim "4" al terminal BT el serial ESP32 rep el valor "52" //    i llavors es compleix aquesta condició      Motor_B_antiHorari();     SerialBT.println("Motor B antiHorari engegat"); // avisa el serial Bluetooth per terminal telèfon que el led esta engegat     delay(1000); // atura el programa 1 s    }      if (valorRebut == 51){ // Si escrivim "3" al terminal BT el serial ESP32 rep el valor "51" //    i llavors es compleix aquesta condició      Motor_A_antiHorari();     SerialBT.println("Motor A antiHorari engegat"); // avisa el serial Bluetooth per terminal telèfon que el led esta engegat     delay(1000); // atura el programa 1 s    }          if (valorRebut == 50){ // Si escrivim "2" al terminal BT el serial ESP32 rep el valor "50" //    i llavors es compleix aquesta condició      Motor_B_Horari();     SerialBT.println("Motor B Horari engegat"); // avisa el serial Bluetooth per terminal telèfon que el led esta engegat     delay(1000); // atura el programa 1 s    }          if (valorRebut == 49){ // Si escrivim "1" al terminal BT el serial ESP32 rep el valor "49" //    i llavors es compleix aquesta condició      Motor_A_Horari();     SerialBT.println("Motor A Horari 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ó      Atura_Motor_B();      Atura_Motor_A();     SerialBT.println("Motors aturats"); // 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 tries aquest tipus de targeta a l'IDE d'Arduino l'antena Bluetooth funciona bé
per la targeta Wemos D1 R32 encara que no siga una Wemos D1 Mini.
Escull tipus Wemos
3) Una vegada carregat el programa d'abans a la wemos fes el pairing (emparellament)
3 Pairing (emparellament)
i prova el programa.
Test Bluetooth del cotxe

4) Ara cal que modifiques aquest programa, i caldrà reescriure les funcions com et demana la següent secció.

Creat amb eXeLearning (Finestra nova)