Cov txheej txheem:
- Kauj Ruam 1: Kev Ua Haujlwm
- Kauj Ruam 2: Byg Et Solpanels Holder
- Kauj Ruam 3: Automatisk Solpanel
- Kauj ruam 4: Voltmeter
- Kauj Ruam 5: Beskrivelse Af Programmet
- Kauj ruam 6: Kode
- Kauj ruam 7: Database
- Kauj Ruam 8: HTML Hjemmeside
- Kauj ruam 9: PHP Hjemmeside
Video: EAL-Kev Lag Luam 4.0 Tsis Siv Neeg Hnub Ci Tracker System: 9 Cov Kauj Ruam
2024 Tus sau: John Day | [email protected]. Kawg hloov kho: 2024-01-30 09:29
Kuv tau txiav txim siab ua cov haujlwm ua haujlwm kom tau txais txiaj ntsig ntawm lave en ntse IOT løsning, hvor txiv neej skal læse cov ntaub ntawv fra enhed på en app/hjemmeside og derefter lager denne på en database. Ua los ntawm cov ntaub ntawv tuaj yeem rub tawm los ntawm cov ntaub ntawv thiab hente cov ntaub ntawv thiab vise den. Koj yuav tau txais txiaj ntsig ntawm qhov zoo tshaj plaws, hvor vi læser voltagen ntawm en arduino enhed og viser dette på en Windows app. Hvor det tom ntej no yog muligt ntawm lagre og hente denne cov ntaub ntawv fra en database.
Kauj Ruam 1: Kev Ua Haujlwm
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. Ua ntej tshaj plaws koj yuav tsum tau nyob ntawm lave en hjemmeside og forbinde, databasen, hjemmesiden og Arduinoen sammen med Node-RED. Qhov no txhais tau tias koj tuaj yeem ua haujlwm tau zoo ntawm kev saib xyuas thiab rov ua kom zoo dua qub hauv kev hloov pauv. Vi måtte dev 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. Koj tuaj yeem ua tiav nrog ntawm droppe Node-RED, da vi vil prøve at gøre projektet mere enkelt. Kuv tau txais txiaj ntsig zoo ntawm lave en Windows app, hvor vi har samlet alle funktionerne, altså data opsamlingen fra Arduinoen, lagringen den denne data på en database, samt læsning af databasen.
Kauj Ruam 2: Byg Et Solpanels Holder
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 liab qab og montere vaj huam sib luag og kauj ruam lub cev muaj zog p har holderen vi har vedlagt filerne fra Inventor så de er lige til og bruge
Kauj Ruam 3: Automatisk Solpanel
solpanelet bruger 2 teev Kauj ruam motor og 4 stk. lys sensor hvor vi så kan måle lys værdigerne som vi bruger til og vælge hvilken rov rov qab panelet skal stå i rau og få bedst udnyttelse af panelet vi har vedlagt koden til panelet
nws er txuas 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…
Kauj ruam 4: Voltmeter
vi skal nu bruge nogle data som vi kan sende til database der har brug brugt solpanelets volt og læser dem på en analog indgang på en Arduino på billedet kan i se hvordan det er forbundet og vi har også vedlagt koden til vores voltmeter.
Kauj Ruam 5: Beskrivelse Af Programmet
Vores ide med dette program er at lave en Windows app, der kan vise voltagen nyob ntawm qhov ua tau zoo. Dette gør vi ved at første at oprette en forbindelse mellem den Arduino som læser voltagen fra solcellen og app'en. Cov ntaub ntawv tuaj yeem ua rau tsis txaus ntseeg Arduinoen ved ntawm trykke på "Læs cov ntaub ntawv ntawm Arduino", txiv neej vælger hvor mange cov ntaub ntawv man txiv neej ønsker ved ntawm skrive dette antal i "Antal txiv neej ønsker fra solcelle", cov ntaub ntawv ættene kommer med et sekunds mellemrum. Tsis muaj cov ntaub ntawv twg los xij, yog li kuv tuaj yeem rub tawm cov ntaub ntawv mus rau lub hauv paus, ua raws li cov ntawv teev npe thiab lub sijhawm cim thiab lub sijhawm ID. Kuv app'en er der også mulighed rau ntawm hente dataen fra database, tus txiv neej tuaj yeem ua tau zoo tshaj plaws hvor mange cov ntaub ntawv tus txiv neej ønsker, ved ntawm skrive nummeret i tekstboksen "Antal der hentes fra databasen" Tus txiv neej tsis tuaj yeem lees paub rau vist gennemsnittet fra disse ved ntawm makkere de cov ntaub ntawv tus txiv neej ønsker gennemsnittet af.
Kauj ruam 6: Kode
siv System; siv System. Collections. Generic; siv System. ComponentModel; siv System. Data; siv System. Drawing; siv System. Linq; siv System. Text; siv System. Threading. Tasks; siv System. Windows. Forms; siv System. IO. Ports; siv MySql; siv MySql. Data. MySqlClient; siv System. Globalization; namespace WindowsFormsApp1 {pej xeem ib nrab chav kawm Form1: Daim ntawv { /* Nws har vi vores cov ntaub ntawv mus txuas rau txoj hlua. Pn dennne måde er det nemt at lave om hvis man ændre sin database eller server.*/ Ntiag tug SerialPort myport; hlua _server = "127.0.0.1"; hlua _database = "test"; hlua _uid = "hauv paus"; hlua _pwd = ""; pej xeem Form1 () {InitializeComponent (); } /* Kuv denne Void laver vi vores connectionstring til vores database vi bruger de cov ntaub ntawv overfor. Hvis der laves en txuas mus rau vil der komme en messagebox hvor der står "txuas" Hvis der ikke kan laves en txuas mus rau databasen vil der kommer en errormessage hvor i der står "Ua tsis tiav txuas thov tshawb xyuas koj li kev txuas" */ ntiag tug tsis muaj dab tsi knap_Click (khoom tus xa, EventArgs e) {sim {// Nws laver vi en hlua hvor vi skriver hvordan vores connetions er til databasen. hlua myConn = "server =" + _server + "; database =" + _database + "; uid =" + _uid + "; pwd =" + _pwd + ";" MySqlConnection kev twb kev txuas = tshiab MySqlConnection (myConn); kev twb kev txuas. Open (); MessageBox. Show ("Txuas"); } ntes (Kev zam) {MessageBox. Show ("Ua tsis tiav txuas thov txheeb xyuas koj li kev txuas"); }} /* Kuv tsis lees txais tus xa ntawv vi til vores database. Cov ntaub ntawv tam sim no som vi har modtaget fra arduino og står i Data Box vil når vi trykker på inset bliver infomationen sendt til databasen. Der vil komme en messages hvor der står "cov ntaub ntawv xa mus rau DB" og derefter bliver Data Box cleart */ private void insetDB_Click (tus xa khoom, EventArgs e) {// Nws laver vi en string hvor vi skriver hvordan vores connetions er til databasen. hlua myConn = "server =" + _server + "; database =" + _database + "; uid =" + _uid + "; pwd =" + _pwd + ";" siv (MySqlConnection conn = tshiab MySqlConnection (myConn)) {conn. Open (); // Kuv vores foreach statment læser den alle linjerne kuv vores Data Box og indsætters være rau sig inde i tablen power og rækken volt i databasen foreach (var kab hauv textBoxDB. Lines) {string myInsert = "INSERT INTO power (volt) VALUES ('" + kab. ToString () +"') "; MySqlCommand cmd = tshiab MySqlCommand (myInsert, conn); cmd. ExecuteNonQuery (); } conn. Close (); MessageBox. Show ("Cov ntaub ntawv xa mus rau lub hauv paus"); textBoxDB. Clear (); }} /* Kuv tsis lees paub Void henter vi det cov ntaub ntawv vi har gemmt i vores cov ntaub ntawv hauv paus. vi har en tekstbox hvor der er lavet 3 kolonner hvor der kommer forsekilg cov ntaub ntawv 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 cov txiv neej det kan laves om hvis txiv neej ønsker ntawm se felre eller mindre.*/ ntiag tug tsis muaj dab tsi knapDBGet_Click (tus xa khoom, EventArgs e) {listViewDb. Clear (); // Nws bliver de 3 kolonner lavet. listViewDb. Columns. Add ("id"); listViewDb. Columns. Add ("volt"); listViewDb. Columns. Add ("hnub tim"); listViewDb. MultiSelect = tseeb; listViewDb. View = View. Details; // Nws laver vi en hlua hvor vi skriver hvordan vores connetions er til databasen. hlua myConn = "server =" + _server + "; database =" + _database + "; uid =" + _uid + "; pwd =" + _pwd + ";" siv (MySqlConnection conn = tshiab MySqlConnection (myConn)) {conn. Open ();
// Her henter vi de sidste til 20 id der er indsat i tablen Power i databasen.
int antal = int. Parse (textBoxAntal. Text); hlua myInsert = "Xaiv * Los ntawm (Xaiv * Los ntawm lub zog xaj los ntawm id DESC LIMIT"+antal+") sub ORDER BY id ASC"; MySqlCommand cmd = tshiab MySqlCommand (myInsert, conn);
// Nws laver vi en cov ntaub ntawv txheeb xyuas (dTable) hvor den cov ntaub ntawv vi henter thiab databasen bliver lagt ind.
MySqlDataAdapter MyAdapter = tshiab MySqlDataAdapter (); MyAdapter. SelectCommand = cmd; DataTable dTable = DataTable tshiab (); MyAdapter. Fill (dTable); rau (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 [kuv]; ListViewItem listitem = tshiab ListViewItem (dataRow ["id"]. ToString ()); listitem. SubItems. Add (dataRow ["volt"]. ToString ()); listitem. SubItems. Add (dataRow ["hnub tim"]. ToString ()); listViewDb. Items. Add (listitem); } conn. Close (); }
}
/* Kuv denne Void har vi lavet en funktion hvor vi kan regne gennemsnitet af det makere cov ntaub ntawv vi har hentet fra databasen.
Koj ua rau koj tsis paub ua phem rau lwm tus thiab kuv tau koom nrog 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 (object sender, EventArgs e) {sim {ntab tso zis = 0; yog (listViewDb. SelectedItems. Count> = 2) { /* Nws ligger vi vores tso tawm som er 0 sammen med den mærkeret cov ntaub ntawv som bliver lavert om til cov ntaub ntawv typen ntog og derefter divres der med den antal der er mærkert så den regner gennemsnitet af qhov hluav taws xob. Ved at vi brugte CultureInfoInvariantCulture kan vi få lov til at bruge. Kuv pom zoo kom */ foreach (ListViewItem yam khoom hauv listViewDb. SelectedItems) {tso tawm += float. Parse (item. SubItems [1]. Text, CultureInfoInvariantCulture)/ listViewDb. SelectedItems. Count; } Output. Text = output. ToString (); }} ntes {MessageBox. Show ("Error 40: User is a dummy"); }} /* Kuv 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 Data Box Når vi trykker på Nyeem cov ntaub ntawv læser 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å "vaj tswv pab koj" */ ntiag tug tsis muaj dab tsi pibBn_Click (tus xa khoom, EventArgs e) {// Nws tus skriver du de data du skal bruge til at kunne connct til det du skal læse fra. textBoxDB. Clear (); myport = tshiab SerialPort (); myport. BaudRate = 9600; myport. PortName = textBoxPort. Text; myport. DataBits = 8; myport. StopBits = StopBits. One; sim {// Nws siger vi hvor mange den skal ind læse af gangen og hvor det skal ligges henne. myport. Open (); rau (int kuv = 1; kuv <= int. Parse (textBoxAntalArduino. Text); kuv ++) {hlua inData = myport. ReadLine (); textBoxDB. AppendText (inData); } myport. Close (); } ntes (Kev zam) {
MessageBox. Show ("Der udfylt forkert");
}
} ntiag tug tsis muaj txiaj ntsig helpBt_Click (tus xa khoom, EventArgs e)
{MessageBox. Show ("1 Klik på læse data fra solcelle for læse ny date in i programet." + "\ N" + "2 klik på indsæt i database for at gemme dataen." + "\ N" + "3 klik på læs fra database rau ntawm læse den gemet cov ntaub ntawv. " +" / n " +" 4 tus txiv neej kan klike på id rau ntawm kev rov ua dua gennemsnite af de valt dataer ud. " +" / n " +" 5 Kev ntsuas txwv tsis pub siv txhua hnub databasen køre. " +" / n " +" chaw nres nkoj navn skal udfyldes med den chaw nres nkoj tus txiv neej ua tau zoo tshaj plaws " +" / n " +" der skal skrives thiab antal på hvor mange txiv neej vil hendte fra solcellen " +" / n " +" Antal der skal hentes fra databasen skal udfyldes "); }}}
Kauj ruam 7: Database
Da vi besluttede at vi ville lave en solcellestyring, ville det være ntse at vi kunne se hvor mange volt den laver lige nu. Koj tuaj yeem pom lub hnub qub lave ved tidliger målinger, eller hvad den i gennemsnittet har produceret i den sidste tid. Rau ntawm kunne gemme det cov ntaub ntawv har vi lavet en database kuv wampserver. Koj tau siv lavet thiab program i Visual studio som sender en string med volt måling til databasen. Databasen gemmer værdien som en varchar, da vi havde khw problemer med ntawm databasen ville modtage komatal, hvis den gemte dem i double. Cov ntaub ntawv khaws cia cov ntaub ntawv muab rau txhua tus neeg thiab tsis muaj tus lej zoo li tus txiv neej tuaj yeem ua tau raws li qhov xav tau, thiab hvilke tidspunkter tau txais ntau dua. Vores app yog qhov zoo tshaj plaws khaws cov ntaub ntawv ntawm cov ntaub ntawv, yog li tsis yog ntawm læse og den kan udregne gennemsnittet af målingerne.
Kauj Ruam 8: HTML Hjemmeside
Der er blevet lavet en forside til den al den cov ntaub ntawv vi rau ind fra databasen, denne sab er bygget op ved hjælp HTML og CSS. HTML er blevet brugt til ntawm 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 ntawm muab html elementerne farve og til ntawm muab den afstand der skal være mellem alting på hjemmesiden.
Kauj ruam 9: PHP Hjemmeside
ved brugen af php er der blevet lavet en hjemmeside sådan ntawm en ikke tekniker er kuv sawv ntsug ntawm læse cov ntaub ntawv ud fra solcellen.
denne sab er lavet ved ntawm php txuas mus rau databasen og henter dataen ind 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 cov ntaub ntawv der kommer fra databasen.
Pom zoo:
Tsis Siv Neeg Tshuab Luam Ntawv Tsis Siv Neeg Gumball: 18 Kauj Ruam (nrog Duab)
Tsis Siv Neeg Tshuab Luam Ntawv Tsis Siv Neeg Gumball: Peb tau Ua Kov Tsis Pub Siv Gumball Siv lub micro: me ntsis, Crazy Circuits Bit Board, ntsuas qhov deb, siv servo, thiab duab los qhia. Ua nws thiab siv nws yog "BLAST" "! ? ? Thaum koj tso koj txhais tes rau hauv lub hauv paus ntawm lub foob pob hluav taws, lub ntsuas qhov deb
Lub Tsev Tsis Siv Neeg Hnub Ci Tracker Nrog Arduino Nano V2: 17 Cov Kauj Ruam (nrog Duab)
Tsim lub Hnub Ci Tsis Siv Neeg Tracker Nrog Arduino Nano V2: Nyob Zoo! Cov Lus Qhia no yog txhais ua ib feem ob rau kuv qhov Solar Tracker project. Txog kev piav qhia seb hnub ci trackers ua haujlwm li cas thiab kuv tsim kuv tus thawj tracker li cas, siv qhov txuas hauv qab no. Qhov no yuav muab cov ntsiab lus rau txoj haujlwm no .https: //www.instructables.co
3D Luam Tus Neeg Robotic Aub (Neeg Hlau thiab 3D Luam Ntawv rau Cov Pib): 5 Kauj Ruam
3D Luam Tus Neeg Robotic Aub (Neeg Hlau thiab 3D Luam Ntawv rau Cov Pib): Neeg Hlau thiab 3D Luam Ntawv yog yam tshiab, tab sis peb tuaj yeem siv lawv! Txoj haujlwm no yog txoj haujlwm pib zoo yog tias koj xav tau lub tswv yim ua haujlwm hauv tsev kawm ntawv, lossis tsuas yog nrhiav txoj haujlwm lom zem ua
Hnub ci teeb tsis muaj roj teeb, lossis hnub ci hnub ci Vim Li Cas Tsis?: 3 Kauj Ruam
Hnub ci teeb tsis muaj roj teeb, lossis Hnub Ci Hnub Ci … Vim Li Cas Tsis?: Zoo siab txais tos. Thov txim rau kuv cov lus Askiv hnub? Hnub ci? Vim li cas? Kuv muaj chav tsaus me ntsis thaum nruab hnub, thiab kuv yuav tsum qhib lub teeb thaum siv. Nruab hnub ci rau nruab hnub thiab hmo ntuj (1 chav): (hauv Chile) -Solar panel 20w: US $ 42-Battery: US $ 15-Solar caj caj
Tsim Lub Hnub Ci Tsis Siv Neeg Tracker Nrog Arduino UNO: 8 Cov Kauj Ruam
Tsim Lub Hnub Ci Tsis Siv Neeg Tracker Nrog Arduino UNO: Hnub ci zog tau dhau los ua ntau thiab thoob plaws ntiaj teb. Tam sim no, ntau txoj hauv kev tau tshawb fawb los ua kom lub hnub ci vaj huam sib luag tso zis ntau zog, txo peb txoj kev cia siab rau fossil fuels thiab thee. Ib txoj hauv kev los ua qhov no yog kom cov vaj huam sib luag txav mus, ib