Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Internet of things (IoT)-gebaseerde zonne-tracker

Componenten en benodigdheden

Arduino Mega 2560
× 1
Ethernet Shield (Wiznet W5100) voor Arduino
× 1
SG90 Micro-servomotor
× 2
LDR, 5 Mohm
× 4
DHT22-temperatuursensor
× 1
Mini zonnepaneel
× 1
Weerstand 330 ohm
× 4
Through Hole-weerstand, 10 ohm
× 2
Weerstand 220 ohm
× 1
5 mm LED:rood
× 1

Apps en online services

myDevices Cayenne
Arduino IDE

Over dit project

Dit project presenteert een eenvoudige en goedkope IoT-oplossing voor het bewaken en besturen van een slim tweeassig zonnevolgsysteem voor prestatie-evaluatie.

Het voorgestelde op IoT gebaseerde zonnevolgsysteem is afgebeeld in Fig. 1. Het is een tweeassige zonnevolger die automatisch kan draaien om de positie van de zon te volgen met behulp van LDR-sensoren, of handmatig door de gebruiker via het dashboard van een IoT-toepassing. Het systeem begint met detecteert de zonpositie (intensiteit van het licht) door LDR-sensoren en stuurt de gegevens naar de controller (Arduino Mega-bord). Deze laatste verwerkt deze gegevens vervolgens om servomotoren (SM1 en SM2) die het PV-paneel vasthouden, aan te sturen om naar de zon te draaien. De waarden van de gegenereerde PV-spanning en -stroom, temperatuur en vochtigheid worden ook via bijbehorende sensoren naar de Arduino gestuurd. Vervolgens stuurt het Ethernet-schild, dat met Arduino is gemonteerd en verbinding met internet mogelijk maakt, de gegevens die door Arduino zijn opgenomen en/of verwerkt naar de cloud (webserver). Ten slotte worden de zonne-trackergegevens, inclusief LDR-sensoren, PV-vermogen, temperatuur en vochtigheid, in realtime weergegeven in de IoT-bewakingstoepassing via vooraf gemaakte widgets. De IoT-monitoringtoepassing is ontworpen met behulp van het Cayenne myDevicesplatform. Zodra de gebruiker vanaf zijn computer of smartphone met internet is verbonden, kan hij in het dashboard van de IoT-toepassing alle solartrackergegevens visualiseren in de bijbehorende widgets. Hierdoor beschikt de gebruiker over de benodigde gegevens gekoppeld aan de omgeving en prestaties van het PV-paneel. Bovendien zullen de servomotoren in de handmatige modus hoekrichtingen nemen van de bijbehorende widgets in het dashboard. Zo kan de gebruiker zijn systeem besturen om de beste omgevingsomstandigheden te zoeken en de maximale energie uit het PV-paneel te halen. De IoT-toepassing is ook geprogrammeerd om notificaties (sms of e-mail) te verzenden wanneer een senor een vooraf gedefinieerde drempelwaarde bereikt.

Hardware-ontwerp

Zoals getoond in Fig. 2, bestaat het IoT-solartrackersysteem uit een PV-paneel, twee servomotoren, vier LDR-sensoren, een spanningsdelercircuit, een temperatuur- en vochtigheidssensor, een Led en het Arduino Mega-bord.

Het gebruikte PV-paneel is 115 mm bij 85 mm groot met een output van 1,6 W en kan een spanning genereren tot 6 V. Twee 180 graden servomotoren worden gebruikt om de solar tracker te motoriseren en ze worden bestuurd door het Arduino-bord via PWM-pinnen 5 en 6. De links-rechts (LR) servomotor (MG996R) roteert de solar tracker op de verticale as (Oost/West), terwijl de Up-down (UD) servomotor (SG90) de solar tracker draait op de horizontale as ( Zuid/Noord).

Vier LDR's (Cds GL5528) worden gebruikt om de positie van de zon te detecteren en zijn bevestigd in de vier hoeken van het paneel. De LDR-sensoren zijn verbonden met de Arduino via analoge pinnen van A0 tot A3. De LDR is een weerstand waarvan de waarde afneemt met toenemende lichtintensiteit die op het oppervlak valt. De LDR sensor is ontworpen als een spanningsdelerschakeling zoals te zien is in Fig. 2. De deler uitgangsspanning wordt door de microcontroller van de Arduino Mega omgezet van de analoge waarde naar een digitale waarde tussen 0 en 1023. Omdat de Analog to Digital Converter (ADC) van de microcontroller is gecodeerd in 10 bits. De waarde van de serieweerstand in het LDR-sensorcircuit is 330 Ω.

