Innholdsfortegnelse:
2025 Forfatter: John Day | [email protected]. Sist endret: 2025-01-13 06:58
Arduino er et økonomisk, men svært effektivt og funksjonelt verktøy, og programmering av det i Embedded C gjør prosessen med å gjøre prosjekter kjedelig! Arduino_Master -modulen til Python forenkler dette og lar oss utføre beregninger, fjerne søppelverdier og plotte en graf for en visuell fremstilling av data.
Hvis du ikke vet om denne modulen ennå, kan du installere den ved hjelp av kommandoen pip install Arduino_Master
Ikke bekymre deg hvis du ikke vet hvordan du bruker denne modulen, besøk denne lenken => Arduino_Master
Koden for dette prosjektet vil imidlertid alltid være tilgjengelig i denne instruksjonsboken.
Rekvisita
For dette prosjektet trenger du følgende:
- En Arduino
- En lysavhengig motstand (LDR) og
- Python 3 installert på datamaskinen din.
Trinn 1: Bygg kretsen din:
Vi bruker pin A1 av Arduino for å få inndata. Du kan også bruke 5V- og GND -pinnene til Arduino i stedet for batteriet. Gjør tilkoblingen som følger:
- Koble den ene enden av LDR til den positive kontakten på et 5V batteri eller til 5V pinnen på Arduino.
- Koble den andre enden av LDR parallelt med pinne A1 og minuspolen på batteriet eller GND -pinnen til Arduino.
- Bruk en motstand for å sikre at all strømmen ikke strømmer til GND, noe som vil føre til at du ikke får et sterkt nok signal til å føle ved A1 -terminalen på Arduino. (Jeg bruker en motstand på 10k ohm).
Trinn 2: Programmering av Arduino:
Arduino_Master -modulen bruker Serial Monitor of Arduino til å sende og motta data. Fordelen med å bruke denne modulen er at når du har programmert Arduino, kan du endre python -programmet alene for forskjellige prosjekter siden programmering i python er relativt enklere!
Kode:
// LDR_1 -variabelen brukes til å betegne pin A1 på Arduino.
int LDR_1 = A1;
// Data mottatt fra A1 blir lagret i LDR_Value_1.
flyte LDR_Value_1;
String input;
ugyldig oppsett ()
{pinMode (LDR_1, INPUT); // LDR_1 er angitt som en INPUT -pin. Serial.begin (9600); // Kommunikasjons baudrate er satt til 9600.}
hulrom ()
{if (Serial.available ()> 0) // hvis noen inngang er tilgjengelig i den serielle skjermen, fortsett. {input = Serial.readString (); // Les inngangen som en streng. if (input == "DATA") {LDR_Value_1 = analogRead (LDR_1) * (5.0 / 1023.0); // (5 /1023) er konverteringsfaktoren for å få verdi i volt. Serial.println (LDR_Value_1); // Hvis inndata er lik "DATA", les deretter inndata fra LDR_1 og skriv den ut på seriell skjerm. } annet int i = 0; // hvis input ikke er lik "DATA", ikke gjør noe! }
}
Trinn 3: Programmering av Python til å tegne data fra Arduino:
Hver eneste LDR ville ha sine egne motstandsverdier, og vi må huske at nei til elektroniske komponenter noensinne er nøyaktig identiske i drift. Derfor må vi først finne spenningen ved forskjellige lysintensiteter.
Last opp følgende program til python IDE og kjør det:
Gjør dette for forskjellige lysstyrker, og bruk grafen til å trekke en konklusjon, for eksempel hvis intensiteten er mindre enn 1, er rommet for mørkt. For intensitet mellom 1 og 2 er rommet betraktelig mørkt. For intensitet større enn 2, slås lyset på.
# Importere Arduino_Master -modul
fra Arduino_Master import *
# samle data
data = filter (ardata (8, squeeze = False, dynamic = True, msg = "DATA", lines = 30), expect_type = 'num', limit = [0, 5])
# grensen er satt til 5 siden vi bruker et 5V batteri.
# Plotte verdiene
Graf (data, stl = 'dark_background', label = 'Light Intensity')
Trinn 4: Sluttprogram for å kontrollere lysets intensitet i et rom
Etter å ha kommet til en konklusjon fra dataene du fikk, last opp følgende program og sørg for å endre grensene i henhold til konklusjonen din.
# Importere Arduino_Master -modul
fra Arduino_Master import # innsamling av data data = filter (ardata (8, squeeze = False, dynamic = True, msg = "DATA", lines = 50), expected_type = 'num', limit = [0, 5]) #classifying data basert på konklusjon info = for i i området (len (data)): intensitet = data hvis intensitet 1 og intensitet = 2: info.append ('Light ON') # Plotting the Graph. compGraph (data, info, stl = 'dark_background', label1 = 'Light Intensity', label2 = 'State')
Trinn 5: Resultat:
Programmet vil ta et minutt eller to å kjøre siden du leser 50 øyeblikkelige verdier fra Arduino.
Hvis du vil fremskynde prosessen, kan du prøve å endre linjeparameteren for ardatafunksjonen. Men husk at jo mindre observasjonene er, desto mindre vil kvaliteten på dataene være.
Merk: Hvis hele grafen på bildet ovenfor ikke er synlig, kan du se grafen over introduksjonsdelen.