Arduino Yun - panneau solaire, système de surveillance (5 / 8 étapes)

Étape 5: panneau solaire suivi – SKETCH ARDUINO

Écriture d’un programme pour l’Arduino a été une nouvelle expérience pour moi. Gâté par Windows/Linux et même Android qui n’ont fondamentalement aucune limite de mémoire que je rencontrerai très bientôt des problèmes avec le code très limitée et la variable spatiale sur les planches de l’Arduino. L’Arduino Yun offre seulement 28 627 octets pour le code et 2560 octets pour les variables globales.

Ce que j’ai appris vite, c’est que je peux utiliser la mémoire de code vers le haut à 99,9 %, mais si j’utilise plus de 60 % de la mémoire pour les variables globales le croquis était ne fonctionne plus fiable. Je pense que le code de sous-jacente (bootloader,...) nécessite quelques variables globales d’int espace mémoire. J’ai donc dû optimiser mon code et limiter l’utilisation des variables globales autant que possibles. Pour le code lui-même, j’ai divisé le sketch Arduino en plusieurs fichiers. J’ai essayé de commenter le code aussi bien que possible, il devrait donc être explicite.

Les noms des fichiers suivent un schéma spécifique. Le compilateur pour le croquis requiert que les sous-fonctions utilisées doivent être déclarées avant d’être utilisées. Les noms de fichiers sont donc SKETCHNAME_index_MODUL. Avec l’index, je reçois des fichiers à compiler dans l’ordre correct.

SPMONITOR_A_DEFINITIONS

Dans la première partie, tous les fichiers externes nécessaires pour les différentes fonctions sont incluses.

Valeurs d’étalonnage :

Ces valeurs sont essentielles pour les mesures. Ces valeurs sont fonction des capteurs CT utilisés, tolérances des résistances utilisées et de condensateurs et d’autres choses. Pour obtenir ces valeurs correctes, j’ai renforcé plusieurs fois avec le guide de l’étalonnage des blocs de construction OpenEnergyMonitor Procédure d’étalonnage. Jusqu'à ce que vous avez les valeurs correctes ici toutes vos mesures sera plus ou moins merde ! Pour permettre l’étalonnage sans écrire un script spécial, j’ai inclus un mode « calibration » dans l’application Android. En activant le mode étalonnage les applications Android extrait les données de l’Arduino toutes les 10 secondes et affiche des informations sur le facteur de puissance, puissance réelle et apparente et tension mesurée. Les valeurs d’étalonnage peuvent être modifiés jusqu'à ce que les valeurs soient comme prévu (par exemple, facteur de puissance proche de 1.o).

Les autres variables globales sont bien commenté.

SPMONITOR_B_UTILS

Ce module contient 2 fonctions permettant de mémoriser les valeurs enregistrées.

GetTimeStamp() String retourne la date et l’heure du système. Pour l’obtenir, nous utilisons la fonction de « pont » « .run » pour exécuter une commande sur le côté de Linux et de recevoir la sortie sur le « pont ».

La possibilité de lancer des commandes et des scripts sur un shell Linux étend les fonctionnalités de la carte Arduino. Plutôt que les problèmes d’ajouter des fonctions complexes dans l’espace du programme limité du régulateur AVR, ils peuvent être déléguées à la partie Linux.

saveData Sub () utilise les fonctions de "pont" aussi bien pour écrire les données recueillies dans une base de données, envoyer à un service web de nuage et le stocker pour faciliter l’accès du côté de Linux.

Les mesures sont effectuées à chaque seconde, mais les valeurs sont stockées uniquement chaque minute. Les valeurs mesurées sont stockés dans un accumulateur. La partie code

calcule la moyenne des mesures effectués depuis la dernière sauvegarde des valeurs.

La partie code

stocke les valeurs mesurées sur le processeur de Linux en utilisant une structure clé/valeur. Ces structure peut être récupérés sous forme de chaîne JSON par simple appel « http://IPADDRESS//data/get ». (L’adresse IP est l’adresse IP attribuée à l’Arduino Yun). Les données ressemble à :

Vous pouvez voir les données que nous avons mis avec la partie de code ci-dessus dans cette chaîne JSON.

La valeur de L, S et C est actualisée chaque minute et utilisée pour mettre à jour l’interface utilisateur dans l’application Android. Le c, cv, cr... les valeurs sont mises à jour après chaque cycle de mesure (~ 1 s) et peuvent être utilisés pendant le mode de calibration. Ils apparaissent ainsi sur l’interface utilisateur de l’application Android. La partie suivante du code

utilise la fonction de « pont » « .runShellCommand » pour écrire les valeurs mesurées dans la base de données Sqlite. A partir de là, ils peuvent être récupérés sur le réseau local avec le script query.php.

Et la dernière partie de code

utilise aussi bien la fonction de « pont » « .runShellCommand » pour envoyer les données à un service web de nuage. Ce nuage de service web emoncms.org propose (pour le moment pour libre) la possibilité de stocker les données des capteurs et de les visualiser sur le web. Vérifiez leur service, ils sont alimentés par OpenEnergyMonitor !

J’ai ajouté une des options de visualisation dans les images ci-dessus. Vous pouvez voir les données de consommation/production réelle de ma maison dans l’application My solaire de emoncms.org.

SPMONITOR_C_LIGHTSENSOR

Ce module gère le capteur de lumière. La communication avec le capteur de lumière se faite dans les bibliothèques Adafruit_Sensor et Adafruit_TSL2561_U. Ces bibliothèques sont disponibles en open source de Adafruit, le fabricant du module capteur de lumière.

Sub configureSensor () lance la fonction automatique de gamme de la cellule photoélectrique et il définit l’intégration à la valeur la plus élevée.

Sub readLux () initie une mesure du module de capteur de lumière. Pour s’adapter à différentes intensités lumineuses, il est nécessaire d’adapter le temps d’intégration du capteur. Initialement, le capteur est réglé pour le temps d’intégration plus élevé qui est le meilleur dans les situations de faible luminosité. Mais si la lumière devient plus lumineuse, le capteur va saturer et il est nécessaire de passer à un temps plus court de l’intégration. Le capteur offre 3 fois d’intégration différentes. La partie code

lit une valeur dans le capteur. Si le capteur fournit une valeur, le code passe un temps d’intégration plus élevé.
Mais si le capteur est déjà saturé, nous abaisser le temps d’intégration et réessayez de lire à partir du capteur

Cette boucle se répète 5 fois pour s’adapter à des situations de lumière.

SPMONITOR_X_MEASUREMENT

Ce module contient les routines de mesure du capteur CT. La mesure directe du courant et la tension se faite par la bibliothèque d’emonLib. EmonLib est une bibliothèque open source fournie par OpenEnergyMonitor.

void getCTValues (int index) appelle emonLib pour lancer la mesure de courant, de tension et de calcul de puissance et facteur de puissance. L’index de paramètre détermine le capteur qui doit être lu. indice = 0 commence une mesure du capteur CT attachée au câble panneau solaire, 1 commence une mesure du capteur CT attachée à la ligne d’alimentation principale.

Les valeurs recueillies sont ensuite stockés dans un accumulateur. À l’heure actuelle, le système est en mesure de faire une mesure autour de chaque seconde. Les valeurs stockées dans l’accumulateur sont utilisées pour calculer une valeur moyenne avant d’enregistrer les valeurs dans la base de données, ce qui se fait toutes les 60 secondes.

Dans la nuit le panneau solaire ne produit pas de puissance, mais c’est en utilisant un petit courant de veille. Nous éliminons ce courant en veille avec le code

De cette façon nous nous assurons que nous n’enregistrons pas d’une production d’énergie non existant au cours de la nuit.

Les valeurs mesurées sont ensuite enregistrés du côté de Linux avec la fonction « Bridge.put » comme une structure clé/valeur. Les clés sont créées en utilisant le préfixe s pour les valeurs du capteur solaire et le c de préfixe pour les valeurs de la sonde de la ligne principale.

SPMONITOR_Z_LOOP

Il s’agit de la boucle principale de programmes. Il s’exécute tout le temps. À l’intérieur de la boucle, nous utilisons la fonction millis() pour initier des mesures et enregistrement des valeurs dans des fréquences spécifiques.

Au moment où la mesure est lancée chaque seconde. Ceci est possible car le capteur de lumière n’est pas encore utilisé. Une fois que la cellule photoélectrique est fixée la fréquence de la mesure doit être réduite, comme la routine pour la mesure de lumière peut prendre plus que les pires cas 2 secondes.

Ce code appelle les fonctions de mesure pour les capteurs de CT et le capteur de lumière. Le cycle de mesure est visualisé par une LED sur la protection de connexion du capteur.

Le code suivant appelle la fonction pour enregistrer les valeurs dans la base de chaque minute :

Et enfin, nous avons une partie de code pour communiquer directement sur le réseau local avec un PC ou un appareil Android. Quand j’ai commencé avec l’application, j’ai essayé d’avoir tout communication traitées au sein de ce code Arduino, mais en raison des limitations de mémoire, j’ai réalisé que ce n’était pas possible. À la fin il y a donc une seule fonction à gauche ici. Comme la plupart des pièces de communication sont déléguées directement à la partie de Linux de la carte Arduino uniquement la fonction de rapport d’État est traitée ici.

Le statut peut être demande par n’importe quel navigateur ou une application en appelant simplement http://IPADDRESS/arduino/e

La réponse est

F est la fréquence de mesure, V est la valeur d’étalonnage tension, C1 et C2 sont les valeurs d’étalonnage de capteur CT.

Cette fonction va être utilisée par l’application Android pour trouver le dispositif de l’Arduino sur le réseau local.

SPMONITOR_Y_SETUP

Cette routine est appelée une fois après une réinitialisation de la carte Arduino. Il contient les routines d’initialisation pour la communication réseau et des capteurs 1 – configurer le port pour le témoin d’activité

2-initialisation de la communication réseau et l’accès au système de fichiers Linux.

3 – l’initialisation de la lumière et les capteurs de CT

4-initialisation de la minuterie et le chien de garde

Concernant le chien de garde, vous pouvez le voir

fréquemment dans le code source. Avec l’aide de l’organisme de surveillance je m’assure que lorsque le programme se bloque n’importe où que plus tard au bout de 8 secondes, une réinitialisation de la carte Arduino est initiée. Ceci s’assure que le programme peut fonctionner sans surveillance pendant une longue période.

Ceci termine la description succincte du code source Arduino. Pour voir tous les détails, consultez mon dépôt sur Github où vous pouvez trouver le code source complet.

Articles Liés

Système de surveillance automatique maison arduino (simple et bon marché)

Système de surveillance automatique maison arduino (simple et bon marché)

L'objectif de mon projet est d'atteindre le système automatique de surveillance maison sans aucune interférence manuelle. En général autre système de surveillance il faut pouvoir ON TV et caméra récepteur chaque fois. Et aussi il a besoin à l'entrée
Urgence conduit système éclaircissant à la maison avec la voiture d’occasion batterie et 45 watt cfl onduleur et panneau solaire

Urgence conduit système éclaircissant à la maison avec la voiture d’occasion batterie et 45 watt cfl onduleur et panneau solaire

il s'agit d'onduleur pas cher 45 w j'ai obtenu gratuitement puisqu'elle est endommagée,Étape 1 : il s'agit de batterie de 12 volts 35 ah utiliséÉtape 2 : onduleur a apport solaire, nous devrions attacher câble de fil positif de panneau solaire à l'en
Panneau solaire double Management System (DMS SP)

Panneau solaire double Management System (DMS SP)

IoT ce prototype remplit deux fonctions : prévention du vol 1) et l'Indication 2) entretien du panneau solaire à l'aide de capteurs et un LinkIt1) la prévention du vol: pour y parvenir, nous utilisons les fonctionnalités GPS et GPRS de LinkIt une pla
L’annexe, un moniteur de Garage Arduino Yun

L’annexe, un moniteur de Garage Arduino Yun

Gauche maison et ne savez pas si vous avez fermé votre porte de garage ? Avec ce Instructable, vous pouvez avoir la tranquillité d'esprit et gérer vos portes - n'importe où, n'importe quand !Ce projet fournira un portail web qui permet à l'utilisateu
Arduino alimenté Moss & solaire Facade élément

Arduino alimenté Moss & solaire Facade élément

L'idée derrière cet élément de façade unique est à produire de l'énergie et de filtrer les poussières fines. Nous avons raboté pour fonctionner de façon autonome et de réagir à la pollution élevée de particules très fines. L'élément de la façade est
Petite échelle extérieure solaire système hydroponique

Petite échelle extérieure solaire système hydroponique

J'ai eu un tas de trucs pour ce projet se trouvant autour de ma maison déjà et seulement besoin d'une minuterie et les têtes réglables goutte à goutte qui m'a coûté environ 10 $ pour les deux. En utilisant votre imagination, plus certains aider de go
Kickstarter Backer alerte avec Stats Scroller, à l’aide d’Arduino Yun

Kickstarter Backer alerte avec Stats Scroller, à l’aide d’Arduino Yun

L' Arduino Yún est une curieuse addition à la famille de l'Arduino . Il y a une communauté assez répandue autour de la notion, la plate-forme et le logiciel Arduino. Il y a une autre communauté populaire dédiée au hacking et amélioration des routeurs
Suivre panneau solaire avec A Windup horloge solaire portative

Suivre panneau solaire avec A Windup horloge solaire portative

j'ai juste conçu et construit un maison traqueur solaire que peut être facilement réglé pour aligner avec précision à l'altitude du soleil (car il change tous les jours, au fil des saisons) et aussi fidèlement suivre le soleil, du lever au coucher du
La charge de Start/Stop automatique portable (en utilisant l’Arduino, Yun bouclier et ESP8266)

La charge de Start/Stop automatique portable (en utilisant l’Arduino, Yun bouclier et ESP8266)

Je travaille en dehors de mon pays et portable est d'une grande aide pour me connecter à ma famille et mes amis et de faire tous mes animaux informatiques aussi bien, mais j'ai toujours rencontré de l'exécution de batterie faible et même pire sur mod
Panneau solaire léger (chargeur de batterie 12V)

Panneau solaire léger (chargeur de batterie 12V)

C'est, je l'espère, pas juste "encore un autre improvisé panneau solaire".Mon plan est d'installer par la suite un nombre considérable de panneaux démontables sur un voilier. Pour cela, il doit être léger, efficace, relativement peu coûteux et r
Utiliser le Dragino il et mega328p pour créer une solution tant d’Arduino Yun

Utiliser le Dragino il et mega328p pour créer une solution tant d’Arduino Yun

Dans ce projet, nous allons faire une solution comme Arduino Yun à l'aide de Dragino HE.mega328p et autres composants.Ici, nous construire une solutiom alike Arduino Yun et montrer comment programmer le mega328p via le WiFi. et comment faire la démon
Arduino Yun. Créer votre première lampe raccordée.

Arduino Yun. Créer votre première lampe raccordée.

Créer votre première lampe raccordée à l'aide d'Arduino Yun. Contrôler et surveiller une lampe raccordée depuis un téléphone mobile, la tablette et le Bureau à l'aide de Lelylan & MQTT. Il faut 15 minutes | 80 $ en matériel | niveau de baseÉtape 1: m
Faire un panneau solaire de 1 Watt.

Faire un panneau solaire de 1 Watt.

J'adore les ordures de mon voisin j'ai appeler le service des pièces. À cet égard, instructible je vais construire un panneau solaire de 30 lampes solaires, que mon voisin a jetée dehors.Pour ce projet je vais seulement utiliser 18 des cellules solai
Comment construire un panneau solaire

Comment construire un panneau solaire

je suis actuellement étudiant étudiant en génie informatique, et cet été alors que j'étais en pause j'ai décidé que je voulais en savoir plus sur l'énergie solaire et comment construire un panneau solaire à partir de zéro. Ma principale raison pour q