Kazalo:

Načrtovanje intenzivnosti svetlobe z uporabo Arduino in Pythonove glavne knjižnice Arduino: 5 korakov
Načrtovanje intenzivnosti svetlobe z uporabo Arduino in Pythonove glavne knjižnice Arduino: 5 korakov

Video: Načrtovanje intenzivnosti svetlobe z uporabo Arduino in Pythonove glavne knjižnice Arduino: 5 korakov

Video: Načrtovanje intenzivnosti svetlobe z uporabo Arduino in Pythonove glavne knjižnice Arduino: 5 korakov
Video: CS50 2015 - Week 8, continued 2024, November
Anonim
Načrtovanje intenzivnosti svetlobe z uporabo Arduino in Pythonove glavne knjižnice Arduino
Načrtovanje intenzivnosti svetlobe z uporabo Arduino in Pythonove glavne knjižnice Arduino

Ker je Arduino ekonomično, a zelo učinkovito in funkcionalno orodje, njegovo programiranje v Embedded C otežuje proces oblikovanja projektov! Arduino_Master modul Pythona to poenostavi in nam omogoča, da izvedemo izračune, odstranimo vrednosti smeti in narišemo graf za vizualno predstavitev podatkov.

Če o modulu še ne veste, ga namestite z ukazom pip install Arduino_Master

Ne skrbite, če ne veste, kako uporabljati ta modul, obiščite to povezavo => Arduino_Master

Koda za ta projekt pa bo vedno na voljo v tem navodilu.

Zaloge

Za ta projekt boste potrebovali naslednje:

  1. Arduino
  2. Svetlobno odvisen upor (LDR) in
  3. Python 3 je nameščen na vašem računalniku.

1. korak: Zgradite vezje:

Gradnja vašega vezja
Gradnja vašega vezja

Za vnos podatkov bomo uporabili pin A1 Arduina. Namesto baterije lahko uporabite tudi 5V in GND zatiče Arduino. Povezavo vzpostavite na naslednji način:

  1. En konec LDR priključite na pozitivni priključek 5V baterije ali na 5V pin Arduina.
  2. Drugi konec LDR vzporedno priključite na zatič A1 in negativni priključek baterije ali zatič GND Arduina.
  3. Uporabite upor, da zagotovite, da ves tok ne teče v GND, zaradi česar ne boste dobili dovolj močnega signala, ki bi ga zaznali na priključku A1 Arduina. (Uporabljam upor 10k ohmov).

2. korak: Programiranje vašega Arduina:

Modul Arduino_Master za pošiljanje in sprejemanje podatkov uporablja serijski monitor Arduina. Prednost uporabe tega modula je, da ko programirate svoj Arduino, lahko program python spremenite samo za različne projekte, saj je programiranje v pythonu sorazmerno lažje!

Koda:

// Spremenljivka LDR_1 se uporablja za označevanje zatiča A1 Arduina.

int LDR_1 = A1;

// Podatki, prejeti od A1, bodo shranjeni v LDR_Value_1.

plavajoča LDR_Value_1;

Vnos niza;

void setup ()

{pinMode (LDR_1, INPUT); // LDR_1 je nastavljen kot vhodni pin. Serial.begin (9600); // Komunikacijska hitrost prenosa je nastavljena na 9600.}

void loop ()

{if (Serial.available ()> 0) // če je v serijskem monitorju na voljo kateri koli vnos, nadaljujte. {input = Serial.readString (); // Preberite vnos kot niz. if (input == "DATA") {LDR_Value_1 = analogRead (LDR_1) * (5,0 / 1023,0); // (5 /1023) je pretvorbeni faktor, da dobimo vrednost v voltih. Serial.println (LDR_Value_1); // Če je vnos enak "DATA", preberite vnos iz LDR_1 in ga natisnite na serijskem monitorju. } else int i = 0; // če vnos ni enak "DATA", ne storite ničesar! }

}

3. korak: Programiranje Pythona v grafične podatke iz Arduina:

Vsak LDR bi imel svoje vrednosti upora in ne smemo pozabiti, da so elektronske komponente med delovanjem popolnoma enake. Zato moramo najprej najti napetost pri različnih jakostih svetlobe.

Naložite naslednji program v svoj python IDE in ga zaženite:

To naredite za različne jakosti svetlobe in z grafom naredite zaključek, na primer če je intenzivnost manjša od 1, je soba preveč temna. Za intenzivnost med 1 in 2 je soba precej temna. Pri intenzivnosti večji od 2 se lučka prižge.

# Uvoz modula Arduino_Master

iz uvoza Arduino_Master *

# zbiranje podatkov

podatki = filter (ardata (8, stiskanje = napačno, dinamično = res, sporočilo = "DATA", vrstice = 30), pričakovani_tip = 'število', omejitev = [0, 5])

# omejitev je nastavljena na 5, ker uporabljamo 5V baterijo.

# Izris vrednosti

Graf (podatki, stl = 'dark_background', label = 'Intenzivnost svetlobe')

4. korak: Končni program za preverjanje jakosti svetlobe v sobi

Ko zaključite s pridobljenimi podatki, naložite naslednji program in spremenite omejitve glede na vaš zaključek.

# Uvoz modula Arduino_Master

iz Arduino_Master uvoz # zbiranje podatkovnih podatkov = filter (ardata (8, stiskanje = napačno, dinamično = res, msg = "DATA", vrstice = 50), pričakovani_tip = 'num', limit = [0, 5]) # razvrščanje podatkov na podlagi zaključka info = za i v razponu (len (podatki)): intenzivnost = podatki , če je intenzivnost 1 in intenzivnost = 2: info.append ('Light ON') # Izris grafa. compGraph (podatki, informacije, stl = 'dark_background', label1 = 'Intenzivnost svetlobe', label2 = 'Stanje')

5. korak: Rezultat:

Rezultat
Rezultat

Program bi trajal minuto ali dve, ker berete 50 trenutnih vrednosti iz Arduina.

Če želite pospešiti postopek, poskusite spremeniti parameter linij funkcije ardata. Vendar ne pozabite, da manj ko je opazovanj, slabša bo kakovost podatkov.

Opomba: Če celoten graf na zgornji sliki ni viden, si oglejte graf nad razdelkom Uvod.

Priporočena: