InicioMAKERSDIYCrea tu propio Robot Educacional a control remoto Bluetooth

Crea tu propio Robot Educacional a control remoto Bluetooth

En este tutorial aprenderás a armar un carrito control remoto Bluetooth. Veremos paso a paso todo lo necesario para su construcción.

Tal como: armado del chasis del carrito, circuito de control, instalación de la aplicación Bluefruit Connect, prueba de funcionamiento, conexión de la comunicación, etc.

Los materiales que estaremos utilizando son los siguientes:

Materiales

1.- Ensamble del chasis

Deberás ensamblar todas las partes del kit para formar la estructura mecánica de tu carrito.

A continuación te muestro un vídeo por si tienes dudas:

2.- Soldar los cables a los Motorreductores

Utiliza el cautín para soldar los cables de color rojo y negro a los motores. También puedes soldar a cada uno de los motores un capacitor cerámico de 104. Los capacitores cerámicos se utilizan para disminuir la interferencia que pueden provocar los motores hacia el puente H.

En la siguiente imagen verás cómo deben quedar:

Soldar los cables
Motorreductores
cables y capacitor 104
Capacitor cerámico 104 – Motorreductor

3.- Puente H Mx1508

Para poder realizar las conexiones del puente H “Mx1508” hacia el ESP32, deberás soldarles unos header macho-macho de 2.54 mm.

Te deberá quedar de la siguiente manera:

Puente H
Doble puente H MX1502

4.- Conector USB

Si tienes en tu casa un cable USB 2.0 Macho y que no utilices, puedes cortarlo y utilizar este para realizar las conexiones a la Protoboard, pero si no cuentas con el puedes usar el módulo conecta proyecto USB.

Power bank y conector USB
Power Bank y conector USB 2.0
Voltaje de salida del Power Bank
Voltaje de salida con el Power Bank
Conecta Proyecto USB
Conecta Proyecto USB

Si tu opción es utilizar el conecta proyecto USB, deberás soldarles dos cables. Cómo se observa en la siguiente imagen.

Conecta proyecto USB
Voltaje de salida del Conecta Proyecto USB

5.- Fuente de alimentación a utilizar

Utilizaremos el Power Bank para alimentar al ESP32 y los Motorreductores. Antes de colocar la batería 18650, primero deberás identificar cual es el positivo y negativo con ayuda del multímetro. Después colócala al Power Bank.

Guíate con la siguiente imagen:

Medición de la polaridad
Midiendo la polaridad – 18650 – Multímetro

La punta de color rojo corresponde al positivo y la de color negro al negativo.

6.- Código de prueba

A continuación te mostraré el código que los permitirá controlar el carrito. Deberás tener instalado el IDE de Arduino para compilarlo.

Si no lo tienes, descárgalo y posteriormente instálalo. En el siguiente enlace lo podrás encontrar.

Recuerda que tienes que tener instalado las Placas ESP, si no las tienes instaladas. Te sugiero que cheques primero este tutorial.

Después de tener instaladas las placas ESP, deberás primero seleccionar la placa ESP32 Dev Module y posteriormente seleccionar el Puerto COM que se le fue asignado. Ten en cuenta que debes conectar tu ESP32 al cable USB.

En el siguiente video te enseñaré a cómo hacerlo.

Después de realizar lo anterior ya estarás listo para verificar el código y posteriormente subir el programa al ESP32.

Cómo hemos indicado al inicio del tutorial “carrito control remoto Bluetooth”, deberás utilizar el código siguiente y tener instalado la aplicación Bluefruit Connect.

Busca la lineal de código siguiente y dale un nuevo nombre a tu carrito: BLEDevice::init(“Carrito“);

#include <BLEDevice.h>
#include <BLEServer.h>
#include <BLEUtils.h>
#include <BLE2902.h>
#define LED 2
#define MDP 25 // IN3 ----> MOTOR DERECHO   POSITIVO
#define MDN 26 // IN4 ----> MOTOR DERECHO   NEGATIVO
#define MIP 33 // IN1 ----> MOTOR IZQUIERDO POSITIVO
#define MIN 32 // IN2 ----> MOTOR IZQUIERDO NEGATIVO

BLEServer *pServer = NULL;
BLECharacteristic * pTxCharacteristic;
bool deviceConnected = false;
bool oldDeviceConnected = false;
int txValue;

// See the following for generating UUIDs:
// https://www.uuidgenerator.net/

#define SERVICE_UUID "6E400001-B5A3-F393-E0A9-E50E24DCCA9E" // UART service UUID
#define CHARACTERISTIC_UUID_RX "6E400002-B5A3-F393-E0A9-E50E24DCCA9E"
#define CHARACTERISTIC_UUID_TX "6E400003-B5A3-F393-E0A9-E50E24DCCA9E"

class MyServerCallbacks: public BLEServerCallbacks {
void onConnect(BLEServer* pServer) {
deviceConnected = true;
digitalWrite(2,HIGH);
};

void onDisconnect(BLEServer* pServer) {
deviceConnected = false;
digitalWrite(2,LOW);
}
};