De temperatuur en luchtvochtigheid worden gemeten via de DHT22 sensor. DHT22 heeft een thermistor en een ingebouwde capacitieve vochtigheidssensor om temperatuur en relatieve vochtigheid te meten. Het temperatuurbereik is van -40 tot 80 °C met een nauwkeurigheid van <±0,5 °C en het vochtigheidsbereik is van 0 tot 100 % met een nauwkeurigheid van ± 2% (max. ± 5%). Deze sensor gebruikt één signaaldraad om gegevens naar Arduino te verzenden (digitale pin 2) en twee draden voor de voeding.

De PV-spanning en -stroom worden gemeten via een spanningsdelercircuit dat ook als belasting fungeert en dat bestaat uit twee serieweerstanden van 10 Ohm. De uitgang van het scheidingscircuit is verbonden met de analoge pin A4 van de Arduino. Verder reflecteert een LED, die is aangesloten op digitale pin 3, in het systeemcircuit de modusstatus van de solartracker (handmatig of automatisch).

De Arduino Mega withATmega2560-microcontroller wordt gebruikt als de embedded controller die samen met het monitoringplatform samenwerkt met het Arduino Ethernet-schild. Het TheEthernet-schild, dat boven het Arduino-bord is gemonteerd, moet worden verbonden met een Wi-Fi-router (of pc) via een RJ45-kabel zoals weergegeven in Fig. 3. Het Ethernet-schild is gebaseerd op de Wiznet W5100 Ethernet-chip die een netwerk(IP)-stack voor TCP- en UDP-protocollen.

Software-ontwerp

a. Arduino IDE

Arduino is een open-source elektronica-prototypingplatform met gebruiksvriendelijke hardware en software. Het Arduino-platform biedt een geïntegreerde ontwikkelomgeving (IDE), die ondersteuning biedt voor programmeertalen C en C++. Het gebruikte Arduino-bord in dit werk is geprogrammeerd door de IDE die dienst doet als code-editor en van waaruit de programmacode via een USB-kabel naar de microcontroller kan worden geüpload, zoals te zien is in Fig. 3. Het Arduino Mega-bord wordt gebruikt om alle softwarevereisten van de IoT-gebaseerde solar tracker te implementeren.

b. myDevices Cayenne

MyDevices is een bedrijf dat IoT-oplossingen aanbiedt. Het biedt een end-to-end platform voor het IoT. In ons project zullen we ons concentreren op Cayenne, een van de oplossingen van myDevices. Met deze tool kunnen ontwikkelaars, ontwerpers en ingenieurs prototypen van het IoT bouwen. Cayenne gebruikt het Message QueuingTelemetry Transport (MQTT)-protocol om elk apparaat met Cayennecloud te verbinden. Eenmaal verbonden, kan de gebruiker gegevens van het apparaat naar het Cayenne-dashboard verzenden en ontvangen via de gemaakte widgets. MQTT is een publish-subscribe messaging-protocol op basis van het TCP/IP-protocol. De publish-subscribe-methodologie maakt gebruik van een berichtenagent die verantwoordelijk is voor het afleveren van berichten aan de klant. MQTT is de API voor het verzenden van informatie naar de Cayenne-cloud of apparaten die door Cayenne worden beheerd. De message agent in dit verband is de cloud, deze beheert de verschillende clients (sensoren en actuatoren) die de data verzenden en ontvangen.

Om MQTT met Cayenne te gebruiken, moeten we de Cayenne-bibliotheken gebruiken. Voor Arduino kan de CayenneMQTT-bibliotheek worden geïnstalleerd vanuit de Library Manager van de IDE. Om onze op het Cayenne IoT-platform gebaseerde IoT-toepassing te programmeren, maken we gebruik van de vooraf gedefinieerde functies. Om bijvoorbeeld de verbinding tot stand te brengen tussen Cayenne cloud en Arduino Mega uitgerust met de Ethernet-module, noemen we de CayenneMQTTEthernet-bibliotheek waar we onze authenticatie-informatie (de gebruikersnaam, het wachtwoord en de Client-ID) declareren die moet worden verkregen van het Cayenne Dashboard. Vervolgens noemen we in het setup-gedeelte van het programma Cayenne.begin () functie om de verbinding met het Cayenne-dashboard tot stand te brengen. Voor elke actuator maken we een functie met een integer-parameter tussen 0 en 31 die verplicht CAYENNE IN (VIRTUAL CHANNEL) wordt genoemd . Voor elke sensor maken we een functie met een integer-parameter tussen 0 en 31, met de naam CAYENNE_OUT (VIRTUAL_CHANNEL) . In het loop-gedeelte van het programma noemen we de vooraf gedefinieerde functie Cayenne.loop () , deze functie zelf roept de functies CAYENNE_OUT . aan en CAYENNE_IN. Het virtuele kanaal, zoals de naam al doet vermoeden, is een kanaal dat niet fysiek bestaat, het kenmerkt visualisatie- of opdrachtwidgets. Hiermee kunnen ze worden gekoppeld aan de bijbehorende sensor of actuator.

c. De ingesloten software-ontwerp

De embedded software is het onderdeel dat in de Arduino Mega wordt ingebed om te communiceren tussen de Ethernet-module en de Cayenne-cloud (zie bijlage). Het is als volgt ontworpen:

(i) De op IoT gebaseerde solartracker heeft twee functiemodi:handmatig en automatisch. Een knop die in het Cayenne-dashboard is gemaakt, heeft een rol om tussen de twee modi te schakelen. Als het inactief is, wordt de handmatige modus geselecteerd, anders de automatische modus. Bovendien is er een functie in de Arduino-code vastgelegd waarmee de status van de knop kan worden hersteld. De LED in het systeemcircuit geeft de status van deze schakelaar weer.

Om de controller de geselecteerde bedrijfsmodus te laten weten, hoeven we daarom alleen de status van de pin te testen waarop de LED is aangesloten. Als de LED-status bijvoorbeeld laag is, roept de controller de handmatige modusfunctie op om uit te voeren, anders roept hij de automatische functie op.

(ii) Als de handmatige modus is geselecteerd, kan de gebruiker de posities van de servomotoren rechtstreeks regelen om het PV-paneel van oost naar west te oriënteren door de L-R-servomotor of van zuid naar noord door de U-D-servomotor. De besturing gebeurt vanuit de bijbehorende widgets van servomotoren in het dashboard van de IoT-applicatie.

In deze modus roept de controller Cayenne.loop() . aan functie die zelf alle functies CAYENNE_IN . aanroept , inclusief die met betrekking tot servomotoren, uit te voeren. De Cayenne.loop() functie roept ook alle functies CAYENNE_OUT, gekoppeld aan de sensoren, aan om uit te voeren. Waar de gegevens met betrekking tot LDR-sensoren, PV-stroom, spanning en vermogen, temperatuur en vochtigheid naar de server worden gestuurd, zodat ze kunnen worden gevisualiseerd in de bijbehorende widgets in de IoT-toepassing.

(iii) Als de automatische modus is geselecteerd, wordt het algoritme weergegeven in Fig. 4 uitgevoerd. Het algoritme begint met het lezen van de analoge waarden die worden geretourneerd door LDR-sensoren. Vervolgens verwerkt het deze gegevens om servomotoren aan te sturen die het PV-paneel in de richting van de zon bewegen. Gezien de op de verticale as gebaseerde solar tracker-beweging, worden de gemiddelde waarden van de twee LDR's aan de linkerkant en de twee LDR's aan de rechterkant vergeleken en als de linkerzijde meer licht ontvangt, zal het PV-paneel in die richting bewegen (met de klok mee) via de LR servomotor. Deze laatste stopt wanneer het verschilresultaat tussen -10 en 10 ligt. Dit bereik wordt gebruikt om de regelaar te stabiliseren en het stroomverbruik van servomotoren te verminderen. Anders, als de juiste set LDR's meer licht ontvangt, zal het PV-paneel in die richting (tegen de klok in) bewegen door de L-R-servomotor en blijven draaien totdat het verschilresultaat in het bereik [−10, 10] ligt. Dezelfde benadering wordt gebruikt voor de horizontale as-gebaseerde solar tracker-beweging waarbij de gemiddelde waarden van de twee LDR's aan de bovenkant en de twee LDR's aan de onderkant worden vergeleken.

