
Isi kandungan:
2025 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2025-01-23 15:01



I dette projekt har vi fået til opgave at lave en smart IOT løsning, hvor man skal lsese data fra en eneded på en app / hjemmeside og derefter lager denne på en database. Fra databaseasen skal det da være muligt di hente dataen og vise den. Vi har valgt at gøre dette med en solcelle, hvv vi læser voltagen via en arduino og viser dette på en aplikasi Windows. Hvor det seterusnya selepas ini di lagre og hente denne data dari pangkalan data.
Langkah 1: Kejayaan
Fra starten havde vi tænkt os at lave en Solcelle, fra hvor vi skulle kunne læse voltagen og gemme den på pangkalan data. Terlebih dahulu havde vi tænkt os at lave en hjemmeside og baninde, databaseasen, hjemmesiden og Arduinoen sammen med Node-RED. Samt dette havde vi også tænkt os at monitorere 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 at gå med en lille solcelle, som kunne moniteres direkte fra Arduinoen. Vi endte også med at droppe Node-RED, da vi vil prøve di gøre projektet semata-mata. I stedet valgte vi at lave en Windows app, hvor vi har samlet alle funktionerne, altså data opsamlingen fra Arduinoen, lagringen af denne data på en database, samt læsning af databaseasen.
Langkah 2: Pemegang Byg Et Solpanels




Vi begyndte og designe en holder 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 Inventor så de er lige til og bruge
Langkah 3: Automatisk Solpanel


solpanelet bruger 2 stk. Step step og 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
pautan ernya 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-Gambar
www.amazon.co.uk/Arduino-A000066-ATMEGA328…
Langkah 4: Voltmeter

vi skal nu bruge nogle data som vi kan sende til database der har vi brugt solpanelets volt og læser dem på en analog indgang på en Arduino på billedet kan i se hvordan det er larundet og vi har også vedlagt koden til vores voltmeter.
Langkah 5: Beskrivelse Af Programmet

