Programar Arduino por Bluetooth

          A veces puede ser interesante poder programar el Arduino vía inalámbrica, bien porque esta en un sitio poco accesible, montado en un robot en desarrollo, etc.
          Esto podemos hacerlo a través de Bluetooth con un módulo del tipo HC-05. De este módulo hay dos versiones. Una tiene un pin llamado KEY y la otra no, pero tiene un pequeño botón.       
        Primero tenemos que configurar el HC-05. Para ello hay que conectarlo al Arduino de esta forma. De momento sin conectarle los 5 voltios.

GND y Vcc a nuestro Arduino.
TxD al pin 9
RxD al pin 8  

         En el caso del que no lleva botón, además    el pin Key del módulo hay que conectarlo al pin de 3.3v de Arduino.

          Ahora debemos cargar en Arduino este sketch para poder configurar el módulo por medio de comandos AT.
          Una vez cargado el sketch:

En el módulo con botón  :
    -Apretar el botón y mantenerlo pulsado.
    -Conectarle el pin de los 5 voltios del Arduino al HC-05.
    -Veremos un parpadeo lento. Soltamos el botón y seguirá con parpadeo lento.


En el módulo sin botón:
    -Hemos conectado el pin Key del módulo a 3.3v de Arduino. (NO 5v)
    -Conectarle el pin de los 5 voltios del Arduino al HC-05.
    -Veremos un parpadeo lento. NO quitar los 3,3 voltios al pin Key.

En ambos casos ya estamos en modo Master para que acepte comandos AT de configuración.

Al entrar en modo Master el HC-05 funciona a 38400 baudios.

Abrimos el monitor serie del Arduino y ya podemos mandarle los comandos de configuración.

El monitor serie se debe configurar a 9600 baud y con  "Both NL & CR"

Enviaremos por monitor serie lo siguiente:
#include <SoftwareSerial.h>
//Código de la página de Joshua Newell

#define rxPin 8
#define txPin 9

SoftwareSerial mySerial(rxPin, txPin); // RX, TX
char myChar ;

void setup() {
  Serial.begin(9600);  
  Serial.println("AT");

  mySerial.begin(38400);
  mySerial.println("AT");
}

void loop() {
  while (mySerial.available()) {
    myChar = mySerial.read();
    Serial.print(myChar);
  }

  while (Serial.available()) {
    myChar = Serial.read();
    Serial.print(myChar); //echo
    mySerial.print(myChar);
  }
}
AT+ORGL              //Configuración de fábrica.
AT+ROLE=0         //slave role - modo transparente serial bridge
AT+POLAR=1,0   //Configura el pin 32 a nivel bajo para hacer un reset al Arduino.
AT+UART=115200,0,0   //Es velocidad a la que siempre se graba el Arduino.
AT+INIT      //Inicializa el modulo
           Ahora desconectamos la alimentación del HC-05 (y el KEY de los 3,3v).

           Es necesario hacer un pequeño circuito para que el pin 32 del HC-05 pueda mandar correctamente un pulso negativo al pin reset del Arduino.

            Al hacer esto, el bootloader del Arduino queda a la espera de la recepción del Sketch que le llega al puerto serie vía Bluetooth.
          Como se ve, el circuito es muy sencillo. El único punto a tener en cuenta es asegurarnos que en el punto de prueba señalado tenemos unos 3,4 voltios.

          Si no fuese así, tendremos que ir modificando la resistencia R2 hasta conseguirlos. En un primer montaje, había 3,8v y el sistema no funcionaba en absoluto.
          
         Conectado el sistema como se muestra tendremos que asociar el Bluetooth HC-05 con nuestro ordenador. Como el PC de sobremesa no tiene Bluetooth he usado este "pincho" USB Bluetooth para proporcionarsela.

          Lo asociamos con la clave por defecto, que suele ser 1234.

          Conectado el Arduino a nuestro montaje con el HC-05, alimentamos el Arduino con una fuente externa, independiente de su entrada USB de programación (que ya no usamos).

          Si abrimos el IDE de Arduino, nos aparecen dos puertos nuevos. Usaremos el último de la lista. En mi caso aparecen el COM1, COM10 y COM11. Compruebo el correcto abriendo el monitor serie (tarda un poco)

           Y ya podemos enviar nuestro primer programa vía bluetooth.

         
           Por último unas fotos del montaje.






Diseño en placa de tiras
Soldadura del pin 32

Menu