En el mundo de la electrónica y la programación, el uso de módulos Bluetooth se ha vuelto cada vez más popular. En este tutorial completo, te enseñaremos cómo utilizar el módulo Bluetooth HC-05 con tu placa Arduino. ¡Prepárate para sumergirte en el fascinante mundo de la comunicación inalámbrica!
En este tutorial de Arduino Bluetooth, aprenderemos cómo usar el módulo HC-05 para controlar Arduino a través de comunicación Bluetooth. Para obtener más detalles, vea el vídeo a continuación o el tutorial escrito a continuación.
descripción general
Para este tutorial creé dos ejemplos: controlar el Arduino a través de un teléfono inteligente y controlar el Arduino a través de una computadora portátil o PC. Para no saturar este tutorial, en mi próximo tutorial aprenderemos cómo podemos configurar el módulo Bluetooth HC-05 y establecer comunicación Bluetooth entre dos placas Arduino separadas como dispositivos maestro y esclavo.
Antes>
Puede obtener los componentes necesarios para este tutorial de Arduino en cualquiera de los siguientes sitios web:
- Módulo Bluetooth HC-05…………. Amazon / Banggood / AliExpress
- Placa Arduino……………………………… Amazon / Banggood / AliExpress
- Cables de puente y placa de pruebas………… Amazon / Banggood / AliExpress
Divulgación: estos son enlaces de afiliados. Como asociado de Amazon, gano con compras que califican.
Diagramas de circuito
Entonces tenemos que conectar el módulo a la placa Arduino.
El>
Código fuente de ejemplo de comunicación Bluetooth de Arduino
Ahora estamos listos para crear el código Arduino para permitir la comunicación entre la placa Arduino y el teléfono inteligente. Haremos un ejemplo sencillo de encender y apagar un LED, pero será lo suficientemente bueno para entender la comunicación.
#define ledPin 7
int state = 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
}
if (state == '0') {
digitalWrite(ledPin, LOW); // Turn LED OFF
Serial.println("LED: OFF"); // Send back, to the phone, the String "LED: ON"
state = 0;
}
else if (state == '1') {
digitalWrite(ledPin, HIGH);
Serial.println("LED: ON");;
state = 0;
}
}
Code language: Arduino (arduino)
Descripción: Primero debemos definir el pin al que se conectará nuestro LED y una variable en la que almacenaremos los datos provenientes del smartphone. En la sección de configuración, debemos definir el pin del LED como salida e inmediatamente configurarlo en nivel bajo. Como se mencionó anteriormente, estamos utilizando comunicación en serie, por lo que debemos iniciar la comunicación en serie con una velocidad en baudios de 38400, que es la velocidad en baudios predeterminada del módulo Bluetooth. En la sección de bucle con la función Serial.available(), verificamos si los datos están disponibles para lectura en el puerto serie. Esto significa que cuando enviemos datos al módulo Bluetooth, esta afirmación será verdadera, por lo que leeremos estos datos usando la función Serial.read() y los insertaremos en la variable de estado. Entonces, cuando Arduino recibe el carácter «0», apaga el LED y usa la función Serial.println() para enviar la cadena «LED: OFF» de regreso al teléfono inteligente a través del puerto serie. Además, restablecemos la variable «estado» a 0 para que las dos líneas anteriores solo se ejecuten una vez. Tenga en cuenta aquí que la variable «estado» es un número entero. Entonces, cuando recibimos el carácter “0” del teléfono inteligente, el valor real de la variable entera “estado” es 48, que corresponde al carácter “0”, según la ASCII Tabla… Es por eso que comparamos la variable «estado» con un carácter «0» en la declaración «si». Por otro lado, si el carácter recibido es “1”, el LED se enciende y se devuelve la cadena de caracteres “LED: ON”.
Ahora el código está listo para cargar, pero para esto necesitamos separar las líneas TX y RX porque el Arduino usa comunicación serial al cargar y por lo tanto los pines RX (pin digital 0) y TX (pin digital 1) están ocupados. Podemos evitar este paso si utilizamos los otros pines TX y RX de la placa Arduino, pero en este caso necesitamos utilizar la biblioteca SoftwareSerial.h para la comunicación serie.
Relacionado: Cómo configurar y emparejar dos módulos Bluetooth HC-05 como maestro y esclavo | Comandos AT
Conexión del teléfono inteligente al módulo Bluetooth HC-05 y al Arduino
Ahora ya podemos conectar el smartphone al módulo Bluetooth y al Arduino. Para ello debemos activar el Bluetooth y el smartphone encontrará el módulo Bluetooth HC-05.
Luego>CON App Inventor Aplicaciones en linea. Esta es una aplicación excelente y fácil de usar para crear aplicaciones de Android. Consulte mi próximo tutorial para obtener instrucciones detalladas paso a paso sobre cómo crear su propia aplicación de Android personalizada para su proyecto Arduino.
Puedes>
Tutorial Bluetooth de Arduino, ejemplo de aplicación para Android
Usamos el botón Conectar para conectar el teléfono inteligente al módulo Bluetooth y el texto de estado debajo del botón nos muestra si la conexión se estableció exitosamente. Con los botones “Turn ON” y “Turn OFF” podremos encender y apagar el LED. El texto sobre los botones es lo que Arduino envía al teléfono inteligente cuando se presiona un botón específico.
Controlar Arduino con una computadora portátil o PC a través de comunicación Bluetooth
Veamos cómo podemos controlar el Arduino vía Bluetooth usando un portátil o PC. Primero necesitamos emparejar nuestra computadora portátil con el módulo Bluetooth HC-05. Esto lo podemos hacer a través de la configuración de Bluetooth del portátil. El portátil reconoce el módulo HC-05 y emparejamos los dispositivos con la contraseña “1234”.
Una>
Seguiremos>
Procesando el código fuente IDE
Ahora crearemos un programa para controlar Arduino usando el IDE de procesamiento. Aquí está el código fuente.
import processing.serial.*;
Serial myPort;
String ledStatus="LED: OFF";
void setup(){
size(450, 500);
myPort = new Serial(this, "COM5", 38400); // Starts the serial communication
myPort.bufferUntil('n'); // Defines up to which character the data from the serial port will be read. The character 'n' or 'New Line'
}
void serialEvent (Serial myPort){ // Checks for available data in the Serial Port
ledStatus = myPort.readStringUntil('n'); //Reads the data sent from the Arduino (the String "LED: OFF/ON) and it puts into the "ledStatus" variable
}
void draw(){
background(237, 240, 241);
fill(20, 160, 133); // Green Color
stroke(33);
strokeWeight(1);
rect(50, 100, 150, 50, 10); // Turn ON Button
rect(250, 100, 150, 50, 10); // Turn OFF Button
fill(255);
textSize(32);
text("Turn ON",60, 135);
text("Turn OFF", 255, 135);
textSize(24);
fill(33);
text("Status:", 180, 200);
textSize(30);
textSize(16);
text("Program made by Dejan Nedelkovski,n www.HowToMechatronics.com", 80, 320);
text(ledStatus, 155, 240); // Prints the string comming from the Arduino
// If the button "Turn ON" is pressed
if(mousePressed && mouseX>50 && mouseX<200 && mouseY>100 && mouseY<150){
myPort.write('1'); // Sends the character '1' and that will turn on the LED
// Highlighs the buttons in red color when pressed
stroke(255,0,0);
strokeWeight(2);
noFill();
rect(50, 100, 150, 50, 10);
}
// If the button "Turn OFF" is pressed
if(mousePressed && mouseX>250 && mouseX<400 && mouseY>100 && mouseY<150){
myPort.write('0'); // Sends the character '0' and that will turn on the LED
stroke(255,0,0);
strokeWeight(2);
noFill();
rect(250, 100, 150, 50, 10);
}
}
Code language: Arduino (arduino)
Descripción: Necesitamos incluir la biblioteca Serial y crear un objeto serial para habilitar la comunicación serial, así como definir una variable de cadena para el estado del LED. En la sección de configuración necesitamos configurar el tamaño de la ventana del programa e iniciar la comunicación en serie. En cuanto al número de puerto COM, aquí debemos probar uno de los dos números de puerto COM que notamos anteriormente en el Administrador de dispositivos. La siguiente línea define el almacenamiento en búfer del puerto serie y en nuestro caso es así hasta que llega una nueva línea. De hecho, aparece una nueva línea cada vez que Arduino envía la cadena «LED: OFF» o «LED ON» debido a la función println(). A continuación, utilizamos la función serialEvent() para comprobar si los datos están disponibles para lectura en el puerto serie. En caso afirmativo, usamos la función readStringUntil() para leer los datos del puerto serie enviado por el Arduino y en nuestro caso esa es la cadena «LED: OFF» o «LED: ON».
En la función principal draw(), que se repite constantemente, creamos todos los gráficos y funciones del programa. Primero necesitamos establecer el color de fondo, el color de relleno, el ancho del trazo y el color y usar la función rect() para dibujar los dos botones. Usando la función text() imprimimos todo el texto, incluida la cadena ledStatus que proviene del Arduino. Ahora sólo necesitamos hacer que los botones sean funcionales. Con la primera declaración «if» limitamos el alcance del botón «Encendido» de modo que cuando se presiona el botón, el carácter «1» se envía al Arduino a través del puerto serie y el LED se enciende. Las siguientes líneas se utilizan para resaltar el botón cuando se presiona. El mismo procedimiento se aplica al botón de apagado.
Ahora>
Eso es todo por este tutorial, pero no olvides consultar mi próximo tutorial donde aprenderemos cómo configurar el módulo Bluetooth HC-05 y establecer comunicación Bluetooth entre dos placas Arduino separadas, ya que se pueden fabricar dispositivos maestro y esclavo.
También siéntase libre de hacer cualquier pregunta en la sección de comentarios a continuación y no olvide consultar mi colección de proyectos Arduino.
Módulo Bluetooth Arduino y HC-05 – Tutorial completo
En este tutorial de Arduino Bluetooth, aprenderemos a utilizar el módulo HC-05 para controlar Arduino a través de comunicación Bluetooth. Puedes ver el siguiente video o leer el tutorial escrito a continuación para más detalles.
Visión general
En este tutorial, he creado dos ejemplos, controlando Arduino con un smartphone y controlando Arduino con una laptop o PC. Para no sobrecargar este tutorial, en mi próximo tutorial aprenderemos cómo configurar el módulo Bluetooth HC-05 y realizar una comunicación Bluetooth entre dos placas Arduino separadas como dispositivos maestro y esclavo.
Antes de comenzar con el primer ejemplo, controlar un Arduino con un smartphone, echemos un vistazo más de cerca al módulo Bluetooth HC-05. Comparándolo con el módulo HC-06, que solo puede ser configurado como Esclavo, el HC-05 también puede ser configurado como Maestro, lo que permite hacer una comunicación entre dos placas Arduino separadas. Hay varias versiones diferentes de este módulo, pero recomiendo el que viene en una placa de desarrollo porque de esa manera es mucho más fácil de conectar. El módulo HC-05 es un módulo Bluetooth SPP (Protocolo de Puerto Serie), lo que significa que se comunica con Arduino a través de la Comunicación Serie.
Puedes obtener los componentes necesarios para este tutorial de Arduino en cualquiera de los siguientes sitios:
Módulo Bluetooth HC-05 ……………. Amazon / Banggood / AliExpress
Placa Arduino …………………………………………….. Amazon / Banggood / AliExpress
Protoboard y Cables Puente ………… Amazon / Banggood / AliExpress
Esquemático del Circuito
Aquí está cómo necesitamos conectar el módulo a la placa Arduino.
El módulo en particular que tengo puede ser alimentado con 3.6 a 6 voltios, ya que viene en una placa de desarrollo que contiene un regulador de voltaje. Sin embargo, el nivel de voltaje lógico de los pines de datos es de 3.3V. Por lo tanto, la línea entre el pin TX de Arduino (Pin de Transmisión, que tiene salida de 5V) y el pin RX del módulo Bluetooth (Pin de Recepción, que solo soporta 3.3V) necesita conectarse a través de un divisor de voltaje para no quemar el módulo. Por otro lado, la línea entre el pin TX del módulo Bluetooth y el pin RX de Arduino se puede conectar directamente porque la señal de 3.3V del módulo Bluetooth es suficiente para ser aceptada como un alto nivel lógico en la placa Arduino.
Ejemplo de Código de Comunicación Bluetooth de Arduino
Ahora estamos listos para hacer el código de Arduino para habilitar la comunicación entre la placa Arduino y el smartphone. Haremos un ejemplo simple, solo encendiendo y apagando un LED, pero será lo suficientemente bueno para comprender la comunicación.
define ledPin 7
int state = 0;
void setup() {
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, LOW);
Serial.begin(38400); // Tasa de comunicación predeterminada del módulo Bluetooth
}
void loop() {
if(Serial.available() > 0){ // Comprueba si hay datos provenientes del puerto serie
state = Serial.read(); // Lee los datos del puerto serie
}
if (state == ‘0’) {
digitalWrite(ledPin, LOW); // Apaga el LED
Serial.println("LED: OFF"); // Envía de vuelta al teléfono la cadena "LED: OFF"
state = 0;
}
else if (state == ‘1’) {
digitalWrite(ledPin, HIGH);
Serial.println("LED: ON");;
state = 0;
}
}
Descripción: Primero necesitamos definir el pin al que estará conectado nuestro LED y una variable en la que almacenaremos los datos que provienen del smartphone. En la sección de configuración necesitamos definir el pin del LED como salida y establecerlo en bajo de inmediato. Como se mencionó anteriormente, utilizaremos la comunicación serie, por lo que necesitamos comenzar la comunicación serie a 38400 baudios, que es la velocidad de baudios predeterminada del módulo Bluetooth. En la sección de loop, con la función Serial.available(), verificaremos si hay datos disponibles en el puerto serie para ser leídos. Esto significa que cuando enviemos datos al módulo Bluetooth, esta afirmación será verdadera, por lo que usando la función Serial.read() leeremos esos datos y los pondremos en la variable “state”. Por lo tanto, si Arduino recibe el carácter ‘0’, apagará el LED y usando la función Serial.println() enviará de vuelta al smartphone, a través del puerto serie, la cadena “LED: OFF”. Además, restableceremos la variable “state” a 0 para que las dos líneas anteriores se ejecuten solo una vez. Nota aquí que la variable “state” es un entero, por lo que cuando recibimos el carácter ‘0’ que proviene del smartphone, el valor real de la variable entera “state” es 48, lo que corresponde al carácter ‘0’, según la tabla ASCII. Es por eso que en el enunciado “if” estamos comparando la variable “state” con un carácter ‘0’. Por otro lado, si el carácter recibido es ‘1’, el LED se encenderá y la cadena “LED: ON” se enviará de vuelta.
El código está listo para ser subido, pero para hacerlo necesitamos desconectar las líneas TX y RX porque al cargar Arduino utiliza la comunicación serie, por lo que los pines RX (pin digital 0) y TX (pin digital 1) están ocupados. Podemos evitar este paso si usamos los otros pines TX y RX de la placa Arduino, pero en ese caso tendremos que usar la biblioteca SoftwareSerial.h para la comunicación serie.
Conectar el Smartphone al Módulo Bluetooth HC-05 y a Arduino
Ahora estamos listos para conectar el smartphone al módulo Bluetooth y Arduino. Lo que necesitamos hacer aquí es activar el Bluetooth y el smartphone encontrará el módulo Bluetooth HC-05. Luego necesitamos emparejar los dispositivos y la contraseña predeterminada del módulo HC-05 es 1234. Después de emparejar los dispositivos, necesitamos una aplicación para controlar Arduino. Hay muchas aplicaciones en la Play Store para este propósito que funcionarán con el código de Arduino que escribimos. Sin embargo, hice mi propia aplicación personalizada para este tutorial utilizando la aplicación en línea MIT App Inventor. Esta es una aplicación excelente y fácil de usar para crear aplicaciones de Android y en mi próximo tutorial encontrarás una guía detallada paso a paso sobre cómo crear tu propia aplicación de Android personalizada para tu proyecto de Arduino.
Puedes descargar la aplicación que hice para este ejemplo aquí:
Aplicación de Ejemplo Tutorial de Arduino Bluetooth1 archivo(s) 1.38 MBDescarga
Con el botón de conexión, conectaremos el smartphone al módulo Bluetooth y el texto de estado debajo del botón nos indicará si nos hemos conectado correctamente. Usando los botones “Encender” y “Apagar” podemos encender y apagar el LED. El texto encima de los botones es el que Arduino devuelve al smartphone cuando se presiona un botón en particular.
Controlando Arduino Usando una Laptop o PC a través de Comunicación Bluetooth
Veamos cómo podemos controlar Arduino a través de Bluetooth usando una Laptop o PC. Así que primero necesitamos emparejar nuestra laptop con el módulo Bluetooth HC-05 y podemos hacerlo desde la Configuración de Bluetooth de la laptop. La laptop descubrirá el módulo HC-05 y usando la contraseña ‘1234’ emparejaremos los dispositivos.
Una vez que emparejemos los dispositivos en el Administrador de Dispositivos de la Laptop, bajo Puertos (COM y LPT), aparecerán dos nuevas entidades llamadas “Enlace Serie Estándar sobre Bluetooth”. Desde aquí podemos ver el número de puerto COM del puerto serie a través del cual los dispositivos se comunicarán.
Nos quedaremos con el mismo ejemplo que anteriormente, encendiendo y apagando un LED y enviando de vuelta una cadena a la laptop, por lo que usaremos el mismo código de Arduino descrito anteriormente.
Código Fuente de Processing IDE
Ahora, utilizando el IDE de Processing, haremos un programa para controlar Arduino. Aquí está el código fuente.
import processing.serial.*;
Serial myPort;
String ledStatus="LED: OFF";
void setup(){
size(450, 500);
myPort = new Serial(this, "COM5", 38400); // Inicia la comunicación serie
myPort.bufferUntil(‘n’); // Define hasta qué caracter la data en el puerto serie será leída. El caracter ‘n’ o ‘Salto de línea’
}
void serialEvent (Serial myPort){ // Verifica si hay datos disponibles en el Puerto Serie
ledStatus = myPort.readStringUntil(‘n’); //Lee los datos enviados desde Arduino (la cadena "LED: OFF/ON) y los coloca en la variable “ledStatus”
}
void draw(){
background(237, 240, 241);
fill(20, 160, 133); // Color verde
stroke(33);
strokeWeight(1);
rect(50, 100, 150, 50, 10); // Botón Encender
rect(250, 100, 150, 50, 10); // Botón Apagar
fill(255);
textSize(32);
text("Encender",60, 135);
text("Apagar", 255, 135);
textSize(24);
fill(33);
text("Estado:", 180, 200);
textSize(30);
textSize(16);
text("Programa hecho por Dejan Nedelkovski,n www.HowToMechatronics.com", 80, 320);
text(ledStatus, 155, 240); // Imprime la cadena proveniente de Arduino
// Si se presiona el botón "Encender"
if(mousePressed && mouseX>50 && mouseX<200 && mouseY>100 && mouseY<150){
myPort.write(‘1’); // Envía el carácter ‘1’ y eso encenderá el LED
// Resalta los botones en color rojo cuando se presionan
stroke(255,0,0);
strokeWeight(2);
noFill();
rect(50, 100, 150, 50, 10);
}
// Si se presiona el botón "Apagar"
if(mousePressed && mouseX>250 && mouseX<400 && mouseY>100 && mouseY<150){
myPort.write(‘0’); // Envía el carácter ‘0’ y eso apagará el LED
stroke(255,0,0);
strokeWeight(2);
noFill();
rect(250, 100, 150, 50, 10);
}
}
Descripción: Necesitamos incluir la biblioteca Serial y crear un objeto serial para habilitar la comunicación serie, así como definir una variable de cadena para el estado del LED. En la sección de configuración, necesitamos establecer el tamaño de la ventana del programa y comenzar la comunicación serie. En cuanto al número de puerto COM, aquí necesitamos probar uno de los dos números de puerto COM que notamos previamente en el administrador de dispositivos. La siguiente línea define el almacenamiento en búfer del puerto serie y en nuestro caso eso es hasta que haya un salto de línea y en realidad hay un salto de línea cada vez que Arduino envía la cadena “LED: OFF” o “LED ON” debido a la función println(). A continuación, utilizando la función serialEvent(), verificamos si hay datos disponibles en el puerto serie para ser leídos. Si es así, utilizando la función readStringUntil() leeremos esos datos del puerto serie que han sido enviados desde Arduino y en nuestro caso esa es la cadena “LED: OFF” o “LED: ON”.
En la función principal draw(), que se repite constantemente, hacemos todos los gráficos y funciones del programa. Por lo tanto, primero debemos establecer el color de fondo, el color de relleno, el tamaño y color del trazo y utilizando la función rect() dibujamos los dos botones. Usando la función text() imprimimos todo el texto, incluida la cadena ledStatus que proviene de Arduino. Lo que queda ahora es hacer que los botones sean funcionales. Entonces, utilizando la primera declaración "if", confinamos la área del botón "Encender", por lo que cuando el botón es presionado, el carácter ‘1’ se enviará por el puerto serie a Arduino y eso encenderá el LED. Las próximas cuatro líneas se utilizan para resaltar el botón cuando se presiona. El mismo procedimiento vale para el botón "Apagar".
Ahora el programa está listo, así que cuando hagamos clic en el botón de ejecución, el programa activará automáticamente la comunicación Bluetooth entre la laptop y Arduino. El módulo Bluetooth HC-05 comenzará a parpadear cada dos segundos, lo que indica que el módulo está conectado y podremos controlar el LED usando nuestra laptop.
Esto es todo por este tutorial, pero no olvides consultar mi próximo tutorial donde aprenderemos cómo podemos configurar el módulo Bluetooth HC-05 y realizar una comunicación Bluetooth entre dos placas Arduino separadas como dispositivos maestro y esclavo.
También, siéntete libre de hacer cualquier pregunta en la sección de comentarios a continuación y no olvides visitar mi colección de Proyectos de Arduino.
Categorías: Tutoriales de Arduino.
Referencias:
Con este tutorial completo, estarás listo para comenzar a utilizar el módulo Bluetooth HC-05 con Arduino y explorar todas las posibilidades que ofrece esta tecnología de comunicación inalámbrica. ¡Diviértete creando tus propios proyectos de Arduino con Bluetooth!