Tartalomjegyzék:

Lélegző fény, amelyet a Raspberry Pi vezérel: 5 lépés
Lélegző fény, amelyet a Raspberry Pi vezérel: 5 lépés

Videó: Lélegző fény, amelyet a Raspberry Pi vezérel: 5 lépés

Videó: Lélegző fény, amelyet a Raspberry Pi vezérel: 5 lépés
Videó: LÉLEGZŐ FÉNY 3. / BREATHING LIGHT No.3 2024, Július
Anonim
Lélegző fény, amelyet egy Raspberry Pi vezérel
Lélegző fény, amelyet egy Raspberry Pi vezérel

Az itt leírt "légzőgyakorlati fény" egy egyszerű és viszonylag olcsó pulzáló fény, amely támogathatja Önt a légzés végrehajtásában, és segít fenntartani az állandó légzési ritmust. Használható pl. mint nyugtató éjszakai fény a gyermekek számára. A jelenlegi szakaszban ez inkább egy működő prototípus.

Használhatja olcsó és egyszerűen felépíthető példaként a Raspberry Pi -vel végzett "fizikai számításhoz", pl. kezdő szinten oktatási projektként használható, Itt analóg (forgó potenciométer) és digitális bemenetek (nyomógomb), valamint digitális (LED) és PWM kimenet (LED láncok) állnak rendelkezésre, és a változások hatása közvetlenül látható.

A fény négy fázisból álló ismétlődő körökön halad keresztül: zöld (felső) és piros (alsó) átmenet, csak piros fázis, piros-zöld átmenet és csak zöld fázis. Ezen fázisok hosszát konstansok határozzák meg, amelyeket potenciométerekkel lehet módosítani. A folyamat a nyomógombok megnyomásával indítható, szüneteltethető, folytatható és leállítható. A LED -ek az aktuális fázist jelzik. Pimoroni „Firefly Light” példáján alapul (lásd itt). A „Firefly Light” -hoz hasonlóan ehhez Raspberry Pi (Zero), a Pimoroni Explorer pHAT (vagy HAT) és két IKEA SÄRDAL LED fénylánc szükséges. Az utóbbiak a pHAT két PMW/motor portjához vannak csatlakoztatva. A korsó használata helyett a LED -eket egy IKEA képkeretbe helyeztem. Próbáltam egy kicsit optimalizálni az eredeti „szentjánosbogár -fény” python -szkriptet, megvalósítva egy opcionális sinus -funkciót a fényerő/ impulzusszélesség változásaihoz, és két „tartási” fázist vezettem be a tompító fázisok között. Miközben módosítottam a paramétereket, hogy kényelmesebb fénymintát találjak, azt tapasztaltam, hogy az eszköz segíthet egy nagyon világosan meghatározott, szabályos légzési minta támogatásában. Így néhányan közületek hasznosnak találhatják ezt a „Lélegző fényt” meditációs vagy edzési célokra. Mivel az Explorer pHAT négy digitális és négy analóg bemenettel rendelkezik, nagyon könnyű akár négy különböző paramétert szabályozni csúsztatható vagy forgó potenciométerek segítségével, valamint bevezetni az indítás/újraindítás/leállítás funkciókat a lámpákhoz nyomógombokkal. Ez lehetővé teszi az eszköz használatát és a paraméterek optimalizálását az Ön igényei szerint anélkül, hogy a monitort a Pi -hez kellene csatlakoztatni.

Ezenkívül az Explorer pHAT négy digitális kimeneti porttal rendelkezik, amelyek lehetővé teszik LED-ek vagy zümmögők hozzáadását, valamint két 5 V-os és 2 földi portot és két PWM kimeneti portot motorok vagy hasonló eszközök számára. Kérjük, győződjön meg arról, hogy a megfelelő ellenállásokat használja a LED -ek feszültségének csökkentésére.

A Pimoroni Explorer pHAT python könyvtára rendkívül egyszerűvé teszi az összes I/O port vezérlését.

Ebben az oktatható, 0, 2 és 4 potenciométeres és gombos verziójú készülékváltozatokat ismertetjük. Válassza ki az igényeinek megfelelőt.

