Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Cómo configurar y emparejar dos módulos Bluetooth HC-05 como maestro y esclavo | Comandos AT

En este tutorial de Arduino, aprenderemos cómo configurar y emparejar dos módulos Bluetooth HC-05 como dispositivos maestro y esclavo. Puede ver el siguiente video o leer el tutorial escrito a continuación.

Resumen

En mis dos tutoriales anteriores ya aprendimos cómo conectar el Módulo Bluetooth HC-05 al Arduino y establecer una comunicación entre un teléfono inteligente Android y el Arduino. En esos tutoriales usamos el módulo Bluetooth HC-05 con su configuración predeterminada, como dispositivo esclavo.

Configuración del módulo Bluetooth HC-05:comandos AT

Para este tutorial necesitamos configurar ambos módulos. Para hacer eso, debemos cambiar al modo de comando AT y así es como lo haremos. Primero necesitamos conectar el módulo Bluetooth al Arduino como se explica en los esquemas del circuito en los tutoriales anteriores. Lo que debemos hacer adicionalmente es conectar el pin "EN" del módulo Bluetooth a 5 voltios y también cambiar los pines TX y RX en la placa Arduino.

Entonces, el pin RX del Arduino debe conectarse al pin RX del módulo Bluetooth, a través del divisor de voltaje, y el pin TX del Arduino al pin TX del módulo Bluetooth. Ahora, mientras mantenemos presionado el botón pequeño sobre el pin "EN", necesitamos encender el módulo y así es como ingresaremos al modo de comando. Si el led del módulo Bluetooth parpadea cada 2 segundos significa que hemos entrado con éxito en el modo comando AT.

Después de esto, debemos cargar un boceto vacío en Arduino, pero no olvide desconectar las líneas RX y TX durante la carga. Luego, debemos ejecutar Serial Monitor y allí seleccionar "Both NL and CR", así como la velocidad de "38400 baudios", que es la velocidad de transmisión predeterminada del módulo Bluetooth. Ahora estamos listos para enviar comandos y su formato es el siguiente.

Todos los comandos comienzan con "AT", seguido del signo "+", luego un y terminan con el signo "?" que devuelve el valor actual del parámetro o el signo “=” cuando queremos introducir un nuevo valor para ese parámetro.

Configuración de esclavo

Entonces, por ejemplo, si escribimos solo "AT", que es un comando de prueba, deberíamos recibir el mensaje "OK". Entonces, si escribimos “AT+UART?” deberíamos recuperar el mensaje que muestra la velocidad de transmisión predeterminada, que es 38400. Luego, si escribimos "AT + ROLE?" recibiremos un mensaje “+ROLE=0” lo que significa que el dispositivo Bluetooth está en modo esclavo. Si tecleamos “AT+ADDR?” recuperaremos la dirección del módulo Bluetooth y debería verse así:98d3:34:905d3f.

Ahora debemos anotar esta dirección, ya que la necesitaremos al configurar el dispositivo maestro. En realidad eso es todo lo que necesitamos cuando configuramos el dispositivo esclavo, para obtener su dirección, aunque podemos cambiar muchos parámetros diferentes como su nombre, tasa de baudios, contraseña de emparejamiento, etc., pero no lo haremos en este ejemplo.

Configuración maestra

Ok, ahora avancemos y configuremos el otro módulo Bluetooth como un dispositivo maestro. Primero, verificaremos la velocidad en baudios para asegurarnos de que sea el mismo 38400 que el dispositivo esclavo. Luego, escribiendo “AT+ROLE=1” configuraremos el módulo Bluetooth como dispositivo maestro. Después de esto usando “AT+CMODE=0” estableceremos el modo de conexión a “dirección fija” y usando el comando “AT+BIND=” estableceremos la dirección del dispositivo esclavo que escribimos previamente.

Tenga en cuenta aquí que al escribir la dirección necesitamos usar comas en lugar de dos puntos. También tenga en cuenta que podríamos habernos saltado el paso anterior si ingresamos "1" en lugar de "0" en el comando "AT+CMODE", lo que hace que el maestro se conecte a cualquier dispositivo en su rango de transmisión, pero esa es una configuración menos segura. Aquí puede encontrar una lista completa de comandos y parámetros:HC-05 Lista de comandos AT

