Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Internet der Dinge (IoT)-basierter Solartracker

Komponenten und Verbrauchsmaterialien

Arduino Mega 2560
× 1
Ethernet Shield (Wiznet W5100) für Arduino
× 1
SG90 Micro-Servomotor
× 2
LDR, 5 MOhm
× 4
DHT22-Temperatursensor
× 1
Mini-Solarmodul
× 1
Widerstand 330 Ohm
× 4
Durchgangslochwiderstand, 10 Ohm
× 2
Widerstand 220 Ohm
× 1
5 mm LED:Rot
× 1

Apps und Onlinedienste

myDevices Cayenne
Arduino-IDE

Über dieses Projekt

Dieses Projekt präsentiert eine einfache und kostengünstige IoT-Lösung zur Überwachung und Steuerung eines intelligenten zweiachsigen Solartrackersystems zur Leistungsbewertung.

Das vorgeschlagene IoT-basierte Solartrackersystem ist in Abb. 1 dargestellt. Es handelt sich um einen zweiachsigen Solartracker, der sich automatisch drehen kann, um den Sonnenstand mithilfe von LDR-Sensoren oder manuell durch den Benutzer über das Dashboard einer IoT-Anwendung zu verfolgen. Das System beginnt mit der Erkennung des Sonnenstands (Lichtintensität) durch LDR-Sensoren und sendet die Daten an den Controller (Arduino Mega Board). Letzterer verarbeitet dann diese Daten, um Servomotoren (SM1 und SM2) zu steuern, die das PV-Modul halten, um sich in Richtung Sonne zu drehen. Die Werte der erzeugten PV-Spannung und -Strom, Temperatur und Luftfeuchtigkeit werden auch über zugehörige Sensoren an den Arduino gesendet. Als nächstes sendet das Ethernet-Shield, das mit Arduino montiert ist und die Verbindung mit dem Internet ermöglicht, die Daten, die von Arduino aufgenommen und / oder verarbeitet wurden, an die Cloud (Webserver). Schließlich werden die Solartracker-Daten, einschließlich LDR-Sensoren, PV-Leistung, Temperatur und Luftfeuchtigkeit, in Echtzeit in der IoT-Überwachungsanwendung über vorgefertigte Widgets angezeigt. Die IoT-Überwachungsanwendung wurde mit Cayenne myDevicesplatform entwickelt. Sobald der Benutzer von seinem Computer oder Smartphone aus mit dem Internet verbunden ist, kann er im Dashboard der IoT-Anwendung alle Solartracker-Daten in den zugehörigen Widgets visualisieren. Daher verfügt der Benutzer über die erforderlichen Daten, die mit der Umgebung und Leistung des PV-Moduls verknüpft sind. Darüber hinaus übernehmen die Servomotoren im manuellen Modus Winkelrichtungen von ihren zugehörigen Widgets im Dashboard. Daher kann der Benutzer sein System steuern, um die besten Umgebungsbedingungen zu suchen und die maximale Energie aus dem PV-Modul zu extrahieren. Die IoT-Anwendung ist auch so programmiert, dass sie Benachrichtigungen (SMS oder E-Mail) sendet, wenn ein Sensor einen vordefinierten Schwellenwert erreicht.

Hardwaredesign

Wie in Abb. 2 gezeigt, besteht das IoT-Solartracker-System aus einem PV-Panel, zwei Servomotoren, vier LDR-Sensoren, einer Spannungsteilerschaltung, einem Temperatur- und Feuchtigkeitssensor, einer LED und dem Arduino Mega Board.

Das verwendete PV-Panel ist 115 mm x 85 mm groß mit einer Leistung von 1,6 W und kann eine Spannung von bis zu 6 V erzeugen. Zwei 180-Grad-Servomotoren werden verwendet, um den Solartracker zu motorisieren und sie werden von der Arduino-Platine über die PWM-Pins 5 und gesteuert 6. Der Links-Rechts (LR) Servomotor (MG996R) dreht den Solartracker auf der vertikalen Achse (Ost/West), während der Up-Down (UD) Servomotor (SG90) den Solartracker auf der horizontalen Achse dreht ( Süd/Nord).

