Saludos internautas en el nombre de rogerbit.com y CarlosVolt Tutoriales, en este proyecto vamos a construir un sistema de temperatura, el cual tiene un rango de aplicaciones muy amplias, desde el uso hobbysta, smarthome e inclusive aplicaciones comerciales e industriales.
Vamos a desarrollar un sistema completo de notificaciones de exceso de temperatura, mediante dos avisos uno sonoro con la ayuda de un buzzer y el otro mediante un llamado telefónico con el módulo sim900.
Tal vez pueda interesarte proyectos en arduino, pic, robótica, telecomunicaciones, suscribete en http://www.youtube.com/user/carlosvolt?sub_confirmation=1 mucho videos con código fuentes completos y diagrama
El sensor DS18B20 (18ds20) es un sensor muy popular en el mundo Maker, debido a su bajo precio, su amplio rango de temperatura -55 a 125 ° C (-67 ° F a +257 ° F), pero quizá lo que lo hace más atractivo es el hecho que viene en un encapsulado metálico y es sumergible.
Este sensor a sido donado para mi canal por DFROBOT www.dfrobot.com
El funcionamiento del sistema es el siguiente, si se excede la temperatura (por ejemplo de 25 grados celsuis) el dispositivo activará una alerta sonoro mediante un buzzer, pero adicional mente hará un llamado telefónico a un número predeterminado, con el objetivo de avisar que se excedido la temperatura límite configurada.
Vamos a utilizar el arduino uno, quien se encargará de comandar todas alas acciones del proyecto, este leerá la temperatura enviada por el sensor y en base a ese valor hará sonar la alarma y cursará el llamado telefónico.
El módulo sim900 es un módulo GSM muy popular, este será nuestro módulo de comunicaciones y se montará encima del arduino uno, los pines 2 y 3 están reservados para el puerto virtual serial y los pines 0 y 1 el puerto serial por hardware. En el pin 4 se conectará el sensor de temperatura y el pin 5 está reservado para el buzzer.
Veamos el hardware que vamos a usar:
Kit de sensor impermeable DS18B20
INTRODUCCIÓN
Este sensor de temperatura a prueba de agua es el DS18B20. Este kit de sensor de temperatura impermeable utiliza la misma sonda – sonda DS18B20 AS. Contiene una sonda con un módulo resistivo. Así que es fácil de conectar en la placa Arduino.
El sensor de temperatura DS18B20 proporciona lecturas de temperatura de 9 a 12 bits (configurables) a través de una interfaz de 1 hilo, de modo que sólo se necesita conectar un cable (y tierra) desde un microprocesador central. Compatible con sistemas 3.0-5.5V.
ESPECIFICACIÓN
- Voltaje de funcionamiento: 3.0 ~ 5.5V
- ± 0,5 ° C Precisión de -10 ° C a + 85 ° C
- Rango de temperatura útil: -55 a 125 ° C (-67 ° F a +257 ° F)
- Resolución seleccionable de 9 a 12 bits
- Utiliza interfaz de 1 hilo, requiere sólo un pin digital para la comunicación
- ID único de 64 bits grabado en un chip
- Varios sensores pueden compartir un pin
- Sistema de alarma de límite de temperatura
- El tiempo de consulta es inferior a 750ms
- Interfaz de 3 hilos:
- Tipo A
- Cable rojo – VCC
- Cable negro – GND
- Cable amarillo – DATA
- Tipo B
- Cable rojo – VCC
- Cable amarillo – GND
- Cable verde – DATA
- Tipo A
- Tubo de acero inoxidable de 6 mm de diámetro por 35 mm (1,34 “) de largo
- Diámetro del cable: 4mm (0.16 “)
- Longitud: 90cm (35.43 “)
Sim900
Este es un módulo gsm cuatri banda, con la posibilidad de realizar y recibir llamados telefónicos, pero también puede enviar y recibir mensajes de texto, y lograr una conexión a Internet, muy útil para enviar datos a un servidor, entra otras funciones que no voy a detallar.
Yo uso el módulo sim900 del fabricante epalsite, aunque muchos fabricantes y cada uno le agrega su toque personal y veces genera incompatibilidades con algunos códigos fuentes y toca hacer retoques para que pueden funcionar correctamente. Pero no deja de ser un buen módulo para proyecto M2M y para IOT.
Tiene una ranura para colocar un sim de nuestra operadora, se le puede colocar una pila para mantener la hora ya que posee un rtc(real time clock) un reloj interno, y también un lector de memorias micro sd, por si necesitamos almacenar datos en una memoria micro sd, soporta comandos at.
Especificaciones Sim900
SIM900 Features
- Quad-Band 850/ 900/ 1800/ 1900 MHz
- Low power consumption: 1.0mA(sleep mode&BS-PAMFRMS=9)
- Operation temperature: -40°C to +85 °C
- GPRS class 10: max. 85.6 kbps (downlink)
- Embedded TCP/UDP protocol
- RTC backup
- PWM
- ADC
Features of this shield
- Compatible with Arduino
- SD card slot, can be disabled by the jumper
- Two in one Earphone Socket
- Software and Hardware Serial port:Can communicate with Arduino through the Software serial port(D2/D3)or the Hardware serial port(D0/D1)
- FTDI interface. You can use the PC or other host which have an USB port(through FT232RL board) to debug it.
- Battery slot for RTC. This is useful if you want the time of the module doesn’t lose when it is Power Off.
- Software or Hardware Power ON/OFF. You can Power On/Off SIM900 through an IO of Arduino or the “PWRKEY” button on the board.
Hoja de datos–> Sim900_datasheet
Sitio del fabricante http://wiki.epalsite.com/index.php?title=SIM900_Quad-Band_GPRS_shield_with_Micro_SD_card_slot
Arduino Uno
El pinout del arduino uno es totalmente compatible con el arduino uno, así que se puede acoplar directamente el sim900 sin ningún inconveniente de compatibilidad. El sim900 utlizado en este proyecto utiliza los pines 2 y 3 para la comunicación el arduino uno, aunque tiene unos jumper que permiten utilizar los pines 0 y 1 del arduino si se requiere.
Buzzer
El buzzer se alimenta con 5 voltios, pero recuerden que tiene polaridad
Código Fuente
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
//Suscribete en http://www.youtube.com/user/carlosvolt?sub_confirmation=1 //Grupo en Facebook https://www.facebook.com/groups/RogerBit/ #include <SoftwareSerial.h>//Crea un puerto serial virtual por software SoftwareSerial Sim900Serial(2, 3);//El pin 2 y 3 seran utilizados para rx y tx // Incluya las bibliotecas que necesitamos para controlar el sensor ds18b20 #include <OneWire.h> #include <DallasTemperature.h> // El cable de datos está conectado al puerto 4 del Arduino #define ONE_WIRE_BUS 4 //Configure una instancia oneWire para comunicarse con cualquier dispositivo OneWire OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(&oneWire); //Declaración de variables float temperatura=0.00; int i=0; unsigned long numero=xxxxxxxxx;//Calocar el número de telefono al que se quiere llamar void setup() { pinMode(5, OUTPUT); Sim900Serial.begin(19200); // velocidad de transmisión SIM900 Serial.begin(19200); // velocidad de transmisión del arduino sensors.begin();//Inicializamos el sensor delay(500); } void loop() { grados(); //Si la temepratura es mayor a 25 if(temperatura>25.00){ Sim900Serial.print("ATD"); //ATD es un comando para hacer llamados de voz Sim900Serial.print(numero);//Al numero que se quiere llamar Sim900Serial.println(";");//Comando ATD para llamar a un número telefonico es importante el ";" delay(1000); Serial.println("Llamando...");//Se imprime la leyenda Llamando... while(i<=20){//Se repite 20 veces delay(850);//Retardo de un segundo //Hace zonar un buzzer durante 20 segundos digitalWrite(5, HIGH); delay(150); digitalWrite(5, LOW); i++;//Incrementamos i de a uno hasta que no se cumpla la condición grados(); } //Corta la llamado después de un tiempo if(i>1){ Sim900Serial.println("ATH");//ATH es un comando AT para cortar el llamado Serial.println("Corte de llamada");//Se imprime en el terminal serial "Corte llamado" i=0; //Esperamos 2 minutos antes de un nuevo llamado while(i<120){//Se repite 120 veces delay(1000);//Retardo de un segundo i++;//Incrementamos d de a uno hasta que no se cumpla la condición Serial.print("Listo para llamar en 120 segundos, trancurridos: "); Serial.println(i); grados(); } i=0; } } } void grados(){ sensors.requestTemperatures(); // Envía el comando para obtener temperaturas temperatura=sensors.getTempCByIndex(0);/// getTempCByIndex(0) se refiere al primer //sensor si es que tubieramos más de uno conectado en el cable Serial.print("La temperatura es: "); Serial.print(temperatura);//Imprime la temperatura Serial.println(" Grados centigrados"); } |
Bueno esto es todo amigos, recomiendo ver el video donde podrán ver como conectar todo el harware en un par de minutos, si quieren comprar el sensor con su interface lo pueden hacer en el siguiente link Waterproof DS18B20 Sensor Kit
Este proyecto no hubiese sido posible sin el apoyo de DFROBOT
Lo mejor está por venir…
Romeo – an Arduino Robot Control Board with Motor Driver
Gravity: Analog High Temperature Sensor
Beetle BLE – The smallest Arduino bluetooth 4.0 (BLE)
Tal vez pueda interesarte proyectos en arduino, pic, robótica, telecomunicaciones, suscribete en http://www.youtube.com/user/carlosvolt?sub_confirmation=1 mucho videos con código fuentes completos y diagrama
SUSCRIBETE A NUESTROS BOLETINES, RECIBE EN TU CORREO LAS NOTICIAS MÁS DESTACADAS, SÓLO INGRESANDO TU CORREO ELECTRÓNICO
[wysija_form id=”1″]