En el mundo de la electrónica, la comunicación inalámbrica se ha convertido en una herramienta indispensable para transmitir datos de forma rápida y eficiente. En este artículo, aprenderemos cómo establecer una comunicación inalámbrica entre dos Arduinos utilizando los módulos Bluetooth HC-05. Descubre cómo esta tecnología revolucionaria puede facilitar la transferencia de información entre dispositivos de manera sencilla y efectiva. ¡Sigue leyendo para descubrir todo lo que necesitas saber para implementar esta solución en tus proyectos de Arduino!
Cuando dos o más Arduinos pueden comunicarse de forma inalámbrica entre sí, se abren posibilidades completamente nuevas, como el monitoreo remoto de datos de sensores, el control de robots, la automatización del hogar y más.
En este tutorial, le mostraremos paso a paso cómo hacer que dos placas Arduino se comuniquen de forma inalámbrica utilizando módulos Bluetooth HC-05.
descripción general
Para que dos placas Arduino se comuniquen de forma inalámbrica, debemos configurar un módulo HC-05 como maestro y el otro como esclavo y emparejarlos. Esto se denomina configuración maestro-esclavo: es la forma más sencilla de crear una conexión inalámbrica entre dos dispositivos. El dispositivo maestro inicia la conexión y busca otros dispositivos, mientras que el dispositivo esclavo espera la solicitud de conexión del dispositivo maestro. Una vez establecida la conexión, los dispositivos maestro y esclavo pueden intercambiar datos bidireccionalmente.
Para configurar los módulos HC-05, necesitamos conectarlos a una PC y usar un software de terminal serie (como Arduino IDE Serial Monitor o PuTTY) para enviar comandos AT.
Paso 1: Conecte el módulo HC-05 a la PC
Primero conectemos el módulo HC-05 a la PC. Para hacer esto, puede usar un convertidor USB a TTL o usar un Arduino como medio entre la PC y el módulo HC-05.
Conectar el módulo HC-05 al Arduino es tan fácil como aplicar energía y cablear los pines seriales Rx y Tx. El TXD del módulo HC-05 se conecta al D1 del Arduino, el RXD a D0, GND a GND y VCC a 5V.
Tenga en cuenta que el pin Rx del módulo HC-05 no tolera 5 V. Entonces, si está utilizando un microcontrolador de 5 V como un Arduino UNO, deberá reducir la señal Tx del Arduino a 3,3 V utilizando un divisor de resistencia. Una resistencia de 1K entre HC-05s Rx y Arduinos D0 y una resistencia de 2K entre HC-05s Rx y GND son completamente suficientes.
En resumen, estas son las conexiones:
Módulo HC-05 | arduino | Observaciones | |
VCC | 5V | – | |
Dimensiones | Dimensiones | – | |
Texas | T1 (T1) | – | |
RX | T0 | Si usa una MCU de 5 V, use un convertidor de nivel |
La siguiente imagen muestra cómo conectar el módulo HC-05 al Arduino Uno.
Si utiliza este método, asegúrese de cargar un boceto en blanco en el Arduino.
Paso 2: Configurar los módulos HC-05
Configuremos un módulo HC-05 como maestro y el otro como esclavo.
Configuración esclava
- Mantenga presionado el botón en el primer módulo HC-05 mientras lo enciende. Esto pone el módulo en modo AT, lo que significa que está listo para recibir comandos AT. Deberías ver el LED integrado parpadeando lenta y constantemente.
- Cuando conecte el HC-05 a su PC, será reconocido como un puerto COM. Abra el administrador de dispositivos y busque un nuevo puerto en el directorio «Puertos (COM y LPT)». En el IDE de Arduino, navegue hasta Herramientas > Puerto y seleccione este puerto COM.
- Abra el monitor serie mediante Herramientas > monitor seriey asegúrese de que la velocidad en baudios esté en la esquina inferior derecha 38400 y eso 'Tanto en Liga Nacional como en CR'está seleccionado. Esto significa que cuando se envían comandos al HC-05, se inserta una nueva línea al final y se realiza una devolución.
- Ahora ingresa “EN”(sin comillas) en el cuadro de texto en la parte superior del monitor serie y haga clic en el botón Enviar. Ellos deberían «DE ACUERDO”como respuesta del módulo. Esto significa que la comunicación fue exitosa.
- Tipo «AT+NOMBRE=esclavo”y presione Entrar. Esto cambiará el nombre del módulo a «Esclavo». La respuesta debería ser «OK».
- Tipo «EN+ROL=0”y presione Entrar. Esto establece la función del módulo en Esclavo. La respuesta debería ser «OK». Después de configurar la función, el HC-05 puede reiniciarse y salir del modo AT. Si esto sucede, vuelva a ponerlo en modo AT.
- Tipo «¿AT+DIRECCIÓN?”y presione Entrar. Esto mostrará la dirección del módulo en formato hexadecimal, p.e. B. «1234:56:abcdef“. Tome nota de esta dirección, ya que la necesitará al configurar el dispositivo maestro.
- Desconecte el módulo HC-05.
Configuración maestra
- Mantenga presionado el botón en el segundo módulo HC-05 mientras lo enciende. Esto pone el módulo en modo AT, lo que significa que está listo para recibir comandos AT. Deberías ver el LED integrado parpadeando lenta y constantemente.
- Cuando conecte el HC-05 a su PC, será reconocido como un puerto COM. Abra el administrador de dispositivos y busque un nuevo puerto en el directorio «Puertos (COM y LPT)». En el IDE de Arduino, navegue hasta Herramientas > Puerto y seleccione este puerto COM.
- Abra el monitor serie mediante Herramientas > monitor seriey asegúrese de que la velocidad en baudios esté en la esquina inferior derecha 38400 y eso 'Tanto en Liga Nacional como en CR'está seleccionado. Esto significa que cuando se envían comandos al HC-05, se inserta una nueva línea al final y se realiza una devolución.
- Tipo «EN”(sin comillas) y presione Enter. Debería ver «DE ACUERDO”como respuesta del módulo. Esto significa que la comunicación fue exitosa.
- Tipo «AT+NOMBRE=Maestro”y presione Entrar. Esto cambia el nombre del módulo a «Maestro». La respuesta debería ser «OK».
- Tipo «EN+ROL=1”y presione Entrar. Esto establece la función del módulo como maestro. La respuesta debería ser «OK». Después de configurar la función, el HC-05 puede reiniciarse y salir del modo AT. Si esto sucede, vuelva a ponerlo en modo AT.
- Tipo «EN+MODOC=0”y presione Entrar. Esto establece el modo de conexión del módulo en una dirección fija. La respuesta debería ser «OK».
- Tipo «AT+BIND=1234,56,abcdef”y presione Entrar. Reemplace la dirección con la que anotó en el módulo esclavo. Tenga en cuenta que debe utilizar comas, no dos puntos, al escribir la dirección. Esto emparejará nuestro módulo maestro con nuestro módulo esclavo. Deberías ver «OK» como respuesta.
- Desconecte el módulo HC-05.
Tenga en cuenta que también puede ingresar «1» en lugar de «0» en el comando «AT+CMODE». Esta opción permite que el maestro se conecte a cualquier dispositivo dentro de su rango de transmisión en lugar de limitarse a un dispositivo esclavo específico. Si eliges esta opción, puedes saltarte el penúltimo paso; sin embargo, tenga en cuenta que esto da como resultado una configuración menos segura.
Eso es todo. Sus módulos HC-05 ahora están configurados como dispositivos maestros y esclavos. Si ahora vuelve a encender los módulos, el maestro sólo tardará unos segundos en establecer una conexión con el esclavo. Notará que el patrón de parpadeo del LED en ambos módulos cambia a dos parpadeos rápidos seguidos de una pausa, lo que indica una conexión exitosa.
Paso 3: Conexión del hardware
Ahora estamos listos para crear un ejemplo práctico para este tutorial.
Nuestro ejemplo es muy simple, pero muestra cómo funciona la comunicación entre dos placas Arduino. Simplemente usamos un potenciómetro en el lado maestro para controlar el servomotor en el lado esclavo y un botón en el lado esclavo para controlar un LED en el lado maestro.
Conexiones maestras de Arduino:
Conecte VCC del módulo Bluetooth HC-05 a 5V de Arduino, GND a GND, TXD a RX (Pin digital 0) de Arduino y RXD a TX (Pin digital 1) de Arduino a través de un divisor de voltaje. Conecte un pin exterior del potenciómetro a 5V, el pin exterior opuesto a GND y su pin central (contacto deslizante) a A0. Para el LED, conecte su terminal positivo (pata más larga) al pin digital D9 y su terminal negativo (pata más corta) a GND mediante una resistencia de 220 Ω.
Conexiones Arduino esclavo:
Para el módulo Bluetooth HC-05 en el lado esclavo, conecte VCC a 5V de Arduino, GND a GND, TXD a RX (pin digital 0) de Arduino y RXD a TX (pin digital 1) a través de un divisor de voltaje. Para el servomotor, conecte su cable de alimentación (rojo) a 5 V, el cable de tierra (marrón/negro) a GND y el cable de señal (amarillo/naranja) a un pin PWM digital, D9. Conecte una pata del pulsador al pin digital D8. Conecte la misma pata del botón a tierra mediante una resistencia desplegable de 10K. Conecte la otra pata del botón a 5V.
Paso 4: sube el código
Disponemos de dos bocetos de Arduino para subir a las placas Arduino.
Indicador principal
Sube el siguiente boceto al maestro Arduino:
#define ledPin 9
int state = 0;
int potValue = 0;
void setup() {
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, LOW);
Serial.begin(38400); // Default communication rate of the Bluetooth module
}
void loop() {
if(Serial.available() > 0){ // Checks whether data is comming from the serial port
state = Serial.read(); // Reads the data from the serial port
}
// Controlling the LED
if (state == '1') {
digitalWrite(ledPin, HIGH); // LED ON
state = 0;
}
else if (state == '0') {
digitalWrite(ledPin, LOW); // LED ON
state = 0;
}
// Reading the potentiometer
potValue = analogRead(A0);
int potValueMapped = map(potValue, 0, 1023, 0, 255);
Serial.write(potValueMapped); // Sends potValue to servo motor
delay(10);
}
código esclavo
Sube el siguiente boceto al Arduino esclavo:
#include <Servo.h>
#define button 8
Servo myServo;
int state = 20;
int buttonState = 0;
void setup() {
pinMode(button, INPUT);
myServo.attach(9);
Serial.begin(38400); // Default communication rate of the Bluetooth module
}
void loop() {
if(Serial.available() > 0){ // Checks whether data is comming from the serial port
state = Serial.read(); // Reads the data from the serial port
}
// Controlling the servo motor
myServo.write(state);
delay(10);
// Reading the button
buttonState = digitalRead(button);
if (buttonState == HIGH) {
Serial.write('1'); // Sends '1' to the master to turn on LED
}
else {
Serial.write('0');
}
}
Explicación del código:
En el boceto maestro de Arduino, el pin digital 9 está configurado para controlar un LED y el potenciómetro está conectado al pin analógico A0. Después de la inicialización, el código busca datos seriales entrantes que representen el estado de la clave del esclavo. Dependiendo del valor recibido (“1” o “0”), el LED se enciende o apaga. Al mismo tiempo, se lee el valor del potenciómetro, se asigna desde su rango (0-1023) a un valor de byte (0-255) y este valor asignado se envía vía Bluetooth para controlar el servomotor en el lado esclavo.
Para el Arduino esclavo, el código comienza integrando la biblioteca de servos y definiendo el pin digital 8 para la entrada del botón. Se inicia un objeto servo y se conecta al pin digital 9. En el bucle, el código comprueba constantemente si entran datos en serie. Estos datos determinan directamente el ángulo del servomotor. Al mismo tiempo se controla el estado del botón. Cuando se presiona, se envía un «1» al maestro para encender el LED; de lo contrario se envía un «0».
Paso 5: Pruébalo
Ahora gira el potenciómetro del maestro Arduino. A medida que ajusta su posición, el servomotor del Arduino esclavo debería moverse en consecuencia. La rotación del potenciómetro determina el ángulo del servo.
Ahora presione el botón en el esclavo Arduino. Cuando se presiona, el LED del Arduino maestro debería encenderse. Cuando sueltas el botón, el LED debería apagarse.
Comunicación Inalámbrica entre dos Arduinos mediante módulos Bluetooth HC-05
Tener dos o más Arduinos capaces de comunicarse entre sí de forma inalámbrica abre un mundo de posibilidades, como monitorear datos de sensores de forma remota, controlar robots, automatización del hogar, entre otros.
Resumen
En este tutorial, te enseñaremos paso a paso cómo hacer que dos placas de Arduino se comuniquen de forma inalámbrica utilizando módulos Bluetooth HC-05.
Configuración
Para que dos placas de Arduino se comuniquen de forma inalámbrica, necesitamos configurar un módulo HC-05 como maestro y otro como esclavo, y emparejarlos. Esto se conoce como configuración maestro-esclavo, y es la forma más sencilla de establecer una conexión inalámbrica entre dos dispositivos.
Preguntas Frecuentes
¿Cómo conecto el módulo HC-05 a mi PC?
Para conectar el módulo HC-05 a tu PC, puedes utilizar un convertidor USB a TTL o utilizar un Arduino como intermediario entre el PC y el módulo HC-05.
¿Cómo configuro los módulos HC-05?
Para configurar un módulo HC-05 como maestro y otro como esclavo, debes utilizar comandos AT enviados a través de un software de terminal serie, como el Monitor Serie de Arduino IDE.
¿Cómo establezco la comunicación entre los Arduinos?
Después de configurar los módulos HC-05 como maestro y esclavo, puedes establecer una conexión inalámbrica entre los Arduinos. Una vez establecida la conexión, los dispositivos pueden intercambiar datos de forma bidireccional.
¡Con estos simples pasos, podrás realizar una comunicación inalámbrica efectiva entre dos placas de Arduino utilizando módulos Bluetooth HC-05!
¡Genial! Siempre es útil aprender sobre nuevas maneras de comunicación inalámbrica con Arduino. ¡Gracias por la información!
Qué interesante! Me encantaría probar esta comunicación inalámbrica con Arduino. ¡Gracias por compartir!