Zur Erfassung des Sonnenstandes werden vier LDRs (Cds GL5528) verwendet, die in den vier Ecken des Panels angebracht sind. Die LDR-Sensoren sind über analoge Pins von A0 bis A3 mit dem Arduino verbunden. Der LDR ist ein Widerstand, dessen Wert mit zunehmender Lichtintensität auf seiner Oberfläche abnimmt. Der LDR-Sensor ist als Spannungsteilerschaltung ausgeführt, wie in Abb. 2 zu sehen ist. Die Teilerausgangsspannung wird vom Mikrocontroller des Arduino Mega vom analogen Wert in einen digitalen Wert zwischen 0 und 1023 umgewandelt Converter (ADC) des Mikrocontrollers ist in 10 Bit codiert. Der Wert des Serienwiderstands im LDR-Sensorkreis beträgt 330 Ω.

Die Temperatur und Luftfeuchtigkeit werden über den DHT22-Sensor gemessen. DHT22 verfügt über einen eingebauten Thermistor und einen kapazitiven Feuchtigkeitssensor zur Messung von Temperatur und relativer Luftfeuchtigkeit. Sein Temperaturbereich reicht von -40 bis 80 °C mit <±0,5 °C Genauigkeit, und sein Feuchtigkeitsbereich reicht von 0 bis 100 % mit ±2 % (max. ±5 %) Genauigkeit. Dieser Sensor verwendet eine Signalleitung, um Daten an Arduino (digitaler Pin 2) zu übertragen, und zwei Drähte für die Stromversorgung.

Die PV-Spannung und der PV-Strom werden über eine Spannungsteilerschaltung gemessen, die auch als Last fungiert und aus zwei Reihenwiderständen von 10 Ohm besteht. Der Ausgang der Teilerschaltung ist mit dem analogen Pin A4 des Arduino verbunden. Darüber hinaus spiegelt eine LED, die am digitalen Pin 3 angeschlossen ist, im Systemkreis den Betriebszustand des Solartrackers (manuell oder automatisch) wieder.

Der Mikrocontroller Arduino Mega withATmega2560 wird als eingebetteter Controller verwendet, der zusammen mit der Überwachungsplattform mit dem Arduino-Ethernet-Shield interagiert. Das TheEthernet-Shield, das über dem Arduino-Board montiert ist, muss über ein RJ45-Kabel mit einem Wi-Fi-Router (oder PC) verbunden werden, wie in Abb. 3 gezeigt. Das Ethernet-Shield basiert auf dem Wiznet W5100 Ethernet-Chip, der eine Netzwerk(IP)-Stack für TCP- und UDP-Protokolle.

Softwaredesign

a. Arduino-IDE

Arduino ist eine Open-Source-Elektronik-Prototyping-Plattform mit einfach zu bedienender Hardware und Software. Die Arduino-Plattform bietet eine integrierte Entwicklungsumgebung (IDE), die die Programmiersprachen C und C++ unterstützt. Das in dieser Arbeit verwendete Arduino-Board wird von der IDE programmiert, die als Code-Editor dient und von der aus der Programmcode über ein USB-Kabel auf den Mikrocontroller hochgeladen werden kann, wie in Abb. 3 gezeigt. Das Arduino Mega-Board wird verwendet um alle Softwareanforderungen des IoT-basierten Solartrackers umzusetzen.

b. myDevices Cayenne

MyDevices ist ein Unternehmen, das IoT-Lösungen anbietet. Es bietet eine End-to-End-Plattform für das IoT. In unserem Projekt konzentrieren wir uns auf Cayenne, eine der Lösungen von myDevices. Dieses Tool ermöglicht es Entwicklern, Designern und Ingenieuren, Prototypen des IoT zu bauen. Cayenne verwendet das Message QueuingTelemetry Transport (MQTT)-Protokoll, um jedes Gerät mit Cayennecloud zu verbinden. Sobald die Verbindung hergestellt ist, kann der Benutzer über die erstellten Widgets Daten vom Gerät an das Cayenne-Dashboard senden und empfangen. MQTT ist ein Publish-Subscribe-Messaging-Protokoll, das auf dem TCP/IP-Protokoll basiert. Die Publish-Subscribe-Methodik verwendet einen Nachrichtenagenten, der für die Zustellung von Nachrichten an den Client verantwortlich ist. MQTT ist die API zum Senden von Informationen an die Cayenne-Cloud oder von Cayenne gesteuerte Geräte. Der Nachrichtenagent ist dabei die Cloud, sie verwaltet die verschiedenen Clients (Sensoren und Aktoren), die die Daten senden und empfangen.

Um MQTT mit Cayenne zu verwenden, müssen wir die Cayenne-Bibliotheken verwenden. Für Arduino kann die CayenneMQTT-Bibliothek über den Bibliotheksmanager der IDE installiert werden. Zur Programmierung unserer Cayenne IoT-Plattform-basierten IoT-Anwendung nutzen wir die vordefinierten Funktionen. Um beispielsweise die Verbindung zwischen Cayenne Cloud und Arduino Mega mit dem Ethernet-Modul herzustellen, rufen wir die CayenneMQTTEthernet-Bibliothek auf, in der wir unsere Authentifizierungsinformationen (Benutzername, Passwort und Client-ID) angeben, die aus dem Cayenne-Dashboard abgerufen werden sollten. Dann rufen wir im Setup-Teil des Programms Cayenne.begin() . auf Funktion zum Herstellen der Verbindung mit dem Cayenne-Dashboard. Für jeden Aktor erstellen wir eine Funktion mit einem ganzzahligen Parameter zwischen 0 und 31, die zwingend CAYENNE IN (VIRTUAL CHANNEL) genannt wird . Für jeden Sensor erstellen wir eine Funktion mit einem ganzzahligen Parameter zwischen 0 und 31, die zwingend CAYENNE_OUT (VIRTUAL_CHANNEL) heißt . Im Loop-Teil des Programms rufen wir die vordefinierte Funktion Cayenne.loop() , diese Funktion selbst ruft die Funktionen CAYENNE_OUT . auf und CAYENNE_IN. Der virtuelle Kanal ist, wie der Name schon sagt, ein Kanal, der physisch nicht existiert, er charakterisiert Visualisierungs- oder Befehls-Widgets. Damit können sie mit dem entsprechenden Sensor oder Aktor verknüpft werden.

c. Die eingebettet Softwaredesign

Die eingebettete Software ist das Teil, das in den Arduino Mega eingebettet wird, um zwischen dem Ethernet-Modul und der Cayenne-Cloud zu interagieren (siehe Anhang). Es ist wie folgt gestaltet:

(i) Der IoT-basierte Solartracker verfügt über zwei Funktionsmodi:manuell und automatisch. Eine im Cayenne-Dashboard erstellte Schaltfläche hat die Funktion, zwischen den beiden Modi zu wechseln. Wenn es inaktiv ist, wird der manuelle Modus gewählt, ansonsten der automatische Modus. Außerdem ist im Arduino-Code eine Funktion eingerichtet, die es ermöglicht, den Zustand der Schaltfläche wiederherzustellen. Die LED im Systemkreis gibt den Zustand dieses Schalters wieder.

Damit der Controller den ausgewählten Betriebsmodus kennt, müssen wir daher nur den Zustand des Pins testen, an dem die LED angeschlossen ist. Wenn der LED-Status beispielsweise niedrig ist, ruft die Steuerung die manuelle Modusfunktion zur Ausführung auf, andernfalls ruft sie die Automatikfunktion auf.

