Alarma GSM 1. Componentes Arduino UNO Cable USB Módulo bluetooth Sensor ultrasonido Leds Zumbador o buzzer (opcional) Módulo GSM Placa de prototipado Cables jumpers 1
2. Explicación 1.- Sensor ultrasónico Este sensor es capaz de determinar la distancia de un objeto a través de ultrasonidos en un rango de 2 cm hasta 3 m. Cómo funciona? Un canal envía ultrasonidos (trigger) que rebotan en los objetos cercanos, sí, exactamente como el sistema de orientación de un murciélago. La onda provoca un eco que es captado por el segundo canal o echo. A través de este ultimo canal se envían datos digitales de ciertas variables y a partir de esos datos se calcula la distancia. La ecuación es: (Tiempo envío señal tiempo recepción) distancia = (340 m s ) 2 Vamos a explicar un poco el dispositivo: Podemos observar que tiene 4 pines, los siguientes: - VCC que se conecta directamente a la fuente de energía (5V) - Trig es el canal que envía ultrasonidos - Echo es el canal que recibe los ultrasonidos que rebotan en objetos - GND, la toma de tierra (0V) NOTA: La frecuencia de trabajo es de 40 Hz. 2
Cómo lo conectamos a la placa arduino? Conectamos el sensor tal y como se muestra en la imagen. Y escribimos el siguiente código: int pintrigger=8; //asignamos el pin 8 de la placa al trigger del sensor int pinecho=7; //lo mismo para el pin echo que recoge los sonidos void setup(){ pinmode(pintrigger,output);//inicializamos el pin que emite sonidos (trigger) como pin de salida, ya que este no recogerá datos, solo enviará pinmode(pinecho,input); //inicializamos el pin que recoge los sonidos tras rebotar (echo) como pin de entrada porque aquí si recogemos datos 2.- Creación de la conexión (bluetooth) Consta de 3 fases que debemos tener en mente: reconocimiento, enlace y transferencia. Existen 3 tipos de rangos de bluetooth dependiendo de su alcance: a) Clase 1. Alcance hasta 100 m. b) Clase 2. Alcance hasta 10 m. c) Clase 3. Alcanza solo 1 m. 3
Además tenemos dos tipos de velocidades de transferencia: a) Asíncrona. Máximo de 721 kbit/s en una dirección y 56 kbit/s en la opuesta, es decir, envía más rápido datos de lo que los recibe (o viceversa). b) Síncrona. Velocidad máxima de 432,6 kbit/s en ambas direcciones. 2.1.- El módulo bluetooth. El módulo que usaremos será el que se observa en la imagen superior (podéis encontrarlo en nuestra tienda en la sección de comunicaciones). El módulo consta de 4 pines: - PinTx = Encargado de transmitir los datos del exterior a la placa arduino. - PinRX = Pin que recibe la señal de la placa arduino. - Vcc = conectado a la fuente de energía - GND = Toma de tierra. Rojo = conexión a 5v Negro= conexión a tierra 4
Verde =Tx Azul =Rx Una vez conectada la placa, escribimos el código: char inbyte; //declaramos una variable de tipo char pero no la iniciamos int LED=13; //declaramos un led al pin 13 void setup(){ Serial.begin(9600);//se establece la velocidad de transmisión (baud rate), suele ser de 9600 habitualmente. pinmode(12,output); //se establece el pin 12 como pin de salida void loop(){ //se activa cuando se detecta escritura en el puerto serial void serialevent(){ while(serial.available()){ //mientras el serial esté funcionando inbyte=serial.read(); //se pone en una guarda en la variable inbyte lo que se está recibiendo del puerto serial, de modo que si envía el carácter 0 entonces se apaga el circuito, en nuestro caso un led. if( inbyte== 0 ){ digitalwrite(led,low); Serial.println( LOW ); //si se detecta el character 1 entonces el led se enciende if (inbyte == 1 ){ digitalwrite(led,high); Serial.println( HIGH ); 5
3.- El zumbador o buzzer Básicamente produce zumbidos continuos o intermitentes a una frecuencia. 4.- Módulo GSM Es un módulo en que se inserta una tarjeta SIM, actuará como si fuese un teléfono. La tarjeta SIM todos sabemos lo que es, pero es conveniente recordar que es una tarjeta que consta de un micro controlador y una memoria, es la encargada de identificar y autentificar el número de teléfono que está usando el terminal. La memoria la utiliza para almacenar información del estado de la red, que se envía desde la misma, como la identificación del área local (LAI, locaton área identify). Las redes de los operadores están divididas en áreas locales, cada una de las cuales tiene un número LAI único. El módulo posee un Sim900, esto es un procesador de alta prestación en los modos GSM/GPRS (ahora los explicaremos) del tipo cuatribanda para voz, SMS, datos y fax. Opera con los protocolos TCP/IP a partir de los comandos AT. - GSM/GPRS. Es un servicio general de paquetes que funciona por ondas en la longitud de radio y que son una extensión del sistema global para comunicaciones móviles (GSM en inglés), se basan en la transmisión de datos mediante paquetes. - Protocolos TCP/IP. Protocolo de control de transmisión (TCP) y protocolo de internet (IP), estos sirven para conectar ordenadores independientemente del sistema operativo que utilicen, como ordenadores centrales sobre redes de área local (LAN) y área extensa (WAN). - Comandos AT. Todos los módulos GSM presentan un conjunto de comandos AT especifico que sirve de interfaz para configurar y proporcionar instrucciones a los terminales y permiten acciones tales como la realización de llamadas de datos o de voz, leer y escribir en la agenda de contactos y enviar mensajes SMS. 6
A continuación vamos a ver como funciona el envío de sms, en código: #include SIM900.h #include <SoftwareSerial.h> #include sms.h //aquí hemos incluido las librerías necesarias para usar el módulo GSM SMSGSM sms; //declaramos el objeto sms de tipo SMSGSM int numdata; boolean started = false; char smsbuffer[160]; char n[20]; //declaramos las variables necesarias que vamos a usar después void setup(){ //conexión serial Serial.begin(9600); //establecemos velocidad de conexión Serial.println( GSM Shield testing. ); if(gsm.begin(2400)){ //se prueba la conectividad de la shield con el GSM Serial.println( \nstatus=ready ); started=true; // la placa esta lista y la inicializamos else Serial.println( \nstatus=idle ); if(started){ //se agrega a la librería de envo de mensajes ; if(sms.sendsms( numerodetelefono, Arduino SMS )){ Serial.println( \nsms sent OK ); 7