Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 10

a

Arduino + Ethernet + Thingspeak El Simple IOT


por Ivan | Novedades, Tutoriales | 0 Comentarios

Califica

1 Shares

Inicindose en el IOT
Hace unos pocos das realizamos un post en facebook, mencionando nuestro sistema casero de mediciones de
temperatura, humedad y presin baromtrica, que enva y muestra la informacin 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 presin baromtrica)
Sensor DHT11 (temperatura y humedad)
Cuenta en Thingspeak
Arduino Ide 1.5.x en adelante (es necesaria esta versin ya que tiene un mejor manejo de Strings que la versin 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 resolucin de medicin de temperatura (mide con 2 decimales) cosa que el DHT11 no hace. Pero el DHT11
es un sensor muy econmico y la medicin de Humedad es una buena informacin 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 informacin:
Name, aqu completamos el nombre que queremos que tenga nuestro canal
Description, aqu va la descripcin del canal.

converted by Web2PDFConvert.com

Tags, aqu van las palabras claves que nos van a ayudar a buscar nuestro canal en la pgina 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 ubicacin del sensor)
Make Public?, si lo tildamos, nuestro canal va a estar visible para todos, sino va a ser necesario ingresar con usuario y
contrasea para ver el canal.
URL y VideoID, es para darle ms informacin 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 informacin que le enviemos a la pgina, como en este caso tenemos 4
mediciones para mostrar, completamos hasta el field 4 en el siguiente orden:
1) Temperatura DHT
2) Humedad
3) Presin Baromtrica
4) Temperatura BMP
Buensimo, ya tenemos seteado nuestro canal. Pueden variar la informacin, el nombre o lo que deseen del canal, pero
despus va a ser necesario hacer algunas modificaciones al programa que va dentro del arduino. Vamos a ver que hay un
botn 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 nmeros, guarden ese nmero en algn lado porque lo necesitamos para configurar el arduino.
Con ese nmero, el servidor de ThingSpeak sabe que la informacin 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 libreras extras. La del BMP180 y la del DHT. La librera del Ethernet y wire viene por
default en arduino.
Si no tienen las libreras, aqu estn los links de descarga:
BMP180
DHT
Van a ver que hay una parte del cdigo que est en amarillo, all es donde tenemos que copiar la Write API Key, No se
olviden de esto. Adems para que tener en cuenta, el BMP180 tiene comunicacin I2C (usa los pines A4 y A5 del arduino
uno) y el DHT11 est conectado al pin digital 2.

Codigo:
//Libreras 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

// Parmetros para la conexin 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); // Direccin de ip, Al principio vamos a tratar de obtener una direccin por DHCP pero si no
funciona usamos esta configuracin.
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 direccin 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();
}

// Funcin 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();
}
}

// Funcin para iniciar la conexin con el servidor.


void startEthernet()
{
client.stop();
Serial.println(Connecting Arduino to network);
Serial.println();
delay(1000);
// Intenta conectarse por DHCP y si no funciona usa la configuracin por default.
if (Ethernet.begin(mac) == 0)
{
Serial.println(DHCP Failed, Using default config);

converted by Web2PDFConvert.com

Serial.println();
Ethernet.begin(mac, ip, gateway, subnet);
}
else
{
Serial.println(Arduino connected to network using DHCP);
Serial.println();
}
delay(1000);
}

// Funcin 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 informacin extra nos pueden llamar o enviar un mail.
Saludos desde Patagonia Tecnology.

converted by Web2PDFConvert.com

0 Comentarios

1 Iniciar sesin

Blog de Patagonia Tecnology

Compartir

Recomendar 1

ordenar por el mejor

Comienza la discusin...

TAMBIN EN BLOG DE PATAGONIA TECNOLOGY

Arduino Nano Drivers

Sensor de Humedad de Tierra Soil Moisture

1 comentario hace un ao

3 comentarios hace un ao

Alejandro Mascotto Hola gente. Me top con el


problema de los FTDI clones (no se si llamarlos
truchos) y despus

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 ao

1 comentario hace un ao

Josue Cazares Hola, estoy en la parte de


configurar por primera vez mi HC-05, pero no consigo
que la luz parpadee

Suscribirse

Agrega Disqus a tu sitio

damian hola tengo problemas para comunicarlo


con el mini pro, lo configuramos como leonardo como
me

Privacidad

Tu opinin nos ayuda!


Que cambiaras 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 donacin permite comprar nuevos equipos para revisarlos y postear la informacin mas necesaria para completar tu
proyecto de formar ms rpida.

Categoras
#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 categora
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


Diseado por TecnoGaming Labs | Potenciado por Elysium Servers Hosting

converted by Web2PDFConvert.com

También podría gustarte