Internet de las cosas (5 / 6 paso)

Paso 5: Programa de la Junta

Hay cosas importantes seveal para cambiar en el código siguiente. La primera es la dirección IP. Cada junta debe tener una dirección IP única si no que el router obtendrá muy confundido. Empecé en el ip(192,168,1,178) de la dirección IP; y luego agregó uno al último número. Algunos routers tienen diferentes números, por ejemplo 192.168.2.x y una verificación rápida en un PC ejecutando IPCONFIG en un shell de DOS le dará los 3 primeros números correctos.

El otro número para cambiar es el intervalo de direcciones MAC. La gama bytes mac [] = {}

0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xEE}; es un número por defecto, tal vez cambio uno a un número hexadecimal diferente en cada tabla, por ejemplo, la última de ellas, cuenta hacia atrás en 0xED hexagonal, 0xEC.

La última cosa a cambiar es si la Junta es un uploader o downloader. Este código hace tanto y a medio camino hacia abajo es

if(!Client.Connected() & & (millis() - lastConnectionTime > postingInterval)) {}

sendData(Analog0,Analog1,Analog2,Analog3,Analog4);

comentar o enviar o recibir datos

getData();

que está configurado para enviar datos. Para obtener nuevamente los datos, comentar senddata y descomentar getdata.

Hay algún código sobra comentada para cosas como dumping hacia fuera de la cadena de texto de Xively que es útil para la depuración para encontrar la manera cortar la cadena y extraer las lecturas del sensor individual.

Xively puede hacer otras cosas como enviar un SMS u otro mensaje cuando se cumplen ciertas condiciones.

¡Que te diviertas!