Behalve in de automatische modus roept de controller ook de Cayenne.loop() aan. functie om de zonne-trackergegevens naar de IoT-toepassing te sturen.

d. Ontwikkeling van de IoT-monitoringtoepassing

(i) Hardware-interface met Cayenne IoT-platform

Om de hardware, inclusief sensoren en actuatoren, te koppelen met het IoT-platform, moeten we de volgende stappen volgen:

+ Log in op de Cayenne myDevice-website na het aanmaken van een account (Fig. 5(a)).

+ Klik vervolgens op "Bring Your Own Things" van Cayenne API (Fig. 5(b)).

+ Kopieer de MQTT-inloggegevens (gebruikersnaam, wachtwoord en client-ID) van de Kreta-app (Fig. 6) en plak ze in de Arduino-broncode zoals eerder beschreven. Nadat u de volledige code met succes hebt gecompileerd en geüpload naar Arduino Mega, opent u Serial Monitor in Arduino IDE om de Cayenne-logafdrukken te krijgen (Fig. 7). Zodra ons apparaat online komt en verbinding maakt met Cayenne, wordt de vorige pagina (Fig. 6) automatisch bijgewerkt en zien we ons apparaat in het online dashboard zoals te zien is in Fig. 8.

+ Om vervolgens sensoren en actuatoren te koppelen, dwz hun widgets te maken, klikt u op "Nieuwe toevoegen...", selecteert u "Apparaat/Widget" en klikt u op "Aangepaste widgets" (Fig. 9) Selecteer vervolgens een widget en vul alle bijbehorende instellingen in (het kanaalnummer moet hetzelfde zijn als in de code) en klik ten slotte op "Widget toevoegen" om het toe te voegen aan het dashboard van uw apparaat. Voor ons hebben we de "waarde"-widget voor alle sensoren, de "Knop"-widget gekozen voor modusschakelaar en de "Slider"-widget voor servomotor.

Ten slotte illustreert Fig. 10 de ontworpen IoT-toepassing voor het bewaken van zonne-trackergegevens. Zodra de verbinding met het zonnevolgsysteem tot stand is gebracht, kunnen sensorgegevens worden gevisualiseerd op de bijbehorende widgets, de volgmodus (automatisch of handmatig) kan worden geselecteerd met de schakelknop, evenals de hoeken van de servomotoren regelen via hun widgets. Sensorgegevens kunnen ook in grafische vorm worden verkregen door het weergavetype in hun instellingen te wijzigen of door gewoon op het grafiekpictogram boven de widget te klikken.

(ii) Aanmaken van waarschuwingen

Een van de belangrijkste criteria in een bewakingssysteem is de mogelijkheid om waarschuwingen te verzenden om gebruikers te informeren wanneer een gebeurtenis met betrekking tot hun bewaakte apparaten plaatsvindt. Hiertoe maken we gebruik van een van de functies van Cayenne om waarschuwingen toe te voegen aan onze IoT-toepassing, waar we onze toepassing kunnen voorprogrammeren om een ​​meldingswaarschuwing (sms, e-mail of beide) te verzenden of om een ​​specifieke actie uit te voeren. Er wordt bijvoorbeeld een temperatuurwaarschuwing gemaakt om een ​​e-mailmelding naar de gebruiker (of ontvangers) te sturen wanneer de bewaakte temperatuur een drempelwaarde heeft bereikt, zoals kan worden getoond in Fig. 11. Om een ​​waarschuwing aan te maken, klikt u op "Nieuwe toevoegen. .." en selecteer "Trigger", stel vervolgens de gebeurtenis en de actie in en klik ten slotte op "opslaan" om deze aan het dashboard toe te voegen.

Prototype