Az eszköz önálló működtetéséhez használhat egy tápegységet, vagy egy Pimoroni LiPo tárcsát és egy LiPo akkumulátort, a "Firefly Light" leírása szerint.

Frissített verziók 2018. december 28.: „négy potenciométer és négy nyomógomb” verzió hozzáadva. 30: 4-poti verzió kódja és frizurás képek hozzáadva.

1. lépés: Használt / szükséges anyagok

Használt / szükséges anyagok
Használt / szükséges anyagok
Használt / szükséges anyagok
Használt / szükséges anyagok
Használt / szükséges anyagok
Használt / szükséges anyagok

- Raspberry Pi Zero (4,80 GBP, Pimoroni, Egyesült Királyság), és egy micro SD kártya (> = 8 GB) w/ Raspian

- Pimoroni Explorer pHAT (10 GBP, Pimoroni, Egyesült Királyság). Opcionális: egysoros fejléc, áthidaló kábelek

- IKEA SÄRDAL LED lámpák 12 LED-del (2 x, 3,99 € az IKEA Németországban), vagy bármilyen hasonló 3-5 V-os LED lánc.- IKEA RIBBA képkeret (13 x 18 cm, 2,49 € az IKEA Németországban).

- Egy darab PU hab (2 x 18 x 13,5 cm), a LED -ek tartására. Alternatív megoldásként sztirolhab is használható.

- Egy darab átlátszatlan műanyag (18 x 13,5 cm), amely diffúzorként működik.

- Két színes átlátszó papírlap (egyenként 9 x 13,5 cm). Pirosat és zöldet használtam.

- Egy darab vékony, rendkívül átlátszatlan műanyag lap (18 x 13,5 cm), amely külső képernyőként szolgál. Vékony fehér polikarbonát lapot használtam. Opcionális, a hangolható verzióhoz:

A rámpa időzítésének és a fennsík időtartamának vagy más paramétereknek, például a fényerőnek a beállításához.- 10, 20 vagy 50 kOhm-os potenciométerek (négyig, két 10 kOhm-ot, illetve négy 50 Ohm-ot használtam).

Start/stop/szünet/folytatás gombként:- Nyomógombok (négyig, négyet vagy kettőt használtam)

A kör fázisainak mutatói:- Színes LED-ek és a szükséges ellenállások (az Ön által használt LED-ek jellemzőitől függ).

  1. körülbelül 140 Ohm esetén 5,2 -> 2, 2 V (sárga, narancssárga, piros; néhány zöld LED),
  2. kb. 100 Ohm esetén 5,3 -> 3,3 V (néhány zöld; kék, fehér LED)

- Jumper kábelek és kenyérsütő deszkák

Opcionális, akkumulátoros változathoz:

  • 5V-os Micro-USB tápegység, vagy
  • Pimoroni Zero LiPo alátét és LiPo akkumulátor

2. lépés: Lazout és összeszerelés

Lazout és összeszerelés
Lazout és összeszerelés
Lazout és összeszerelés
Lazout és összeszerelés
Lazout és összeszerelés
Lazout és összeszerelés