http://Arduino.CC/en/Tutorial/PachubeClient Este código es de dominio público. * / #include < SPI.h > #include < Ethernet.h > #include < LiquidCrystal.h > #define APIKEY "shsCNFtxuGELLZx8ehqglXAgDo9lkyBam5Zj22p3g3urH2FM" / / reemplazar su clave de api de pachube aquí #define 970253233 FEEDID / / reemplazar feed ID #define USERAGENT "Arduino1" / / agente de usuario es el nombre del proyecto / / asignar una dirección MAC de los ethernet controller.// Ethernet nuevos escudos tienen una dirección MAC impresa en una etiqueta en el escudo / / rellene su dirección aquí : byte [mac] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xEE}; / / Rellene una dirección IP disponible en la red, / para ip(192,168,1,178) manual configuración: dirección IP; / / inicializar el cliente de ejemplo: EthernetClient biblioteca; / / inicializar la biblioteca lcd con los números de la interfaz pinsLiquidCrystal lcd(8,9,4,5,6,7); / / si no quieres utilizar DNS (y reducir el tamaño de su dibujo) / Utilice la IP numérica en lugar del nombre para el server(216,52,233,122) de server://IPAddress; / / numérico IP para api.pachube.comchar servidor [] = "api.xively.com"; / nombre dirección para xively APIunsigned lastConnectionTime largo = 0; última vez conectado al servidor, en millisecondsboolean lastConnected = false; Estado de la conexión del tiempo pasado a través de la loopconst principal sin firmar largo postingInterval = 10 * 1000; retraso entre las actualizaciones Pachube.comint contador; Cadena stringOne, stringTwo; construido cadena datos hora stringData backboolean = false; restablecer la hora de un nuevo bloque de datos backvoid setup() {/ / delay(1000); / / en caso de que el puerto serie provoca un latchup / esperar para que el puerto a abrir y abrir comunicaciones en serie: Serial.begin(9600); mientras (! Serie) {; / / espera para que el puerto serie conectar. Necesario sólo para Leonardo} Serial.println("api.xively.com"); Si ir más? calc 32s luego entero no funciona lcd.begin (16, 2); CLS(); claro la pantalla delay(1000); lcd.setCursor(0,1); x, y esquina superior izquierda es lcd.print("api.xively.com") 0,0; lcd.setCursor(0,0); LCD.Print ("Start Ethernet"); Serial.println ("Start Ethernet"); Delay(1000); iniciar la conexión Ethernet: Si (Ethernet.begin(mac) == 0) {//Serial.println ("no se pudo configurar Ethernet usando DHCP"); / / DHCP no se pudo, así que utilice una dirección IP fija: / / lcd.setCursor(0,1); //lcd.print ("fallo al configurar"); Ethernet.Begin (mac, ip); } Serial.println("Wait 10s"); lcd.setCursor(0,1); LCD.Print ("esperar 10s");} void loop() {/ / leer el sensor análogo: int Analog0 = analogRead(A0); / con una pantalla LCD analog0 es el int botones Analog1 = analogRead(A1); int Analog2 = analogRead(A2); int Analog3 = analogRead(A3); int Analog4 = analogRead(A4); / / int sensorReading = analogRead(A2); / / si hay datos entrantes de la conexión de red. / / enviar por el puerto serie. Esto es para depurar / / propósitos solamente: Si (client.available()) {char c = client.read(); Serial.Print(c); Si (stringData == false) {stringData = true; / / algunos datos ha llegado} si (stringData == true) {stringOne += c; / / generar la cadena} si ((c>32) y (c < 127)) {lcd.print(c); contador += 1;} si (contador == 16) {lcd.setCursor(0,1); / / lcd.print(""); lcd.setCursor(0,1); Contador = 0; Delay(100); }} / / Si no hay ninguna conexión de red, pero había una última vez / / a través del lazo, entonces deje el cliente: Si ()
! client.connected() & & lastConnected) {/ / Serial.println(); / / Serial.println("Disconnect"); client.stop(); lcd.setCursor(0,0); lcd.print ("desconectado"); lcd.setCursor(0,1); Contador = 0; Si (stringData == true) {PrintResults(); / / extraer los valores e imprima stringData = false; / / reset la bandera stringOne = ""; claro la cadena}} / / si no estás conectado, y han transcurrido 10 segundos/su última conexión, luego vuelve a conectar y enviar datos: if(!client.connected() & & (millis() - lastConnectionTime > postingInterval)) {/ / sendData(Analog0,Analog1,Analog2,Analog3,Analog4); / / comentario o enviar o recibir datos getData();} / / almacenar el estado de la conexión para la próxima vez a través de / / el bucle: lastConnected = client.connected();} void PrintResults() / / imprimir los resultados de la GET de xively {int n = 292; / / desde el sensor datos int i; char lf = 10; int v; CLS(); lcd.setCursor(0,0); stringOne += lf; Añadir un final del carácter de la línea de (me = 0; i < 5; i ++) {mientras que (stringOne.charAt(n)! = 44) / encontrar primera coma {n += 1;} n += 1 mientras que (stringOne.charAt(n)! = 44) / y segundo coma {n += 1;} n += 1; stringTwo = ""; mientras (stringOne.charAt(n) ! = 10) / / encuentra el final de la línea que es una línea de alimentación ascii 10 {/ / lcd.print(stringOne.charAt(n)); stringTwo += stringOne.charAt(n); n += 1;} v=stringTwo.toInt(); LCD.Print(v); LCD.Print(""); espacio final si (i == 1) {lcd.setCursor(0,1);}} } void Cls() / / borrar la pantalla de LCD {lcd.setCursor(0,0); lcd.print(""); claro lcd.setCursor(0,1) de la pantalla del lcd; LCD.Print("");} void PrintValues (int n0 int n1, int n2, int n3, n4 int) {/ / Serial.print(n0); / / Serial.print(""); Serial.Print(N1); Serial.Print(""); Serial.Print(N2); Serial.Print(""); Serial.Print(N3); Serial.Print(""); Serial.println(N4); CLS(); lcd.setCursor(0,0); LCD.Print(N0); LCD.Print(""); LCD.Print(N1); lcd.setCursor(0,1); LCD.Print(N2); LCD.Print(""); LCD.Print(N3); LCD.Print(""); LCD.Print(N4); Delay(2000);} Este método hace una conexión HTTP con el servidor: void sendData (data0 int int data1, data2 int, int data3, data4 int) {PrintValues(data0,data1,data2,data3,data4); / / Serial.println("Connecting..."); lcd.setCursor(0,0); LCD.Print ("conectando... "); lcd.setCursor(0,1); LCD.Print ("No reply"); Si hay una respuesta muy pronto conseguirá lcd.setCursor(0,1) sobrescrito; Contador = 0; Si hay una conexión exitosa: Si (client.connect (servidor, 80)) {client.print ("PUT /v2/feeds /"); client.print(FEEDID); client.println (".csv HTTP/1.1"); client.println ("Host: api.pachube.com"); client.print ("X-PachubeApiKey:"); Client.println(APIKEY); Client.Print ("User-Agent:"); Client.println(USERAGENT); Client.Print ("Content-Length:"); calcular la longitud del sensor de lectura de bytes: / / 8 bytes para "imagen1" + número de dígitos de los datos: thisLength //int = 8 + getLength(thisData); Client.println(thisLength); 8 es la longitud de la imagen1 y 2 más para crlf int stringLength = 8 + getLength(data0) + 10 + getLength(data1) + 10 + getLength(data2) + 10 + getLength(data3) + 10 + getLength(data4); Client.println(stringLength); últimas piezas de la solicitud HTTP PUT: client.println ("tipo de contenido: texto/csv"); Client.println ("conexión: cerrar"); Client.println(); Aquí es el contenido de la solicitud de puesto: client.print("sensor1,"); Client.println(Data0); Client.Print("sensor2,"); Client.println(data1); Client.Print("sensor3,"); Client.println(data2); Client.Print("sensor4,"); Client.println(data3); Client.Print("sensor5,"); Client.println(data4); Serial.println ("esperando respuesta"); xively responde con algo de texto, si nada entonces hay un error lcd.setCursor(0,1); LCD.Print ("esperando respuesta");} otro {/ / si no pudo realizar una conexión: //Serial.println ("fallada la conexión"); / / Serial.println(); //Serial.println ("para desconectar."); client.stop(); / / lcd.setCursor(0,1); //lcd.print ("Connect Fail");} / / Nota el momento en que la conexión fue realizada o intentada: lastConnectionTime = millis();} Este método hace una conexión HTTP con el getData() de servidor: void {/ / si hay una conexión exitosa: Si (client.connect (servidor, 80)) {//Serial.println ("conexión a petición de datos..."); lcd.setCursor(0,0); LCD.Print ("conectar"); Client.Print ("GET /v2 alimentaciones /"); Client.Print(FEEDID); Client.println (".csv HTTP/1.1"); Client.println ("Host: api.pachube.com"); Client.Print ("X-PachubeApiKey:"); Client.println(APIKEY); Client.Print ("User-Agent:"); Client.println(USERAGENT); Client.println ("tipo de contenido: texto/csv"); Client.println ("conexión: cerrar"); Client.println(); Serial.println ("terminado solicitud, esperar respuesta."); lcd.setCursor(0,1); LCD.Print ("solicitud de acabado"); } else {/ / si no pudo realizar una conexión: //Serial.println ("fallada la conexión"); / / Serial.println(); //Serial.println ("para desconectar."); client.stop();} / / Nota el momento en que la conexión fue realizada o intentada: lastConnectionTime = millis();} Este método calcula el número de dígitos en el / / sensor de lectura. Desde cada dígito del decimal ASCII / representación es un byte, el número de dígitos es igual a / / el número de bytes: int getLength (int someValue) {/ hay al menos un byte: int cifras = 1; / / dividir continuamente el valor diez, / / sumar uno a la cuenta del dígito para cada uno / tiempo se divide, hasta que esté a 0: int dividendo = someValue 10; mientras que (dividendo > 0) {dividendo = dividendo 10 dígitos ++;} / / devuelve el número de dígitos : volver dígitos;}

Artículos Relacionados

Internet de las cosas con frambuesa Pi - 1

Internet de las cosas con frambuesa Pi - 1

Cuando yo era nuevo en IOT (Internet de las cosas), vi que había apenas cualquier tutoriales que fueron lo suficientemente simples como para un principiante comprender y probar. Había a mucha jerga técnica, o el hardware era demasiado complejo.Ahora
Control electrodomésticos con teléfono e Internet de las cosas menores de 6 años $

Control electrodomésticos con teléfono e Internet de las cosas menores de 6 años $

Siempre quise encender mi televisor mientras tendido en mi sofá, o después de un día cansador cuando termine de leer un libro, para apagar mi luz.Lo hice antes con un Hc-05 y remoto de la tv.Actualización: Esta entrada es aceptada para IOT desafío as
¿Árbol de Navidad luces controladas por teléfono? Un simple hack Internet de las cosas.

¿Árbol de Navidad luces controladas por teléfono? Un simple hack Internet de las cosas.

Mi hijo quería ser capaz de convertir el árbol de Navidad encendido y apagado con su teléfono. Cavado alrededor en el laboratorio secreto de montaña (también conocido como el sótano) y vino para arriba con el siguiente proyecto, que utiliza un Arduin
HackerBoxes 0006: Internet de las cosas (IoT) proyectos con el fotón partícula

HackerBoxes 0006: Internet de las cosas (IoT) proyectos con el fotón partícula

Hackear el Internet de las cosas! Este mes, suscriptores de HackerBoxes están trabajando con el aglomerado de IoT de fotón a dispositivos de control por Internet, sensor de recoger datos por Internet, almacenar datos en la nube y mucho más.Este Instr
Supervisar el valor de temperatura y humedad de su sitio de Internet (Internet de las cosas concepto)

Supervisar el valor de temperatura y humedad de su sitio de Internet (Internet de las cosas concepto)

Hoy, voy a mostrarte cómo representar temperatura de lectura de DHT11 y valores de humedad para poner el gráfico en su sitio de Internet. Si tienes módem inalámbrico, me refiero a punto de punto de acceso WiFi de todas maneras que le permite conectar
Cómo utilizar teléfono antiguo para construir la página Internet de las cosas

Cómo utilizar teléfono antiguo para construir la página Internet de las cosas

¿Con el rápido desarrollo de la tecnología y ahora el smartphone ha entrado en todos los hogares, pero que fue eliminado teléfonos móviles viejos y PHS es realmente nada con él? Primero conseguí cinco teléfono antiguo para mejorar su uso del teléfono
Leche en la nevera - Internet de las cosas

Leche en la nevera - Internet de las cosas

Creo que un día, todos los armarios de alimentos y frigoríficos y congeladores sea inteligentes. Todos los productos tendrán un RFID o etiqueta reconocible video que actualizará una lista de uso del producto. El supermercado se reunir esta informació
Internet de las cosas con frambuesa Pi-2

Internet de las cosas con frambuesa Pi-2

Se trata de un seguimiento a mi anterior instructivo Internet de las cosas con frambuesa Pi - 1.(Si no está familiarizado con los servidores web, PHP codificación y los conceptos básicos de Internet, se debe probablemente atraviesa parte 1 primera.)E
Junta de CC3200 Wi-Fi para Internet de las cosas

Junta de CC3200 Wi-Fi para Internet de las cosas

Buenas noticias para la gente de Internet de las cosas!Tablero de Texas Instruments CC3200-LAUNCHXL ahora es compatible con Energia v.13+http://energia.nu/PIN-Maps/guide_cc3200launchpad/http://energia.nu/cc3200guide/Energia es entorno de Arduino para
Internet habilitado nevera: Una primera incursión en Internet de las cosas

Internet habilitado nevera: Una primera incursión en Internet de las cosas

Hola a todos!Tuve un problema con el congelador en nuestra casa. De vez en cuando, el congelador no cierra por completo, cualquier rebote abierto o consigue apoyado ligeramente abierta. Este pequeño espacio era bastante de un espacio para que el aire
APDuinOS (parpadeando)--arduino IoT (internet de las cosas)--aplicación de aquaponic

APDuinOS (parpadeando)--arduino IoT (internet de las cosas)--aplicación de aquaponic

si estás leyendo este Instructable Estás aquí por una de dos razones.PRIMERA RAZÓN:Es porque usted no sabe nada de APDuinOS y está interesado en lo que es y cómo se relaciona la IoT (Internet de las cosas).  Puede aprender más acerca de APDuino por i
Una estación meteorológica de conexión a Internet de las cosas

Una estación meteorológica de conexión a Internet de las cosas

Hola y Bienvenidos a las instrucciones paso a paso para hacer su parte de la estación meteorológica de Davies de la Internet de las cosas utilizando nuestro kit de la iniciativa de Intel.Con este kit que usted podrá conectar su estación de Davies a u
Internet de las cosas (IoT) cable de extensión

Internet de las cosas (IoT) cable de extensión

Hola creadores!IntroducciónSe trata de tiempo que compartí este uno con todos vosotros. Este proyecto ha pasado tanto tiempo, no crees. Comencé esto antes de que nuestro espacio Hack existió [ish 2011?] y ha continuado estar en un estado transitorio
Edison de Intel basado en redes de sensores móviles para Internet de las cosas

Edison de Intel basado en redes de sensores móviles para Internet de las cosas

Introducción y ResumenEl Edison de Intel es un equipo poco ingenioso que combina muchas ventajas de otras plataformas de maker. Puede ser combinado con tableros de arranque de varios tamaños y propósitos.En este artículo vamos a aprender qué componen