Spisu treści:
- Krok 1: Dopasuj
- Krok 2: Uchwyt Byg Et Solpanels
- Krok 3: Automatisk Solpanel
- Krok 4: Woltomierz
- Krok 5: Opis programu Af
- Krok 6: Kode
- Krok 7: Baza danych
- Krok 8: Strona główna HTML
- Krok 9: Strona PHP
Wideo: Automatyczny system śledzenia energii słonecznej EAL-Industry 4.0: 9 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:32
I dette projekt har vi fået til opgave i lave pl smart IOT løsning, hvor man skal ma dane z enhed på en app/hjemmeside og derefter lager denne på en database. Fra databasen skal det da være muligt at hente dataen og vise den. Możesz znaleźć i uzyskać dostęp do urządzenia, korzystając z aplikacji na system Windows. Hvor det herefter er muligt at lagre og hente denne data fra en database.
Krok 1: Dopasuj
Fra starten haven tænkt ost at lave en Solcelle, fra hvor vi skulle kunne laese voltagen i gemme den w bazie danych. Først havde vi tænkt os at lave en hjemmeside og forbinde, databasen, 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 projectet, d vikke kunne inverteren at the virke solcellepanelet, derfor endte vi med at the med en lille solcelle, som kunne monitores direkte fra Arduinoen. Zakończono przeglądanie przez droppe Node-RED, gdy będziesz szukać i przeglądać projekty. Korzystam z aplikacji w systemie Windows, aby uzyskać dostęp do wszystkich funkcji, innych opcji przetwarzania danych z Arduinoen, uaktualniając dane w bazie danych, jednocześnie czytając w bazie danych.
Krok 2: Uchwyt Byg Et Solpanels
Zaprojektuj i zaprojektuj uchwyt na panel, aby uzyskać dostęp do kolejnych elementów i zaprojektuj 3D w jednym miejscu, aby usunąć je z drukarki 3D. 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
Krok 3: Automatisk Solpanel
solpanelet bruger 2 stk. Silnik krokowy 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å bestst udnyttelse af 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.pl/Photo-Resistor-5mm-Photoc…
www.amazon.co.uk/Arduino-A000066-ATMEGA328…
Krok 4: Woltomierz
Nie ma żadnych danych, więc możesz wysłać do bazy danych, aby uzyskać dostęp do pełnych solpanelets i czytać w języku indyjskim analogowym na Arduino na obrazie, jeśli chcesz, aby był obecny i masz dostęp do własnych kodów woltomierza.
Krok 5: Opis programu Af
Vores ide med dette program er at lave en Windows app, der kan vise voltagen live fra en solcelle. Dette gør vi ved at første at oprette en forbindelse mellem den Arduino som læser voltagen fra solcellen og app’en. Dane mogą być ostatnio odczytywane z Arduino w próbie „Dane dotyczące Arduino”, człowiek dowodzi, że zawiera dane o człowieku, który jest napisany przez człowieka w „Antal człowieku z solcelle”, dane dotyczące komunikacji z i sekundami. Znajdź wszystkie dane są najświeższe, możesz przesłać dane do bazy danych, wyświetlać informacje o aktualnym numerze i sygnaturze czasowej oraz unikalnym identyfikatorze. I app’en er der også mulighed for at hente dataen fra database, 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.
Krok 6: Kode
za pomocą System; za pomocą System. Collections. Generic; przy użyciu System. ComponentModel; za pomocą System. Data; za pomocą System. Drawing; za pomocą System. Linq; za pomocą System. Text; za pomocą System. Threading. Tasks; za pomocą System. Windows. Forms; za pomocą System. IO. Ports; za pomocą MySQL; przy użyciu MySql. Data. MySqlClient; using System. Globalization;namespace WindowsFormsApp1 { public częściowa klasa Form1: Form { /* Jej dane służą do ciągów połączeń. W tej chwili możesz mieć dostęp do serwera bazy danych lub serwera.*/ private SerialPort myport; string _server = "127.0.0.1"; string _baza danych = "test"; string _uid = "root"; ciąg _hasło = ""; public Form1() { InitializeComponent(); } /* Określam Void laver vi vores connectionstring do vores database vi bruger de data overfor. Hvis der laves en connections vil der komme en messagebox hvor der står " connected " Hvis der ikke kan laves en connection til databasen vil der kommer en errormessage hvor i der står "Nie udało się połączyć, sprawdź połączenie" */ private void knap_Click(object sender, EventArgs e) { try { // Jej laver vi en string hvor vi skriver hvordan vores connetions er til databasen. string myConn = "server=" + _server + ";database=" + _database + ";uid=" + _uid + ";pwd=" + _pwd + ";"; Połączenie MySqlConnection = nowe MySqlConnection(myConn); połączenie. Otwórz(); MessageBox. Show("Połączony"); } catch (Exception) { MessageBox. Show("Nie udało się połączyć, sprawdź połączenie"); } } /* I denne void sender vi til vores database. Den data der som har modtaget fra arduino i star w Data Box vil når vi trykker på inset Bliver infomationen wyślij do bazy danych. Der vil komme en wiadomości hvor der står "dane wysłane do bazy danych" og derefter bliver wyczyść skrzynkę danych */ private void insetDB_Click(object sender, EventArgs e) { // Jej laver vi en string hvor vi skriver hvordan vores connetions er til databasen. string myConn = "server=" + _server + ";database=" + _database + ";uid=" + _uid + ";pwd=" + _pwd + ";"; using (MySqlConnection conn = new MySqlConnection(myConn)) { conn. Open(); // Wstawiam wszystkie instrukcje i przeglądam dane w Data Box i wstawiam dane dotyczące mocy tabeli i zwiększania napięcia i bazy danych (var lines in textBoxDB. Lines) { string myInsert = "INSERT INTO power(volt) VALUES ('" + linie. ToString() + "')"; MySqlCommand cmd = new MySqlCommand(myInsert, conn); cmd. ExecuteNonQuery(); } poł. Zamknij(); MessageBox. Show(" Dane są wysyłane do bazy danych "); textBoxDB. Wyczyść(); } } /* I denne Void henter vi det data vi har gemmt i vores data base. vi har pl tekstbox hvor d 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(object sender, EventArgs e) { listViewDb. Clear(); // Jej bliver de 3 kolonner lavet. listViewDb. Columns. Add("id"); listViewDb. Columns. Add("wolt"); listViewDb. Columns. Add("data"); listViewDb. MultiSelect = prawda; listViewDb. View = Widok. Szczegóły; // Jej laver vi en string hvor vi skriver hvordan vores connetions er til databasen. string myConn = "server=" + _server + ";database=" + _database + ";uid=" + _uid + ";pwd=" + _pwd + ";"; using (MySqlConnection conn = new MySqlConnection(myConn)) { conn. Open();
// Her henter vi de sidste til 20 id der der er indsat in tablen Power in databasen.
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 = new MySqlCommand(myInsert, conn);
// Jej laver vi en data tab (dTable) hvor den data vi henter i databasen bliver lagt ind.
MySqlDataAdapter MyAdapter = new MySqlDataAdapter(); MyAdapter. SelectCommand = cmd; DataTable dTable = nowa DataTable(); MójAdapter. Wypełnij(dTabela); for (int i = 0; i < dTable. Rows. Count; i++) { // Jej fordeler vi det data vi lagt ind i dtable ud i de 3 kolonner vi oprettede tidliger i koden. WierszDanych WierszDanych = dTable. Rows; ListViewItem listitem = new ListViewItem(dataRow["id"]. ToString()); listitem. SubItems. Add(dataRow["volt"]. ToString()); listitem. SubItems. Add(dataRow["data"]. ToString()); listViewDb. Items. Add(listitem); } poł. Zamknij(); }
}
/* I det Void har vi lavet en funktion hvor vi kan regne gennemsnitet af det makere data vi har hentet fra databasen.
Du makere det du vil lægge sammen i bunden af teksboxen star der hvad gennemsnitet. Hvis der sker en fejl vil den skrive en massage hvor der står "Błąd 40: użytkownik jest obojętnym" */ private void listViewDb_SelectedIndexChanged(object sender, EventArgs e) { try { float output = 0; if (listViewDb. SelectedItems. Count >= 2) { /* Jej ligger vi vores output som er 0 sammen med den maerkeret data som bliver lavert om til data typen float og derefter divideres der den antal der er markert så den regner gennemsnite wolta. Zobacz i poznaj kulturę CultureInfo. InvariantCulture, aby cieszyć się życiem. i vores komatal */ foreach (element ListViewItem w listViewDb. SelectedItems) { output += float. Parse(item. SubItems[1]. Text, CultureInfo. InvariantCulture)/ listViewDb. SelectedItems. Count; } Output. Text = output. ToString(); } } catch { MessageBox. Show("Błąd 40: użytkownik jest atrapą"); } } /* I denne Void har vi lavet den kan læse på serieport i vores tilfælde på en arduino. Den læser hvad der star i serieport på com port3 og 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 ke s den i der komme en errobox hvor der vil stå "Boże pomóż" */ private void startBn_Click(object sender, EventArgs e) { // Her skriver du de data du skal bruge til at kunne connct til det du skal læse fra. textBoxDB. Wyczyść(); mójport = nowy port szeregowy(); mójport. Szybkość transmisji = 9600; myport. PortName = tekstBoxPort. Text; mójport. BityDanych = 8; myport. StopBits = StopBits. Jeden; spróbuj { // Jej siger vi hvor mange den skal ind læse af gangen og hvor det skal ligges henne. mójport. Otwórz(); for (int i = 1; i <= int. Parse(textBoxAntalArduino. Text); i++) { string inData = myport. ReadLine(); textBoxDB. AppendText(inData); } mójport. Zamknij(); } połów (wyjątek) {
MessageBox. Show("Udfylt forkert");
}
} private void helpBt_Click(object sender, EventArgs e)
{ MessageBox. Show("1 Klik na wylosowane dane dla dowolnej daty w programie." + " \n " + "2 kliki na indsete w bazie danych dla najlepszych danych." + " \n " + "3 kliki 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 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"); } } }
Krok 7: Baza danych
Da vi besluttede i vi ville lave en solcellestyring, ville det være smart i 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 produceet i den sidste tid. For at kunne gemme det data har vi lavet en database i wampserver. Możesz skorzystać z programu i programu Visual Studio jako nadawcę i ciąg znaków z całej bazy danych. Databasen gemmer værdien som en varchar, jeśli masz problem ze sklepem med at databasen ville modtage komatal, hvis den gemte dem i double. Podajnik bazy danych Vores alle målinger et unikt id hvor man kan se værdien hvad, og hvilke tidspunkter det er målt. Vores aplikacja może pobrać wszystkie dane z bazy danych, nie tylko w języku angielskim, ale również w innych językach.
Krok 8: Strona główna HTML
Jest to jasne, że wszystkie dane są zawarte w danych z bazy danych, a ta strona jest dostępna w języku HTML i CSS. HTML jest w stanie wyświetlić i przeglądać wszystkie elementy na boku i link do danych, które są wyświetlane i człowiek może połączyć się z boku.
CSS pozwala uzyskać dostęp do podstawowych elementów HTML i uzyskać dostęp do informacji na temat skalowania.
Krok 9: Strona PHP
ved brugen af php er der blevet lavet pl hjemmeside sådan w pl ikke tekniker er stoję til at læse danych ud fra solcellen.
Ta strona jest dostępna w prostym złączu php do bazy danych i dalszych danych na stronie internetowej w szybkim programie ładującym człowieka. Jeśli chodzi o kod CSS, jest on dostępny na stronie internetowej lub w zbyt dużej ilości danych, korzystając z innych danych handlowych z bazy danych.
Zalecana:
Zrób przenośny generator energii słonecznej: 12 kroków
Zrób przenośny generator energii słonecznej: Czy w Twojej elektronice kiedykolwiek zabrakło mocy, gdy byłeś poza domem? na kempingu lub w miejscu, w którym nie było prądu (AC), aby je ponownie naładować? cóż, oto prosty projekt weekendowy, który zapewni, że zawsze będziesz mieć sposób na zachowanie telefonu komórkowego
Zdalny system monitorowania i dystrybucji energii w elektrowni słonecznej: 10 kroków
System zdalnego monitorowania i dystrybucji energii w elektrowni słonecznej: Celem tego projektu jest monitorowanie i dystrybucja energii w systemach elektroenergetycznych (systemy energii słonecznej). Konstrukcję tego systemu wyjaśniono w skrócie w następujący sposób. System zawiera wiele siatek z około 2 panelami słonecznymi w
Budowanie automatycznego śledzenia energii słonecznej za pomocą Arduino UNO: 8 kroków
Budowanie automatycznego śledzenia energii słonecznej z Arduino UNO: Energia słoneczna staje się coraz bardziej rozpowszechniona na całym świecie. Obecnie bada się wiele metod, aby panele słoneczne wytwarzały więcej energii, zmniejszając naszą zależność od paliw kopalnych i węgla. Jednym ze sposobów, aby to zrobić, jest przesunięcie paneli
Jak uruchomić zegar baterii na energii słonecznej: 15 kroków (ze zdjęciami)
Jak uruchomić zegar baterii na energii słonecznej: Ten wkład jest kontynuacją poprzedniego w 2016 r. (patrz tutaj), ale w międzyczasie nastąpił rozwój komponentów, które znacznie ułatwiają pracę i poprawiają wydajność. Przedstawione tutaj techniki umożliwią
Jak zbudować bank energii oparty na energii słonecznej przy użyciu baterii Dead Mobile: 4 kroki
Jak zbudować bank energii oparty na energii słonecznej przy użyciu baterii Dead Mobile: Ten projekt to bank energii oparty na energii słonecznej w domu przy użyciu rozładowanej baterii telefonu komórkowego. Możemy zastosować dowolny odpowiednik baterii mobilnej o tym samym schemacie. Panel słoneczny naładuje akumulator, a my możemy wykorzystać moc akumulatora do ładowania