Tripa Compruebe un Tweeting y nevera: a pie (3 / 7 paso)

Paso 3: Código de Arduino

El código se construye con "SimpleClient" como punto de partida desde el código de asynclabs.
Primero te mostrará el código y luego descomponerlo.
(Sustituye información importante de mi router con XXXXXXs, sólo para su información)

=====================================================
/*
* Un dibujo simple que utiliza WiServer para servir una página web
*/
int fsrAnalogPin = 0; FSR está conectada a 0 analógico
int fsrReading; el análogo de lectura del divisor de resistencia FSR
Boolean hasOpened = false;
Boolean hasClosed = false;
Boolean isOpen = false;

#include < WiServer.h >

#define WIRELESS_MODE_INFRA 1
#define WIRELESS_MODE_ADHOC 2

Parámetros de configuración inalámbrica---
unsigned char local_ip [] = {192.168, X, X}; Dirección IP de WiShield
unsigned char gateway_ip [] = {192.168, X, X}; Dirección IP de puerta de enlace o enrutador
unsigned char subnet_mask [] = {255,255,255,0}; máscara de subred para la red local
[] const prog_char ssid PROGMEM = {"XXXXXXXXX"}; máximo de 32 bytes

unsigned char security_type = 1; 0 - abrir; 1 - WEP; 2 - WPA; 3 - WPA2

Frase de contraseña WPA/WPA2
[] const prog_char security_passphrase PROGMEM = {"XXXXXXX"}; máximo de 64 caracteres

Claves de 128-bit WEP
llaves hexagonales de la muestra
prog_uchar wep_keys [] PROGMEM = {0xXX, 0xXX, 0xXX, 0xXX, 0xXX, 0xXX, 0xXX, 0xXX, 0xXX, 0xXX, 0xXX, 0xXX, 0xXX};

configuración del modo inalámbrico
infraestructura - conectar a AP
Adhoc - conectar a otro dispositivo WiFi
unsigned char wireless_mode = WIRELESS_MODE_INFRA;

unsigned char ssid_len;
unsigned char security_passphrase_len;
Final de los parámetros de configuración inalámbrica---

Función que imprime los datos del servidor
{} void printData (char * datos, int len)

Los datos devueltos por el servidor de impresión
Tenga en cuenta que los datos no es terminada en null, puede ser dividido en paquetes más pequeños, y
incluye el encabezado HTTP.
mientras que (len--> 0) {}
Serial.Print(*(Data++));
}
}

Uint8 ip2 [] = {XXX, XXX, XXX, XXX};
Una solicitud que obtiene los últimos datos meteorológicos METAR para LAX
GetOpened GETrequest (ip2, 80, "XXXXXX.com", "/ gutcheck/opened.php");

void setup() {}
Inicializar WiServer (pasamos NULL para la página de que función ya que no necesitamos servir páginas web)
WiServer.init(NULL);

Habilitar salida serie y pedir WiServer para generar mensajes de log (opcional)
Serial.Begin(57600);
WiServer.enableVerboseMode(true);

Tienen la función de processData se llama cuando el servidor devuelve datos
getOpened.setReturnFunc(printData);

}

void loop() {}

fsrReading = analogRead(fsrAnalogPin);
Serial.Print(fsrReading);
Serial.Print("\n");

Si (fsrReading > 200) {}
isOpen = false;
} else {}
isOpen = true;
}

Si (! hasOpened & & isOpen) {}
hasOpened = true;
hasClosed = false;
Serial.Print("OPENED\n");
getOpened.submit();
}
else if (! hasClosed & &! isOpen)
{
hasClosed = true;
hasOpened = false;
Serial.Print("CLOSED\n");
}

WiServer.server_task();
Delay(100);
}

===============================================

Ahora el desglose

=========
int fsrAnalogPin = 0; FSR está conectada a 0 analógico
int fsrReading; el análogo de lectura del divisor de resistencia FSR
Boolean hasOpened = false;
Boolean hasClosed = false;
Boolean isOpen = false;
=========

