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
- Kit Mini Robot Educacional
- Protoboard 400 Pts
- ESP32 DEVKITV1 30 Pines Wifi + Bluetooth
- Doble Puente H Mx1508
- 1 Pila Recargable 18650
- 1 Power Bank 5V
- Cable Dupont cortos M-H
- Tira Header Macho 40 pines
- Adaptador USB Tipo A Macho
- 2 capacitores cerámicos 100 nF
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:
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:
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.
Si tu opción es utilizar el conecta proyecto USB, deberás soldarles dos cables. Cómo se observa en la siguiente imagen.
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:
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.
10.- Diagrama Electrónico
Realiza las conexiones siguientes:
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 Mx1508 | ESP32 |
IN1 | D25 = GPIO25 |
IN2 | D26= GPIO26 |
IN3 | D33= GPIO33 |
IN4 | D32= GPIO32 |
Alimentación para los motores Puente H Mx1508 | Alimentación ESP32 |
Positivo (+) a 5 volts de la batería | GND a Negativo de la batería |
Negativo (-) a Negativo de la batería | VIn 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.
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.