class MyCallbacks: public BLECharacteristicCallbacks {
void onWrite(BLECharacteristic *pCharacteristic) {
std::string rxValue = pCharacteristic->getValue();

if (rxValue.length() > 0) {
Serial.println("*********");
Serial.print("Received Value: ");
for (int i = 0; i < rxValue.length(); i++)
Serial.print(rxValue[i]);

Serial.println();
Serial.println("*********");

if (rxValue == "!B516") {
digitalWrite(MDP,HIGH);
digitalWrite(MIP,HIGH);
} else
if (rxValue == "!B507") {
digitalWrite(MDP,LOW);
digitalWrite(MIP,LOW);
}
if (rxValue == "!B813") {
digitalWrite(MIP,HIGH);
}
else
if (rxValue == "!B804") {
digitalWrite(MIP,LOW);
}
else if (rxValue == "!B714"){
digitalWrite(MDP,HIGH);
}
else if(rxValue == "!B705"){
digitalWrite(MDP,LOW);
}else if(rxValue == "!B615"){
digitalWrite(MDN,HIGH);
digitalWrite(MIN,HIGH);
} else if(rxValue == "!B606"){
digitalWrite(MDN,LOW);
digitalWrite(MIN,LOW);
}

}
}
};

void setup() {
Serial.begin(115200);
pinMode(LED,OUTPUT);
pinMode(MDP,OUTPUT);
pinMode(MIP,OUTPUT);
pinMode(MDN,OUTPUT);
pinMode(MIN,OUTPUT);;
digitalWrite(LED,LOW);
digitalWrite(MDP,LOW);
digitalWrite(MIP,LOW);
digitalWrite(MDN,LOW);
digitalWrite(MIN,LOW);

// Create the BLE Device
BLEDevice::init("Carrito");

// Create the BLE Server
pServer = BLEDevice::createServer();
pServer->setCallbacks(new MyServerCallbacks());

// Create the BLE Service
BLEService *pService = pServer->createService(SERVICE_UUID);

// Create a BLE Characteristic
pTxCharacteristic = pService->createCharacteristic(
CHARACTERISTIC_UUID_TX,
BLECharacteristic::PROPERTY_NOTIFY
);

pTxCharacteristic->addDescriptor(new BLE2902());

BLECharacteristic * pRxCharacteristic = pService->createCharacteristic(
CHARACTERISTIC_UUID_RX,
BLECharacteristic::PROPERTY_WRITE
);

pRxCharacteristic->setCallbacks(new MyCallbacks());

// Start the service
pService->start();

// Start advertising
pServer->getAdvertising()->start();
Serial.println("Waiting a client connection to notify...");
}

void loop() {

if (deviceConnected) {
// pTxCharacteristic->setValue(&Kidsy.ColorSensor.value, 1);
// pTxCharacteristic->notify();
delay(10); // bluetooth stack will go into congestion, if too many packets are sent
}

// disconnecting
if (!deviceConnected && oldDeviceConnected) {
delay(500); // give the bluetooth stack the chance to get things ready
pServer->startAdvertising(); // restart advertising
Serial.println("start advertising");
oldDeviceConnected = deviceConnected;
}
// connecting
if (deviceConnected && !oldDeviceConnected) {
// do stuff here on connecting
oldDeviceConnected = deviceConnected;
}
}

Copia el código, verifica y súbelo a tu ESP32

7.- Instalación de la Aplicación

Busca en Play Store la aplicación Bluefruit Connect e instálala a tu celular.

En el siguiente video te mostrare cómo hacerlo:

8.- Comunicación con Bluefruit Connect

Abre la aplicación Bluefruit Connect y conecta tu ESP32 para realizar la prueba de comunicación. En el siguiente video te mostrare cómo realizar la comunicación. Te deberá salir con el nombre de Carrito o con el nombre qué le asignaste.

Recuerda conectar tu ubicación también.

9.- Protoboard 400 pts

Deberás pegar la Protoboard al chasis o utilizar ligas para sujetar la Protoboard y el Power Bank. Recuerda que puedes usar todo tu ingenio para mejorar el diseño.😉

Coloca tu esp32 a la Protoboard de 400 puntos, así como el puente H. Posteriormente empieza a realizar las conexiones que se muestran en el diagrama de conexión.

Conexiones
Conexión ESP Y Puente H

10.- Diagrama Electrónico

Realiza las conexiones siguientes:

Diagrama de conexión

En las siguientes tablas encontrarás las conexiones que debes hacer con el Puente H y el ESP32.

Solo deberás conectar el pin IN1 al GPIO25, el pin IN2 al GPIO26, etc.

Puente H Mx1508ESP32
IN1D25 = GPIO25
IN2D26=  GPIO26
IN3D33= GPIO33
IN4D32= GPIO32
Alimentación para los motores Puente H Mx1508Alimentación ESP32
Positivo (+) a 5 volts de la bateríaGND a Negativo de la batería
Negativo (-) a Negativo de la bateríaVIn a Positivo 5 volts de la batería

Deberás apoyarte del PinOut del ESP32 para ubicar exactamente el pin.

Después de hacer las conexiones conecta tu conector Proyecto USB al Power Back o tu cable usb. Este deberá prender con un color azul.

Conectar el power bank
Alimentación al carrito Educacional

11.- Cómo Cargar

Para realizar la carga de tu batería te sugiero que desconectes el conector Proyecto USB del Power Back. Posteriormente utiliza tu cargador de tu celular para conectar el Power Back, conéctalo a la entrada que dice IN 5V.

Te recomiendo que cargues tu batería máximo una hora. Esté realizará un parpadeo de color azul y rojo. Observa en el siguiente video cómo hacerlo.

12.- Prueba de funcionamiento

Después de finalizar la carga, deberás conectar el conector Proyecto USB a la salida OUT-5V del Power Bank. Dirígete a la aplicación Bluefruit Connect y realiza la conexión.

TUTORIALES RELACIONADOS