fsrAnalogPin establece los valores para el arduino leer la resistencia de presión, debe estar conectado a un pin analógico
fsrReading es para leer el valor más tarde.
Las variables boolean se utilizará en la función loop() seguimiento de cuando la puerta se abre y se cierra.

=========
#include < WiServer.h >

#define WIRELESS_MODE_INFRA 1
#define WIRELESS_MODE_ADHOC 2

Parámetros de configuración inalámbrica---
unsigned char local_ip [] = {192.168, X, X}; Dirección IP de WiShield
unsigned char gateway_ip [] = {192.168, X, X}; Dirección IP de puerta de enlace o enrutador
unsigned char subnet_mask [] = {255,255,255,0}; máscara de subred para la red local
[] const prog_char ssid PROGMEM = {"XXXXXXXXX"}; máximo de 32 bytes

unsigned char security_type = 1; 0 - abrir; 1 - WEP; 2 - WPA; 3 - WPA2

Frase de contraseña WPA/WPA2
[] const prog_char security_passphrase PROGMEM = {"XXXXXXX"}; máximo de 64 caracteres

Claves de 128-bit WEP
llaves hexagonales de la muestra
prog_uchar wep_keys [] PROGMEM = {0xXX, 0xXX, 0xXX, 0xXX, 0xXX, 0xXX, 0xXX, 0xXX, 0xXX, 0xXX, 0xXX, 0xXX, 0xXX};

configuración del modo inalámbrico
infraestructura - conectar a AP
Adhoc - conectar a otro dispositivo WiFi
unsigned char wireless_mode = WIRELESS_MODE_INFRA;

unsigned char ssid_len;
unsigned char security_passphrase_len;
Final de los parámetros de configuración inalámbrica---
=========

La parte más difícil para mí fue conseguir que funcione con mi router, tengo un e2000 linksys protegida con WEP 64 bits y no había demasiada instrucción sobre cómo conseguirlo para trabajar. Fue todo una cuestión de averiguar qué información fue él qué campo.

[] local_ip es la dirección ip que es en el arduino, encontrar una dirección de ip que no está siendo usada por el router y configurarlo para. Mi router es bastante bueno en las direcciones no encontradas.

[gateway_ip] es generalmente la dirección IP que se utiliza para configurar la configuración del router vía navegador web.

subnet_mask [] lo que ya se ha establecido es bastante típica de lo que he visto, pero Compruebe la configuración del router en el caso.

[SSID] es lo que usted llama tu conexión, lo que se ve cuando quiere acceder al router inalámbrico de la lista de conexiones inalámbricas disponibles con un ordenador o un teléfono.

security_type es el tipo de seguridad que tienes en él, utilizar 1 - WEP
De forma predeterminada, el código WiShield utiliza cifrado de 128 bits. Así que en lugar de intentar modificar el código WiShield, cambiado mi router a cifrado de 128 bits así. Parece más seguro de todos modos, jajaja.
Hay información en los foros y wiki sobre cómo cambiarlo.
Y cuando edición en ti está la clave de 128 bits, es necesario romper los valores en pares así por ejemplo:

Su clave de: 4F45EEF232...
En el código de arduino: 0x4F, 0x45, 0xEE, 0xF2, 0x32,...
(Usted verá lo que quiero decir si usas un router protegido)

unsigned char wireless_mode = WIRELESS_MODE_INFRA;
asegura que se conecta al punto de acceso (router) como un nuevo dispositivo por lo que puede acceder a internet.

Todo lo demás es solo configuración de variables para el WiShield utilizar.

El wiki y los foros en asynclabs es un gran lugar para buscar para empezar a recibir su WiShield para trabajar.

=========
Función que imprime los datos del servidor
{} void printData (char * datos, int len)

Los datos devueltos por el servidor de impresión
Tenga en cuenta que los datos no es terminada en null, puede ser dividido en paquetes más pequeños, y
incluye el encabezado HTTP.
mientras que (len--> 0) {}
Serial.Print(*(Data++));
}
}
=========

