Web Enabled controlador de luces de estudio Lazy (4 / 4 paso)

Paso 4: Detalles de Software

Introducción

El software finalmente fue compilado y había probado utilizando Arduino IDE 1.6.5.

Para empezar te va a necesitar las siguientes librerías creadas por Paul Stoffregen;

Biblioteca DS1307RTC.h

https://github.com/PaulStoffregen/DS1307RTC

Librería Time.h

https://github.com/PaulStoffregen/Time

¿Que no estén familiarizados con la instalación de las bibliotecas de Arduino? Vaya aquí para las instrucciones completas;

https://www.Arduino.CC/en/Guide/Libraries

Operación

-Inicio

En el software de inicio inicializa el shield Ethernet con valores Puerto HTTP (80), dirección MAC (DEADBEEFFEED), dirección de IP (su 192.168.1.177, no DHCP), dirección IP de puerta de enlace (aquí Router es 192.168.1.1) y máscara de subred (aquí clase C, 255.255.255.0) y comienza el servidor 'server.begin()'.

Todas las direcciones son IPv 4.

El código entonces entra en la sección bucle del marco de software de Arduino.

-Lazo

El software lleva a cabo las siguientes acciones en cada paso sucesivo del lazo;

  1. Leer en la salida del sensor de temperatura vía A0 'sensorPin' y convertir a grados C. Si el valor calculado es superior al nivel de 'OVER_TEMP' todo el relé de salida se apagan y un marcador de temperatura se establece. Esto reduce la disipación de energía en el gabinete de servidor. La bandera se utiliza más adelante para controlar el formato del HTML por el cliente, provocando un mensaje de advertencia.
  2. El software registra el tiempo actual 'RTC.read(on_timer)' y lee el estado de los botones de entrada vía indirectas banderas booleanas; 'SwanLightButtonState', 'TopShelfButtonState' y 'UnderDeskButtonState'. El tiempo de este Lee 'GlobalTimeCurrent' se compara con 'GlobalElapsedTime'. Si 'HOURS_DELAY' + 'MINUTES_DELAY' es se ha superado las luces se apagan automáticamente. Este código es no bloqueando así permite el Arduino para pasar más tiempo de seguimiento para solicitudes de conexión HTTP y mejora Web Server rendimiento <> = cliente. Este 'estancia en temporizador' puede ampliarse con una pulsación (vía página web o caja del botón) de cualquier botón, formando funcionalidad monoestable restaurable.
  3. Cada entrada de botón real entonces se controla secuencialmente a través de un 'digitalRead()' utilizando las referencias de pin 'SwanLightButton', 'TopShelfButton' o 'UnderDeskButton'. El código para este utiliza la llamada 'millis()' a crear software switch de rebote. Aquí interruptor de rebote se extiende deliberadamente para evitar la activación accidental. Su funcionalidad se desarrolló para alternar la luz si mantiene permanentemente en la posición on. Esto sirve a tres propósitos; 1: se necesita sólo un botón para activar o desactivar la luz correspondiente, 2: Esto reduce el número de entradas necesarias en el Arduino, 3: alerta al usuario si se presiona accidentalmente un botón como sería el caso si algo pesado se coloca en la caja del botón sin saberlo (me incliné a esta a través de la experiencia). Otra vez estas llamadas de demora son no-bloqueo.
  4. El código entonces comprueba para una solicitud de cliente y lee en los caracteres de un HTTP GET a través de un 'client.read()'.
  5. Si la petición HTTP es completa, terminada por '\n' el software responde con una serie de comandos de 'client.println()'. Cada uno de que contiene un HTML con formato de respuesta, formando la versión luz de estudio página web en el cliente, incluyendo hora, fecha, temperatura (o sobre ADVERTENCIA temp), s/w, restante en tiempo etc.. Observará desde la parte superior del código he añadido la respuesta del compilador que indica cuánta memoria de programa y memoria dinámica estaba disponible. La biblioteca de Ethernet es bastante memoria de 'hambre' por lo que necesitará tener en cuenta el tamaño de su código. Para hacer un uso más eficiente de la memoria no volátil disponible rodeado de cada literal con la macro 'F()' de cadena 'client.println()' que se almacenaría en el espacio flash y no código.
  6. Al final de la respuesta de la solicitud GET se comprueba para ver si el cliente está solicitando un tiempo cambiar 'strHTTPTimeLiteral', una fecha de cambio strHTTPDateLiteral. Si este es el caso entonces el RTC se actualiza en consecuencia.
  7. Finalmente se hace una comprobación para determinar si se ha solicitado un cambio en el estado de luz a través de la interfaz web, si es así las respectivas banderas booleanas indirectas son actualizados ('SwanLightButtonState', 'TopShelfButtonState', 'UnderDeskButtonState') junto con el correspondiente pin de salida de Arduino para manejar correctamente el relé asociado.
  8. Bucle se repite.

