Obsah:

Dýchací světlo ovládané Raspberry Pi: 5 kroků
Dýchací světlo ovládané Raspberry Pi: 5 kroků

Video: Dýchací světlo ovládané Raspberry Pi: 5 kroků

Video: Dýchací světlo ovládané Raspberry Pi: 5 kroků
Video: představení nového ARDUINO PROJEKTU [soutěž] 2024, Červenec
Anonim
Dýchací světlo ovládané Raspberry Pi
Dýchací světlo ovládané Raspberry Pi

Zde popsané „Světlo pro dýchací cvičení“je jednoduché a relativně levné pulzující světlo, které vás může podporovat při dýchání a pomáhá vám udržovat konstantní rytmus dýchání. Může být také použit např. jako uklidňující noční světlo pro děti. V současné fázi jde spíše o funkční prototyp.

Můžete jej také použít jako levný a snadno sestavitelný příklad pro „fyzické výpočty“s Raspberry Pi, např. k použití jako vzdělávací projekt na úrovni začátečníků, zde máte analogový (otočný potenciometr) a digitální vstupy (tlačítko) a také digitální (LED) a PWM výstup (LED řetězy) a efekty změn jsou přímo viditelné.

Světlo prochází opakujícími se kruhy skládajícími se ze čtyř fází: zelený (horní) do červeného (dolní) přechod, fáze pouze pro červenou, přechod mezi červenou a zelenou a fáze pouze pro zelenou. Délka těchto fází je definována konstantami, které lze upravit potenciometry. Proces lze spustit, pozastavit, obnovit a zastavit stisknutím tlačítek. LED indikují aktuální fázi. Vychází z příkladu „Světlo světlušky“od Pimoroniho (viz zde). Podobně jako „Firefly Light“vyžaduje Raspberry Pi (Zero), Pimoroni Explorer pHAT (nebo HAT) a dva světelné řetězce LED IKEA SÄRDAL. Pozdější jsou připojeny ke dvěma PMW/motorovým portům pHAT. Namísto použití nádoby jsem umístil LED diody do rámečku obrazu IKEA. Pokoušel jsem se trochu optimalizovat původní skript pythonu „světluška“, implementoval jsem volitelnou funkci sinus pro změny šířky jasu/ pulsu a zavedl dvě fáze „podržení“mezi stmívacími fázemi. Při úpravě parametrů, abych našel světelný vzorec, který se cítí pohodlněji, jsem zjistil, že zařízení může pomoci podporovat velmi jasně definovaný pravidelný dechový vzorec. Někteří z vás tedy mohou považovat toto „Dýchací světlo“za užitečné při meditaci nebo tréninku. Protože Explorer pHAT má čtyři digitální a čtyři analogové vstupy, je velmi snadné regulovat až čtyři různé parametry pomocí posuvných nebo otočných potenciometrů a zavádět funkce start/restart/stop pro světla pomocí tlačítek. To vám umožní používat zařízení a optimalizovat parametry podle vašich potřeb, aniž byste museli k Pi připojovat monitor.

Explorer pHAT je navíc dodáván se čtyřmi digitálními výstupy, které umožňují přidat LED diody nebo bzučáky, plus dvěma 5V a dvěma uzemňovacími porty a dvěma výstupními porty PWM pro motory nebo podobná zařízení. Ujistěte se, že používáte správné odpory ke snížení napětí pro vaše LED diody.

Pythonová knihovna Pimoroni Explorer pHAT umožňuje extrémně jednoduché ovládání všech těchto I/O portů.

V tomto návodu jsou popsány verze zařízení s 0, 2 a 4 potenciometry a tlačítky. Vyberte si ten, který vyhovuje vašim potřebám.

Chcete -li zařízení provozovat autonomně, můžete použít buď napájecí zdroj, nebo kombinaci podložky Pimoroni LiPo a baterie LiPo, jak je popsáno pro „Světlo světlušky“.

Aktualizované verze 28. prosince 2018: Přidána verze „čtyři potenciometry a čtyři tlačítka“. Dec. 30: přidán kód pro 4-poti verzi a lámající se obrázky.

Krok 1: Použitý / požadovaný materiál

Použitý / požadovaný materiál
Použitý / požadovaný materiál
Použitý / požadovaný materiál
Použitý / požadovaný materiál
Použitý / požadovaný materiál
Použitý / požadovaný materiál

- Raspberry Pi Zero (4,80 GBP u Pimoroni, Velká Británie) a karta micro SD (> = 8 GB) s Raspian

- Pimoroni Explorer pHAT (10 GBP v Pimoroni, Velká Británie). Volitelné: jednořadý konektor, propojovací kabely

- Řetězová světla LED IKEA SÄRDAL s 12 LED diodami (2 x, 3,99 EUR v IKEA Německo), nebo jakýkoli podobný 3–5 V LED řetěz.- Rám obrazu IKEA RIBBA (13 x 18 cm, 2,49 EUR v IKEA Německo).

