[Aporte] Programar Arduino Inalambricamente por Bluetooth

¡ Hola a todos !

La última vez no me presenté, así que me presento ahora: me llamo Robert y soy un chico al que le gusta construir muuuuchos proyectos (a razón de uno por semana en bajo mínimos).
Pertenezco en mi universidad a una asociación llamada MakersUPV, en la cual soy uno de los organizadores.
Hace unos meses organizamos una competición llamada ORC (Olympic Robotic Challenge) en la que tuvimos como juez al gran DAVID CUARTIELLES.
MakersUPV se dedica a dar talleres, presentarse a concursos y construir cositas.

Y como no, ahí estoy yo :LOL:

Hace tiempo se me paso por la cabeza la idea de programar Arduino inalambricamente, así que pensé en montarme la jugada con un par de infrarrojos.
No obstante hace un par de días, antes de ponerme con todo el lío, busque otras formas de programar el Arduino.

Y encontré una forma de hacerlo por Bluetooth.

He decido hacer este tutorial ya que la información es escasa en español (y en inglés haciendo un repaso rápido tampoco hay mucha). Así que aquí os dejo el tuto :)

Los materiales que necesitaremos serán:

-Arduino UNO
-Módulo Bluetooth HC-05 (el que tiene 6 patitas no nos sirve el HC-06)
-Dos resistencias de 10KOhms
-Un condensador de 100nF (no importa el voltaje)
-Un ordenador con Bluetooth o un USB bluetooth
-Porta pilas
-Cables varios
-Protoboard o placa perforada
-Una pila (¿Como pensabas encender el Arduino? )

El primer paso es configurar nuestro módulo para que pueda cargar correctamente el programa en nuestro Arduino, esto lo logramos mediante los comandos AT.


Primero de todo, realizamos la siguiente conexión:

ConfiguracionAT.jpg

Y cargaremos este código:
PHP:
/*
 *     CONEXIONES
 *  Pin 9 Arduino --> RX Bluetooth
 *  Pin 8 Arduino --> TX Bluetooth
 */

/*
 * INTRODUCIR LOS SIGUIENTES COMANDOS (en orden) 
 * 
 * AT+ORGL
 * AT+ROLE=0 
 * AT+POLAR=1,0
 * AT+UART=115200,0,0 El número 115200 depende del modelo de Arduino
 * AT+INIT 
 * 
 */

/*
 *  VELOCIDADES
 *  
 *  ArduinoUNO ---> 115200
 *  Arduino Mini Pro --> 57600
 *  Arduino Diecemila o Duemilanove (con ATmega168) --> 19200
 * 
 */

//Código de la página de Joshua Newell 
// La autoría de los comentarios es de Robotic Arts (Robert)

#include <SoftwareSerial.h>

#define rxPin 8
#define txPin 9

SoftwareSerial mySerial(rxPin, txPin);
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); 
    mySerial.print(myChar);
  }
}

Ahora, desconectaremos el módulo bluetooth de la alimentación.
Si os fijáis el módulo tiene un pequeño botón, lo pulsamos y sin dejar de apretar lo conectamos de nuevo a la alimentación.
Cuando el led rojo empiece a parpadear lentamente soltamos el botón y ya habremos entrado en modo AT.

En el IDE de Arduino abrimos el monitor serie y seleccionamos el salto de línea como Ambos NL&CR. Introducimos AT, pulsamos enter y recibiremos un OK.
Eso significa que vamos por buen camino.

En caso que no aparezca un OK es porque alguna conexión esté mal o has escrito mal el comando.

AT Comandos

AT+ORGL
AT+ROLE=0
AT+POLAR=1,0
AT+UART=115200,0,0
AT+INIT

Ahora configuraremos el módulo enviando comandos AT.

Primero introduciremos AT+ORGL con ello restauraremos la configuración que tenia de fábrica por defecto.

Pulsamos enter y nos aparecerá otro OK.

Ahora introducimos AT+ROLE=0 para configurarlo como esclavo, es decir que solo podrá recibir... datos, mal pensados! Introducimos AT+POLAR=1,0 para configurar el pin 32 como salida para resetear el Arduino.

Esto es muy importante ya que cuando cargamos un código por USB el propio cable envía la orden de resetear, pero mediante bluetooth la cosa cambia.

Introducimos AT+UART=115200 para establecer la velocidad de transmisión.

Hay que tener en cuenta que según el modelo la velocidad cambia.

Y finalmente escribimos AT+INIT para inicializar el módulo ¡Y ya tenemos configurado el módulo!

Una vez hecho esto debemos montar el siguiente esquema en una protoboard.

Circuito_bluetooth.jpg


Conectaremos nuestro Arduino a la pila de 9V y el módulo bluetooth empezará a parpadear.
Ahora en nuestro ordenador nos vincularemos con nuestro circuito como si de otro dispositivo Bluetooth se tratara.

Para ello nuestro ordenador debe tener Bluetooth, sino no tiene podemos comprar un USB bluetooth que vale muy poco.

Lo conectamos al ordenador y en Windows 10 ponemos en el buscador "dispositivos".
Deberíamos ver en el panel, la opción de Bluetooth.
Hacemos click ahí y comenzará a buscar dispositivos.
Nuestro dispositivo debería tener el nombre de HC-05 (o algún popurrí parecido a ese nombre)
Lo seleccionamos y nos pedirá una contraseña que por defecto es 1234.
¡Vamos! La mítica contraseña que te pones en todos los sitios XD ¡Y ya habremos emparejado el ordenador a nuestro módulo!

Ahora nos iremos al IDE de Arduino y cargaremos un código cualquiera, por ejemplo el clásico Blink. Pero antes, vamos a herramientas y seleccionamos la placa Arduino UNO.
Después vamos a "puerto" y veremos que hay varios puertos.

Para saber cuál de todos es el correcto usaremos una técnica de iteración por control avanzado a la que he llamado ojímetro.

Así que tenemos que pasar por el aro y deberemos ir probando con todos los puertos hasta dar con el que nos deje cargar el dichoso programa.

En mi caso yo veo el futuro ya sé cual es así que ¡Hágase la luz!
Ahora deberá cargarse el programar en vuestro Arduino inalámbricamente :)

Os dejo aquí también un vídeo para los más vagos que no quieran leer este tocho-post :LOL::



Y ya seremos capaces de subir programas a Arduino inalámbricamente :)
Para los que lo lleguen a hacer quiero que me comentéis si os a funcionado o no ya que he visto en varios sitios que a mucha gente no le llega a funcionar.

A mi me funcionó a la primera, así que si tenéis cualquier error me gustaría saberlo. ;)


Un saludo a todos!
 

Adjuntos

  • Planos y circuitos.rar
    493.8 KB · Visitas: 22
Última edición por un moderador:
Gracias por el aporte. Lo veo muy útil.
Seguramente funcionara con un hc06 solo que hay que resetear manualmente, lo cual es incómodo.

 
Atrás
Arriba