Obsah:

Vykreslování intenzity světla pomocí Arduino a hlavní knihovny Arduino Python: 5 kroků
Vykreslování intenzity světla pomocí Arduino a hlavní knihovny Arduino Python: 5 kroků

Video: Vykreslování intenzity světla pomocí Arduino a hlavní knihovny Arduino Python: 5 kroků

Video: Vykreslování intenzity světla pomocí Arduino a hlavní knihovny Arduino Python: 5 kroků
Video: Praktické měření intenzity osvětlení luxmetrem 2024, Listopad
Anonim
Vykreslování intenzity světla pomocí Arduino a hlavní knihovny Arduino v Pythonu
Vykreslování intenzity světla pomocí Arduino a hlavní knihovny Arduino v Pythonu

Arduino je ekonomický, ale vysoce účinný a funkční nástroj a jeho programování v Embedded C dělá proces vytváření projektů zdlouhavým! Modul Arduino_Master v Pythonu to zjednodušuje a umožňuje nám provádět výpočty, odstraňovat odpadkové hodnoty a vykreslovat graf pro vizuální reprezentaci dat.

Pokud o tomto modulu ještě nevíte, nainstalujte jej pomocí příkazu pip install Arduino_Master

Pokud nevíte, jak tento modul používat, nedělejte si starosti, navštivte tento odkaz => Arduino_Master

Kód tohoto projektu však bude v tomto pokynu vždy k dispozici.

Zásoby

Pro tento projekt budete potřebovat následující:

  1. Arduino
  2. Odpor závislý na světle (LDR) a
  3. Ve vašem počítači je nainstalován Python 3.

Krok 1: Budování obvodu:

Budování obvodu
Budování obvodu

K získání vstupních dat použijeme pin A1 Arduina. Místo baterie můžete také použít 5V a GND piny Arduina. Připojte se následujícím způsobem:

  1. Připojte jeden konec LDR ke kladnému pólu 5V baterie nebo k 5V pinu Arduina.
  2. Připojte druhý konec LDR paralelně ke kolíku A1 a zápornému pólu baterie nebo GND pinu Arduina.
  3. Použijte odpor, abyste se ujistili, že veškerý proud neteče do GND, což by vedlo k tomu, že nedostanete dostatečně silný signál, který by cítil na terminálu A1 Arduina. (Používám odpor 10 kOhm).

Krok 2: Programování Arduina:

Modul Arduino_Master používá k odesílání a přijímání dat sériový monitor Arduina. Výhodou použití tohoto modulu je, že jakmile naprogramujete Arduino, můžete změnit program python sám pro různé projekty, protože programování v pythonu je poměrně jednodušší!

Kód:

// Proměnná LDR_1 se používá k označení kolíku A1 Arduina.

int LDR_1 = A1;

// Data přijatá od A1 budou uložena v LDR_Value_1.

float LDR_Value_1;

Vstup řetězce;

neplatné nastavení ()

{pinMode (LDR_1, INPUT); // LDR_1 je nastaven jako VSTUPNÍ pin. Serial.begin (9600); // Komunikační přenosová rychlost je nastavena na 9600.}

prázdná smyčka ()

{if (Serial.available ()> 0) // if any input is available in the serial monitor then continue. {vstup = Serial.readString (); // Přečíst vstup jako řetězec. if (input == "DATA") {LDR_Value_1 = analogRead (LDR_1) * (5.0 / 1023.0); // (5/1023) je převodní faktor pro získání hodnoty ve voltech. Serial.println (LDR_Value_1); // Pokud se vstup rovná "DATA", přečtěte si vstup z LDR_1 a vytiskněte jej na sériovém monitoru. } else int i = 0; // pokud se vstup nerovná "DATA", nedělejte nic! }

}

Krok 3: Programování Pythonu pro grafování dat z Arduina:

Každý LDR by měl své vlastní hodnoty odporu a musíme si uvědomit, že ne pro elektronické součástky jsou v provozu nikdy úplně identické. Nejprve tedy musíme najít napětí při různých intenzitách světla.

Nahrajte do svého python IDE následující program a spusťte jej:

Udělejte to pro různé intenzity světla a pomocí grafu vyvodte závěr, například pokud je intenzita menší než 1, místnost je příliš tmavá. Pro intenzitu mezi 1 a 2 je místnost značně tmavá. Při intenzitě větší než 2 se světlo zapne.

# Import modulu Arduino_Master

z importu Arduino_Master *

# sbírat data

data = filter (ardata (8, squeeze = False, dynamic = True, msg = "DATA", lines = 30), expect_type = 'num', limit = [0, 5])

# limit je nastaven na 5, protože používáme 5V baterii.

# Vykreslení hodnot

Graf (data, stl = 'dark_background', label = 'Light Intensity')

Krok 4: Závěrečný program ke kontrole intenzity světla v místnosti

Poté, co dospějete k závěru z údajů, které jste získali, nahrajte následující program a nezapomeňte změnit limity podle svého závěru.

# Import modulu Arduino_Master

z Arduino_Master import # sběr dat data = filtr (ardata (8, squeeze = False, dynamic = True, msg = "DATA", lines = 50), expect_type = 'num', limit = [0, 5]) #classifying data na základě závěru info = pro i v rozsahu (len (data)): intenzita = data pokud intenzita 1 a intenzita = 2: info.append ('Světlo ZAPNUTO') # Vykreslení grafu. compGraph (data, informace, stl = 'dark_background', label1 = 'Light Intensity', label2 = 'State')

Krok 5: Výsledek:

Výsledek
Výsledek

Spuštění programu by trvalo minutu nebo dvě, protože čtete 50 okamžitých hodnot z Arduina.

Pokud chcete proces urychlit, zkuste změnit parametr lines funkce ardata. Pamatujte však, že čím menší jsou pozorování, tím menší bude kvalita dat.

Poznámka: Pokud není kompletní graf na výše uvedeném obrázku viditelný, podívejte se na graf nad úvodní částí.

Doporučuje: