Envio temperatura y Humedad por wifi


El chip CC3000 WiFi de Texas Instrument  que se puede comprar por unos 35 $   es un chip muy versátil que se puede utilizar para conectar sus proyectos en Internet. Sin embargo, la conexión del proyecto Arduino a un servidor web puede ser complicado: hay que saber cómo instalar y configurar un servidor web, y conoce un poco de HTML y PHP. Por suerte, hay otras soluciones para hacer las cosas más fáciles. 

En esta guía gentileza de Marc-Oliver Schwartz  , vamos a ver cómo conectar una temperatura y sensor de humedad a una plataforma en línea para objetos conectados, Xively. El sensor se conecta a una placa Arduino Uno, que también se comunicará con el tablero del desbloqueo Adafruit CC3000 para la conectividad WiFi. Pero en lugar de comunicarse con un servidor local, el chip CC3000 se comunicará directamente con el servidor Xively y enviar los datos a través de allí. Al final, usted será capaz de controlar los datos enviados por el servidor directamente desde el navegador, donde quiera que estés en el mundo, simplemente iniciando sesión en el sitio web Xively.
weather_Screen_Shot_2013-10-12_at_4.28.29_PM.png

La creación de su cuenta Xively

El primer paso es crear tu cuenta Xively, y configurarlo para este proyecto. Todo se hace a través de su interfaz gráfica, así que no hay necesidad de codificar nada en esta parte. En primer lugar, es necesario crear una cuenta.Simplemente haga clic en “Empezar”:
weather_login_1.jpeg
Y luego en “Inscríbete aquí”:
weather_Screen_Shot_2013-10-12_at_4.31.51_PM.jpg
Ahora puede introducir su información personal:
weather_Screen_Shot_2013-10-12_at_4.32.03_PM.jpg
Ahora que se ha creado su cuenta, puede crear un dispositivo para realizar un seguimiento de algunos datos. En primer lugar, haga clic en “Crear”:
weather_Screen_Shot_2013-10-12_at_4.32.37_PM.jpg
Y en “Agregar dispositivo”:
weather_Screen_Shot_2013-10-12_at_4.32.46_PM-2.jpg
Ahora es el momento de entrar en alguna información sobre el dispositivo:
weather_Screen_Shot_2013-10-12_at_4.45.19_PM.jpg
Por último, debe llegar a esta página correspondiente a su dispositivo. Lo que es importante en esta página es el ID de RSS que identifican el dispositivo, y la clave de API que identificar su cuenta. Tenga en cuenta estos dos valores, que los necesitará más adelante. Ahora, tenemos que crear “canales” para hacer un seguimiento de algunos datos.Haga clic en “Add Channel” para crear la primera de ellas:
weather_Screen_Shot_2013-10-12_at_4.47.53_PM.jpg
Ahora ingrese los detalles acerca de este primer canal para la temperatura. El nombre de los canales son importantes, vamos a utilizar en el sketch de Arduino.
weather_Screen_Shot_2013-10-12_at_4.49.04_PM.jpg
Ahora puede hacer lo mismo para el canal de Humedad. Al final, el resultado final será con esto en su página del dispositivo:
weather_Screen_Shot_2013-10-12_at_4.52.43_PM.png
Su cuenta Xively ya está listo para recibir algunos datos procedentes de la placa Arduino. Ahora vamos a centrarnos en cómo conectar la placa Arduino, el sensor de DHT 11, y el chip CC3000.

Conexiones

Todo el proyecto se basa en la plataforma Arduino, por lo que tendrá una placa Arduino. Realmente recomiendo el uso de la placa Arduino Uno para este proyecto, ya que es una de la única junta que sea compatible con la biblioteca CC3000 en el momento de este tutorial fue escrito.Entonces, usted necesita el tablero del desbloqueo Adafruit CC3000 para hacer la comunicación Wi-Fi, y la temperatura DHT11 y sensor de humedad (también se puede utilizar el DHT22 o los sensores AM2302 que son casi idénticos a cablear, pero de mejor calidad). Usted también necesita una resistencia de 10K Ohm para ser utilizado con el sensor de DHT.Por último, se necesita un tablero y algunos cables de puente para hacer las conexiones entre las diferentes partes.

Sensor DHT11

El sensor de DHT es muy fácil de conectar: ​​sólo tiene que conectar el pin número 1 a 5V de Arduino, el número PIN de 4 a GND y el pin número 2 con el pin de Arduino 7. Por último, poner la resistencia de 10K entre las patillas del sensor número 1 y 2.

