Turinys:
- 1 žingsnis: „Afgrænsning“
- 2 žingsnis: Byg Et Solpanels laikiklis
- 3 žingsnis: „Automatisk Solpanel“
- 4 žingsnis: voltmetras
- 5 veiksmas: „Beskrivelse Af Programmet“
- 6 žingsnis: Kode
- 7 žingsnis: duomenų bazė
- 8 veiksmas: HTML „Hjemmeside“
- 9 žingsnis: PHP Hjemmeside
Video: „EAL-Industry 4.0“automatinė saulės stebėjimo sistema: 9 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:48
I dette projekt har vi fået til opgave at lave en smart IOT løsning, hvor man skal læse data of en enhed på en app/hjemmeside og derefter lager denne på en database. Fra duomenų bazės skal det da være muligt ir hente dataen vise den. „Vi har valgt“ir „dette med en solcelle“, hvor vi læser voltagen via en arduino enhed and viser dette på en Windows app. Toliau ieškokite duomenų bazės duomenų ir duomenų bazėje.
1 žingsnis: „Afgrænsning“
Fra starten havde vi tænkt os at lave en Solcelle, fra hvor vi skulle kunne læse voltagen og gemme den på en database. Pirmasis turinys buvo rodomas ir lave en hjemmeside ir draudžiamas, duomenų bazės, hjemmesiden ir Arduinoen sammen med Node-RED. Samt dette havde vi også tænkt os at monitororere and 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 monitoreres direkte fra Arduinoen. Pasibaigęs ogaså med ir droppe Node-RED, da vi vil prøve ir gøre projektet mere enkelt. Aš stedet valgte vi ir lave en Windows app, hvor vi har samlet all funktionerne, allså data opsamlingen fra Arduinoen, lagringen af denne data in aå database, samt læsning af databaseas.
2 žingsnis: Byg Et Solpanels laikiklis
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 panel og step motor på holderen vi har vedlagt filerne fra In Inventor så de er lige til og bruge
3 žingsnis: „Automatisk Solpanel“
solpanelet bruger 2 stk. Žingsnis variklis ir 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 udsettelse on panelet vi har vedlagt koden til panelet
her 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 žingsnis: voltmetras
vi skal nu bruge nogle data som vi kan sende till database der har vi brugt solpanelets volt and læser dem på en analog indgang på en Arduino på billedet can i se hvordan det er tiltas og vi har også vedlagt koden til vores voltmeter.
5 veiksmas: „Beskrivelse Af Programmet“
Raskite idealią programą, skirtą „Windows“programai, kurią galite tiesiogiai atsisiųsti iš solcelle. Dette gør vi ved and første and oprette en draindelse mellem den Arduino som læser voltagen fra solcellen og app’en. Duomenys gali būti išblukę iš 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”, duomenų rinkinys ir etiketės mellemas. Jei nėra duomenų, tai gali būti duomenų perkėlimas į duomenų bazę, hivor den vil blive tildelt et timestamp og en unik ID. I app’en er der også mulighed for at hente dataen fra database, man can selv bestemme hvor mange data in man ønsker, ved and skrive nummeret i textboksen”Antal der hentes fra databaseasen”. Man can nu vælge at for vist gennemsnittet fra disse ved and makkere de datasæt man ønsker gennemsnittet af.
6 žingsnis: Kode
naudojant sistemą; naudojant System. Collections. Generic; naudojant System. ComponentModel; naudojant System. Data; naudojant „System. Drawing“; naudojant System. Linq; naudojant System. Text; naudojant System. Threading. Tasks; naudojant System. Windows. Forms; naudojant System. IO. Ports; naudojant „MySql“; naudojant MySql. Data. MySqlClient; naudojant System. Globalization; vardų sritį WindowsFormsApp1 {viešoji dalinė klasė Form1: Forma { /* Jos 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; eilutė _server = "127.0.0.1"; string _database = "testas"; eilutė _uid = "šaknis"; eilutė _pwd = ""; vieša forma1 () {InitializeComponent (); } /* I denne Void laver vi vores connectionstring til vores database vi bruger de data overfor. Hvis der laves ir jungtys vil der komme en messagebox hvor der står "connected" Hvis der ikke kan laves en connection to adatbasen vil der kommer en errormessage hvor i der står "Nepavyko prisijungti, patikrinkite ryšį" */ private void knap_Click (objektas siuntėjas, „EventArgs“e) {try {// Jos laver vi en string hvor vi skriver hvordan vores connetions er til databaseas. eilutė myConn = "server =" + _server + "; database =" + _database + "; uid =" + _uid + "; pwd =" + _pwd + ";"; MySqlConnection ryšys = naujas MySqlConnection (myConn); ryšys. Atidaryti (); „MessageBox. Show“(„Prisijungta“); } catch (Išimtis) {MessageBox. Show ("Nepavyko prisijungti, patikrinkite ryšį"); }} /* I denne void sender vi til vores database. Duomenų rinkinys gali būti modifikuotas naudojant duomenų bazę ir duomenų bazę „Data Box“. Der vil komme en messages hvor der står "data send to DB" and derefter bliver Data Box cleart */ private void insetDB_Click (objekto siuntėjas, EventArgs e) {// Jos laver vi en string hvor vi skriver hvordan vores connetions er til databaseas. eilutė myConn = "server =" + _server + "; database =" + _database + "; uid =" + _uid + "; pwd =" + _pwd + ";"; naudojant (MySqlConnection conn = new MySqlConnection (myConn)) {conn. Open (); // I vores foreach statment læser den all linjerne i vores Data Box ir indsætters være for sig inde i tablen power and rækken volt i dataasen foreach (var lines in textBoxDB. Lines) {string myInsert = "INSERT INTO power (volt) VALUES ('" + eilutės. ToString () +"') "; MySqlCommand cmd = naujas MySqlCommand (myInsert, conn); cmd. ExecuteNonQuery (); } conn. Uždaryti (); MessageBox. Show ("Duomenys išsiųsti į duomenų bazę"); textBoxDB. Clear (); }} /* I denne Void henter vi det data vi har gemmt i vores duomenų bazė. vi har en tekstbox hvor der er lavet 3 kolonner hvor der kommer forsekilg data ind. Pasiekite viserio duomenis 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 (objekto siuntėjas, EventArgs e) {listViewDb. Clear (); // Jos bliver de 3 kolonner lavet. listViewDb. Columns. Add ("id"); listViewDb. Columns. Add ("volt"); listViewDb. Columns. Add ("data"); listViewDb. MultiSelect = tiesa; listViewDb. View = View. Details; // Jos laver vi en string hvor vi skriver hvordan vores connetions er til databaseas. eilutė myConn = "server =" + _server + "; database =" + _database + "; uid =" + _uid + "; pwd =" + _pwd + ";"; naudojant (MySqlConnection conn = new MySqlConnection (myConn)) {conn. Open ();
// Jos henter vi de sidste til 20 id der er indsat i tablen Power i databaseasen.
int antal = int. Parse (textBoxAntal. Text); string myInsert = "SELECT * FROM (SELECT * FROM power ORDER BY id DESC LIMIT"+antal+") sub ORDER BY id ASC"; MySqlCommand cmd = naujas MySqlCommand (myInsert, conn);
// Jos laver vi en data tabel (dTable) hvor den data vi henter i databaseas bliver lagt ind.
MySqlDataAdapter MyAdapter = naujas MySqlDataAdapter (); MyAdapter. SelectCommand = cmd; DataTable dTable = nauja 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 = naujas ListViewItem (dataRow ["id"]. ToString ()); listitem. SubItems. Add (dataRow ["volt"]. ToString ()); listitem. SubItems. Add (dataRow ["data"]. ToString ()); listViewDb. Items. Add (sąrašo elementas); } conn. Uždaryti (); }
}
/* I denne Void har vi lavet en funktion hvor vi kan regne gennemsnitet af det makere data vi har hentet fra databaseas.
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 ir masažas hvor der står "40 klaida: vartotojas yra manekenas" */ private void listViewDb_SelectedIndexChanged (objekto siuntėjas, EventArgs e) {try {float output = 0; if (listViewDb. SelectedItems. Count> = 2) { /* Jos ligger vi vores output som er 0 sammen med den mærkeret data som bliver lavert om till data typen float og derefter divideres der med den antal der er erææært eå den regner gennemsnitet af voltenas. Ved at vi brugte CultureInfo. InvariantCulture kan vi få lov til at bruge. i vores komatal */ foreach (ListViewItem elementas listViewDb. SelectedItems) {output += float. Parse (item. SubItems [1]. Text, CultureInfo. InvariantCulture)/ listViewDb. SelectedItems. Count; } Output. Text = output. ToString (); }} catch {MessageBox. Show ("40 klaida: vartotojas yra manekenas"); }} /* I denne Void har vi lavet så den kan læse på serieport i vores tilfælde på en arduino. Jei norite, kad serija būtų prieinama prie port3 ir būtų lengviau prisijungti prie duomenų modifikatorių, esančių duomenų bazėje Duomenų dėžutė ir bandymai, skaityti duomenis 50 dienų po to, kai bus padaryta klaida, siunčiama į seriją Hvis der er en fejl så den ikke kan læse daten vil der komme en errobox hvor der vil stå "god help you" */ private void startBn_Click (objekto siuntėjas, EventArgs e) {// Jos skriver du de data du skal bruge til at kunne connct til det du skal læse fra. textBoxDB. Clear (); myport = naujas SerialPort (); myport. BaudRate = 9600; myport. PortName = textBoxPort. Text; myport. DataBits = 8; myport. StopBits = StopBits. One; pabandyti {// Jos 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 (); } laimikis (išimtis) {
MessageBox. Show ("Der udfylt forkert");
}
} private void helpBt_Click (objekto siuntėjas, „EventArgs e“)
{MessageBox. Sow 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 databaseasen skal udfyldes "); }}}
7 žingsnis: duomenų bazė
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. „At the kunne gemme det data“yra duomenų bazė ir „wampserver“. Pasinaudokite programa „Visual Studio som sender“ir eilutėje, kurioje yra duomenų bazė. Databasen gemmer værdien som en varchar, da vi havde store problemer med and databaseasen ville modtage komatal, hvis den gemte dem i double. Įvairių duomenų bazių teikėjas gali būti tikrinamas ir nerašomas. „Vores“programa gali turėti duomenų bazės duomenų bazės duomenis, juos galima ištirti ir sužinoti, ar jie yra nereguliarūs.
8 veiksmas: HTML „Hjemmeside“
Išskleiskite duomenų bazės duomenų bazėje esančią informaciją, naudodamiesi HTML ir CSS failų puslapiais. HTML yra nuostabus brugt til and bygge all elementerne op på siden og linke till data siden sådan at man can komme mellem de to side.
CSS yra puikus pasirinkimas ir suteikia html elementą, ir jis suteikia prieigą prie melodijos.
9 žingsnis: PHP Hjemmeside
ved brugen af php er der blevet lavet en hjemmeside sådan at en ikke tekniker er i stand til at læse data ud fra solcellen.
denne side er lavet ved at php connecter to databaseas and henter dataen in på hjemmeside lige så snart man loader den. ved brugen af CSS kode er det blevet sat op på en nem og overskuelige måde, med alt den data der kommer fra adatbázis.
Rekomenduojamas:
Saulės stebėjimo priemonė: 4 žingsniai
„Solar Tracker“: tai mano sukurtas saulės sekiklis. Kai naršiau internete, gavau daug idėjų, bet pagalvojau, kad padarysiu biudžetui palankų projektą, taigi čia. Aš tai padariau ypač pradedantiesiems, kurie yra nauji arduino. Ir aš net įkėliau pagrindinių prekių vaizdus
„Pasidaryk pats“saulės stebėjimo priemonė: 27 žingsniai (su nuotraukomis)
„Pasidaryk pats“saulės sekiklis: įvadas Siekiame supažindinti jaunus studentus su inžinerija ir išmokyti juos apie saulės energiją; leisdami jiems sukurti „Helios“kaip savo mokymo programos dalį. Inžinerijoje stengiamasi atstumti energijos gamybą nuo iškastinio kuro naudojimo
Nešiojama saulės automatinė sekimo sistema: 9 žingsniai (su nuotraukomis)
Nešiojama saulės automatinio stebėjimo sistema: „Medomyself“yra „Amazon Services LLC Associates“programos, filialų reklamos programos, sukurta siekiant suteikti svetainėms galimybę užsidirbti reklamos mokesčių reklamuojant ir susiejant su „amazon.com“, autorius: Dave Weaver Šis kūrinys sukurtas naudojant
Automatinė upės vandens stebėjimo sistema: 14 žingsnių
Automatinė upių vandens stebėjimo sistema: ši instrukcija naudojama dokumentuoti automatinės upių vandens stebėjimo sistemos sukūrimą. Stebimi parametrai yra vandens lygis ir vandens temperatūra. Šio projekto tikslas buvo sukurti nebrangų ir nepriklausomą registratorių, kuris
Saulės elektrinės nuotolinio maitinimo stebėjimo ir paskirstymo sistema: 10 žingsnių
Saulės elektrinės nuotolinė energijos stebėjimo ir paskirstymo sistema: Šio projekto tikslas - stebėti ir paskirstyti elektros energijos (saulės energijos sistemų) energiją. Šios sistemos konstrukcija abstrakčiai paaiškinta taip. Sistemą sudaro keli tinkleliai su maždaug 2 saulės baterijomis