Szerelje össze az Explorer pHAT -ot a gyártó által leírtak szerint. Egysoros női fejlécet adtam hozzá a jumper kábelek egyszerűsített csatlakoztatásához a pHAT I/O portokhoz. Állítsa be a Pi -t, és telepítse a Pimoroni könyvtárat az Explorer HAT/pHAT -hoz, a Pimoroni által leírtak szerint. Kapcsolja ki a Pi -t, és rögzítse a pHAT -ot a Pi -hez. Távolítsa el az akkumulátorokat a LED -láncokból a vezetékek elvágásával és a vezetékek végének ónozásával. Vágjon két 2x dugós áthidaló kábelt a közepére, ónozza a vezetékek végét. Forrasztja az áthidaló kábeleket a LED -láncokhoz, és ragasztószalag vagy zsugorcső segítségével izolálja a forrasztási pontokat. Forrasztás előtt ellenőrizze, hogy melyik vezetéket kell csatlakoztatni a plusz vagy a földelt portokhoz, és jelölje meg megfelelően. Különböző színű jumper vezetékeket használtam. Vágja le a habot, hogy a LED -eket, a diffúzort és a képernyőlapokat a megfelelő méretben tartsa. A LED tartólemezen jelölje meg a LED-ek elhelyezésének helyét, és lyukasszon 3-5 mm-es lyukakat a habba. Ezután helyezze be a 24 LED -et a megadott pozíciókba. Helyezze a színes papírokat és diffúzorlemezeket a LED -lemezre (lásd a képeket), és tegye a keretet a csomagolás fölé. Rögzítse a habrétegeket a keretben, pl. ragasztószalag használatával. Csatlakoztassa a LED szalagkábeleket az Explorer pHAT „motor” portjaihoz. A hangolható változathoz helyezzen potenciométereket, nyomógombokat, vezérlő LED -eket (és/vagy zümmögőket) és ellenállásokat a kenyértáblára, és csatlakoztassa azokat az Explorer pHAT megfelelő portjaihoz.

Indítsa el a Pi -t, és telepítse a szükséges könyvtárakat a Pimoroni webhelyen leírtak szerint, majd futtassa a mellékelt Python 3 szkriptet. Ha az egyik LED lánc nem működik, akkor lehet, hogy rossz irányba van csatlakoztatva. Ezután megváltoztathatja a pHAT plusz/mínusz kapcsolatait, vagy módosíthatja a programot, pl. módosítsa az „eh.motor.one.backwards ()” értéket „… előre ()” értékre.

Csatolva találsz olyan szkripteket, amelyek fix beállításokkal módosíthatók a programon belül, és egy példa, ahol potenciométerekkel módosíthatsz néhány beállítást, és nyomógombokkal indíthatod és állíthatod le a fényciklust. Nem lehet túl nehéz a forgatókönyveket a „légzőfény” saját elrendezéséhez igazítani.

3. lépés: A Python -szkriptek

A Pimoroni Python könyvtára az Explorer HAT/pHAT számára rendkívül egyszerűvé teszi a HAT I/O portjaihoz csatlakoztatott komponensek címzését. Két példa: "eh.two.motor.backwards (80)" hajtja a PWM/2. motorporthoz csatlakoztatott eszközt 80% -os maximális intenzitással visszafelé, "eh.output.three.flash ()" LED -et csatlakoztat a harmadik számú kimeneti port villog, amíg le nem áll. Létrehoztam a fény néhány variációját, alapvetően növelve a vezérlési szintet, legfeljebb négy nyomógomb és potenciométer hozzáadásával..py ", ahol mind a négy paraméterbeállítást módosítani kell a programon belül. Ezenkívül a "Breathing light var lin cosin.py" nevű változat, ahol a két elsötétítési fázis hossza két potenciométerrel állítható, a legkifinomultabb "Breathing light var lin cosin3.py" verzió pedig a négy potenciométer és nyomógombos verzióhoz. A programok Python 3 nyelven íródtak.

A kerékpározási folyamat minden esetben előhívható és leállítható két nyomógombbal, a négygombos változatban megszakíthatja és újraindíthatja a folyamatot. Ezenkívül négy (színes) LED is csatlakoztatható a digitális kimeneti portokhoz, jelezve az adott fázisokat. Az eszköz ciklusa négy fázisból áll:

- a "belégzés" fázis, ahol a felső LED -ek halványan halványak, az alsó LED -ek pedig növelik az intenzitást

- a "tartsa vissza a lélegzetét" fázis, ahol a felső LED -ek kikapcsolnak, és az alsó LED -ek maximálisra vannak állítva

- a "kilégzés" fázis, ahol az alsó LED -ek halványan halványak, a felső LED -ek pedig növelik az intenzitást

- a "maradjon kilégzett" fázis, ahol az alsó LED -ek kikapcsolnak, és a felső LED -ek világítanak.

Mind a négy fázis hosszát egy egyedi numerikus paraméter határozza meg, amelyet vagy rögzítenek a programban, és/vagy beállítanak egy potenciométerrel.