Sin embargo, eso es todo lo que necesitamos para una configuración básica de los módulos Bluetooth para que funcionen como dispositivos maestros y esclavos y ahora si los volvemos a conectar en modo datos normal y volvemos a encender los módulos, en cuestión de segundos se conectará el maestro. al esclavo Ambos módulos comenzarán a parpadear cada 2 segundos, lo que indica una conexión exitosa.

Ejemplo de comunicación entre dos módulos Bluetooth HC-05

Bien, ahora estamos listos para hacer el ejemplo práctico de este tutorial. Aquí está el esquema del circuito. Usaremos un potenciómetro, en el maestro, para controlar un servomotor en el esclavo. Y viceversa, utilizaremos un pulsador, en el esclavo, para controlar un LED en el maestro.

Puede obtener los componentes necesarios para este tutorial de Arduino en cualquiera de los siguientes sitios:

  • Módulo Bluetooth HC-05 …………….
  • Placa Arduino ………………………………
  • Servomotor……………………………….….
  • Potenciómetro………………..…………..…….
  • 3 resistencias de 220 ohmios……………………
  • Placa de pruebas y cables puente ……….

Códigos fuente de Arduino

Descripción: Entonces, primero debemos definir los pines y algunas variables necesarias para el programa. En la sección de configuración, en el maestro, configuramos el pin LED como salida y lo configuramos bajo de inmediato, así como también iniciamos la comunicación en serie a una velocidad de 38400 baudios. De manera similar, en el esclavo, configuramos el pin del botón como entrada, definimos el servo al que se conecta el pin y comenzamos la comunicación en serie con la misma velocidad de transmisión.

En la sección de bucle, en ambos códigos, con la función Serial.disponible() comprobaremos si hay datos disponibles en el puerto serie para leer y utilizando la función Serial.read() leeremos y almacenaremos los datos en el variable “estado”. Entonces, si el maestro recibe el carácter '1' que se envía desde el esclavo cuando el estado del botón es alto, o se presiona el botón, el LED se encenderá. De lo contrario, si el carácter es '0', el LED estará apagado.

En cuanto al control del servomotor, primero en el maestro, leemos el valor del potenciómetro y lo asignamos a un rango adecuado para el servo de 0 a 255. Este valor se envía al esclavo, que lo usa para girar el servomotor en consecuencia. Eso es todo lo que necesitamos y aquí está la demostración del ejemplo.

Código maestro:

/*
 * How to configure and pair two HC-05 Bluetooth Modules
 * by Dejan Nedelkovski, www.HowToMechatronics.com
 * 
 *                 == MASTER CODE ==
 */

#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);
}Code language: Arduino (arduino)

Código esclavo:

/*
 * How to configure and pair two HC-05 Bluetooth Modules
 * by Dejan Nedelkovski, www.HowToMechatronics.com
 * 
 *                 == SLAVE CODE ==
 */
 
#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');
 }  
}Code language: Arduino (arduino)

Eso es todo y si tiene algún problema, no dude en pedir ayuda en la sección de comentarios a continuación.


Proceso de manufactura

  1. Resumen:Cómo Bluetooth LE y XLE son el futuro del seguimiento y monitoreo de activos
  2. Cómo Bluetooth + Ultrasonido =Mejor precisión RTLS y menor costo
  3. Cómo comprobar y calibrar un sensor de humedad
  4. Cómo hacer un coche controlado por Bluetooth Arduino
  5. Máquina de café inteligente con Arduino y Bluetooth
  6. Robot de selección y colocación controlado por Bluetooth
  7. Cómo configurar NeoPixels usando Vixen Lights y Arduino
  8. Cómo rastrear la orientación con Arduino y el acelerómetro ADXL345
  9. Arduino Robot Car Wireless Control utilizando HC-05 Bluetooth, NRF24L01 y módulos transceptores HC-12
  10. Comprender el acero para herramientas y cómo se fabrica
  11. ¿Cómo distinguir entre sierra de cinta y sierra circular?