Para este proyecto he utilizado lo siguiente:
- Un módulo Bluetooth HC-06
- Un LED 5mm
- Una placa Arduino REV Uno
- Una resistencia de 330 Ohmios
- Una resistencia de 5.600 Ohmios
- Una resistencia de 10.000 Ohmios
- Cables protoboard
- Una placa de pruebas o protoboard, yo utilicé una placa PCB perforada y estaño para soldar.
- Un teléfono celular con el sistema Android instalado.
- La app Arduino Bluetooth Controller.
Hay personas que no usan un divisor de tensión con el módulo Bluetooh HC-06 y dicen que les funciona perfectamente. Yo prefiero usar un divisor de tensión tal como explica la web tecnofilo.es porque el módulo HC-06 tiene un pin RXD que indica que solo puede trabajar con un voltaje de 3,3V pero la placa ARDUINO REV UNO ofrece una tensión de 5V. Para solventar este problema, adjunto el cálculo para hacer un divisor de tensión con la ayuda de 2 resistencias.. Suponiendo un valor para la resistencia R3 de 10.000 Ohmios.
Vi = 5 V
R3= 10000 Ohm
R2 =X
Necesitamos calcular el valor de la resistencia R1
Vo=Vi*R3/(R2+R3)
3,3 = 5 * 10000 / (R2 +10000)
3,3 = 50000 / (R2 + 10000)
3,3 R2 + 33000 = 50000
R2 = 5151 Ohmios.
Cómo no hay resistencia con ese valor, elegimos un valor lo más próximo al alza para esa resistencia.
Este es el código para encender y apagar LED con el módulo Bluetooth HC-06, Arduino y un teléfono celular con el modo Bluetooth activado:
#include <SoftwareSerial.h>
/*
* Las conexiones del módulo Bluetooth HC-06 a Arduino * HC-06 | Pines de Arduino
* TX | 2
* RX | 3
*/
// Aquí, explicamos las interconexiones del módulo Bluetooth HC-06 a ArduinoSoftwareSerial bt (2,3); //RX, TX (Conectados al Bluetooth - RX -> TX | TX -> RX)
int LEDPin = 13; // Conectamos el LED al pin 13 de Arduinoint btdata; // Los datos que son emitidos desde el computador
void setup() {
bt.begin(9600); //Abre el puerto serie
bt.println ("Bluetooth . Presiona 1 or 0 para encender o apagar LED.."); //Escribe
pinMode (LEDPin, OUTPUT); // Arduino ofrecerá tensión en el pin del LED cuando sea oportuno
}
void loop() {
if (bt.available()) { //si la comunicación serial está disponible
btdata = bt.read(); //lee desde la conexión serial if (btdata == '1') {
//Si el valor elegido es '1'
digitalWrite (LEDPin, HIGH); // Hay tensión en el pin del LED y se enciende
bt.println ("LED ON!");
}
if (btdata == '0') { //Si se obtiene como valor '0', se apaga el LED //if 0
digitalWrite (LEDPin, LOW); // No hay tensión en el pin del LED y se apaga
bt.println ("LED OFF!");
}
}
delay (100); //prepara los datos
}
Pueden descargar el código para este proyecto haciendo click en el siguiente enlace: https://drive.google.com/file/d/1gOmng5xyOWMNBwbHlSYYICqNIcwkJ7Aq/view?usp=sharing