weather_temp-4.jpg

CC3000 del tablero del desbloqueo

La configuración del hardware del tablero del desbloqueo CC3000 es relativamente fácil. Conecte el pin IRQ de la tarjeta CC3000 para fijar el número 3 de la placa Arduino, VBAT al pin 5, y CS al pin 10.

Entonces, es necesario conectar los pines SPI de la junta a los pines correspondientes en la placa Arduino: MOSI, MISO, y CLK ir a los pines 11,12 y 13, respectivamente.

Por último, usted tiene que cuidar de la fuente de alimentación: Vin va al Arduino 5V y GND a GND.

weather_temp-9.jpg
El siguiente cuadro resume las conexiones de hardware:
cc3000_weather.jpg

Boceto Arduino

El boceto Arduino para este proyecto consiste en la inicialización del sensor de DHT 11 y el chip CC3000 WiFi, y luego en la ejecución de un bucle que mide la temperatura y la humedad, enviar los datos al servidor Xively, y repetirse cada 10 segundos. Se inicia con la importación de las bibliotecas correctas:
  1. # Include <Adafruit_CC3000.h>
  2. # Include <ccspi.h>
  3. # Include <SPI.h>
  4. # Include <string.h>
  5. # Include “utilidad / Debug.h”
  6. # Include “DHT.h”
  7. # Include <stdlib.h>
Podemos entonces definir los pines correctos para el tablero del desbloqueo CC3000:
  1. # Define ADAFRUIT_CC3000_IRQ 3
  2. # Define ADAFRUIT_CC3000_VBAT 5
  3. # Define ADAFRUIT_CC3000_CS 10
Y el PIN correcto para el sensor de DHT, así como el tipo de sensor:
  1. # Define DHTPIN 7
  2. # Define DHTTYPE DHT11
Podemos entonces crear la instancia CC3000:
  1. Adafruit_CC3000 CC3000 = Adafruit_CC3000 (ADAFRUIT_CC3000_CS,
  2. ADAFRUIT_CC3000_IRQ, ADAFRUIT_CC3000_VBAT, SPI_CLOCK_DIV2);
Y la instancia sensor DHT:
  1. DHT DHT (DHTPIN, DHTTYPE);
El siguiente conjunto de parámetros es algo que tu tienes que modificar tus parámetros: el nombre de la red Wi-Fi, su contraseña y el tipo de seguridad.
  1. # Define WLAN_SSID “yourNetwork”
  2. # Define WLAN_PASS “yourPass”
  3. # Define WLAN_SECURITY WLAN_SEC_WPA2
El siguiente conjunto de parámetros se refiere Xively. Si recuerdas, te pedí que escribir algunos parámetros de su cuenta Xively: su clave de API y sus feedID. Solo tienes que introducir en estos campos, se utiliza para hacer la solicitud al servidor Xively.
  1. # Define WEBSITE “api.xively.com”
  2. # Define api_key “yourAPIKey”
  3. # Define feedID “yourFeedID”
Ahora, entramos en el setup () parte del dibujo. Como vamos a conectar y desconectar de la red WiFi cada vez que queremos enviar datos, el setup () vamos a incluir sólo la inicialización del chip CC3000:
  1. Serial.println (F (“\ nInitializing …”));
  2. if (! cc3000.begin ())
  3. {
  4. Serial.println (F (“No se pudo iniciar () Compruebe el cableado?”));
  5. mientras que (1);
  6. }
Luego, en la parte loop () del boceto, necesitamos conectar a la red:
  1. cc3000.connectToAP (WLAN_SSID, WLAN_PASS, WLAN_SECURITY);
Y para obtener una dirección IP para el chip CC3000:
  1. while (! cc3000.checkDHCP ())
  2. {
  3. de retardo (100);
  4. }
A continuación, tenemos que obtener la dirección IP del sitio web Xively. Por suerte, hay una función para hacer exactamente eso en la biblioteca CC3000: gethostbyname.
  1. ip = 0;
  2. Serial.print (WEBSITE); Serial.print (F (“->”));
  3. while (ip == 0) {
  4. if (! cc3000.getHostByName (SITIO WEB, Y ip)) {
  5. Serial.println (F (“No se pudo resolver!”));
  6. }
  7. delay (500);
  8. }
  9. cc3000.printIPdotsRev (ip);
Ahora podemos medir la temperatura y la humedad mediante la instancia de DHT, y convertir estos valores en números enteros:
  1. flotar h = dht.readHumidity ();
  2. flotar t = dht.readTemperature ();
  3. temperatura int = (int) t;
  4. int humedad = (int) h;
