Obsah:
2025 Autor: John Day | [email protected]. Naposledy změněno: 2025-01-13 06:57
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í:
- Arduino
- Odpor závislý na světle (LDR) a
- Ve vašem počítači je nainstalován Python 3.
Krok 1: 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:
- Připojte jeden konec LDR ke kladnému pólu 5V baterie nebo k 5V pinu Arduina.
- Připojte druhý konec LDR paralelně ke kolíku A1 a zápornému pólu baterie nebo GND pinu Arduina.
- 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:
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í.