(ii) Wenn der manuelle Modus ausgewählt ist, kann der Benutzer die Positionen der Servomotoren direkt steuern, um das PV-Modul von Ost nach West mit dem L-R-Servomotor oder von Süd nach Nord mit dem U-D-Servomotor auszurichten. Die Steuerung erfolgt über die zugehörigen Widgets der Servomotoren im Dashboard der IoT-Anwendung.

In diesem Modus ruft der Controller Cayenne.loop() . auf Funktion, die selbst alle Funktionen aufruft CAYENNE_IN , einschließlich derjenigen, die sich auf Servomotoren beziehen, auszuführen. Die Cayenne.loop() Die Funktion ruft auch alle Funktionen CAYENNE_OUT auf, die mit den Sensoren verknüpft sind, um sie auszuführen. Dabei werden die Daten zu LDR-Sensoren, PV-Strom, Spannung und Leistung, Temperatur und Luftfeuchtigkeit an den Server gesendet, damit sie in den zugehörigen Widgets in der IoT-Anwendung visualisiert werden können.

(iii) Wenn der Automatikmodus gewählt ist, wird der in Abb. 4 gezeigte Algorithmus ausgeführt. Der Algorithmus beginnt mit dem Lesen der Analogwerte, die von LDR-Sensoren zurückgegeben werden. Dann verarbeitet es diese Daten, um Servomotoren zu steuern, die das PV-Panel in Richtung Sonnenstand bewegen. Unter Berücksichtigung der vertikalen achsenbasierten Solartrackerbewegung werden die Durchschnittswerte der beiden LDRs links und der beiden LDRs rechts verglichen und wenn die linken mehr Licht erhalten, bewegt sich das PV-Panel in diese Richtung (im Uhrzeigersinn). durch den LR-Servomotor. Letzterer stoppt, wenn das Differenzergebnis zwischen -10 und 10 liegt. Dieser Bereich dient zur Stabilisierung des Reglers und zur Reduzierung der Leistungsaufnahme der Servomotoren. Andernfalls, wenn der richtige Satz von LDRs mehr Licht empfängt, bewegt sich das PV-Modul in diese Richtung (entgegen dem Uhrzeigersinn) durch den L-R-Servomotor und dreht sich weiter, bis das Differenzergebnis im Bereich [−10, 10] liegt. Der gleiche Ansatz wird für die horizontale achsenbasierte Solartrackerbewegung verwendet, bei der die Durchschnittswerte der beiden LDRs oben und der beiden LDRs unten verglichen werden.

Neben dem automatischen Modus ruft der Controller auch die Cayenne.loop() auf Funktion zum Senden der Solartracker-Daten an die IoT-Anwendung.

d. Entwicklung der IoT-Überwachungsanwendung

(i) Hardware-Schnittstelle mit Cayenne IoT-Plattform

Um die Hardware, einschließlich Sensoren und Aktoren, mit der IoT-Plattform zu verbinden, müssen wir die nächsten Schritte befolgen:

+ Melden Sie sich auf der Cayenne myDevice-Website an, nachdem Sie ein Konto erstellt haben (Abb. 5(a)).

+ Klicken Sie dann in der Cayenne API auf „Bring Your Own Things“ (Abb. 5(b)).

+ Kopieren Sie die MQTT-Anmeldeinformationen (Benutzername, Passwort und Client-ID) aus der Kreta-App (Abb. 6) und fügen Sie sie wie zuvor beschrieben in den Arduino-Quellcode ein. Nachdem Sie den gesamten Code erfolgreich kompiliert und in Arduino Mega hochgeladen haben, öffnen Sie Serial Monitor in der Arduino IDE, um die Cayenne-Protokolldrucke zu erhalten (Abb. 7). Sobald unser Gerät online geht und sich mit Cayenne verbindet, wird die vorherige Seite (Abb. 6) automatisch aktualisiert und wir sehen unser Gerät im Online-Dashboard, wie in Abb. 8 zu sehen ist.

+ Um Sensoren und Aktoren zu verbinden, dh ihre Widgets zu erstellen, klicken Sie auf „Neu hinzufügen…“, wählen Sie „Gerät/Widget“ und klicken Sie auf „Benutzerdefinierte Widgets“ (Abb. 9). Wählen Sie dann ein Widget aus und füllen Sie alle zugehörigen Einstellungen aus (die Kanalnummer muss die gleiche wie im Code sein) und klicken Sie abschließend auf "Widget hinzufügen", um es zum Dashboard Ihres Geräts hinzuzufügen. Für uns haben wir das Widget "Wert" für alle Sensoren ausgewählt, das Widget "Schaltfläche" für Modusschalter und das "Slider"-Widget für Servomotor.

Schließlich veranschaulicht Abb. 10 die entworfene IoT-Anwendung zur Überwachung von Solartracker-Daten. Sobald die Verbindung mit dem Solar-Tracker-System hergestellt ist, können die Sensordaten auf den zugehörigen Widgets visualisiert werden, der Tracking-Modus (automatisch oder manuell) kann über die Umschalttaste ausgewählt werden sowie die Winkel der Servomotoren über ihre Widgets gesteuert werden. Sensordaten können auch in grafischer Form abgerufen werden, indem Sie den Darstellungstyp in ihren Einstellungen ändern oder einfach auf das Grafiksymbol über dem Widget klicken.

(ii) Erstellung von Benachrichtigungen

Eines der wichtigsten Kriterien in einem Überwachungssystem ist seine Fähigkeit, Benachrichtigungen zu senden, um Benutzer zu informieren, wenn ein Ereignis in Bezug auf ihre überwachten Geräte auftritt. Zu diesem Zweck nutzen wir eine der Funktionen von Cayenne, um unserer IoT-Anwendung Warnungen hinzuzufügen, wo wir unsere Anwendung so vorprogrammieren können, dass sie eine Benachrichtigung (SMS, E-Mail oder beides) sendet oder eine bestimmte Aktion ausführt. Zum Beispiel wird ein Temperaturalarm erstellt, um eine E-Mail-Benachrichtigung an den Benutzer (oder die Empfänger) zu senden, wenn die überwachte Temperatur einen Schwellenwert erreicht, wie in Abb. 11 gezeigt. Um einen Alarm zu erstellen, klicken Sie auf „Neu hinzufügen“. .." und wählen Sie "Trigger", stellen Sie dann das Ereignis und seine Aktion ein und klicken Sie abschließend auf "Speichern", um es dem Dashboard hinzuzufügen.

Prototyp

Abb. 12 zeigt den Solartracker-Prototyp im abmontierten und montierten Zustand. Es besteht aus dem PV-Panel, den Servomotoren R und U-D und LDR-Sensoren. Das Panel ist auf der einen Seite am U-Dservomotor und auf der anderen Seite mit einem Lager befestigt, um eine bessere Flexibilität zu gewährleisten, wenn sich der Solartracker um die horizontale Achse dreht. Die Baugruppe wird am Servomotor L-R befestigt. Die LDR-Sensoren sind in den vier Ecken des Panels in Hohlzylindern befestigt. Wenn das Panel nicht senkrecht zur Sonne steht, wird mindestens ein LDR vom Schatten des umgebenden Zylinders bedeckt. Daher wird es einen Unterschied in der Lichtintensität geben. Die beste Orientierung ist, wenn die Lichtintensitäten bei allen LDR-Sensoren gleich sind. Abb. 13 zeigt den gesamten Prototyp des IoT-basierten Solar-Tracker-Systems, und es ist klar, dass alle berichteten Komponenten im Hardware-Teil verwendet wurden, um es zu bauen.

