Download - Arduino con Bluetooth

Transcript

INFORME TECNOLOGA ELCTRICA 2COMANDO REMOTO DE UN ARDUINO MEDIANTE UN MODULO BLUETOOTH

I. Presentacin

En las ltimas dcadas, la electrnica, los sistemas digitales y ms especficamente el desarrollo de los circuitos integrados han revolucionado los campos de las comunicaciones, la gestin de la informacin y la informtica. Los circuitos integrados han permitido reducir el tamao de los dispositivos con el consiguiente descenso de los costes de fabricacin y de mantenimiento de los sistemas. Al mismo tiempo, ofrecen mayor velocidad y fiabilidad. Los relojes digitales, las computadoras porttiles y los juegos electrnicos son sistemas basados en microprocesadores. El Arduino, es un claro ejemplo de aquel avance logrado gracias a la electrnica y los sistemas digitales, gracias a todo lo que ofrece, hace que el presente trabajo, sea una oferta muy tentadora para un mayor conocimiento prctico de lo que es Electrnica y Sistemas Digitales.Esta vez trabajaremos con un dispositivo bluetooth que permitir ingresar un texto desde la pantalla de comandos de un telfono con android hasta el Arduino. En el proceso los caracteres se cifran a nmeros binarios para ser interpretados por el procesador y luego son escritos en la pantalla led codificados nuevamente a letras y nmeros. Posteriormente probaremos el funcionamiento de los leds para ejecutar acciones.

II. Objetivos trazados para el experimento

- Arduino es una plataforma de electrnica abierta (open Hardware) para la creacin de prototipos basada en software y hardware flexibles y fciles de usar., puede tomar informacin del entorno a travs de sus pines de entrada de toda una gama de sensores y puede afectar aquello que le rodea controlando luces, motores y otros actuadores, por lo tanto el presente trabajo tiene como objetivo lograr a travs del lenguaje de programacin correcto controlar el encendido de un par de luces, slo si el usuario y contraseas ingresadas son los correctos, en caso contrario las bombillas seguirn apagadas.- Aplicar de manera didctica los conocimientos adquiridos en programacin para darle las correctas instrucciones para que el Arduino las ejecute de manera correcta.- Tener el correcto conocimiento de que no solo se puede dar la comunicacin mediante cables, sino tambin se puede dar de manera inalmbrica, a travs de conexiones bluetooth, entre otras.- Nos da mayores conocimientos acerca del lenguaje maquina (cdigo binario), mediante el cual el Arduino lee e interpreta todas las instrucciones.

III. Marco terico

a. Arduino NanoEs una placa electrnica pequea y muy completa, compuesta por un micro controlador ATmega 328 y compatible con las placas de prueba (Protoboard). Tiene ms o menos la misma funcionabilidad que el Arduino Duemilanove, pero viene en un paquete diferente y con la diferencia de que le falta una toma de alimentacin de CC y trabaja con un cable USB Mini-B en lugar de uno estndar. El Nano fue diseado y est siendo producido por Gravitech.

Especificaciones:Micro controladorATmega328

Voltaje de operacin (nivel lgico)5 V

Voltaje de entrada (recomendado)7-12 V

Voltaje de entrada (lmites)6-20 V

Pines digitales E/S14 (De los cuales 6 proveen un salida PWM )

Pines de salida analgica8

Corriente DC mx.40 mA

Memoria flash32 KB (ATmega328)

SRAM2 KB (ATmega328)

EEPROM1 KB (ATmega328)

Clock Speed16MHz

Dimensiones0.73" x 1.70"

Longitud45 mm

Anchura18 mm

Peso5 g

Tabla 1. Especificaciones del Arduino nano

Fig. 1. Grfica de entradas y salidas del Arduino nano

b. Bluetooth HC-06Los dispositivos bluetooth pueden actuar como Masters o como Slaves. La diferencia entre ambos es que un Slave slo puede conectarse a un Master, en cambio a un Master se pueden conectar un mximo de 7 Slaves, los cuales recibirn o solicitarn informacin al Master. Los mdulos de bluetooth ms frecuentes son el HC-05 y el HC-06. Ambos poseen el mismo hardware, pero se diferencian en el software; para nuestro trabajo usaremos el mdulo HC-06.Este mdulo dispone de 4 pines y slo puede actuar como esclavo, adems dispone de un juego reducido de instrucciones a las que atiende.

Fig. 2. Descripcin fsica del dispositivo de BT HC-06

Fig. 3. Descripcin de los pines del BT.

