Arduino Yun - Panel Solar, sistema de vigilancia (5 / 8 paso)

Paso 5: el PANEL SOLAR control – SKETCH de ARDUINO

Escribir un programa para el Arduino fue una experiencia nueva para mí. Estropeado por Windows/Linux y Android incluso que básicamente no hay límite de memoria que ejecuto muy pronto en problemas con el código muy limitado y la variable espacio en las placas Arduino. El Arduino Yun ofrece sólo 28.627 bytes de código y 2560 bytes para variables globales.

Lo rápido que aprendí fue que puedo usar la memoria de código 99.9%, pero si utilizo más de un 60% de la memoria para las variables globales el bosquejo fue no confiable. Creo que el código subyacente (gestor de arranque,...) requiere memoria espacio libre int variables globales. Así que tuve que optimizar mi código y limitan el uso de variables globales tanto como sea posibles. El código sí mismo, partí el sketch de Arduino en varios archivos. He intentado comentar el código como sea posible, por lo que debe ser auto explicativo.

Los nombres de los archivos siguen un esquema específico. El compilador para el bosquejo requiere que las funciones deben declararse antes de utilizarlos. Así que los nombres de archivo son SKETCHNAME_index_MODUL. Con el índice me da los archivos que se compilan en el orden correcto.

SPMONITOR_A_DEFINITIONS

En la primera parte se incluyen todos los archivos externos necesarios para las diferentes funciones.

Valores de calibración:

Estos valores son cruciales para las mediciones. Estos valores dependen de los sensores de CT utilizados, las tolerancias de las resistencias usadas y condensadores y otras cosas. Para obtener estos valores correctos, pisé varias veces a través de la guía de calibración del bloque de edificio de OpenEnergyMonitor Procedimiento de calibración. Hasta que tenga los valores correctos aquí sus medidas será más o menos una mierda! Para que la calibración sea posible sin necesidad de escribir un guión especial incluí un "modo de calibración" en la aplicación de Android. Cuando se activa el modo de calibración las aplicaciones Android extrae datos desde Arduino cada 10 segundos y muestra los datos sobre el factor de potencia, potencia real y aparente y medido de la tensión. Luego se pueden cambiar los valores de calibración hasta que los valores son como se esperaba (p. ej., factor de potencia cerca de 1.o).

Las otras variables globales están bien comentados.

SPMONITOR_B_UTILS

Este módulo contiene 2 funciones utilizadas para almacenar los valores registrados.

String getTimeStamp() devuelve la fecha y hora actual del sistema. Para conseguirlo utilizamos la función de "puente" ".run" para ejecutar un comando en el lado de Linux y recibe la salida por el "puente".

La posibilidad de iniciar comandos y scripts en un shell Linux amplía las capacidades de la placa Arduino. En lugar de los problemas para agregar las funciones complejas en el espacio del programa limitado del regulador AVR puede delegarse a la parte de Linux.

saveData nula () utiliza las funciones de "puente", así escribe los datos recogidos en una base de datos, enviar a un servicio web en la nube y almacenar para de fácil acceso en el lado de Linux.

Las mediciones se hacen cada segundo, pero los valores se almacenan sólo cada minuto. Los valores medidos se almacenan en un acumulador. La parte de código

calcula el promedio de las mediciones realizadas desde el último ahorro de valores.

La parte de código

almacena los valores medidos en el procesador de Linux utilizando una estructura de clave y valor. Estas estructura puede recuperar como una cadena JSON simple llamada "http://IPADDRESS//data/get". (Dirección IP es la dirección IP asignada a la Arduino Yun). Se parece a los datos:

Puedes ver los datos que colocamos con la parte de código anteriores en esta cadena JSON.

El valor de L, S y C es actualizado cada minuto y utiliza para actualizar la interfaz de usuario en la aplicación para Android. La c, cv, cr... los valores se actualizan después de cada ciclo de medición (~ 1s) y pueden ser utilizados durante el modo de calibración. Así se muestran en la interfaz de usuario de la aplicación para Android. La siguiente parte de código

utiliza la función de "puente" ".runShellCommand" para escribir los valores medidos en la base de datos Sqlite. Desde allí puede ser obtenidos en la red local con el script query.php.

Y la última parte del código

utiliza así la función de "puente" ".runShellCommand" para enviar los datos a un servicio web. Esta nube de servicio web emoncms.org ofrece (gratis) en el momento de la posibilidad de almacenar datos del sensor y visualizarlos en la web. Su servicio, son accionados por OpenEnergyMonitor!

He añadido una de las opciones de visualización en las imágenes de arriba. Puedes ver los datos de producción/consumo real de mi casa en Mi Solar de la aplicación de emoncms.org.

SPMONITOR_C_LIGHTSENSOR

