Sisukord:

EAL-Industry 4.0 automaatne päikeseseire süsteem: 9 sammu
EAL-Industry 4.0 automaatne päikeseseire süsteem: 9 sammu

Video: EAL-Industry 4.0 automaatne päikeseseire süsteem: 9 sammu

Video: EAL-Industry 4.0 automaatne päikeseseire süsteem: 9 sammu
Video: 40 полезных автотоваров с Aliexpress, которые упростят жизнь любому автовладельцу #4 2024, Juuli
Anonim
Image
Image
EAL-Industry 4.0 automaatne päikeseseire süsteem
EAL-Industry 4.0 automaatne päikeseseire süsteem

I dette projekt har vi fået til opgave at lave en smart IOT løsning, hvor man skal læse data from en enhed på en app/hjemmeside og derefter lager denne på en database. Selle andmebaasi skal det da være muligt ja hente dataen vise den. Vi har valgt ja göre dette med en solcelle, hvor vi læser voltagen via arduino enhed og viser dette på en Windows app. Hvor det herefter er muligt at lagre og hente denne data fra en database.

Samm: afgrænsning

Alustades havde vi tænkt os at lave en Solcelle, fra hvor vi skulle kunne læse voltagen og gemme den på en database. Først havde vi tænkt os at lave en hjemmeside og keelatud, andmebaasid, hjemmesiden ja Arduinoen sammen med Node-RED. Samt dette havde vi også tænkt os at monitororere e reelt solcellepanel med en inverter. Vi måtte dog gentænke projektet, da vi ikke kunne få inverteren til at virke med solcellepanelet, derfor endte vi med and gå med en lille solcelle, som kunne moniteres direkte fra Arduinoen. Vi endte også med at droppe Node-RED, da vi vil prøve and gøre projektet mere enkelt. I stedet valgte vi at lave en Windows app, hvor vi har samlet alle funktionerne, all data data opsamlingen fra Arduinoen, lagringen af denne data på en database, samt læsning af andmebaas.

2. samm: Byg Et Solpanelsi hoidja

Byg Et Solpanelsi hoidja
Byg Et Solpanelsi hoidja
Byg Et Solpanelsi hoidja
Byg Et Solpanelsi hoidja
Byg Et Solpanelsi hoidja
Byg Et Solpanelsi hoidja
Byg Et Solpanelsi hoidja
Byg Et Solpanelsi hoidja

Vi begyndte og designe enholder til solpanel så vi kan bevæge det rundt efter solen vi valgte og tegne det i 3D så vi kunne printe delene ud i en 3D printer målene skulle bare passe efter det solpanel vi har indkøbt. derefter var det bare og montere paneel og step motor på holderen vi har vedlagt filerne fra Inventor så de er lige til og bruge

Samm 3: automaatne Solpanel

Automatisk Solpanel
Automatisk Solpanel
Automatisk Solpanel
Automatisk Solpanel

solpanelet bruger 2 stk. Sammumootor ja 4 stk. lys sensor hvor vi så kan måle lys værdigerne som vi bruger til og vælge hvilken retning panelet skal stå i for og få bedst udnyttelse af panelet vi har vedlagt koden til panelet

tema er link til de forskellige komponenter der er indkøbt

www.amazon.co.uk/gp/product/B00KCP76CS/ref…

www.amazon.co.uk/Neuftech-Stepper-28BYJ-48…

www.amazon.co.uk/Photo-Resistor-5mm-Photoc…

www.amazon.co.uk/Arduino-A000066-ATMEGA328…

4. samm: voltmeeter

Voltmeeter
Voltmeeter

vi skal nu bruge nogle data som vi kan saadab andmebaasi der har vi brugt solpanelets volt og læser dem på en analoog indgang på en Arduino p a billedet kan i se hvordan det er tiltund og vi har også vedlagt koden til vores voltmeter.

Samm 5: Beskrivelse Af Programmet

Beskrivelse Af Programmet
Beskrivelse Af Programmet

See programm on saadaval Windowsi rakenduses, mis on saadaval otseülekandena ja solcelle'i kaudu. Dette gør vi ved at første and oprette en tiltas mellem den Arduino som læser voltagen fra solcellen og app’en. Andmed võivad olla blive læst fra Arduinoen ved at trykke på”Læs data fra Arduino”, man vælger hvor mange datasæt man ønsker ved at skrive dette antal i”Antal man ønsker fra solcelle”, andmestik kommer med et sekunds mellemrum. Kõik andmed on saadaval, andmebaasi üleslaadimine võib toimuda, ajakava ja unikaalne ID. I app’en er der også mulighed for at hente dataen fra database, man can selvitada parimad andmed, mis on seotud andmete kogumisega man, ønsker, ved and skrive nummeret i textboksen”Antal der hentes fra andmebaas”. Man can nu vælge at for vist vist gennemsnittet fra disse ved and makkere de data as man ønsker gennemsnittet af.

6. samm: Kode

kasutades süsteemi; kasutades System. Collections. Generic; kasutades System. ComponentModel; kasutades System. Data; kasutades System. Drawing; kasutades System. Linq; kasutades System. Text; kasutades System. Threading. Tasks; kasutades System. Windows. Forms; kasutades System. IO. Ports; MySql kasutamine; kasutades MySql. Data. MySqlClient; kasutades System. Globalization; nimeruumi WindowsFormsApp1 {avalik osaline klass Vorm1: vorm { /* Tema har vi vores data till connectionstring. På dennne måde er det nemt at lave om hvis man ændre sin database eller server.*/ Private SerialPort myport; string _server = "127.0.0.1"; string _andmebaas = "test"; string _uid = "juur"; string _pwd = ""; avalik vorm1 () {InitializeComponent (); } /* I denne Void laver vi vores connectionstring til vores andmebaas vi bruger de data overfor. Hvis der laves ja ühendused vil der komme ja sõnumikast hvor der står "ühendatud" Hvis der ikke kan laves en connection to adatbasen vil der kommer en errormessage hvor i der står "Ühendamine ebaõnnestus, kontrollige ühendust" */ private void knap_Click (objekt saatja, EventArgs e) {try {// Her laver vi en string hvor vi skriver hvordan vores connetions er til andmebaas. string myConn = "server =" + _server + "; andmebaas =" + _andmebaas + "; uid =" + _uid + "; pwd =" + _pwd + ";"; MySqlConnection ühendus = uus MySqlConnection (myConn); ühendus. Avatud (); MessageBox. Show ("Ühendatud"); } catch (Erand) {MessageBox. Show ("Ühendamine ebaõnnestus, kontrollige ühendust"); }} /* Ma tühistan saatja vi til vores andmebaasi. Andmete kogumiseks ja kasutamiseks andmekastis saab andmebaasi sisestada bliveri teabe ja saata andmebaasi. Der vil komme en messages hvor der står "data send to DB" and derefter bliver Data Box cleart */ private void insetDB_Click (objekti saatja, EventArgs e) {// Her laver vi en string hvor vi skriver hvordan vores connetions er till andmebaas. string myConn = "server =" + _server + "; andmebaas =" + _andmebaas + "; uid =" + _uid + "; pwd =" + _pwd + ";"; kasutades (MySqlConnection conn = uus MySqlConnection (myConn)) {conn. Open (); // I vores foreach statment læser den alle linjerne i vores Data Box og indsættersæver for sig inde i tablen power and rækken volt i dataasen foreach (var read in textBoxDB. Lines) {string myInsert = "INSERT INTO power (volt) VALUES ('" + read. ToString () +"') "; MySqlCommand cmd = uus MySqlCommand (myInsert, conn); cmd. ExecuteNonQuery (); } conn. Close (); MessageBox. Show ("Andmed saadeti andmebaasi"); textBoxDB. Clear (); }} /* I denne Void henter vi det data vi har gemmt i vores andmebaas. vi har en tekstikast hvor der er lavet 3 kolonner hvor der kommer forsekilg data ind. Den første viser data id der efter vises hvad volten var og til sidst kan du se tidspunket det er målt på. lige nu hentes det antal man har valgt til målinger men det kan laves om hvis man ønsker at se felre eller mindre.*/ private void knapDBGet_Click (objekti saatja, EventArgs e) {listViewDb. Clear (); // Tema bliver de 3 kolonner lavet. listViewDb. Columns. Add ("id"); listViewDb. Columns. Add ("volt"); listViewDb. Columns. Add ("kuupäev"); listViewDb. MultiSelect = true; listViewDb. View = View. Details; // Tema laver vi en string hvor vi skriver hvordan vores connetions er til andmebaas. string myConn = "server =" + _server + "; andmebaas =" + _andmebaas + "; uid =" + _uid + "; pwd =" + _pwd + ";"; kasutades (MySqlConnection conn = uus MySqlConnection (myConn)) {conn. Open ();

// Tema henter vi de sidste til 20 id der er indsat i tablen Power i andmebaas.

int antal = int. Parse (textBoxAntal. Text); string myInsert = "SELECT * FROM (SELECT * FROM power ORDER BY id DESC LIMIT"+antal+") sub ORDER B id id ASC"; MySqlCommand cmd = uus MySqlCommand (myInsert, conn);

// Tema laver vi en data tabel (dTable) hvor den data vi henter i andmebaas bliver lagt ind.

MySqlDataAdapter MyAdapter = uus MySqlDataAdapter (); MyAdapter. SelectCommand = cmd; DataTable dTable = uus DataTable (); MyAdapter. Fill (dTable); for (int i = 0; i <dTable. Rows. Count; i ++) {// Her fordeler vi det data vi lagt ind i dtable ud i de 3 kolonner vi oprettede tidliger i koden. DataRow dataRow = dTable. Rows ; ListViewItem listitem = uus ListViewItem (dataRow ["id"]. ToString ()); listitem. SubItems. Add (dataRow ["volt"]. ToString ()); listitem. SubItems. Add (dataRow ["date"]. ToString ()); listViewDb. Items. Add (listitem); } conn. Close (); }

}

/* I denne Void har vi lavet en funktion hvor vi kan regne gennemsnitet af det makere data vi har hentet fra andmebaas.

Du makere det du vil lægge sammen og i bunden af teksboxen står der hvad gennemsnitet. Hvis der sker en fejl vil den skrive en massaaž hvor der står "Viga 40: kasutaja on näiv" */ private void listViewDb_SelectedIndexChanged (objekti saatja, EventArgs e) {try {float output = 0; if (listViewDb. SelectedItems. Count> = 2) { /* Tema ligger vi vores output som er 0 sammen med den mærkeret data som bliver lavert om till data typen float og derefter dividendid der med den antal der er mærkert så den regner gennemsnitet af volten. Ved at vi brugte CultureInfo. InvariantCulture kan vi få lov til at bruge. i vores komatal */ foreach (ListViewItem item in listViewDb. SelectedItems) {output += float. Parse (item. SubItems [1]. Text, CultureInfo. InvariantCulture)/ listViewDb. SelectedItems. Count; } Output. Text = output. ToString (); }} catch {MessageBox. Show ("Viga 40: kasutaja on näiv"); }} /* I denne Void har vi lavet så den kan læse på serieport i vores tilfælde på en arduino. Den læser hvad der står i serieport på com port3 and ligger den data vi modtager ind i vores Data Box Når vi trykker på Read data læser den de næste 50 linjer der bliver sendt til serieporten Hvis der er en fejl så den ikke kan læse dateen vil der komme en errobox hvor der vil stå "god help you" */ private void startBn_Click (objekti saatja, EventArgs e) {// Her skriver du de data du skal bruge til at kunne connct til det du skal læse fra. textBoxDB. Clear (); myport = uus SerialPort (); myport. BaudRate = 9600; myport. PortName = textBoxPort. Text; myport. DataBits = 8; myport. StopBits = StopBits. One; proovige {// Her siger vi hvor mange den skal ind læse af gangen og hvor det skal ligges henne. myport. Open (); for (int i = 1; i <= int. Parse (textBoxAntalArduino. Text); i ++) {string inData = myport. ReadLine (); textBoxDB. AppendText (inData); } myport. Close (); } saak (erand) {

MessageBox. Show ("Der udfylt forkert");

}

} private void helpBt_Click (objekti saatja, EventArgs e)

{MessageBox. Show ("1 klõpsa andmete saamiseks fra solcelle jaoks, et vaadata kuupäeva i programmis." + "\ N" + "2 klõpsake andmebaasi kuvamiseks aadressil at gemme dataen." + "\ N" + "3 klõpsake på læs fra database for at læse den gemet data. " +" / n " +" 4 man kan klike på id for at renge gennemsnite af de valt dataer ud. " +" / n " +" 5 Test forbinles ser om databaseas køre. " +" / n " +" port navn skal udfyldes med den port man har sat solcellen til " +" / n " +" der skal skrives et antal på hvor mange man vil hendte fra solcellen " +" / n " +" Antal der skal hentes fra andmebaas skal udfyldes "); }}}

7. samm: andmebaas

Andmebaas
Andmebaas

Da vi besluttede at vi ville lave en solcellestyring, ville det være smart at vi kunne se hvor mange volt den laver lige nu. Vi ville også gerne kunne se hvad den lave ved tidliger målinger, eller hvad den i gennemsnittet har produret i den sidste tid. For at kunne gemme det data har vi lavet en database and wampserver. Vi har lavet et program i Visual Studio som sender en string med volt måling til dataasen. Databasen gemmer værdien som en varchar, da vi havde store problemer med and databaseasen ville modtage komatal, hvis den gemte dem i double. Vores andmebaasi andja alle målinger et unikt id hvor man can se værdien hvad, og hvilke tidspunkter det er målt. Vores app kan hente den forskellige data from databaseasen, så det er nemt and læse og den kan udregne gennemsnittet af målingerne.

8. samm: HTML Hjemmeside

HTML Hjemmeside
HTML Hjemmeside
HTML Hjemmeside
HTML Hjemmeside
HTML Hjemmeside
HTML Hjemmeside
HTML Hjemmeside
HTML Hjemmeside

Kui teil on andmebaas, leidke andmebaasist paremal ja paremal küljel, lisades HTML -i ja CSS -i. HTML er blevet brugt til and bygge all elementerne op på siden og linke till data siden sådan at man kan komme mellem de to side.

CSS er blevet brugt til at give html elementerne farve og til at give den afstand der skal være mellem alting på hjemmesiden.

9. samm: PHP Hjemmeside

PHP Hjemmeside
PHP Hjemmeside
PHP Hjemmeside
PHP Hjemmeside
PHP Hjemmeside
PHP Hjemmeside

ved brugen af php er der blevet lavet en hjemmeside sådan at en ikke tekniker er i stand til and læse data ud fra solcellen.

denne side er lavet ved at php connecter till databaseas and henter dataen in på hjemmeside lige så snart man loader den. Ved brugen af CSS code er det blevet sat op på en nem og overskuelige måde, med alt den data der kommer fra andmebaas.

Soovitan: