[TUTORIAL] Programar Arduino Inalambricamente por Bluetooth

¡Hola a todos! Me presento: me llamo Robert y son 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 contruir cositaas. Y como no, ahí estoy yo xD

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 inalambriamente. 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 :slight_smile:

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
-Portapilas
-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:

La imagen se llama ConfiguraciónAT y lo encontraréis abajo de este tutorial

Y cargaremos este código:

/*
 *     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 boton 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.

La imagen se llama Cargar_bluetooth y lo encontraréis abajo de este tutorial

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 mitca 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 :slight_smile:

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

Y ya seremos capaces de subir programas a Arduino inalámbricamente :slight_smile: Este ha sido mi primer post y aunque estoy registrado desde hace un tiempo nunca he llegado abrir un hilo. Pido disculpas por no poder poner las imagenes ya que solo me deja subir imágenes que están en internet con URLs. Sin embargo he adjuntado los archivos para que lo podáis ver :slight_smile: También, 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 :wink: Un saluditooo a todos!

/*
 *     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

#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);
  }
}

Moderador: Editado código e imágenes para que sean visibles.

ConfiguracionAT.ino (998 Bytes)

1 Like

Hermosa documentación, muchas gracias!
Sólo te debo dar un tirón de orejas porque al postear tu tuto, no has leído las normas del foro en donde dice como hacemos o tenemos que hacer para pegar información del tipo código, imágenes, url's, etc.
Por favor, corrige eso.
Abrazos!

pinta bien , gracias por el aporte, voy a chekarlo y dejo el comentario…