Vores ide med dette program di aplikasi lave en Windows, der kan vise voltagen live fr sol en solcelle. Dette gør vi ved at første at oprette enohibindelse mellem den Arduino som læser voltagen fra solcellen og app'en. Dataen kan nu blive pertama dari Arduinoen bersaing di trykke på "Data data dari Arduino", man vælger hvor mange datasæt man ønsker ved at skrive dette antal i "Antal man ønsker fra solcelle", datasættene kommer med et sekunds mellemrum. N allr alle datasættene er lstst, kan man uploade dataen til en database, hvor den vil blive tildelt et timestamp og en unik ID. Saya telah mengusahakannya di pangkalan data hente dataen fra, man kan selv bestemme hvor mange datasæt man ønsker, ved at skrive nummeret i tekstboksen “Antal der hentes fra databasen”. Man kan nu vælge at for vist gennemsnittet fra disse ved at makkere de datasæt man ønsker gennemsnittet af.
Langkah 6: Kode
menggunakan Sistem; menggunakan System. Collections. Generic; menggunakan System. ComponentModel; menggunakan System. Data; menggunakan System. Drawing; menggunakan System. Linq; menggunakan System. Text; menggunakan System. Threading. Tasks; menggunakan System. Windows. Forms; menggunakan System. IO. Ports; menggunakan MySql; menggunakan MySql. Data. MySqlClient; menggunakan System. Globalization; namespace WindowsFormsApp1 {public partial class Form1: Form {/ * Her harvores data to stringstringing. Pn dennne måde er detemem at pelayan pemakai pangkalan data omndre sin. * / My SerialPort peribadi; rentetan _server = "127.0.0.1"; string _database = "ujian"; rentetan _uid = "root"; rentetan _pwd = ""; awam Form1 () {InitializeComponent (); } / * I denne Void laver vi vores connectionstring til vores database vi bruger de data overfor. Hvis der laves en Connection vil der komme en messagebox hvor der står "connect" pengirim, EventArgs e) {try {// laver vi en string hvor vi skriver hvordan vores connections er til databaseasen. string myConn = "server =" + _server + "; pangkalan data =" + _database + "; uid =" + _uid + "; pwd =" + _pwd + ";"; Sambungan MySqlConnection = MySqlConnection baru (myConn); sambungan. Buka (); MessageBox. Show ("Bersambung"); } tangkapan (Pengecualian) {MessageBox. Show ("Gagal menyambung sila periksa sambungan anda"); }} / * Saya menolak pangkalan data pengirim vi til vores. Den data der som vi har modtaget fra arduino og står i Data Box vil når vi trykker på inset bliver infomationen sendt til databaseasen. Der vil komme en message hvor der står "data dihantar ke DB" og derefter bliver Data Box cleart * / private void insetDB_Click (pengirim objek, EventArgs e) {// laver vi en string hvor vi skriver hvordan vores connections er til databaseasen. string myConn = "server =" + _server + "; pangkalan data =" + _database + "; uid =" + _uid + "; pwd =" + _pwd + ";"; menggunakan (MySqlConnection conn = MySqlConnection baru (myConn)) {conn. Open (); // Saya mengkaji pernyataan sebelumnya untuk melihat Kotak Data dan maklumat yang lebih baik untuk kuasa tabl og rækken volt i databaseasen foreach (garis var dalam teksBoxDB. Lines) {string myInsert = "INSERT INTO power (volt) NILAI ('"+ lines. ToString () +"') "; MySqlCommand cmd = MySqlCommand baru (myInsert, samb); cmd. ExecuteNonQuery (); } samb. Tutup (); MessageBox. Show ("Data dihantar ke pangkalan data"); textBoxDB. Clear (); }} / * I denne Void henter vi det data vi har gemmt i vores data base. vi har en tekstbox 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. * / knap kekosongan peribadiDBGet_Click (pengirim objek, EventArgs e) {listViewDb. Clear (); // Blet de 3 kolonner dia. listViewDb. Columns. Add ("id"); listViewDb. Columns. Add ("volt"); listViewDb. Columns. Add ("tarikh"); listViewDb. MultiSelect = benar; listViewDb. View = View. Details; // laver vi en string hvor vi skriver hvordan vores connections er til databaseasen. string myConn = "server =" + _server + "; pangkalan data =" + _database + "; uid =" + _uid + "; pwd =" + _pwd + ";"; menggunakan (MySqlConnection conn = MySqlConnection baru (myConn)) {conn. Open ();
// Pengunjungnya vi de sidste hingga 20 id der ersat 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 = MySqlCommand baru (myInsert, samb);
// Tabungnya vi en data tabel (dTable) hvor den data vi henter i databaseasen bliver lagt ind.
MySqlDataAdapter MyAdapter = MySqlDataAdapter baru (); MyAdapter. SelectCommand = cmd; DataTable dTable = DataTable baru (); MyAdapter. Fill (dTable); untuk (int i = 0; i <dTable. Rows. Count; i ++) {// Pendatangnya vi det data vi lagt ind i dtable ud i de 3 kolonner vi oprettede tidliger i koden. DataRow dataRow = dTable. Rows ; ListViewItem listitem = ListViewItem baru (dataRow ["id"]. ToString ()); listitem. SubItems. Add (dataRow ["volt"]. ToString ()); listitem. SubItems. Add (dataRow ["tarikh"]. ToString ()); listViewDb. Iems. Add (listitem); } samb. Tutup (); }
}
/ * I denne Void har vi lavet en funktion hvor vi kan regne gennemsnitet af det makere data vi har hentet fra databaseasen.
Buat masa ini, saya akan menyusun teksboxen står der hvad gennemsnitet. Hvis der sker en fejl vil den skrive en massage hvor der står "Error 40: User is a dummy" * / private void listViewDb_SelectedIndexChanged (penghantar objek, EventArgs e) {cuba {float output = 0; if (listViewDb. SelectedItems. Count> = 2) {/ * Liggernya vi menghasilkan output som er 0 sammen med den mærkeret data som bliver lavert om til data typen float og derefter divideres der med den antal der er mærkert så den regner gennemsnitet af leper. Ved at vi brugte CultureInfo. InvariantCulture kan vi få lov til at bruge. i vores komatal * / foreach (item ListViewItem dalam listViewDb. SelectedItems) {output + = float. Parse (item. SubItems [1]. Teks, CultureInfo. InvariantCulture) / listViewDb. SelectedItems. Count; } Output. Text = output. ToString (); }} tangkap {MessageBox. Show ("Ralat 40: Pengguna adalah dummy"); }} / * 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 og ligger den data vi modtager ind i vores Kotak Data Når vi trykker på Baca data lsser den de næste 50 linjer der bliver sendt til serieporten Hvis der er en fejl så den ikke kan læse daten vil der komme en errobox hvor der vil stå "allah help you" * / kekosongan privasi startBn_Click (pengirim objek, EventArgs e) {// Pengembara nya du de data du skal bruge til at kunne connct til det du skal læse fra. textBoxDB. Clear (); myport = SerialPort baru (); myport. BaudRate = 9600; myport. PortName = textBoxPort. Teks; myport. DataBits = 8; myport. StopBits = StopBits. One; cuba {// Her siger vi hvor mange den skal ind læse af gangen og hvor det skal ligges henne. myport. Buka (); untuk (int i = 1; i <= int. Parse (textBoxAntalArduino. Text); i ++) {string inData = myport. ReadLine (); textBoxDB. AppendText (inData); } myport. Tutup (); } tangkapan (Pengecualian) {
MessageBox. Show ("Der udfylt forkert");
}
} bantuan kosong peribadiBt_Click (penghantar objek, EventArgs e)
{MessageBox. Show ("1 Klik p data læse data fra solcelle for læse ny date in i programet." + "\ N" + "2 klik ps indsæt i database for at gemme dataen." + "\ N" + "3 klik p database lss 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 Uji larangan ser om databasen 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 databasen skal udfyldes "); }}}
Langkah 7: Pangkalan Data

Da vi besluttede di 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 produser i den sidste tid. Untuk di kunne gemme det data har vi lavet en database i wampserver. Vi har lavet et program i Visual studio som sender en string med volt måling til databaseasen. Databasen gemmer værdien som en varchar, da vi havde store problemer med di databaseasen ville modtage komatal, hvis den gemte dem i double. Pemberi pangkalan data Vores alle målinger et unikt id hvor man kan se værdien hvad, og hvilke tidspunkter det er målt. Vores app kan hente den forskellige data fra databaseas, nt at det nemt at læse og den kan udregne gennemsnittet af målingerne.
Langkah 8: Hjemmeside HTML




Der er blevet lavet en forside til den al den data vi untuk inda data base, denne side er bygget op ved hjælp HTML og CSS. HTML er blevet brugt til at bygge alle elementerne op på siden og linke til 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 denstand der skal være mellem alting på hjemmesiden.
Langkah 9: PHP Hjemmeside



ved brugen af php er der blevet lavet en hjemmeside sådan di en ikke tekniker er i stand by at læse data ud fra solcellen.
denne side er lavet ved at php connecter til databaseasen og henter dataen ind på hjemmeside lige så snart man loader den. ved brugen af CSS code er det blevet sat op opnem og overskuelige måde, med alt den data der kommer fra databaseasen.
Disyorkan:
Pejabat Bertenaga Bateri. Sistem Suria Dengan Auto Switching Panel Suria Timur / Barat dan Turbin Angin: 11 Langkah (dengan Gambar)

Pejabat Bertenaga Bateri. Sistem Suria Dengan Auto Switching Panel Suria Timur / Barat dan Turbin Angin: Projek: Pejabat seluas 200 kaki persegi perlu dikuasakan bateri. Pejabat juga mesti mengandungi semua alat kawalan, bateri dan komponen yang diperlukan untuk sistem ini. Tenaga suria dan angin akan mengecas bateri. Terdapat sedikit masalah hanya
Penjejak Suria: 4 Langkah

Solar Tracker: Ini adalah tracker solar yang saya buat. Semasa melayari internet, saya mendapat banyak idea tetapi saya terfikir untuk membuat projek yang mesra bajet. Saya berjaya terutamanya untuk pemula yang baru menggunakan arduino. Dan saya juga memuat naik gambar dari bekalan utama
Penjejak Suria: 6 Langkah

Solar Tracker: Helo, nama saya Jochem Forrez dan saya sedang berteknologi Multi Media dan Teknologi Komunikasi di Howest (Kortrijk, Belgium). Untuk sekolah kita perlu membuat projek. Saya membuat pelacak Solar (panel suria yang mengikuti matahari), saya dapati ia sangat menarik
Penjejak Suria Miniatur DIY: 5 Langkah (dengan Gambar)

DIY Miniature Solar Tracker: Dalam projek ini saya akan menunjukkan kepada anda bagaimana membuat solar tracker yang seperti namanya dapat mengikuti pergerakan matahari sepanjang hari. Dan pada akhirnya saya akan menunjukkan kepada anda perbezaan penuaian tenaga antara panel solar yang dipasang pelacak solar
Lampu Taman Suria pada Sistem Suria yang Lebih Besar: 6 Langkah

Lampu Taman Suria pada Sistem Suria yang Lebih Besar: Saya mencari sistem pencahayaan taman 12v untuk halaman belakang rumah saya. Semasa mencari sistem dalam talian, tidak ada yang benar-benar menarik perhatian saya dan saya tidak tahu ke mana saya mahu pergi. Sekiranya saya harus menggunakan pengubah ke kuasa utama saya atau menggunakan sistem solar. Saya juga