Weitere Informationen zu den erhaltenen Ergebnissen finden Sie in dem Artikel unter diesem Link:https://link.springer.com/chapter/10.1007%2F978-3-030-64565-6_4

Code

  • Der eingebettete Code des IoT-basierten Solartrackersystems
Der eingebettete Code des IoT-basierten SolartrackersystemsArduino
/************************************************ ***************** PROJEKT:IoT-basiertes Solar-Tracker-System / die eingebettete Software Aboubakr El Hammoumi/ [email protected]********* ************************************************* ****/#define CAYENNE_PRINT Serial#include //CayenneMQTT-Bibliothek #include //Servomotor-Bibliothek #include //DHT-Bibliothek #define DHTTYPE DHT22#define DHTPIN 2DHT dht(DHTPIN,DHTTYPE);//MQTT-Anmeldeinformationen char Benutzername[]="498d2d00-afe2-11ea-883c-638d8ce4c23d";char password[]="ab4a8f92d94033c01f6e18ce1d8a84d8c304c9c4";char clientID[b="177828 93bf-d33a96695544";Servoservo_x; // Auf-Ab-Servomotor Int Servoh =0; Int ServohLimitHigh =170; int servohLimitLow =10; Servoservo_z; // Links-Rechts-Servomotor Int Servov =0; int servovLimitHigh =170;int servovLimitLow =10;int topl,topr,botl,botr;int Schwellenwert=10; Float Vout;void setup () { Serial.begin (9600); Cayenne.begin(Benutzername, Passwort, ClientID); servo_x.attach(5); servo_z.attach(6); dht.begin(); PinMode (3, AUSGANG); digitalWrite (3, NIEDRIG); } ungültige Schleife () {topr =analogRead (A2); topl=analogRead (A3); botl=analogRead (A4); botr=analogRead (A5); Vout=(analogRead(A1) * 5.0)/1023; Serial.println ( "Manueller Modus"); Cayenne.loop(); if (digitalRead (3) ==HIGH) { Serial.println ( "Automatikmodus"); servoh =servo_x.read(); servov =servo_z.read(); int avgtop =(topr + topl) / 2; int avgbot =(botr + botl) / 2; int avgright =(topr + botr) / 2; int avgleft =(topl + botl) / 2; int diffhori=avgtop - avgbot; int diffverti=avgleft - avgright; /*Tracking nach horizontaler Achse*/ if (abs(diffhori) <=threshold_value) { servo_x.write(servoh); // Servo auf- und abstoppen} sonst { if (diffhori>threshold_value) {Serial.println(" x - 2"); servo_x.write (Servo-2); // Drehung im Uhrzeigersinn im Uhrzeigersinn if (servoh> servohLimitHigh) { Servoh =servohLimitHigh; } Verzögerung(10); } sonst { servo_x.write (servoh +2); // CCW if (servoh threshold_value) {servo_z.write (servov -2); // CW if (servov> servovLimitHigh) {servov =servovLimitHigh; } Verzögerung(10); }sonst{ servo_z.write (servov +2); // CCW if (servov

Schaltpläne


Herstellungsprozess

  1. Faszinierendes Internet der Dinge:Was treibt IoT-Praktiker an?
  2. Bringen der Blockchain in das Internet der Dinge
  3. Die Sicherheitsherausforderung durch das Internet der Dinge:Teil 2
  4. Cybersicherheit und das Internet der Dinge:Zukunftssichere IoT-Sicherheit
  5. In das Potenzial des Internets der Dinge investieren
  6. Das echte Internet der Dinge?
  7. Das Internet der Dinge:Den Datenfluss managen
  8. 5 Herausforderungen, vor denen das Internet der Dinge noch steht
  9. Entfesselung der Leistungsfähigkeit des industriellen Internets der Dinge
  10. Solar Tracker V2.0