- Kus PU pěny (2 x 18 x 13,5 cm) pro uchycení LED diod. Alternativně lze použít styro pěnu.

- Kus neprůhledného plastu (18 x 13,5 cm), působící jako difuzor.

- Dva listy barevného průhledného papíru (každý 9 x 13,5 cm). Použil jsem červenou a zelenou.

- Kus tenké, vysoce neprůhledné plastové fólie (18 x 13,5 cm), která slouží jako vnější obrazovka. Použil jsem tenký bílý polykarbonátový list. Volitelné, pro laditelnou verzi:

Chcete-li upravit časování rampování a trvání plató, nebo alternativně jiné parametry, jako je jas.- potenciometry 10, 20 nebo 50 kOhm (až čtyři, použil jsem dva 10 kOhm, respektive čtyři 50 ohmů).

Jako tlačítka start/stop/pause/resume:- Tlačítka (až čtyři, použil jsem čtyři nebo dvě)

Jako indikátory pro fáze kruhu:- Barevné LED diody a potřebné odpory (bude záviset na charakteristikách LED, které budete používat).

  1. přibližně 140 ohmů pro 5,2 -> 2, 2 V (žlutá, oranžová, červená; některé zelené LED diody),
  2. asi 100 ohmů pro 5,3 -> 3,3 V (některé zelené; modré, bílé LED diody)

- Propojovací kabely a prkénko

Volitelné pro verzi poháněnou bateriemi:

  • Napájení 5V Micro-USB, nebo
  • Podložka Pimoroni Zero LiPo a baterie LiPo

Krok 2: Lazout a montáž

Lazout a shromáždění
Lazout a shromáždění
Lazout a shromáždění
Lazout a shromáždění
Lazout a shromáždění
Lazout a shromáždění

Sestavte Explorer pHAT podle pokynů výrobce. Přidal jsem jednořadou zásuvku pro zjednodušené připojení propojovacích kabelů k I/O portům pHAT. Nastavte svůj Pi a nainstalujte knihovnu Pimoroni pro Explorer HAT/pHAT, jak popisuje Pimoroni. Vypněte Pi a připojte pHAT na Pi. Vyjměte bateriové soupravy z řetězů LED odstřižením vodičů a pocínováním konce vodičů. Uprostřed ustřihněte dva 2x propojovací kabely a konec vodičů pocínujte. Propojte propojovací kabely k řetězům LED a izolujte pájecí body pomocí lepicí pásky nebo smršťovací bužírky. Před pájením zkontrolujte, které z vodičů musí být připojeny k plusovým nebo uzemňovacím portům, a podle toho je označte. Použil jsem propojovací vodiče s různými barvami. Odřízněte pěnu, aby LED, difuzor a stínítko držely na příslušné velikosti. Na přídržné desce LED označte polohy, kde mají být LED umístěny, a do pěny vyražte otvory o průměru 3–5 mm. Poté vložte 24 diod LED do daných poloh. Umístěte barevné papíry a desky difuzoru na desku LED (viz obrázky), které umístí rámeček nad balíček. Fixujte pěnové vrstvy v rámu, např. pomocí lepicí pásky. Připojte kabely LED pásku k „motorovým“portům Explorer pHAT. U laditelné verze umístěte potenciometry, tlačítka, ovládací LED (a/nebo bzučáky) a odpory na prkénko a propojte je s odpovídajícími porty v Průzkumníku pHAT.

Spusťte Pi a nainstalujte požadované knihovny, jak je popsáno na webu Pimoroni, poté spusťte poskytnutý skript Python 3. Pokud jeden z LED řetězů nefunguje, může být připojen ve špatném směru. Poté můžete buď změnit plus/mínus připojení na pHAT, nebo provést změnu v programu, např. změňte „eh.motor.one.backwards ()“na „… forwards ()“.

V příloze najdete skripty s pevným nastavením, které můžete změnit v programu, a příklad, kde můžete některá nastavení upravit pomocí potenciometrů a pomocí tlačítek spustit a zastavit světelný cyklus. Úprava skriptů podle vašeho vlastního rozložení „dýchajícího světla“by neměla být příliš obtížná.

Krok 3: Skripty Pythonu

