Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Traqueur solaire basé sur l'Internet des objets (IoT)

Composants et fournitures

Arduino Mega 2560
× 1
Ethernet Shield (Wiznet W5100) pour Arduino
× 1
Micro-servomoteur SG90
× 2
LDR, 5 Mohm
× 4
Capteur de température DHT22
× 1
Mini panneau solaire
× 1
Résistance 330 ohm
× 4
Résistance à trou traversant, 10 ohm
× 2
Résistance 220 ohm
× 1
LED 5 mm :Rouge
× 1

Applications et services en ligne

myDevices Cayenne
Arduino IDE

À propos de ce projet

Ce projet présente une solution IoT simple et peu coûteuse pour surveiller et contrôler un système de suivi solaire intelligent à deux axes pour l'évaluation des performances.

Le système de suivi solaire proposé basé sur l'IoT est représenté sur la figure 1. Il s'agit d'un suiveur solaire à deux axes qui peut pivoter automatiquement pour suivre la position du soleil à l'aide de capteurs LDR, ou manuellement par l'utilisateur via le tableau de bord d'une application IoT. Le système commence par détecter la position du soleil (intensité de la lumière) par des capteurs LDR et envoie les données au contrôleur (carte Arduino Mega). Ce dernier traite ensuite ces données pour commander des servomoteurs (SM1 et SM2) qui maintiennent le panneau photovoltaïque en rotation vers le soleil. Les valeurs de la tension et du courant PV générés, de la température et de l'humidité sont également envoyées à l'Arduino via des capteurs associés. Ensuite, le shield Ethernet, qui est monté avec Arduino et lui permet d'être connecté à Internet, enverra les données qui ont été prises et/ou traitées par Arduino vers le cloud (serveur web). Enfin, les données du tracker solaire, y compris les capteurs LDR, la puissance photovoltaïque, la température et l'humidité, sont affichées en temps réel dans l'application de surveillance IoT via des widgets pré-créés. L'application de surveillance IoT est conçue à l'aide de la plate-forme Cayenne myDevices. Une fois que l'utilisateur est connecté à internet depuis son ordinateur ou son smartphone, il peut visualiser, dans le tableau de bord de l'application IoT, toutes les données des trackers solaires dans leurs widgets associés. Par conséquent, l'utilisateur dispose des données nécessaires liées à l'environnement et aux performances du panneau photovoltaïque. De plus, en mode manuel, les servomoteurs prendront les directions angulaires de leurs widgets associés dans le tableau de bord. Ainsi, l'utilisateur peut contrôler son système pour rechercher les meilleures conditions environnementales et extraire le maximum d'énergie du panneau PV. L'application IoT est également programmée pour envoyer des alertes de notification (SMS ou Email) lorsqu'un capteur atteint une valeur seuil prédéfinie.

Conception du matériel

Comme le montre la figure 2, le système de suivi solaire IoT se compose d'un panneau photovoltaïque, de deux servomoteurs, de quatre capteurs LDR, d'un circuit diviseur de tension, d'un capteur de température et d'humidité, d'une Led et de la carte Arduino Mega.

Le panneau photovoltaïque utilisé mesure 115 mm sur 85 mm avec une sortie de 1,6 W et peut générer une tension jusqu'à 6 V. Deux servomoteurs à 180 degrés sont utilisés pour motoriser le suiveur solaire et ils sont contrôlés par la carte Arduino via les broches PWM 5 et 6. Le servomoteur gauche-droite (LR) (MG996R) fait tourner le suiveur solaire sur l'axe vertical (Est/Ouest), tandis que le servomoteur haut-bas (UD) (SG90) fait tourner le suiveur solaire sur l'axe horizontal ( Sud/Nord).

Quatre LDR (Cds GL5528) sont utilisés pour détecter la position du soleil et qui ont été fixés aux quatre coins du panneau. Les capteurs LDR sont connectés à l'Arduino via des broches analogiques de A0 à A3. La LDR est une résistance dont la valeur diminue avec l'augmentation de l'intensité lumineuse incidente à sa surface. Le capteur LDR est conçu comme un circuit diviseur de tension, comme le montre la figure 2. La tension de sortie du diviseur est convertie par le microcontrôleur de l'Arduino Mega de la valeur analogique en une valeur numérique comprise entre 0 et 1023. Parce que l'analogique au numérique Le convertisseur (ADC) du microcontrôleur est codé en 10 bits. La valeur de la résistance série dans le circuit du capteur LDR est de 330 .

La température et l'humidité sont mesurées par le capteur DHT22. Le DHT22 intègre une thermistance et un capteur d'humidité capacitif pour mesurer la température et l'humidité relative. Sa plage de température est de -40 à 80 °C avec une précision <±0,5 °C, et sa plage d'humidité est de 0 à 100 % avec une précision de ±2% (Max ±5%). Ce capteur utilise un fil de signal pour transmettre les données à Arduino (broche numérique 2) et deux fils pour l'alimentation.

La tension et le courant PV sont mesurés à travers un circuit diviseur de tension qui agit également comme une charge et qui se compose de deux résistances en série de 10 Ohms. La sortie du circuit diviseur est connectée à la broche analogique A4 de l'Arduino. De plus, une LED, qui est connectée à la broche numérique 3, reflète dans le circuit du système l'état de mode du suiveur solaire (manuel ou automatique).

Le microcontrôleur Arduino Mega avec ATmega2560 est utilisé comme contrôleur intégré qui interagit avec le blindage Ethernet Arduino avec la plate-forme de surveillance. Le blindage Ethernet, qui est monté au-dessus de la carte Arduino, doit être connecté à un routeur Wi-Fi (ou PC) via un câble RJ45, comme illustré à la Fig. 3. Le blindage Ethernet est basé sur la puce Ethernet Wiznet W5100 qui fournit un pile réseau (IP) pour les protocoles TCP et UDP.

Conception de logiciels

a. IDE Arduino

Arduino est une plate-forme de prototypage électronique open source avec du matériel et des logiciels faciles à utiliser. La plate-forme Arduino fournit un environnement de développement intégré (IDE), qui inclut la prise en charge des langages de programmation C et C++. La carte Arduino utilisée dans ce travail est programmée par l'IDE qui sert d'éditeur de code et à partir duquel le code du programme peut être téléchargé sur le microcontrôleur via un câble USB, comme le montre la Fig. 3. La carte Arduino Mega est utilisée pour mettre en œuvre toutes les exigences logicielles du tracker solaire basé sur l'IoT.

b. myDevices Cayenne

MyDevices est une entreprise qui propose des solutions IoT. Il offre une plate-forme de bout en bout pour l'IoT. Dans notre projet, nous nous concentrerons sur Cayenne, une des solutions de myDevices. Cet outil permet aux développeurs, concepteurs et ingénieurs de construire des prototypes de l'IoT. Cayenne utilise le protocole Message QueuingTelemetry Transport (MQTT) pour connecter n'importe quel appareil avec Cayennecloud. Une fois connecté, l'utilisateur peut envoyer et recevoir des données de l'appareil vers le tableau de bord Cayenne via les Widgets créés. MQTT est un protocole de messagerie de publication-abonnement basé sur le protocole TCP/IP. La méthodologie de publication-abonnement utilise un agent de message qui est responsable de la livraison des messages au client. MQTT est l'API permettant d'envoyer des informations au cloud Cayenne ou aux appareils contrôlés par Cayenne. L'agent de message dans cette connexion est le cloud, il gère les différents clients (capteurs et actionneurs) qui envoient et reçoivent les données.