Este módulo maneja el sensor de luz. La comunicación con el sensor de luz se realiza dentro de las bibliotecas de Adafruit_Sensor y Adafruit_TSL2561_U. Estas bibliotecas están disponibles como software libre de Adafruit, el fabricante del módulo sensor de luz.

void configureSensor () inicia la función de auto rango de sensor de luz y establece integración tiempo en el valor más alto.

void readLux () inicia una medición en el módulo de sensor de luz. Para adaptarse a diferentes intensidades de luz es necesario adaptar el tiempo de integración del sensor. El sensor se establece inicialmente en el tiempo de integración más alto que es el mejor en situaciones de poca luz. Pero si la luz es más brillante, el sensor se saturarán y es necesario cambiar a un menor tiempo de integración. El sensor ofrece 3 veces de integración diferentes. La parte de código

Lee un valor del sensor. Si el sensor entrega un valor, el código cambia a un mayor tiempo de integración.
Pero si el sensor ya está saturado, reducir el tiempo de integración y probar otra vez a leer desde el sensor

Este bucle se repite 5 veces para adaptarse a las cambiantes situaciones de luz.

SPMONITOR_X_MEASUREMENT

Este módulo contiene las rutinas de medición del sensor de CT. La medida directa de corriente y tensión se realiza en la biblioteca de emonLib. EmonLib es una librería open source proporcionada por OpenEnergyMonitor.

void getCTValues (int índice) llama a emonLib para iniciar la medición de corriente, voltaje y cálculo de potencia y factor de potencia. El índice de parámetro determina el sensor que debe leerse. índice = 0 empieza una medición del sensor CT conectada al cable del panel solar, 1 inicia una medición del sensor CT conectada a la línea de alimentación principal.

Los valores recogidos se almacenan en un acumulador. En este momento el sistema es capaz de hacer una medición en cada segundo. Los valores almacenados en el acumulador se utilizan para calcular un valor medio antes de guardar los valores en la base de datos, que se realiza cada 60 segundos.

Por la noche el panel solar no es producir energía, sino que utiliza una pequeña corriente de espera. Eliminamos esta corriente con el código

De esta manera nos aseguramos de no registramos una inexistente producción de energía durante la noche.

Los valores medidos se guardan luego en el lado de Linux con la función "Bridge.put" como una estructura de clave y valor. Las claves se crean mediante el prefijo s para valores desde el sensor solar y el prefijo para valores desde el sensor de la línea principal.

SPMONITOR_Z_LOOP

Este es el bucle principal de programas. Está funcionando todo el tiempo. Dentro del bucle utilizamos la función millis() para iniciar las mediciones y guardar los valores en frecuencias específicas.

Por el momento la medida se inicia cada segundo. Esto es posible porque el sensor de luz no se utiliza todavía. Una vez fijado el sensor de luz la frecuencia de la medición tiene que ser reducido, como la rutina para la medición de la luz puede tomar más de lo peor 2 segundos.

Este código llama a las funciones de medición para los sensores de la CT y el sensor de luz. El ciclo de medición es visualizado por un LED montado en el protector de conexión del sensor.

El código siguiente llama a la función para guardar los valores en la base de datos cada minuto:

Y por último tenemos una parte de código para comunicarse directamente en la red local con un PC o un dispositivo Android. Cuando comencé con la aplicación, he intentado todo comunicación manejados dentro de este código de Arduino, pero debido a las limitaciones de memoria me di cuenta de que esto no era posible. Así que al final hay solamente una función izquierda aquí. Como la mayor parte de la comunicación se delega directamente a la parte de Linux de la placa Arduino es manejada aquí sólo la función de informe de estado.

El estado puede ser pedido por cualquier navegador o aplicación llamando simplemente http://IPADDRESS/arduino/e

La respuesta es

F es la frecuencia de medición, V es el valor del voltaje de calibración, C1 y C2 son los valores de calibración de sensor de CT.

La aplicación Android utilizará esta función para encontrar el dispositivo Arduino en la red local.

SPMONITOR_Y_SETUP

Esta rutina se llama inmediatamente después de un reset de la placa Arduino. Contiene las rutinas de inicialización de la comunicación de la red y los sensores 1 – configuración del puerto para el LED de actividad

2-inicialización de la red de comunicación y el acceso al sistema de archivos Linux.

3-inicialización de la luz y sensores CT

4 – inicialización del contador y el dispositivo de vigilancia

Con respecto a la vigilancia, se puede ver

con frecuencia en el código fuente. Con el uso de la vigilancia me aseguro cuando el programa se atasca en cualquier lugar que último después de 8 segundos se inicia un reset de la placa Arduino. Esto asegura que el programa puede funcionar sin vigilancia durante mucho tiempo.

Esto termina la breve descripción del código de Arduino. Para ver todos los datos, revisa mi repositorio en Github donde usted puede encontrar el código fuente completo.

