Relé con Bluetooth (T2)

     Este proyecto forma parte del segundo ciclo del programa "RoboTongas", que conduzco junto al ingeniero informático Franco Catrín    http://franco.arealinux.cl/ .-

     Consiste en poder comandar 3 relés a distancia con un celular Android a través de Bluetooth y para lograrlo debemos seguir los siguientes pasos:
1.- Armar proyecto
2.- Configurar módulo Bluetooth
3.- Diseñar con App Inventor la interface del celular
4.- Programar con App Inventor la interface del celular
5.- Subir aplicación al celular
6.- Programar software Arduino

1.- Armar proyecto
     Una de las particularidades de este proyecto, es que necesitaremos dos softwares o programas para hacerlo funcionar, uno de ellos es Arduino, que es una especie de C++, y va en el Arduino Nano, el otro es un software para Android y que se sube al celular. Esto lo veremos más adelante, primero explicaremos el montaje de los componentes.

    Todo el sistema fue montado para su funcionamiento en una base de trupán. La energía puede ser obtenida a través de una batería, pilas o algún transformador de celular de 5 volts.




Circuito Esquemático


     El cableado de los componentes lo podemos ver claramente en este circuito esquemático. En todo caso, si preparan una placa virgen para circuitos, como la que aparece un poco más abajo, no sería necesario poner cables. En realidad los componentes básicos son muy pocos, aparte del Arduino Nano, son un Bluetooth y 3 relés solamente

Tarjeta Circuitos
     Aquí podemos ver los diferentes caminos que unen los componentes, esto está hecho para CNC, pero se puede adaptar para hacerlo con ácido.


 Soportes


     Para montar las diferentes piezas en la placa de Trupán, con una  Printer 3D imprimimos los soportes de los relés y del conector, en realidad no es tan necesario, solo es para la estética general del proyecto.


2.- Configurar módulo Bluetooth

     Antes de pasar a los softwares, es necesario configurar el Bluetooth, para eso debemos usar un Protoboard y conectarlo a un Arduino Uno de la siguiente manera (se puede usar cualquier Arduino, ocupando los mismos pines correspondientes) Nota: Ver gráfico de conexiones a continuación.

A continuación realizar los siguientes pasos

1.- Conectar Bluetooth a la Arduino:
pata key o enabled a pin 9
pata RxD a   pin 11
pata TxD a   pin 10
pata GND a  pin GND
pata VCC a   pin 8

2.- Subir programa ("configurar_bluetooth.ino") teniendo presionado
    el interruptor del Bluetooth" y esperar hasta que el led se 
    encienda 2 segundos HIGH y 2 segundos LOW.-

3.- En Monitor Serie de Arduino:
ajuste de línea: Ambos NL & CR
  Bauds: 9600

5.- Escribir (sin comillas)  "AT"                        debe entregar "OK" 
                                        "AT+ROLE?"       entrega 0= ESCLAVO y 1= MASTER
                  "AT+PSWD?"       entrega clave
                                        "AT+PSWD=1234"  pone clave:1234
                                       "AT+UART?"           muestra configuración de velocidad
                Para comando "AT+NAME", hay que tener presionado el interruptor del                                  Bluetooth.-
     
6.- Una vez que terminamos la configuración, desconectar:
- la pata VCC del Bluetooth del pin 7 de Arduino y colocarla en la fuente VCC.- 
- el pata key o enabled dejarlo desconectado.

7.- Ahora debe parpadear la luz rápidamente.- 

8.- En celular encender Bluetooth y conectarlo.
        - Cuando se realiza la conexión en forma exitosa la luz del Bluetooth parpadea                        sucesivamente 2 veces rápido y una vez apagada.

Nota: Una vez realizada la configuración ya no es necesaria repetirla, salvo que
      salvo que uno quiera cambiar parámetros.-

Software para configurar Bluetooth


     Este software es el que debemos subir al Arduino Nano y es el que configurará el Bluetooth, podremos cambiar el nombre que trae de fábrica y varias otras características.


#include <SoftwareSerial.h>
SoftwareSerial BT1(10, 11); // RX | TX
void setup()
  { pinMode(8, OUTPUT);        // Al poner en HIGH forzaremos el modo AT
    pinMode(9, OUTPUT);        // cuando se alimente de aqui
    digitalWrite(9, HIGH);
    delay (500) ;              // Espera antes de encender el modulo
    Serial.begin(9600);
    Serial.println("Levantando el modulo HC-06");
    digitalWrite (8, HIGH);    //Enciende el modulo
    Serial.println("Esperando comandos AT:");
    BT1.begin(38400);
  }

void loop()
  {  if (BT1.available())
           Serial.write(BT1.read());
     if (Serial.available())
        BT1.write(Serial.read());
  }



3.- Diseñar con App Inventor la interface del celular
    
     Esto debemos hacerlo en Android y para ellos utilizaremos el programa que desarrolló el Massachusetts Institute of Technology, software bastante fácil y gratuito, en el buscador de Google escriban "MIT App Inventor", de esa manera llegan a la página, se registran y listo... al menos eso es lo que yo hice y después de ver cientos de tutoriales en Youtube, pude programar lo básico.

     Yo no pretendo enseñar a programar en Android, pero a continuación va una mirada a lo que yo hice.



En este primer video mostraremos como diseñamos la interface para el celular.





4.- Programar con App Inventor la interface del celular
         
   
     Esta programación se realiza en bloques que uno debe ir calzando igual que en un rompecabezas, en esta captura de pantalla se puede apreciar la programación que lleva esta interface.



5.- Subir aplicación al celular



6.- Programar software Arduino

     Este software es el que debemos subir al Arduino Nano y es el que controlará los tres relés, de acuerdo a las instrucciones que envíe el celular vía bluetooth. Un dato importante es que los relés permanecen en el estado que quedaron cuando se desconecta el celular, lo que significa que uno puede dar la instrucción de abrir o cerrar el Relé y permanece de esa manera hasta que volvamos y demos otra orden.

#include <SoftwareSerial.h>
#define RxD 8 //... conectar a Tx Bluetooth
#define TxD 9 //... conectar a Tr Bluetooth
SoftwareSerial BTSerial(RxD, TxD);

int rele_1 = 2;
int rele_2 = 3;
int rele_3 = 4;


int estado;
int rele;

void setup() {
  Serial.begin(9600);
  Serial.println("-----------------------------------");
  Serial.println("           Sistema Listo");
  Serial.println("-----------------------------------");

  pinMode(rele_1, OUTPUT);
  pinMode(rele_2, OUTPUT);
  pinMode(rele_3, OUTPUT);


  BTSerial.flush();
  delay(500);
  BTSerial.begin(9600);
  delay(500);
}

void loop() {
  if (BTSerial.available()) {
    estado = BTSerial.read();
    if (estado == 'a') {
      digitalWrite(rele_1, LOW);
      Serial.println("rele 1: ON ");
    }
    if (estado == 'b') {
      digitalWrite(rele_1, HIGH);
      Serial.println("rele 1: OFF");
    }
    if (estado == 'c') {
      digitalWrite(rele_2, LOW);
      Serial.println("rele 2: ON ");
    }
    if (estado == 'd') {
      digitalWrite(rele_2, HIGH);
      Serial.println("rele 2: OFF");
    }
    if (estado == 'e') {
      digitalWrite(rele_3, LOW);
      Serial.println("rele 3: ON ");
    }
    if (estado == 'f') {
      digitalWrite(rele_3, HIGH);
      Serial.println("rele 3: OFF");
    }
  }
}


A continuación la explicación de la programación en Arduino