Pimoroniho knihovna Python pro Explorer HAT/pHAT umožňuje extrémně jednoduché adresování komponent připojených k I/O portům HATs. Dva příklady: „eh.two.motor.backwards (80)“pohání zařízení připojené k portu PWM/motoru 2 s maximální intenzitou 80% směrem dozadu, „eh.output.three.flash ()“připojí LED na výstupní port číslo tři bliká, dokud se nezastaví. Vygeneroval jsem několik variací světla, v podstatě přidáním zvyšujících se úrovní ovládání přidáním až čtyř tlačítek a potenciometrů. V příloze najdete program Pythonu s názvem „Dýchající světlo s pevným lin kosinem.py , kde je třeba v programu upravit všechna čtyři nastavení parametrů. Navíc verze s názvem „Dýchací světlo var lin cosin.py“, kde lze délku dvou stmívacích fází upravit pomocí dvou potenciometrů a nejpropracovanější verze „Dýchací světlo var lin cosin3.py“pro verzi se čtyřmi potenciometry a tlačítky. Programy jsou napsány v Pythonu 3.

Ve všech případech lze proces cyklování vyvolat a zastavit pomocí dvou tlačítek, ve verzi se čtyřmi tlačítky také můžete proces přerušit a restartovat. K digitálním výstupním portům lze navíc připojit čtyři (barevné) diody LED, které indikují konkrétní fáze. Cyklus zařízení se skládá ze čtyř fází:

- fáze „vdechnutí“, kde jsou horní LED diody tlumené nízko a spodní LED zvyšují intenzitu

- fáze „zadržte dech“, kde jsou horní LED diody vypnuty a spodní LED diody nastaveny na maximum

- fáze „výdechu“, kde spodní LED diody jsou tlumené nízko a horní LED zvyšují intenzitu

- fáze „vydržte vydechovat“, kde jsou spodní LED diody vypnuté a horní LED diody se rozsvítí na maximum.

Délka všech čtyř fází je definována individuálním číselným parametrem, který může být buď pevně v programu a/nebo může být nastaven pomocí potenciometru.

Pátý parametr definuje maximální intenzitu. Umožňuje nastavit maximální jas LED diod, což by mohlo být užitečné, pokud jej chcete použít jako noční světlo. Navíc vám to může umožnit zlepšit proces stmívání, protože mám dojem, že je těžké vidět rozdíl mezi 80 a 100% intenzitou.

Přidával jsem volitelnou (ko-) sinusovou funkci pro zvýšení/snížení jasu, protože poskytuje plynulejší spojení mezi fázemi. Neváhejte vyzkoušet další funkce. Např. můžete eliminovat přestávky a použít dvě různé (komplexní) sinusové funkce pro oba LED řetězce a upravit frekvenci a amplitudu potenciometry.

# „Dýchací“lampa: verze se dvěma tlačítky a dvěma potenciometry

# změna příkladu světlušky pro Pimoroni Explorer pHAT # zde: sinoidové zvýšení/snížení hodnot motoru/PWM # pro lineární funkci zrušit ztlumení lineární a ztlumit kosinovou funkci # Tato verze „var“čte analogové vstupy, přepisuje předdefinovaná nastavení # čte digitální vstup, tlačítka pro spuštění a zastavení "" "pro spuštění po zapnutí Pi můžete použít Cron: Cron je unixový program, který se používá k plánování úloh, a má praktickou funkci @reboot, která vám umožní spustit skript kdykoli se váš Pi spustí. Otevřete terminál a zadejte crontab -e a upravte svůj crontab. Přejděte až na konec souboru, za všechny řádky, které začínají #, a přidejte následující řádek (za předpokladu, že váš kód je na /home/pi/firefly.py): @reboot sudo python /home/pi/filename.py & Zavřete a uložte svůj crontab (pokud používáte nano, stiskněte control-x, y a enter pro ukončení a uložení). "" "import čas importu průzkumník jako eh import matematické konstantní hodnoty # sinus xmax = 316 kroků = 5 # šířka kroku, např. 315/5 udává 63 kroků/cyklus start_button = 0 # definuje stav tlačítka připojeného ke vstupnímu portu č. 1 stop_button = 0 # definuje stav tlačítka připojeného ke vstupnímu portu č. 3 pause_1 = 0,02 # nastavuje délku přestávek v krocích ve fázi „nádechu“, čímž se zvýší rychlost a doba trvání pauza_2 = 0,04 # nastaví se rychlost výdechu „výdechu“pauza_3 = 1,5 # přestávka mezi fázemi nádechu a výdechu (udržujte vdechováno) pauza_4 = 1,2 # přestávka na konci výdechu fáze (výdech udržujte) max_intens = 0,9 # maximální intenzita/jas max_intens_100 = 100*max_intens # stejné v % # Může umožnit optimalizaci „dýchajícího“dojmu LED a omezení blikání. l_cosin = # seznam s hodnotami odvozenými od kosinu (100> = x> = 0) l_lin = # seznam s lineárními hodnotami (100> = x> = 0) # generování seznamu funkcí kosinu pro i v rozsahu (0, 316, 3): # 315 se blíží Pi*100, 105 kroků # print (i) n_cosin = [(((math.cos (i/100))+1)/2)*100] #generate value # print (n_cosin) l_cosin = l_cosin + n_cosin # přidat hodnotu do seznamu # tisk (l_cosin) # generovat lineární seznam pro i v rozsahu (100, -1, -1): # odpočítávat od 100 do nuly n_lin = l_lin = l_lin + n_lin # print (l_lin) # ukazuje nudný seznam print () print ("" "Chcete -li spustit světelné cykly, stiskněte tlačítko" Start "(Input One)" "") print () print ("" "Chcete -li zastavit kontrolka, stiskněte a podržte tlačítko "Stop" (vstup tři) "" ") print () # počkejte, dokud nebude tlačítko Start stisknuto, zatímco (start_button == 0): start_button = eh.input.one.read () # číst tlačítko číslo jedna eh.output.one.blink () # blikání LED číslo jednou. spánek (0,5) # čtení dvakrát za sekundu # běh svítí, zatímco (stop_button == 0): # číst analogové vstupy JEDEN a DVĚ, definovat nastavení set_1 = eh.an alog.one.read () # definuje červená-> zelená rychlost rampování pause_1 = set_1*0,02 # hodnoty se budou pohybovat mezi 0 a 0,13 s/krok tisku ("set_1:", set_1, " -> pause _1:", pause_1) set_2 = eh.analog.two.read () # definuje zelenou -> červená rychlost rampování pause_2 = set_2*0,02 # hodnoty se budou pohybovat mezi 0 a 0,13 s/krokový tisk ("set_2:", set_2, " -> pauza _2: ", pause_2) #" inhalační "fáze eh.output.one.on () # může řídit LED nebo bzučák '' 'pro x v rozsahu (len (l_lin)): fx = max_intens*l_lin [x] # lineární křivka eh.motor.one.backwards (fx) eh.motor.two.backwards (max_intens_100-fx) time.sleep (pause_1) eh.output.one.off () '' 'for x in range (len (l_cosin)): fx = max_intens*l_cosin [x] # lineární křivka eh.motor.one.backwards (fx) eh.motor.two.backwards (max_intens_100-fx) time.sleep (pause_1) eh.output.one.off () # zkontrolujte, zda je stisknuto tlačítko Stop stop_button = eh.input.three.read () # pauza „Zadržte dech“na konci inhalační fáze eh.output.two.on () # zapněte LED dvě eh.motor.one.zpět (0) eh.motor.two.zpět ((max_intens_100) čas.spánek (pauza_3) eh.output.two.off () #zkontrolovat, zda je stisknuto tlačítko Stop stop_button = eh.input.three.read () # fáze "výdechu" eh.output.three.on () # zapnout LED tři '' 'pro x v rozsahu (len (l_lin)): fx = max_intens*l_lin [x] # lineární křivka eh.motor.one.backwards (max_intens_100-fx) eh.motor.two.backwards (fx) time.sleep (pause_2) '' 'pro x v rozsahu (len (l_cosin)): fx = max_intens*l_cosin [x] # lineární křivka eh.motor.one.backwards (max_intens_100-fx) eh.motor.two. zpět (fx) time.sleep (pause_2) eh.output.three.off () #zkontrolovat, zda je stisknuto tlačítko Stop stop_button = eh.input.three.read () # pauza mezi fázemi „výdech“a „nádech“output.four.on () eh.motor.one.wardswards (max_intens_100) eh.motor.two.backwards (0) time.sleep (pause_4) eh.output.four.off () #check if Stop Button is printed stop_button = eh.input.three.read () # vypnutí, otočení všech výstupních portů eh.motor.one.stop () eh.motor.two.stop () eh.output.one.off () eh.output.two.off () eh.output.three.off () eh.output.four.off () tisk () vytisknout („Nazdárek“)

Pokud chcete použít světlo jako samostatné zařízení, např. jako spící nebo probouzející světlo můžete do Pi přidat mobilní zdroj energie a spustit program po spuštění a použít „Cron“k jeho zapnutí nebo vypnutí v daném čase. Jak používat „Cron“bylo podrobně popsáno jinde.

Krok 4: Příklady videa

V tomto kroku najdete řadu videí ukazujících světlo za normálních (tj. Všech hodnot> 0, #1) a extrémních podmínek, protože všechny hodnoty jsou nastaveny na nulu (#2), pouze rampování (#3 a #4), a žádné rampování (#5 ).;

Krok 5: Několik poznámek

Omluvte prosím všechny nesprávné podmínky, překlepy a chyby. Nejsem ani rodilý mluvčí angličtiny, ani nemám propracované znalosti z elektriky, elektroniky nebo programování. Což vlastně znamená, že se snažím napsat instruktážní angličtinu o věcech, kde ve svém vlastním jazyce téměř neznám správné výrazy. Proto jsou vítány jakékoli rady, opravy nebo nápady na zlepšení

Doporučuje: