Buenos días, en el tutorial anterior habíamos visto los “primeros pasos con el módulo GSM sim900” donde daba algunos tips importante para empezar con el mismo, y no morir en el intento.
Hablamos de como hacer llamadas, enviar y recibir mensajes de texto, mediante comandos AT con algún programa como el terminal serial de arduino y el software docklight, ideal para hacer pruebas con microcontroladores a través del protocolo rs-232.
En el video publicado en youtube, había consultado que proyecto se podían hacer, con este módulo, y gratamente recibí varias propuestas.
Entre ellas, hacer una alarma comunitaria, conectar el módulo a una central de alarmas para el envío de SMS y e-mail, subir datos a una base de datos SQL, subir datos a un servidor, que es justamente de lo que vamos hablar en este tutorial.
El principio de funcionamiento es simple, leer un sensor de temperatura el ds18b20, luego mediantes algunos comandos AT, lograr una conexión a internet y subir estos datos a thingspeak.com
CREAR UN CANAL EN THINGSPEAK
Vamos an ecesitar crear una cuenta en thingspeak y suponiendo que ya la tenemos vamos a crear un canal
Nos registramos con nuestra cuenta
Hacemos click en “New Channel”
Inventamos un nombre para el canal
Hacemos click en “Save Chanel”
Y listo ya tenemos creado nuestra canal.
Ahora vamos a pestaña API Keys y copiamos el “Write API Key”
Nos dirijimos al código fuente de arduino en “https://api.thingspeak.com/update?api_key=XXXXXXXXXXX&field1=0” modificamos las “X” por el API Key que obtuvimos.
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 “)
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
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 utilizado en este proyecto utiliza los pines 7 y 8 para la comunicación el arduino uno, aunque tiene unos jumper que permiten utilizar los pines 0 y 1 del arduino si se requiere.
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 69 70 71 72 73 74 75 76 77 78 |
#include <SoftwareSerial.h> #include <String.h> SoftwareSerial Sim900Serial(7, 8);//Configarión de los pines serial por software // 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); float temperatura=0.00; void setup() { Sim900Serial.begin(19200);//Arduino se comunica con el SIM900 a una velocidad de 19200bps Serial.begin(19200);//Velocidad del puerto serial de arduino sensors.begin();//Inicializamos el sensor de temperatura //Encendido del módulo por sofware digitalWrite(9, HIGH); delay(1000); digitalWrite(9, LOW); delay(20000);//Tiempo prudencial para el escudo inicie sesión de red con tu operador } void loop(){ comandosAT();//Llama a la función comandosAT if(Sim900Serial.available())//Verificamos si hay datos disponibles desde el SIM900 Serial.write(Sim900Serial.read());//Escribir datos } void comandosAT(){ Sim900Serial.println("AT+CIPSTATUS");//Consultar el estado actual de la conexión delay(2000); Sim900Serial.println("AT+CIPMUX=0");//comando configura el dispositivo para una conexión IP única o múltiple 0=única delay(3000); mostrarDatosSeriales(); Sim900Serial.println("AT+CSTT=\"gprs.movistar.com.ar\",\"wap\",\"wap\"");//comando configura el APN, nombre de usuario y contraseña."gprs.movistar.com.ar","wap","wap"->Movistar Arg. delay(1000); mostrarDatosSeriales(); Sim900Serial.println("AT+CIICR");//REALIZAR UNA CONEXIÓN INALÁMBRICA CON GPRS O CSD delay(3000); mostrarDatosSeriales(); Sim900Serial.println("AT+CIFSR");// Obtenemos nuestra IP local delay(2000); mostrarDatosSeriales(); Sim900Serial.println("AT+CIPSPRT=0");//Establece un indicador '>' al enviar datos grados(); delay(3000); mostrarDatosSeriales(); Sim900Serial.println("AT+CIPSTART=\"TCP\",\"api.thingspeak.com\",\"80\"");//Indicamos el tipo de conexión, url o dirección IP y puerto al que realizamos la conexión delay(6000); mostrarDatosSeriales(); Sim900Serial.println("AT+CIPSEND");//ENVÍA DATOS A TRAVÉS DE una CONEXIÓN TCP O UDP delay(4000); mostrarDatosSeriales(); String datos="GET https://api.thingspeak.com/update?api_key=0VA742HPFJVESV9U&field1=0" + String(temperatura); Sim900Serial.println(datos);//Envía datos al servidor remoto delay(4000); mostrarDatosSeriales(); Sim900Serial.println((char)26); delay(5000);//Ahora esperaremos una respuesta pero esto va a depender de las condiones de la red y este valor quizá debamos modificarlo dependiendo de las condiciones de la red Sim900Serial.println(); mostrarDatosSeriales(); Sim900Serial.println("AT+CIPSHUT");//Cierra la conexión(Desactiva el contexto GPRS PDP) delay(5000); mostrarDatosSeriales(); } void mostrarDatosSeriales()//Muestra los datos que va entregando el sim900 { while(Sim900Serial.available()!=0) Serial.write(Sim900Serial.read()); } void grados(){//Función para la lectura del sensor de temepratura 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"); } |
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″]
VIDEO RECOMENDADO










Buena tarde amigo me podrías ayudar de favor, yo tengo el módulo Sim800L (módulo de color rojo) y debo de mandar una serie de datos a un servidor (para las pruebas pretendo ocupar el ThingSpeak), pero no logro comunicarme con el servidor, hice pruebas con tu código pero no funcionó (creo que es porque no tengo el shield sim900) y aparte realice otro código pero nada, me puedes ayudar de favor?