Esta función escribe información en el Monitor Serial en el IDE de Arduino, útil para la depuración.

=========
Uint8 ip2 [] = {XXX, XXX, XXX, XXX};
Una solicitud que obtiene los últimos datos meteorológicos METAR para LAX
GetOpened GETrequest (ip2, 80, "XXXXXX.com", "/ gutcheck/opened.php");
=========

Esto configura los archivos php que le comunicará la nevera. El archivo PHP reaccionar a la comunicación de Arduino para publicar en Facebook o Twitter. Ellos se detallarán más adelante.

=========
void setup() {}
Inicializar WiServer (pasamos NULL para la página de que función ya que no necesitamos servir páginas web)
WiServer.init(NULL);

Habilitar salida serie y pedir WiServer para generar mensajes de log (opcional)
Serial.Begin(57600);
WiServer.enableVerboseMode(true);

Tienen la función de processData se llama cuando el servidor devuelve datos
getOpened.setReturnFunc(printData);

}
=========

La función setup() establece todas la variable necesaria para la resistencia y el WiShield comunicación.

=========
void loop() {}

fsrReading = analogRead(fsrAnalogPin);
Serial.Print(fsrReading);
Serial.Print("\n");

Si (fsrReading > 200) {}
isOpen = false;
} else {}
isOpen = true;
}

Si (! hasOpened & & isOpen) {}
hasOpened = true;
hasClosed = false;
Serial.Print("OPENED\n");
getOpened.submit();
}
else if (! hasClosed & &! isOpen)
{
hasClosed = true;
hasOpened = false;
Serial.Print("CLOSED\n");
}

WiServer.server_task();
Delay(100);
}
========

Esta es la función loop() que funciona todo.
fsrReading = analogRead(fsrAnalogPin); Obtiene el valor actual de la resistencia de presión.
Luego comprueba si el valor es alto o bajo para saber si la nevera está abierta o cerrada.
El siguiente conjunto de condicionales comprobar para ver si el estado de la nevera ha cambiado desde el último lazo de cualquier.
Si ha cambiado, o bien se envían getOpened al archivo PHP aplicable.

El código WiShield se cola las solicitudes de páginas si usted abra y cierre la nevera rápidamente y varias veces, pero no necesariamente a prueba de balas. Así que tenlo en cuenta.

También, al principio, tenía la fsrReading en comparación con 0. Pero puesto que la resistencia se graba hacia abajo, había una pequeña prensa residual izquierda cuando abra la puerta. Es bueno abrir la pantalla de la serie y ver si usted necesita ajustar esto por ti mismo.

Artículos Relacionados

Impresionante pastel de pacana

Impresionante pastel de pacana

esto aqui le dará todo lo que necesitas saber, para hacer una hella pastel de pacana buena para cualquier ocasión.Super fácil!!!Ingredientes:-1 taza llena de azúcar moreno ligero-1 1/4 de taza de mitades de nuez-3 huevos batidos-1 taza de jarabe de c
Super fácil Control de la PC de 110 Vac con un relé de estado sólido Crydom

Super fácil Control de la PC de 110 Vac con un relé de estado sólido Crydom

estoy preparando probar mi mano en hacer alguna soldadura placa caliente. Por lo tanto, necesitaba una manera de control 110Vac desde mi PC.Este instructable muestra cómo controlar fácilmente 110Vac de un puerto de salida serie de un PC. El puerto se
Viejo moda Cherry/Lemon nevera Pie

Viejo moda Cherry/Lemon nevera Pie

si usted está buscando un rápido, muy económico y delicioso postre de verano, eso es todo!Fresco, cremoso, caseoso y fácil...Rápido - 10 minutos para preparar durante la noche para que enfríe en el refrigerador.Fácil - sólo 7 ingredientes necesarios.
Domótica 101: fijación de un congelador de la nevera con un PLC

