Saludos taringueros, 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.
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.
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
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–> http://rogerbit.com/wprb/wp-content/uploads/2016/04/Sim900_datasheet.zip
Sitio del fabricante
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
//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
Para más info visita el link del proyecto en
Quieres ver más proyectos de inteligencia colectiva visita mi canal de youtube en https://www.youtube.com/c/Carlosvolt