Pour utiliser MQTT avec Cayenne, nous devons utiliser les bibliothèques Cayenne. Pour Arduino, la bibliothèque CayenneMQTT peut être installée à partir du gestionnaire de bibliothèque de l'IDE. Pour programmer notre application IoT basée sur la plateforme Cayenne IoT, nous profiterons des fonctions prédéfinies. Par exemple, pour établir la connexion entre Cayenne cloud et Arduino Mega équipé du module Ethernet, nous appelons la librairie CayenneMQTTEthernet où nous déclarons nos informations d'authentification (le nom d'utilisateur, le mot de passe et l'ID client) qui doivent être obtenues à partir du tableau de bord Cayenne. Ensuite, dans la partie configuration du programme, nous appelons Cayenne.begin() fonction pour établir la connexion avec le tableau de bord Cayenne. Pour chaque actionneur, on crée une fonction avec un paramètre entier compris entre 0 et 31 appelée impérativement CAYENNE IN (VIRTUAL CHANNEL) . Pour chaque capteur, nous créons une fonction avec un paramètre entier compris entre 0 et 31 appelée impérativement CAYENNE_OUT (VIRTUAL_CHANNEL) . Dans la partie boucle du programme, nous appelons la fonction prédéfinie Cayenne.loop() , cette fonction appelle elle-même les fonctions CAYENNE_OUT et CAYENNE_IN. Le canal virtuel comme son nom l'indique est un canal qui n'existe pas physiquement, il caractérise des widgets de visualisation ou de commande. Il permet de les relier au capteur ou actionneur correspondant.

c. Le intégré conception de logiciels

Le logiciel embarqué est la pièce qui sera embarquée dans l'Arduino Mega pour interagir entre le module Ethernet et le cloud de Cayenne (voir Annexe). Il est conçu comme suit :

(i) Le tracker solaire basé sur l'IoT a deux modes de fonctionnement :manuel et automatique. Un bouton créé dans le tableau de bord du Cayenne a pour rôle de basculer entre les deux modes. Lorsqu'il est inactif, le mode manuel est sélectionné, sinon le mode automatique. Par ailleurs, une fonction est établie dans le code Arduino qui permet de récupérer l'état du bouton. La LED dans le circuit du système reflète l'état de ce commutateur.

Par conséquent, pour que le contrôleur connaisse le mode de fonctionnement sélectionné, il suffit de tester l'état de la broche dans laquelle la LED est connectée. Par exemple, si l'état de la LED est bas, le contrôleur appellera la fonction de mode manuel à exécuter, sinon, il appellera la fonction automatique.

(ii) Si le mode manuel est sélectionné, l'utilisateur peut contrôler directement les positions des servomoteurs pour orienter le panneau PV d'est en ouest par le servomoteur L-R ou du sud au nord par le servomoteur U-D. Le contrôle se fait à partir des widgets de servomoteurs associés dans le tableau de bord de l'application IoT.

Dans ce mode, le contrôleur appelle Cayenne.loop() fonction qui appelle elle-même toutes les fonctions CAYENNE_IN , y compris celles liées aux servomoteurs, à exécuter. La Cayenne.loop() La fonction appellera également toutes les fonctions CAYENNE_OUT, liées aux capteurs, à exécuter. Où les données relatives aux capteurs LDR, au courant PV, à la tension et à la puissance, à la température et à l'humidité seraient envoyées au serveur afin qu'elles puissent être visualisées dans leurs widgets associés dans l'application IoT.

(iii) Si le mode automatique est sélectionné, l'algorithme illustré à la Fig. 4 sera exécuté. L'algorithme commence par lire les valeurs analogiques renvoyées par les capteurs LDR. Ensuite, il traite ces données pour commander des servomoteurs qui déplacent le panneau photovoltaïque vers la position du soleil. Compte tenu du mouvement du suiveur solaire basé sur l'axe vertical, les valeurs moyennes des deux LDR de gauche et des deux LDR de droite sont comparées et si les gauches reçoivent plus de lumière, le panneau photovoltaïque se déplacera dans cette direction (dans le sens des aiguilles d'une montre) par le servomoteur LR. Ce dernier s'arrêtera lorsque la différence de résultat sera comprise entre -10 et 10. Cette plage sert à stabiliser le contrôleur et à réduire la consommation électrique des servomoteurs. Sinon, si le bon ensemble de LDR reçoit plus de lumière, le panneau PV se déplacera dans cette direction (sens antihoraire) à travers le servomoteur L-R et continuera à tourner jusqu'à ce que le résultat de différence soit dans la plage [−10, 10]. La même approche est utilisée pour le mouvement du suiveur solaire basé sur l'axe horizontal où les valeurs moyennes des deux LDR du haut et des deux LDR du bas sont comparées.

En plus du mode automatique, le contrôleur appellera également le Cayenne.loop() fonction pour envoyer les données du tracker solaire à l'application IoT.

d. Développement de l'application de surveillance IoT

(i) Interfaçage matériel avec la plate-forme Cayenne IoT

Pour interfacer le matériel, y compris les capteurs et les actionneurs, avec la plate-forme IoT, nous devons suivre les étapes suivantes :

+ Connectez-vous sur le site Web de Cayenne myDevice après avoir créé un compte (Fig. 5(a)).

+ Ensuite, cliquez sur « Apportez vos propres choses » de l'API Cayenne (Fig. 5(b)).

+ Copiez les informations d'identification MQTT (nom d'utilisateur, mot de passe et identifiant client) de Crete App (Fig. 6), et collez-les dans le code source Arduino comme décrit précédemment. Après avoir compilé et téléchargé avec succès l'intégralité du code sur Arduino Mega, ouvrez Serial Monitor dans Arduino IDE pour obtenir les impressions du journal Cayenne (Fig. 7). Dès que notre appareil se connecte et se connecte à Cayenne, la page précédente (Fig. 6) est automatiquement mise à jour et nous verrons notre appareil dans le tableau de bord en ligne comme on peut le voir sur la Fig. 8.

+ Ensuite, pour interfacer capteurs et actionneurs, c'est-à-dire créer leurs widgets, cliquez sur « Ajouter nouveau… », sélectionnez « Appareil/Widget » et cliquez sur « Widgets personnalisés » (Fig. 9). Ensuite, sélectionnez un widget et remplissez tous ses paramètres associés (le numéro de canal doit être le même que dans le code), et enfin, cliquez sur « Add Widget » pour l'ajouter au tableau de bord de votre appareil. Pour nous, nous avons choisi le widget « value » pour tous les capteurs, widget « Button » pour le changement de mode et le widget "Slider" pour le servomoteur.

Enfin, la figure 10 illustre l'application IoT conçue pour surveiller les données du suiveur solaire. Une fois la connexion avec le système de suivi solaire établie, les données des capteurs peuvent être visualisées sur leurs widgets associés, le mode de suivi (automatique ou manuel) peut être sélectionné à partir du bouton de commutation, ainsi que le contrôle des angles des servomoteurs via leurs widgets. Les données des capteurs peuvent également être obtenues sous forme graphique en modifiant le type de représentation dans leurs paramètres, ou simplement en cliquant sur l'icône graphique au-dessus du widget.

(ii) Création d'alertes

L'un des critères les plus importants d'un système de surveillance est sa capacité à envoyer des alertes de notification pour informer les utilisateurs lorsqu'un événement, lié à leurs appareils surveillés, se produit. À cette fin, nous profitons de l'une des fonctionnalités de Cayenne pour ajouter des alertes à notre application IoT, où nous pouvons préprogrammer notre application pour envoyer une alerte de notification (SMS, Email ou les deux) ou pour effectuer une action spécifiée. Par exemple, une alerte de température est créée pour envoyer une notification par e-mail à l'utilisateur (ou aux destinataires) lorsque la température surveillée atteint une valeur seuil, comme le montre la figure 11. Pour créer une alerte, cliquez sur « Ajouter nouveau. .." et sélectionnez "Trigger", puis définissez l'événement et son action et enfin cliquez sur "enregistrer" pour l'ajouter au tableau de bord.

Prototype

La figure 12 présente le prototype du suiveur solaire dans son état détaché et assemblé. Il se compose du panneau PV, des servomoteurs -R et U-D et des capteurs LDR. Le panneau est fixé au U-Dservomotor d'un côté et avec un roulement de l'autre côté pour assurer une meilleure flexibilité lorsque le tracker solaire tourne autour de l'axe horizontal. L'ensemble est fixé sur le servomoteur L-R. Les capteurs LDR sont fixés aux quatre coins du panneau à l'intérieur de cylindres creux. Si le panneau n'est pas perpendiculaire au soleil, au moins un LDR sera couvert par l'ombre causée par le cylindre environnant. Par conséquent, il y aura une différence d'intensité lumineuse. La meilleure orientation est lorsque les intensités lumineuses sont égales dans tous les capteurs LDR. La figure 13 montre l'intégralité du prototype du système de suivi solaire basé sur l'IoT, et il est clair que tous les composants signalés dans la partie matérielle ont été utilisés pour le construire.

Pour plus de détails sur les résultats obtenus, se référer à l'article dans ce lien :https://link.springer.com/chapter/10.1007%2F978-3-030-64565-6_4

Code

  • Le code intégré du système de suivi solaire basé sur l'IoT
Le code intégré du système de suivi solaire basé sur l'IoTArduino
/************************************************ ******************* PROJET :système de suivi solaire basé sur l'IoT / le logiciel embarqué Aboubakr El Hammoumi/ [email protected]********* ******************************************************** ****/#define CAYENNE_PRINT Serial#include //Bibliothèque CayenneMQTT #include //Bibliothèque de servomoteurs #include //Bibliothèque DHT #define DHTTYPE DHT22#define DHTPIN 2DHT dht(DHTPIN,DHTTYPE); // Identifiants MQTT nom d'utilisateur[]="498d2d00-afe2-11ea-883c-638d8ce4c23d";mot de passe char[]="ab4a8f92d94033c01f6e18ce1d8a84d8c304c9c4";98 ID client 1778ea[]-" 93bf-d33a96695544" ;Servo servo_x ; //servomoteur up-down int servoh =0;int servohLimitHigh =170; int servohLimitLow =10 ; Servo servo_z; //servomoteur gauche-droite int servov =0; int servovLimitHigh =170;int servovLimitLow =10;int topl,topr,botl,botr;int seuil_valeur=10; float Vout;void setup(){ Serial.begin(9600); Cayenne.begin(nom d'utilisateur, mot de passe, ID client); servo_x.attach(5) ; servo_z.attach(6) ; dht.begin(); pinMode(3,SORTIE); digitalWrite (3, LOW); }boucle vide (){ topr=analogRead (A2) ; topl=lecture analogique (A3) ; botl=lecture analogique (A4) ; botr=lecture analogique(A5) ; Vout=(Lecture analogique(A1) * 5,0) / 1023 ; Serial.println(" Mode manuel"); Cayenne.loop(); if (digitalRead(3)==HIGH){ Serial.println(" Automatic-mode"); servoh =servo_x.read(); servov =servo_z.read(); int avgtop =(topr + topl) / 2 ; int moybot =(botr + botl) / 2 ; int avgright =(topr + botr) / 2 ; int avgleft =(topl + botl) / 2; int diffhori=avgtop - avgbot; int diffverti=avgleft - avgright; /*suivi selon l'axe horizontal*/ if (abs(diffhori) <=valeur_seuil) { servo_x.write(servoh); // arrête le servo de haut en bas } else { if (diffhori> seuil_valeur) { Serial.println(" x - 2 "); servo_x.write(servoh -2); // Rotation horaire CW if (servoh> servohLimitHigh) { servoh =servohLimitHigh; } délai(10) ; } else { servo_x.write(servoh +2); //CCW if (servoh seuil_valeur) { servo_z.write(servov -2); //CW if (servov> servovLimitHigh) { servov =servovLimitHigh; } délai(10) ; }else{ servo_z.write(servov +2); //CCW if (servov

Schémas


Processus de fabrication

  1. Internet des objets fascinant :qu'est-ce qui motive les praticiens de l'IoT ?
  2. Apporter la blockchain à l'Internet des objets
  3. Le défi de sécurité posé par l'Internet des objets :2e partie
  4. Cybersécurité et Internet des objets :sécurité IoT évolutive
  5. Investir dans le potentiel de l'Internet des objets
  6. Le vrai Internet des objets ?
  7. Internet des objets :gérer l'afflux de données
  8. 5 défis auxquels l'Internet des objets est toujours confronté
  9. Libérer la puissance de l'Internet des objets industriel