INHOUDSOPGAWE:
2025 Outeur: John Day | [email protected]. Laas verander: 2025-01-13 06:56
Arduino is 'n ekonomiese, maar tog baie doeltreffende en funksionele hulpmiddel, en om dit in Embedded C te programmeer, maak die proses vervelig! Die Arduino_Master -module van Python vereenvoudig dit en stel ons in staat om berekeninge uit te voer, vulliswaardes te verwyder en 'n grafiek te teken vir 'n visuele voorstelling van data.
As u nog nie van hierdie module weet nie, installeer dit dan met die opdrag pip install Arduino_Master
Moenie bekommerd wees as u nie weet hoe u hierdie module moet gebruik nie; besoek hierdie skakel => Arduino_Master
Die kode vir hierdie projek sal egter altyd in hierdie instruksies beskikbaar wees.
Voorrade
Vir hierdie projek benodig u die volgende:
- 'N Arduino
- 'N Ligte afhanklike weerstand (LDR) en
- Python 3 op u rekenaar geïnstalleer.
Stap 1: Bou u stroombaan:
Ons sal pin A1 van Arduino gebruik om insetdata te kry. U kan ook die 5V- en GND -penne van Arduino gebruik in plaas van die battery. Maak die verbinding soos volg:
- Koppel die een kant van die LDR aan die positiewe aansluiting van 'n 5V -battery of aan die 5V -pen van die Arduino.
- Verbind die ander kant van die LDR parallel met pen A1 en die negatiewe aansluiting van die battery of GND -pen van Arduino.
- Gebruik 'n weerstand om seker te maak dat al die stroom nie na die GND vloei nie, wat veroorsaak dat u nie 'n sterk genoeg sein kry om by die A1 -aansluiting van die Arduino te voel nie. (Gebruik 'n weerstand van 10k ohm).
Stap 2: Die programmering van u Arduino:
Arduino_Master -module gebruik Serial Monitor van die Arduino om data te stuur en te ontvang. Die voordeel van die gebruik van hierdie module is dat sodra u u Arduino programmeer, u die luislangprogram alleen vir verskillende projekte kan verander, aangesien programmering in python relatief makliker is!
Kode:
// Die veranderlike van LDR_1 word gebruik om pen A1 van Arduino aan te dui.
int LDR_1 = A1;
// Data wat vanaf A1 ontvang word, sal in LDR_Value_1 gestoor word.
vlot LDR_Value_1;
Snaarinvoer;
leemte opstelling ()
{pinMode (LDR_1, INVOER); // LDR_1 is ingestel as 'n INPUT -pen. Serial.begin (9600); // Kommunikasie baudrate is ingestel op 9600.}
leemte lus ()
{as (Serial.available ()> 0) // indien enige insette in die seriële monitor beskikbaar is, gaan dan voort. {input = Serial.readString (); // Lees die invoer as 'n string. if (input == "DATA") {LDR_Value_1 = analogRead (LDR_1) * (5.0 / 1023.0); // (5 /1023) is die omskakelingsfaktor om waarde in volt te kry. Serial.println (LDR_Value_1); // As die invoer gelyk is aan "DATA", lees dan die invoer van LDR_1 en druk dit op die Serial Monitor. } anders int i = 0; // as die invoer nie gelyk is aan "DATA" nie, doen niks! }
}
Stap 3: Python programmeer om data uit Arduino te grafiseer:
Elke LDR sou sy eie weerstandswaardes hê, en ons moet onthou dat elektroniese komponente nie presies identies in werking is nie. Dus moet ons eers die spanning by verskillende intensiteite van die lig bepaal.
Laai die volgende program op na u python IDE en voer dit uit:
Doen dit vir verskillende intensiteite van die lig en maak 'n gevolgtrekking met behulp van die grafiek, byvoorbeeld, as die intensiteit minder as 1 is, is die kamer te donker. Vir intensiteit tussen 1 en 2 is die kamer aansienlik donker. Vir intensiteit groter as 2 word die lig aangeskakel.
# Invoer van Arduino_Master -module
vanaf Arduino_Master invoer *
# data versamel
data = filter (ardata (8, squeeze = False, dynamic = True, msg = "DATA", lines = 30), expect_type = 'num', limit = [0, 5])
Die limiet is op 5 gestel, aangesien ons 'n 5V -battery gebruik.
# Skets die waardes
Grafiek (data, stl = 'dark_background', label = 'Light Intensity')
Stap 4: Finale program om die intensiteit van lig in 'n kamer na te gaan
Nadat u tot die gevolgtrekking gekom het uit die gegewens wat u gekry het, laai die volgende program op en maak seker dat u die perke volgens u gevolgtrekking verander.
# Invoer van Arduino_Master -module
vanaf Arduino_Master invoer # versamel data data = filter (ardata (8, squeeze = False, dynamic = True, msg = "DATA", lines = 50), expected_type = 'num', limit = [0, 5]) #classifying data gebaseer op gevolgtrekking info = vir i in reeks (len (data)): intensiteit = data as intensiteit 1 en intensiteit = 2: info.append ('Light ON') # Plot die grafiek. compGraph (data, inligting, stl = 'dark_background', label1 = 'Light Intensity', label2 = 'State')
Stap 5: Resultaat:
Die program sal 'n minuut of twee neem om uit te voer, aangesien u 50 onmiddellike waardes van Arduino lees.
As u die proses wil bespoedig, verander dan die reëlparameter van die ardata -funksie. Maar onthou dat hoe minder die waarnemings, hoe minder die kwaliteit van die data is.
Opmerking: as die volledige grafiek op die foto hierbo nie sigbaar is nie, verwys die grafiek bo die inleiding.