Este es ahora el momento de formatear los datos para el sitio web Xively. Hay dos cosas que hacer: primero, tenemos que dar formato a los datos en una variable String que contendrá la información en el formato JSON. Puede parecer complicado, pero el sitio web Xively tiene muchos tutoriales para dar formato a los datos correctamente.También necesitamos saber la longitud (en número de caracteres) de los datos para que podamos ponerlo en la petición HTTP.
  1. int longitud = 0;
  2. Datos String = “”;
  3. data = Datos + “\ n” + “{\” versión \ “: \” 1.0.0 \ “, \” flujos de datos \ “: [{\” id \ “: \” Temperatura \ “, \” valor_actual \ ” : \ “” + String (temperatura) + “\”}, “
  4. + “{\” Id \ “: \” Humedad \ “, \” valor_actual \ “: \” “+ String (humedad) +” \ “}]}”;
  5. longitud = data.length ();
Ahora podemos conectar con el servidor Xively con:
  1. Cliente Adafruit_CC3000_Client = cc3000.connectTCP (ip, 80);
Cuando se conecta el cliente, podemos enviar la solicitud al servidor. Esta es una petición HTTP PUT típica, donde especificamos el feedID, la clave de la API, y enviar los datos al final de la solicitud.
  1. si (client.connected ()) {
  2. Serial.println (“Connected”);
  3. client.println (“PUT / v2/feeds /” + String (feedID) + “. json HTTP/1.0”);
  4. client.println (“Host: api.xively.com”);
  5. client.println (“X-ApiKey:” + String (api_key));
  6. client.println (“Content-Length:” + String (longitud));
  7. client.print (“Connection: close”);
  8. client.println ();
  9. client.print (datos);
  10. client.println ();
  11. }
Una vez enviado el pedido, leemos la respuesta desde el servidor para asegurarse de que todo está bien, y nosotros la imprimimos en el monitor de serie. Esto es ser útil al tratar de depurar el proyecto.
  1. while (client.connected ()) {
  2. while (client.available ()) {
  3. char c = client.read ();
  4. Serial.print (c);
  5. }
  6. }
Después de la respuesta se ha recibido desde el servidor, cerramos la conexión:
  1. client.close ();
Y desconectarse de la red Wi-Fi:
  1. cc3000.disconnect ();
Debido a que la temperatura y la humedad son los valores slow-cambiando, podemos leer estos valores y enviarlos a través de cada Xively sólo 10 segundos. Esto se hace mediante el uso de un retraso:
  1. delay (10000);
Por último, el código completo se puede encontrar en el repositorio de GitHub de este proyecto .

Usando Xively

Ahora que el sketch de Arduino se ha completado, puede cargar el boceto a tu placa Arduino, y probar el proyecto.Asegúrese de que se abra la página correspondiente a su dispositivo en Xively. Ahora puede abrir su monitor de serie y deberá ver el Arduino conectarse a su red, la preparación de la solicitud, y la conexión a la página web Xively. Si todo va bien, debería ver esta respuesta del servidor Xively:
Copiar código
  1. HTTP/1.1 200 OK
  2. Fecha: Lunes, 14 de octubre 2013 17:44:20 GMT
  3. Content-Type: application / json; charset = UTF-8
  4. Content-Length: 0
  5. Connection: close
  6. X-Request-Id: 55c792d07f4a679dfb8a1a09141264d7c98eea1e
  7. Cache-Control: max-age = 0
  8. Vary: Accept-Encoding
Y, por último, echar un vistazo a su página Xively en su navegador. Deberías ver lo que envías con éxito alguna información al servidor Xively y la temperatura y la humedad se debe mostrar en esta página:
weather_Screen_Shot_2013-10-14_at_7.44.43_PM.png
Al cabo de algunas mediciones, también debe tener los gráficos que se muestran en la página del dispositivo:
weather_Screen_Shot_2013-10-16_at_4.41.59_PM.png
Por último, también un video que muestra los diferentes aspectos del proyecto:
Por supuesto, usted puede utilizar este tutorial para conectar otros sensores a Xively: sensores de movimiento, interruptores de contacto, sensores de luminosidad, … las posibilidades son infinitas, así que no dude en experimentar y compartir sus resultados!
Anuncios

Un comentario el “Envio temperatura y Humedad por wifi

  1. Felipe dice:

    Hola , tengo una duda … a diferencia de la placa Ethernet , no se puede crear un servidorweb en la misma placa ?

    Me gusta

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s