Fig. 12 toont het prototype van de zonnevolger in zijn vrijstaande en gemonteerde staat. Het bestaat uit het PV-paneel, de-R en U-D servomotoren en LDR-sensoren. Het paneel is aan de ene kant bevestigd aan de U-Dservomotor en aan de andere kant met een lager om een ​​betere flexibiliteit te garanderen wanneer de solar tracker om de horizontale as draait. Het geheel is bevestigd aan de L-R servomotor. De LDR-sensoren zijn bevestigd in de vier hoeken van het paneel in holle cilinders. Als het paneel niet loodrecht op de zon staat, wordt ten minste één LDR bedekt door schaduw veroorzaakt door de omringende cilinder. Er zal dus een verschil in lichtintensiteit zijn. De beste oriëntatie is wanneer de lichtintensiteiten in alle LDR-sensoren gelijk zijn. Fig. 13 toont het volledige prototype van het op IoT gebaseerde zonnevolgsysteem en het is duidelijk dat alle gerapporteerde componenten in het hardwaregedeelte zijn gebruikt om het te bouwen.

Voor meer details over de verkregen resultaten, zie de paper in deze link:https://link.springer.com/chapter/10.1007%2F978-3-030-64565-6_4

Code

  • De ingebedde code van het op IoT gebaseerde zonnevolgsysteem
De ingebedde code van het IoT-gebaseerde zonnevolgsysteemArduino
/************************************************** **************** PROJECT:op IoT gebaseerd zonnevolgsysteem / de embedded software Aboubakr El Hammoumi/[email protected]********* ********************************************** ****/#define CAYENNE_PRINT Serial#include  //CayenneMQTT library #include  //Servo motor library #include  //DHT library #define DHTTYPE DHT22#define DHTPIN 2DHT dht(DHTPIN,DHTTYPE);//MQTT-inloggegevens char gebruikersnaam[]="498d2d00-afe2-11ea-883c-638d8ce4c23d";char wachtwoord[]="ab4a8f92d94033c01f6e18ce1d8a84d8c304c9c4";char cliënt-ID[]b="1778a40-]b="1778a40-]9617798 93bf-d33a96695544";Servo servo_x; //up-down servomotor int servoh =0;int servohLimitHigh =170; int servohLimitLow =10; servo servo_z; // links-rechts servomotor int servov =0; int servovLimitHigh =170;int servovLimitLow =10;int topl,topr,botl,botr;int threshold_value=10; float Vout; ongeldige setup(){ Serial.begin(9600); Cayenne.begin(gebruikersnaam, wachtwoord, cliënt-ID); servo_x.attach(5); servo_z.attach(6); dht.begin(); pinMode (3, UITGANG); digitalWrite (3, LAAG); }void loop(){ topr=analogRead(A2); topl=analoog lezen (A3); botl =analoog lezen (A4); botr =analoog lezen (A5); Vout=(analogRead(A1) * 5.0)/1023; Serial.println ("Handmatige modus"); Cayenne.loop(); if (digitalRead(3)==HIGH){ Serial.println ("Automatische modus"); 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; /*volgen volgens horizontale as*/ if (abs(diffhori) <=threshold_value) { servo_x.write(servoh); // stop de servo omhoog-omlaag} else { if (diffhori> threshold_value) { Serial.println ("x - 2 "); servo_x.write(servoh -2); // Rotatie met de klok mee CW if (servoh> servohLimitHigh) { servoh =servohLimitHigh; } vertraging(10); }else { servo_x.write(servoh +2); // CCW if (servoh  threshold_value) {servo_z.write (servov -2); // CW if (servov> servovLimitHigh) {servov =servovLimitHigh; } vertraging(10); }else{ servo_z.write(servov +2); // CCW if (servov   

Schema's


Productieproces

  1. Fascinerend internet der dingen:wat drijft IoT-beoefenaars?
  2. Het internet van 10 miljoen dingen
  3. Breng blockchain naar het internet der dingen
  4. De beveiligingsuitdaging van het internet der dingen:deel 2
  5. Cyberbeveiliging en het internet der dingen:toekomstbestendige IoT-beveiliging
  6. Investeren in het potentieel van het internet der dingen
  7. Het echte internet der dingen?
  8. Het internet der dingen:de toestroom van gegevens beheren
  9. 5 uitdagingen waarmee het internet der dingen nog steeds wordt geconfronteerd
  10. De kracht van het industriële internet der dingen ontketenen
  11. Solar Tracker V2.0