c. Comunicacin de Bluetooth con ArduinoFsicamente la conexin entre el Arduino y el mdulo bluetooth HC-06 es muy sencilla y prctica.Primero definimos los pines RX y TX, ubicados en ambos dispositivos. Estos pines son usados para recibir y transmitir serial data, respectivamente y luego se procede a hacer la conexin mediante cables, uniendo el pin RX del Arduino con el pin TX del mdulo HC-06; y el pin TX del Arduino con el pin RX del mdulo HC-06. Adems de estas uniones, se conectan los pines GND (Ground) y Vcc (5V) entre dispositivos.Definir el programa de control (Cdigo) requiere de mayor dedicacin. Primero se define la variable tipo string que va a leer la informacin recibida a travs del pin RX, luego se inicia la comunicacin serial para poder empezar la transmisin de datos. A continuacin, se define una variable char para que lea los datos que se envan desde el mdulo. Una vez recibida esta informacin se pueden hacer diversas operaciones segn se requiera.El cdigo bsico para que se establezca esta conexin es:String readString; // Asignamos la palabra readString a una variable tipo cadenavoid setup() {Serial.begin(9600); // Inicializamos la comunicacin serial}void loop() {while (Serial.available()) { // Se verifica la disponibilidad del puerto serialchar a = Serial.read(); // Se leen los caracteres que ingresan por el puertoreadString += a; // Se acumulan cada uno de los caracteres en readString}}

Fig. 4. Conexin fsica de bluetooth con Arduino

d. Comunicacin Led en ArduinoPara entablar esta comunicacin primero se define la variable tipo int con el nombre Led y se le establece el valor 13, ya que en el Arudino Nano el pin 13 est destinado para conectarse a un LED. Luego, se determina a pin 13 como salida. Por ltimo, se comunica la accin que se requiere.El cdigo bsico sera:int led = 13; // Asignamos la palabra led como una variable tipo enteravoid setup() {pinMode(ledPin, OUTPUT);} // Se determina que el pin 13 va a ser usado como salidavoid loop() {digitalWrite(ledPin, HIGH); // El LED enciendedelay(5000); // Espera por 5 segundosdigitalWrite(ledPin, LOW); // El LED se apagadelay(5000); // Espera por 5 segundos

Fig. 6 Conexin fsica

Comunicacin LCD en ArduinoEsta conexin se abre incluyendo la librera Liquid cristal, que es la contiene las funciones para manejar el LCD. En nuestro trabajo utilizaremos una pantalla de 16x2.El cdigo bsico ser:#include LiquidCrystal lcd(7,6, 5, 4, 3, 2); // Se definen los pines que estarn conectados al LCDvoid setup() {lcd.begin(16, 2);lcd.print("hello, world!");lcd.clear();}

IV. Construccin final del Arduino

Ya se mostr y se especific como se relacin cada elemento con el Arduino. Se debe tener en cuenta adems, que entre la conexin entre el Led y el Arduino se debe colocar una resistencia, que en este caso sern de 330 ohms.Cada uno de los componentes mencionados, ms las resistencias, el diodo, etc., estarn conectados una placa de fibra de vidrio, que es lo que unir todo, permitiendo las uniones respectivas.

Fig. 7 Arduino unido a placa

V. Anlisis de las alternativas de solucin

Las alternativas de solucin son variadas, ya que la solucin en s depende el fin para el que se requiera el programa.En este proyecto, el fin es sencillo: Hacer que un usuario manipule uno o dos leds a travs de una conexin bluetooth y que, si es un usuario administrador, pueda crear nuevos usuarios.En s, manejar el envo de datos por bluetooth del telfono al Arduino, es lo menos complejo a realizar en este proyecto, ya que la estructura es fija. En cambio, la estructura para leer usuarios y contraseas y permitirles entrar al sistema, as como la creacin de nuevos usuarios, es muy variable y depende de cmo el programador lo disee.

Modos guardar el usuario y la contraseaEl primer modo sera utilizar variables, una para el nombre de usuario y otra para la contrasea, ambas de tipo String:String usuario1 = biggio; String contrasea1= 123456;

Esto se comparara de la siguiente manera: Primero las variables String estn definidas antes de iniciar el set up, cuando el usuario ingresa su nombre de usuario, por ejemplo biggio, el programa comparara biggio con cada nombre.If (readUsuario == usuario1) { // readUsuario ser el usuario leda por el arduinoIf (readContra == Contrasea1) { // readContra ser la contrasea leda por el arduino//Cdigo de acciones posteriores a la comprobacin;Este mtodo tiene la ventaja de ser fcil de entender y de declarar las variables, pero su desventaja est en que sera dificultoso al momento de implementar y adems requerira ms espacio para guardar las variables de los nombres de usuario y sus contraseas, por ejemplo si fueran 100 usuarios se tendran que hacer 100 condiciones if....else para cada uno y se tendran que declarar 200 variables.El segundo modo es colocar todos los usuarios en un array y sus contraseas en otro. Con este mtodo, para buscar un usuario, slo se utilizara un for y si encontrase al usuario cuyo nombre de usuario es igual al escrito, guardara la posicin y con un segundo for se comparara la contrasea que se ingres con la contrasea en la misma posicin en la que se ubicaba usuario, si son iguales, el usuario habr entrado al men.Los arrays se inicializaran de la siguiente forma:char* A[]={"aaaaaa","bbbbbb","cccccc"};char* B[]={"1234567","1234568","1234569};La lgica de bsqueda sera aproximadamente:for ( int j = 0 ; j