.

Cálculo de la temperatura con el MCP9700

De la hoja de datos de fabricantes, la MCP9700 da un cambio de la salida de 10mV/grados centígrados. La ecuación para el cálculo de la respuesta es Vout = Tc * Ta + Vout0C. (o y = mx + c) Donde Tc (coeficientes de la temperatura) es 10mV/grados centígrados, Ta es la temperatura ambiente se mide, Vout0C es la salida de MPC9700 a 0 grados C.

Así que la temperatura se calcula así; TemperatureDegC = ((sensorValue * (5.0/1024.0))-0.5)/0.01

Otros elementos a considerar

  1. Tiempo auto establecido en Inicio. O actualización automática periódicamente. Ahorra tener que hacerlo manualmente.
  2. Visualización del estado actual de cada indicación en página web.
  3. Mejorar el código HTML. Posiblemente vuelva a escribir usar sirve las páginas de la tarjeta Ethernet Shield de uSD a bordo. Literales de cadena codificado no es un método particularmente eficaz de utilizar.
  4. Si se hace 3, añadir un servidor FTP tan actualizado páginas web y ser cargado fácilmente.

Lecciones aprendidas

  1. Usar una versión de Arduino Pro por lo que puede añadir sus propio, conectores confiables.
  2. Pasar más tiempo aprendiendo HTML. Me engañó y utilizar WireShark para ver exactamente lo que estaba pasando sobre el Ethernet por lo que pude averiguar lo que sucedía en el escudo de Ethernet. El IDE de Arduino es bastante bueno para ponerse en marcha pero lamentablemente inadecuada para depurar con. Si no te gusta usar declaraciones 'impresión'. No.

.

.

Finalmente, como siempre, el código, diagrama del circuito, detalles de construcción etc. se proporcionan gratis para usar en cualquier modo de ver cabe (apenas hacen una mención de mí), aunque vienen sin soporte.

.

Feliz inventando.

Artículos Relacionados

Frambuesa Pi como un controlador de luces DMX

Frambuesa Pi como un controlador de luces DMX

Convertir su frambuesa Pi en un controlador de luces DMXEste instructable muestra cómo mostrar una ventana de editor de la rueda de color en la pantalla de un ordenador Raspberry Pi, que se puede manipular con el ratón. Al cambiar el color de la pant
Controlador de luces DMX online

Controlador de luces DMX online

Sólo encienda su Pi frambuesa favoritos y empezar a controlar un programa desde cualquier smartphone o laptop conectado a Internet. ¿Suena cool verdad? Bueno, esto es exactamente el objetivo de este proyecto. Sólo necesita un Raspberry Pi y un DMX in
3 canal arduino Powered controlador de luces de Navidad!

3 canal arduino Powered controlador de luces de Navidad!

Para Navidad este año, quise hacer un proyecto genial pero bastante no sabía qué hacer. Como me estaba poniendo la salida de luces de Navidad para decorar, había un viejo temporizador de luz de Navidad roto. Tomé distancia y miró a su alrededor en el
Web-Enabled termostato casero (y centro de automatización del hogar)

Web-Enabled termostato casero (y centro de automatización del hogar)

Este Instructable explica cómo construí termostatos WiFi habilitado para mi casa. Los termostatos programables con 6 diferentes períodos de tiempo durante el día, a pesar de aumento a un número arbitrario sería bastante triviales. Que pueden ser prog
Controlador de luces de Navidad DIY simple

Controlador de luces de Navidad DIY simple

Feliz Navidad y ' All! Sé que es raro que hago un ' ible, pero a hacer una Navidad instructable para usted hoy. Durante un tiempo quieren hacer una configuración de luz de Navidad de controlado por ordenador pero no las piezas a construir uno o el di
Luces de estudio caja de buñuelo

Luces de estudio caja de buñuelo

luces del fabuloso estudio de artículos del hogar no tan fabulosos!* Por favor no escribir me sobre riesgos de incendio. Estas bombillas no calientan lo suficiente como para prender fuego a la caja de donut.Aunque en cualquier momento hay electricida
Controlador de luces de Navidad Android

Controlador de luces de Navidad Android

aquí es una rápida introducción a mi último proyecto: una Navidad de accesorio abierto Android-accionado luces controlador!Esto nace de una sesión de codificación en nuestro grupo de usuarios de tecnología Google local.  Es una aplicación Android que
Web Enabled puerta del Garage (frambuesa Pi)

Web Enabled puerta del Garage (frambuesa Pi)

Objetivo de crear un web basado en abrelatas de la puerta de garaje que se debe adaptar a la mayoría de los abridores. Probado con alrededor de la década de 1990 Chamberlain abridor de 1/2 hp. Una vez competido podría abrir su puerta de garaje desde
Web Enabled Control piscina - frambuesa Pi

Web Enabled Control piscina - frambuesa Pi

El año pasado tuve una piscina construida. Fue emocionante cuando el constructor de la piscina me mostró que la industria de la piscina había movido en la era de la tecnología y ahora ofrece control de aplicaciones sobre internet. Ser un adicto a la
Controlador IO Tutorial usando un sitio Web de web y ejemplos de trabajo

Controlador IO Tutorial usando un sitio Web de web y ejemplos de trabajo

Controlador IO Tutorial usando un sitio Web de web y ejemplos de trabajoÚltima actualización: 26/07/2015(Compruebe detrás a menudo como actualizar este instructables con más detalles y ejemplos)FondoHace poco tuve un reto interesante me presentó. Que
Controlador Arduino de Flash para fotografía

Controlador Arduino de Flash para fotografía

ser un fotógrafo aficionado se rompió no es fácil.Película, papel y productos químicos no son baratos y un presupuesto para algunas luces del estudio es no existe.Por lo tanto, decidí, con la ayuda de mi fiel arduino, crear mi propio controlador de s
Musicalmente sincronizada las luces de Navidad

Musicalmente sincronizada las luces de Navidad

Durante la temporada de Navidad, que es obligados a ver casas que se engalana con luces de Navidad que se sincronizan a la música. Puedes estar pensando que tu casa nunca será capaz de tener luces de Navidad musical porque los sistemas de control son
Fotografía DIY LED luces

Fotografía DIY LED luces

Uno de los aspectos más importantes de una fotografía perfecta y debe tener buena iluminación. Una de las mejores maneras de que se debe utilizar iluminación natural. Pero ¿qué pasa si usted quiere tomar fotos de su proyecto de publicar en instructab
Luces Video DIY de una vieja luz fluorescente

Luces Video DIY de una vieja luz fluorescente

Han estado trabajando en la actualización de nuestro estudio en casa y decidió trabajar en los artefactos de iluminación. Elegimos trabajar en las luces de relleno (ayuda a disminuir las sombras de todas las luces principales) y deshacerse de la lámp