Domótica 101: fijación de un congelador de la nevera con un PLC

OK, así que va a la nevera para overkill. En lugar de tirar hacia fuera y comprar uno nuevo, podemos arreglarlo por no mucho dinero.¿En vez de correr todo el tiempo y utilizando cargas de electricidad, por menos de £20 podemos hacer como nuevo, salva
El mejor Chocolate Pecan Pie nunca!

El mejor Chocolate Pecan Pie nunca!

Come seria buena tarde!Mi esposa Barbara y me encanta el pay de nuez Chocolate!Nos han cambiado la receta para este concurso y que hemos creado un ganador de un PI / Pie.Se decidió fundir los trocitos de chocolate negro, a continuación, añadir el cho
Appleberry Pie en una manzana (vegana)

Appleberry Pie en una manzana (vegana)

Apple fue la primera palabra que nunca aprendí a deletrear y a escribir, y como tal, tiene un lugar especial en mi corazón. Generalmente siento que es un crimen para hornear las manzanas, pero es tan delicioso este postre healthy-ish, hice una excepc
Lámpara de pie hecha de acrílico

Lámpara de pie hecha de acrílico

ProclamaciónSi tenga algún problema o atascarse en cualquier punto dentro del instructivo (especialmente en la imagen de sección de procesamiento o en cualquier parte) apenas sienta libre de enviarme un mensaje de Instructable o un correo electrónico
Bourbon Pecan Pie Martini

Bourbon Pecan Pie Martini

estoy seguro de que no hay suficiente pastel de nuez en el mundo, never mind pastel de pacanas de bourbon.  La corteza escamosa el relleno pegajoso, el sabor, la nuez...  Oh, las deliciosas nueces, necesitamos más de ustedes!En homenaje de este postr
¿Tweet-a-Pot: Twitter habilitado Coffee Pot

¿Tweet-a-Pot: Twitter habilitado Coffee Pot

gusta la idea de un café sobre la marcha? ¿de tu cama? ¿Mientras estás en el autobús que viene casera? Entonces el pote de Tweet es para usted!Tweet-a-pot es la siguiente en twitter lujo habilitado dispositivos. Esta cafetera permite a su dueño hacer
Cómo citar un libro en formato Turabian (bibliografía y nota al pie)

Cómo citar un libro en formato Turabian (bibliografía y nota al pie)

Turabian es un formato de citas desarrollado por Kate L. Turabian específicamente para tesis de estudiante y ha crecido popular para el uso entre los estudiantes de historia. Permite a un lector para procesar fuentes rápidamente y seguir rastro de pa
Mano y el pie caliente cera tratamiento

Mano y el pie caliente cera tratamiento

Soy mayor y mis manos siempre secas y agrietadas de trabajar en el jardín y la limpieza. Yo he estado esperando hacer una mano y pie tratamiento con cera de abejas. Me ha sorprendido no encontrar ninguna recetas online. He encontrado un salón que hiz
Old Fashioned Lemon Pie

Old Fashioned Lemon Pie

¿Eres un nerd amante de torta? Entonces has venido al lugar correcto! Se trata de la fusión de matemáticas, física¿y pastel – el núcleo de cada ingeniero - y lo que no se como?Estoy loco por el limón y generalmente esto utilizaría para comensales o f
Bourbon Pecan Pie

Bourbon Pecan Pie

La adición de Borbón en este pastel le da una buena patada! Aunque el alcohol cocinar apagado mientras se hornea el pastel puedes omitir este ingrediente para un pastel de pacana clásico.Servir con helado de vainilla o crema batida.¡ Disfrute!Paso 1:
Pi within a Pie

Pi within a Pie

Me encanta hornear.  Me encanta la matemática.  Me encanta el día de Pi!  Hornear/asar, generalmente solo intente que sea buena de sabor, pero este año quería hacer algo parecía fresco y probado grandes.  Me inspiré por el últimos brillo "cookie dent