Artículos Relacionados

Elegante Panel Solar con Arduino

Elegante Panel Solar con Arduino

Un par de meses atrás me interesé realmente por energía solar. No es el más eficiente de las energías renovables pero hace su trabajo por ser accesible a la mayoría de las personas alrededor del mundo. Es barato y fácil de usar también encontrarás en
Panel solar Dual Management sistema de SP

Panel solar Dual Management sistema de SP

IoT este prototipo cumple dos funciones: 1) robo prevención e indicación 2) mantenimiento de panel solar usando un LinkIt y sensores1) prevención de robos: para ello utilizamos las funciones GPS y GPRS de LinkIt un tablero con acelerómetro. Si se mue
Sistema de vigilancia automático casero con arduino (simple y barato)

Sistema de vigilancia automático casero con arduino (simple y barato)

El objetivo de mi proyecto es lograr el sistema de vigilancia de inicio automático sin ninguna interferencia manual. En general otro sistema de vigilancia es necesario receptor en la TV y la cámara de energía cada vez. Y también necesita a cualquier
Emergencia led aligeramiento de inicio del sistema con inversor de coche usado batería y 45 vatios cfl y panel solar

Emergencia led aligeramiento de inicio del sistema con inversor de coche usado batería y 45 vatios cfl y panel solar

esto es barato 45 vatios inversor tengo libre ya que la batería está dañada,Paso 1: esta es la batería de 12 voltios 35 ah utilizadoPaso 2: inversor tiene entrada solar, deberíamos Fije el cable del cable positivo del panel solar a la entrada de pasi
MPPT para Panel Solar Fotovoltaico

MPPT para Panel Solar Fotovoltaico

seguimiento de punto de potencia máxima (MPPT) para el panel solar del picovoltio es un gran tema de interés para muchos investigadores.La razón es que la eficiencia máxima de cualquier Panel solar del picovoltio es 25.89%Técnicas de optimización com
Anexo, un Monitor de Arduino Yun garaje

Anexo, un Monitor de Arduino Yun garaje

¿Izquierda en casa y no estoy seguro si has cerrado tu puerta de garaje? Con este Instructable, puede tener tranquilidad y manejar las puertas - en cualquier lugar y en cualquier momento!Este proyecto proporcionará un portal web que permite al usuari
Arduino controla fuente Solar

Arduino controla fuente Solar

Una fuente puede hacer un bonito accesorio decorativo para su jardín. Pero no siempre es fácil para un cable de alimentación a donde usted lo desee. Así que decidí correr en la energía solar. El sistema es controlado por un Arduino. Esto le permite a
Panel Solar ligero (cargador de batería de 12V)

Panel Solar ligero (cargador de batería de 12V)

Esto es, espero, no solo "todavía otro Home-Made Panel Solar".Mi plan es instalar eventualmente un número considerable de paneles desmontables en un velero. Para eso, tienen que ser ligero, eficiente, relativamente barato y relativamente robusto
Apartamento Solar sistema

Apartamento Solar sistema

Este es un 'verde' y el Instructable respetuoso del medio ambiente que crea un sostenible forma de vida que combina el uso de Solar & baterías. Por ejemplo, los materiales / piezas usadas no consumen electricidad inorder para función. En su lugar se
Panel solar Rover

Panel solar Rover

Si quieres construir un 8.64 kWh Panel Solar Rover, entonces esto es instructivo para usted! Descripciones de funcionamiento también se incluirán en las direcciones de este instructable como breve ensamblaje. Este panel solar rover fue hecho original
Cómo construir un Panel Solar

Cómo construir un Panel Solar

actualmente soy un estudiante universitario estudiando Ingeniería Informática, y este verano mientras estaba de vacaciones decidí que quería aprender más sobre energía solar y cómo construir un panel solar desde cero. Mi razón principal para buscar p
Conectar múltiples paneles solares

Conectar múltiples paneles solares

conectar múltiples paneles solaresHay 3 formas de conectar los paneles solares; paralelo, serie y una combinación del paralelo y serie. La primera que voy a hablar es paralelo porque esto es probablemente la forma más común de conectar paneles. Para
Instalación de un rack de techo bricolaje para paneles solares

Instalación de un rack de techo bricolaje para paneles solares

Quería añadir paneles solares a mi carro de viaje, que significó la instalación de un robusto rack para montar los paneles en. En vez de comprar un sistema de portaequipajes caro, encargó un simple estante de acero en el MakerSpace SLO y luego había
Solar calzada luces de Panel Solar de recambio

Solar calzada luces de Panel Solar de recambio

puse recientemente en una serie de luces de la pasarela accionado solar frente a mi casa. Está equipados con un LED bastante de gran alcance y en consecuencia tener un panel solar grande (comparado con otras luces de la pasarela con alimentación sola