a
U
Arduino + Ethernet + Thingspeak El Simple IOT por Ivan | Novedades, Tutoriales | 0 Comentarios
4
0
Califica
1 Shares
1
Iniciándose en el IOT Hace unos pocos días realizamos un post en facebook, mencionando nuestro sistema casero de mediciones de temperatura, humedad y presión barométrica, que envía y muestra la información utilizando el servicio de Thingspeak.com. Aquí les vamos a mostrar el tutorial para poder realizar lo mismo ustedes en sus casas.
Materiales: Arduino Uno Ethernet Shield R2 Sensor BMP180 (temperatura y presión barométrica) Sensor DHT11 (temperatura y humedad) Cuenta en Thingspeak Arduino Ide 1.5.x en adelante (es necesaria esta versión ya que tiene un mejor manejo de Strings que la versión 1.0.6)
Para quienes se pregunten por que tenemos dos sensores que miden los mismos valores, es porque el sensor BMP180 tiene una mejor resolución de medición de temperatura (mide con 2 decimales) cosa que el DHT11 no hace. Pero el DHT11 es un sensor muy económico y la medición de Humedad es una buena información para mostrar.
Bueno arrancamos: Lo primero que tenemos que hacer es crearnos una cuenta en Thingspeak.com, una vez creada la cuenta, nos creamos un canal (Channel) y completamos la siguiente información: Name, aquí completamos el nombre que queremos que tenga nuestro canal Description, aquí va la descripción del canal.
converted by Web2PDFConvert.com
Tags, aquí van las palabras claves que nos van a ayudar a buscar nuestro canal en la página web. Latitude, la latitud de donde está el sensor ubicado. Longitude, la longitud de donde está ubicado el sensor. (con estos dos valores, en el canal se va a agregar un mapa mostrando la ubicación del sensor) Make Public?, si lo tildamos, nuestro canal va a estar visible para todos, sino va a ser necesario ingresar con y contraseña para ver el canal. URL y VideoID, es para darle más información al canal, el url es por si hay un blog sobre este canal y el video para que en el canal se muestre el video que uno desee (claramente relativo a este canal) Field 1/8, aquí es donde se va a mostrar la información que le enviemos a la página, como en este caso tenemos 4 mediciones para mostrar, completamos hasta el field 4 en el siguiente orden: 1) Temperatura DHT 2) Humedad 3) Presión Barométrica 4) Temperatura BMP Buenísimo, ya tenemos seteado nuestro canal. Pueden variar la información, el nombre o lo que deseen del canal, pero después va a ser necesario hacer algunas modificaciones al programa que va dentro del arduino. Vamos a ver que hay un botón arriba en las solapas del canal que dice “Api Key”, le damos un click y nos va a mostrar en pantalla “Write API Key” y muchas letras y números, guarden ese número en algún lado porque lo necesitamos para configurar el arduino. Con ese número, el servidor de ThingSpeak sabe que la información que le está enviando nuestro arduino pertenece a nuestro canal y que la tiene que mostrar en ese canal.
Pasemos al arduino: Tenemos que tener instaladas 2 librerías extras. La del BMP180 y la del DHT. La librería del “Ethernet” y “wire” viene por default en arduino. Si no tienen las librerías, aquí están los links de descarga: BMP180 DHT Van a ver que hay una parte del código que está en amarillo, allí es donde tenemos que copiar la “Write API Key”, No se olviden de esto. Además para que tener en cuenta, el BMP180 tiene comunicación I2C (usa los pines A4 y A5 del arduino uno) y el DHT11 está conectado al pin digital 2.
Codigo: //Librerías necesarias para el funcionamiento de todos los componentes. #include <SPI.h> #include <Ethernet.h> #include <SFE_BMP180.h> #include <Wire.h> #include “DHT.h”
#define DHTPIN 2 #define DHTTYPE DHT11
// Parámetros para la conexión Ethernet local byte mac[] = { 0xD4, 0x28, 0xB2, 0xFF, 0xA0, 0xA1 }; // Mac address, tiene que ser única en la red local converted by Web2PDFConvert.com
IPAddress ip(192,168,1,177); // Dirección de ip, Al principio vamos a tratar de obtener una dirección por DH pero si no funciona usamos esta configuración. IPAddress gateway(192,168,1, 1); // Gateway – Puerta de enlace IPAddress subnet(255, 255, 255, 0); // Mascara de red
// Seteo de ThingSpeak char thingSpeakAddress[] = “api.thingspeak.com”; // Esta es la dirección del servidor al cual vamos a postear los datos. String writeAPIKey = “xxxxxxxxxxxxxx”; // Una vez creado un canal necesitamos saber la Key de ese canal y copiarla aquí. const int updateThingSpeakInterval = 16 * 1000; // Intervalo de tiempo, cada cuanto posteamos en el servidor.
// Variables long lastConnectionTime = 0; boolean lastConnected = false; int failedCounter = 0; char Status; double T1,P; //BMP180 double T2,H; //DHT11
// Configuraciones para los sensores SFE_BMP180 BMP; DHT dht(DHTPIN, DHTTYPE);
// Iniciamos el Ethernet Shield EthernetClient client;
void setup() { // Iniciamos el serial para poder utilizarlo como puerto de debug. Serial.begin(9600);
// Iniciamos los sensores. BMP.begin(); dht.begin();
startEthernet(); } void loop() converted by Web2PDFConvert.com
{ // Imprimimos por serial lo que nos haya devuelto el servidor. if (client.available()) { char c = client.read(); Serial.print(c); } // Nos desconectamos de Thingspeak if (!client.connected() && lastConnected) { Serial.println(“…disconnected”); Serial.println(); client.stop(); }
// Si estamos desconectados del servidor y paso suficiente tiempo, tenemos que volver a subir los nuevos datos. if(!client.connected() && (millis() – lastConnectionTime > updateThingSpeakInterval)) { Leersensores(); updateThingSpeak(“1=”+String(T2, DEC)+”&2=”+String(H, DEC)+”&3=”+String(P, DEC)+”&4=”+String(T1, DEC)); } if (failedCounter > 3 ) {startEthernet();} lastConnected = client.connected(); }
// Función para enviar los datos a el servidor. void updateThingSpeak(String tsData) { if (client.connect(thingSpeakAddress, 80)) { client.print(“POST /update HTTP/1.1\n”); client.print(“Host: api.thingspeak.com\n”); client.print(“Connection: close\n”); client.print(“X-THINGSPEAKAPIKEY: “+writeAPIKey+”\n”); client.print(“Content-Type: application/x-www-form-urlencoded\n”); client.print(“Content-Length: “); client.print(tsData.length()); converted by Web2PDFConvert.com
client.print(“\n\n”); client.print(tsData); lastConnectionTime = millis(); if (client.connected()) { Serial.println(“Connecting to ThingSpeak…”); Serial.println(); failedCounter = 0; } else { failedCounter++; Serial.println(“Connection to ThingSpeak failed (“+String(failedCounter, DEC)+”)”); Serial.println(); } } else { failedCounter++; Serial.println(“Connection to ThingSpeak Failed (“+String(failedCounter, DEC)+”)”); Serial.println(); lastConnectionTime = millis(); } }
// Función para iniciar la conexión con el servidor. void startEthernet() { client.stop(); Serial.println(“Connecting Arduino to network…”); Serial.println(); delay(1000); // Intenta conectarse por DH y si no funciona usa la configuración por default. if (Ethernet.begin(mac) == 0) { Serial.println(“DH Failed, Using default config”);
converted by Web2PDFConvert.com
Serial.println(); Ethernet.begin(mac, ip, gateway, subnet); } else { Serial.println(“Arduino connected to network using DH”); Serial.println(); } delay(1000); }
// Función para leer los sensores y almacenarlos en las variables globales. void Leersensores() { Status = BMP.startTemperature(); if (Status != 0) delay(Status); BMP.getTemperature(T1); Status = BMP.startPressure(3); if (Status != 0) { delay(Status); BMP.getPressure(P,T1); } T2 = dht.readTemperature(); H = dht.readHumidity(); }
Imagenes:
converted by Web2PDFConvert.com
Bueno aquí está todo, si necesitan alguna información extra nos pueden llamar o enviar un mail. Saludos desde Patagonia Tecnology.
converted by Web2PDFConvert.com
0 Comentarios
1 Iniciar sesión
Blog de Patagonia Tecnology
⤤ Compartir
Recomendar 1
ordenar por el mejor
Comienza la discusión...
TAMBIÉN EN BLOG DE PATAGONIA TECNOLOGY
Arduino Nano Drivers
Sensor de Humedad de Tierra Soil Moisture
1 comentario • hace un año
3 comentarios • hace un año
Alejandro Mascotto — Hola gente. Me topé con el problema de los FTDI clones (no se si llamarlos truchos) y después …
Juan Pablo — Buenas, me alegro que alguien se haya tomado tantas molestias en describirlo, yo compre el moisture …
Comunicacion Bluetooth con HC-05
Modulo Bluetooth HC-06
13 comentarios • hace un año
1 comentario • hace un año
Josue Cazares — Hola, estoy en la parte de configurar por primera vez mi HC-05, pero no consigo que la luz parpadee …
✉ Suscribirse
d
Agrega Disqus a tu sitio
damian — hola tengo problemas para comunicarlo con el mini pro, lo configuramos como leonardo como me …
Privacidad
Tu opinión nos ayuda! Que cambiarías en el BLOG? El contenido es muy pobre Nada tiene sentido No encuentro la info buscada Falta ejemplos de codigo Me gusta como esta Ni me gasto en contestar Vote View Results
Tambien te puede interesar
IOT Simple Monitor
BMP085 Sensor De Tempreatura y Presion Atmosferica
converted by Web2PDFConvert.com
DHT22 Sensor de tempertatura y humedad
Ethernet Shield R3
+Visitadas Comunicacion Bluetooth co... 13.083 vistas
Control de Motores Paso a... 10.973 vistas
10 app para controlar tu ... 9.829 vistas
Tutorial Nrf24L01 8.770 vistas
IC Atmega328 4.449 vistas
Ayudanos a crecer! Tu donación permite comprar nuevos equipos para revisarlos y postear la información mas necesaria para completar tu proyecto de formar más rápida.
Categorías #Hackaton Adaptadores Alimentacion Arduino Cables CNC Display Domotica Iluminacion Impresora 3D Inalambrico Kit Arduino LCD Led Modulos Modulos de Relee Modulos de Relee converted by Web2PDFConvert.com
Motores Novedades Otros Proyectos Rovers Sensores Shields Sin categoría Sistemas Embebidos Tutoriales
Top Rated Comunicacion Bluetooth con HC-...
19 2 Tutorial Nrf24L01
12 2 Control de Motores Paso a Paso...
8 2 Arduino Mega 2560
7 1 Manejando motores de alta corr...
5 1 powered by
ratingwidget
Follow Us
2.4k Follows
Facebook 1.8k Followers
Twitter 371 Followers
Google+ 230 Followers
YouTube 0 Followers
LinkedIn 0 Followers
Diseñado por TecnoGaming Labs | Potenciado por Elysium Servers Hosting
converted by Web2PDFConvert.com