Az ötödik paraméter határozza meg a maximális intenzitást. Lehetővé teszi a LED -ek maximális fényerejének beállítását, ami hasznos lehet, ha éjszakai fényként szeretné használni. Ezenkívül lehetővé teheti a tompítási folyamat javítását, mivel az a benyomásom, hogy nehéz különbséget látni a 80 és 100% -os intenzitás között.

Hozzáadtam egy opcionális (társ) sinus funkciót a fényerő növeléséhez/csökkentéséhez, mivel simább kapcsolatot biztosít a fázisok között. Próbálkozzon bátran más funkciókkal. Például. kiküszöbölheti a szüneteket, és két különböző (összetett) szinuszfunkciót használhat mindkét LED -lánchoz, és a frekvenciát és amplitúdót potenciométerekkel állíthatja be.

# A "légző" lámpa: két gombos és két potenciométer verzió

# a szentjánosbogár példájának módosítása a Pimoroni Explorer pHAT # számára itt: motoros/PWM értékek szinuszos növelése/csökkentése # lineáris függvénynél a lineáris és a koszin funkció elnémítása # Ez a "var" verzió olvassa az analóg bemeneteket, felülbírálja az előre meghatározott beállításokat # olvas digitális bemenet, gombok a "" "elindításához és leállításához a Pi bekapcsolásakor. Cron: A Cron egy Unix program, amelyet a munkák ütemezésére használnak, és kényelmes @reboot funkcióval rendelkezik, amely lehetővé teszi szkript futtatását amikor a Pi elindul. Nyisson meg egy terminált, és írja be a crontab -e parancsot a crontab szerkesztéséhez. Görgessen egészen a fájl aljáig, az összes #-nál kezdődő sor mellett, és adja hozzá a következő sort (feltéve, hogy a kód /home/pi/firefly.py): @reboot sudo python /home/pi/filename.py & Zárja be és mentse el a crontab-ot (ha nano-t használ, nyomja meg a control-x, y és enter billentyűt a kilépéshez és a mentéshez). "" "import idő import explorerhat mint eh import matematikai állandó értékek #sinus xmax = 316 step = 5 # step width, pl 315/5 63 lépést ad/ciklus start_button = 0 # ez határozza meg az 1 -es bemeneti porthoz csatlakoztatott nyomógomb állapotát stop_button = 0 # ez határozza meg a 3 -as bemeneti porthoz csatlakoztatott nyomógomb állapotát pause_1 = 0,02 # setth length a "belégzés" fázis lépésein belüli szünetek, ezáltal a rámpa gyakorisága és időtartama szünet_2 = 0,04 # szünetet állít be a kilégzési ütemben; 3 = 1,5 # szünet a belégzés és a kilégzés között (szüneteltetés) pause_4 = 1,2 # szünet a kilégzés végén fázis (lélegezzen ki) max_intens = 0.9 # maximális intenzitás/fényerő max_intens_100 = 100*max_intens # ugyanaz % % -ban. Lehetővé teszi a LED -ek "lélegző" benyomásának optimalizálását és a villódzás csökkentését. l_cosin = # lista cosinus -származtatott értékekkel (100> = x> = 0) l_lin = # lista lineáris értékekkel (100> = x> = 0) # cosinus függvénylistát hoz létre a (0, 316) tartományban, 3): # 315 közel van a Pi*100 -hoz, 105 lépés # print (i) n_cosin = [((((math.cos (i/100))+1)/2)*100] #generate value # print (n_cosin) l_cosin = l_cosin + n_cosin # érték hozzáadása # listához + n_lin # print (l_lin) # unalmas lista nyomtatást () print ("" "A fényciklusok elindításához nyomja meg a" Start "gombot (egy bemenet)" "") print () print ("" "Leállítás nyomja meg és tartsa lenyomva a "Stop" gombot (harmadik bemenet) "" ") print () # várjon, amíg a Start gombot megnyomja, miközben (start_button == 0): start_button = eh.input.one.read () # read gomb első számú eh.output.one.blink () # villog a LED -es szám egyszer. alvó (0,5) # másodpercenként kétszer olvasható # futás közben világít, míg (stop_button == 0): # olvassa el az EGY és a Kettő analóg bemenetet, adja meg a beállításokat_1 = eh.an alog.one.read () # definiálja a piros-> zöld rámpázási sebességet pause_1 = set_1*A 0.02 # értékek 0 és 0,13 mp között mozognak ("set_1:", set_1, " -> pause _1:", pause_1) set_2 = eh.analog.two.read () # zöldet definiál -> piros ramping rate pause_2 = set_2*0.02 # értékek 0 és 0,13 sec/step print között mozognak ("set_2:", set_2, " -> pause _2: ", pause_2) #" inhalációs "fázis eh.output.one.on () # LED -et vagy csipogót vezethet" x "tartományban (len (l_lin)): fx = max_intens*l_lin [x] # lineáris görbe eh.motor.one.backwards (fx) eh.motor.two.backwards (max_intens_100-fx) time.sleep (szünet_1) eh.output.one.off () "" x tartományban (len (l_cosin)): fx = max_intens*l_cosin [x] # lineáris görbe eh.motor.one.backwards (fx) eh.motor.two.backwards (max_intens_100-fx) time.sleep (pause_1) eh.output.one.off () # ellenőrizze, hogy megnyomta -e a Stop gombot stop_button = eh.input.three.read () # "Tartsa a lélegzetét" szünet az inhalációs fázis végén eh.output.two.on () # kapcsolja be a két LED eh.motor.one.visszafelé (0) eh.motor.two.backwards (max_intens_100) time.sleep (pause_3) eh.output.two.off () #check if Stop gomb megnyomása stop_button = eh.input.three.read () # "kilégzés" fázis eh.output.three.on () # kapcsolja be a LED 3 "-et x tartományban (len (l_lin)): fx = max_intens*l_lin [x] # lineáris görbe eh.motor.one.backwards (max_intens_100-fx) eh.motor.two.backwards (fx) time.sleep (pause_2) '' 'x tartományban (len (l_cosin)): fx = max_intens*l_cosin [x] # lineáris görbe eh.motor.one.backwards (max_intens_100-fx) eh.motor.two. visszafelé (fx) time.sleep (pause_2) eh.output.three.off () # ellenőrizze, hogy megnyomja -e a Stop gombot stop_button = eh.input.three.read () # szünet "kilégzés" és "belégzés" fázis között eh. output.four.on () eh.motor.one.backwards (max_intens_100) eh.motor.two.backwards (0) time.sleep (pause_4) eh.output.four.off () #ellenőrizze, hogy megnyomja -e a Stop gombot stop_button = eh.input.three.read () # shutdown, turn of all output ports eh.motor.one.stop () eh.motor.two.stop () eh.output.one.off () eh.output.two.off () eh.output.three.off () eh.output.four.off () print () print ("Viszlát")

Ha a lámpát önálló eszközként szeretné használni, pl. Alvó- vagy ébresztőfényként mobil áramforrást adhat a Pi-hez, és a program indítás után elindul, és a "Cron" gombbal be- vagy kikapcsolhatja azt adott időben. A "Cron" használatát máshol is részletesen leírtuk.

4. lépés: Videó példák

Ebben a lépésben számos videót talál, amelyek a fényt normál (azaz minden érték> 0, #1) és extrém körülmények között mutatják, mivel minden érték nullára van állítva (#2), csak rámpa (#3 és #4), és nincs rámpa (#5 ).;

5. lépés: Néhány megjegyzés

Kérjük, bocsásson meg minden hibás kifejezést, elírást és hibát. Nem vagyok anyanyelvű angolul, és nem rendelkezem elektromos, elektronikai vagy programozási ismeretekkel. Ami tulajdonképpen azt jelenti, hogy olyan angol nyelvű útmutatót próbálok írni, ahol a saját nyelvemen alig ismerem a helyes kifejezéseket. Ezért minden tippet, javítást vagy javítási ötletet szívesen fogadunk. H

Ajánlott: