Paso 1: HC-06 y Arduino
Bluetooth es un tipo de comunicación inalámbrica que se utiliza para transmitir voz y datos a altas velocidades utilizando ondas de radio. Es ampliamente utilizado en teléfonos móviles para hacer llamadas, auriculares y compartir datos. Este tipo de comunicación es una forma barata y fácil para controlar algo remotamente utilizando arduino.
HC-06 módulo tiene 4 pines para conectarse a arduino, son:
- RXD
- TXD
- VCC
- TOMA DE TIERRA
RXD recibirá datos de arduino; TXD enviará datos al arduino; VCC es la fuente de alimentación (3, 3V 6.6V) y GND es la tierra.
Tienes que prestar atención sobre el nivel RXD, algunos módulos trabajan con 5V, pero este uno funciona con 3.3V y arduino TX enviará una señal de 5V, entonces necesita un divisor de tensión.
Divisor de voltaje con R1 = 300Ω:
Vout = R2/(R2+R1) * Vin
3.3 = R2/(R2+300) * 5
3.3 * R2 + 990 = 5 * R2
R2 = 990/1.7
R2 ~ 600Ω
Si tienes una resistencia diferente:
R2 = (3.3 * R1) / 1.7Ω
Puesta en funcionamiento:
1ª Conecte el módulo de HC-06 (ver Fig..):
Arduino---HC-06
RX---TXD
TX---RXD
+ 5V---VCC
TIERRA---GND
2ª C código:
El esbozo de este proyecto es muy simple, todo lo que tienes que hacer es comprobar el puerto serie si hay datos disponibles.
Usando un teléfono android con un apk de bluetooth spp, el comando es enviado a bluetooth (RX/TX). Lo que pasa es que el módulo bluetooth se comunica con el bluetooth de android usando un perfil llamado SPP (Serial Port Profile). Emula un puerto USB conectado a arduino y android.
Definir todas las variables y los pernos.
char command; String string;#define led 8
La tasa de baudios predeterminada de HC-06 módulo es 9600. El código de instalación vacío:
void setup(){Serial.begin(9600); pinMode(led, OUTPUT);}
Void loop:
void loop(){ if (Serial.available() > 0) {string = "";} while(Serial.available() > 0) { command = ((byte)Serial.read()); if(command == ':') { break; } else { string += command; } delay(1); } if(string == "LO") { LEDOn(); } if(string =="LF") { LEDOff(); } }
Hay dos funciones en el código. Realmente su nombre lo dice todo.
void LEDOn() { digitalWrite(led, HIGH); } void LEDOff() { digitalWrite(led, LOW); }