Kazalo:

Dihalna svetloba, ki jo nadzira Raspberry Pi: 5 korakov
Dihalna svetloba, ki jo nadzira Raspberry Pi: 5 korakov

Video: Dihalna svetloba, ki jo nadzira Raspberry Pi: 5 korakov

Video: Dihalna svetloba, ki jo nadzira Raspberry Pi: 5 korakov
Video: Высокая плотность 2022 2024, November
Anonim
Dihalna svetloba, ki jo nadzira Raspberry Pi
Dihalna svetloba, ki jo nadzira Raspberry Pi

Tukaj opisana "Luč dihalne vaje" je preprosta in relativno poceni utripajoča svetloba, ki vam lahko pomaga pri dihalnih vajah in vam pomaga ohranjati stalen dihalni ritem. Lahko bi ga uporabili tudi npr. kot pomirjujoča nočna lučka za otroke. V trenutni fazi je bolj delujoč prototip.

Uporabite ga lahko tudi kot poceni in enostaven primer za "fizično računalništvo" z Raspberry Pi, npr. za uporabo kot izobraževalni projekt na ravni začetnikov, tukaj imate analogne (rotacijski potenciometer) in digitalne vhode (gumb), pa tudi digitalne (LED) in PWM izhode (LED verige), učinki sprememb pa so neposredno vidni.

Svetloba teče skozi ponavljajoče se kroge, sestavljene iz štirih faz: zelenega (zgornjega) v rdečega (spodnjega) prehoda, samo rdeče faze, prehoda rdeče-zelene in samo zelene faze. Dolžina teh faz je določena s konstantami, ki jih je mogoče spreminjati s potenciometri. Postopek lahko zaženete, ustavite, nadaljujete in ustavite s pritiskom na gumbe. LED diode označujejo trenutno fazo. Temelji na primeru "Firefly Light", ki ga je napisal Pimoroni (glej tukaj). Podobno kot "Firefly Light" zahteva Raspberry Pi (nič), Pimoroni Explorer pHAT (ali HAT) in dve svetlobni verigi IKEA SÄRDAL LED. Slednji so povezani z dvema priključkoma PMW/motorja pHAT. Namesto kozarca sem LED postavil v okvir IKEA. Nekoliko sem poskušal optimizirati prvotni python skript "firefly light", pri čemer sem uvedel izbirno sinusno funkcijo za spremembe svetlosti/ širine impulza in uvedel dve fazi "zadrževanja" med fazami zatemnitve. Med spreminjanjem parametrov, da bi našli lažji vzorec, ki se počuti bolj udobno, sem ugotovil, da lahko naprava pomaga pri zelo jasno opredeljenem, pravilnem vzorcu dihanja. Tako bo nekaterim od vas ta »dihalna luč« v pomoč pri meditaciji ali usposabljanju. Ker ima Explorer pHAT štiri digitalne in štiri analogne vhode, je zelo enostavno regulirati do štiri različne parametre s pomočjo drsnih ali vrtljivih potenciometrov in s tipkami uvesti funkcije zagon/ponovni zagon/ustavitev luči. To vam bo omogočilo uporabo naprave in optimizacijo parametrov glede na vaše potrebe, ne da bi moral biti monitor priključen na Pi.

Poleg tega je Explorer pHAT opremljen s štirimi digitalnimi izhodi, ki omogočajo dodajanje LED ali zvočnikov, ter dvema 5V in dvema zemeljskima vhodoma ter dvema izhodoma PWM za motorje ali podobne naprave. Prepričajte se, da uporabljate ustrezne upore za zmanjšanje napetosti LED.

Pimoronijeva knjižnica python Explorer pHAT omogoča izjemno preprosto upravljanje vseh teh V/I vrat.

V teh navodilih so opisane različice naprave z 0, 2 in 4 potenciometri in gumbi. Izberite tistega, ki ustreza vašim potrebam.

Za avtonomno delovanje naprave lahko uporabite napajalnik ali kombinacijo Pimoronijevega LiPo podstavka in LiPo baterije, kot je opisano za "Firefly Light".

Posodobljene različice, 28. december 2018: dodana različica „štirje potenciometri in štirje gumbi“. 30: dodana je koda za različico 4-poti in slike z urejanjem.

1. korak: Uporabljeni / potrebni materiali

Uporabljeni materiali / potrebni
Uporabljeni materiali / potrebni
Uporabljeni materiali / potrebni
Uporabljeni materiali / potrebni
Uporabljeni materiali / potrebni
Uporabljeni materiali / potrebni

- Raspberry Pi Zero (4,80 GBP v Pimoroniju, Združeno kraljestvo) in kartica micro SD (> = 8 GB) z Raspian

- Pimoroni Explorer pHAT (10 GBP v Pimoroniju, Združeno kraljestvo). Izbirno: enovrstična glava, mostični kabli

- IKEA SÄRDAL LED svetilke z 12 LED diodami (2 x, 3,99 € vsaka pri IKEA Nemčija) ali katera koli podobna LED veriga 3-5 V.- okvir za slike IKEA RIBBA (13 x 18 cm, 2,49 € pri IKEA Nemčija).

- Kos PU pene (2 x 18 x 13,5 cm), ki drži LED. Druga možnost je uporaba stiropenaste pene.

- kos neprozorne plastike (18 x 13,5 cm), ki deluje kot difuzor.

- Dva lista barvnega prozornega papirja (vsak po 9 x 13,5 cm). Uporabil sem rdečo in zeleno.

- Kos tanke, zelo neprozorne plastične folije (18 x 13,5 cm), ki deluje kot zunanji zaslon. Uporabil sem tanko belo polikarbonatno folijo. Izbirno, za nastavljivo različico:

Za prilagoditev časa rampinga in trajanja platoja ali drugih parametrov, kot je svetlost.- potenciometri 10, 20 ali 50 kOhm (do štiri sem uporabil dva 10 kOhm oziroma štiri 50 Ohm).

Gumbi za zagon/ustavitev/premor/nadaljevanje:- potisni gumbi (do štiri, uporabil sem štiri ali dva)

Kot indikatorji za faze kroga:- barvne LED in potrebni upori (odvisno od značilnosti LED, ki jih boste uporabljali).

  1. približno 140 ohmov za 5,2 -> 2, 2 V (rumena, oranžna, rdeča; nekaj zelenih LED),
  2. približno 100 ohmov za 5,3 -> 3,3 V (nekaj zelenih; modre, bele LED)

- Mostični kabli in plošča

Izbirno, za baterijsko različico:

  • Napajalnik 5V Micro-USB, oz
  • Pimoroni Zero LiPo podloga in LiPo baterija

2. korak: Lazout in montaža

Lazout in montaža
Lazout in montaža
Lazout in montaža
Lazout in montaža
Lazout in montaža
Lazout in montaža

Sestavite Explorer pHAT, kot je opisal proizvajalec. Dodala sem enovrstni ženski glavo za poenostavljeno povezavo skakalnih kablov na V/I vhode pHATs. Nastavite svoj Pi in namestite knjižnico Pimoroni za Explorer HAT/pHAT, kot je opisal Pimoroni. Izklopite Pi in pritrdite pHAT na Pi. Odstranite baterije iz LED verig tako, da prerežete žice in pokosite konec žic. Odrežite dva 2x moška moška kabla na sredini, kos žic pokosite. Spajkalne kable spajkajte na LED verige in spajkalne točke izolirajte z lepilnim trakom ali s skrčljivo cevjo. Pred spajkanjem preverite, katere žice je treba priključiti na plus ali ozemljitvena vrata, in jih ustrezno označite. Uporabil sem mostičke različnih barv. Peno odrežite tako, da držijo LED, difuzor in folije ustrezne velikosti. Na nosilni plošči LED označite položaje, kjer naj bodo LED diode, in v peno prebodite luknje 3-5 mm. Nato vstavite 24 LED na danih položajih. Barvne papirje in difuzorne plošče položite na LED ploščo (glejte slike), okvir pa namestijo nad škatlo. Plošče pene pritrdite v okvir, npr. z uporabo lepilnega traku. Kable LED traku pritrdite na vrata motorja v raziskovalcu pHAT. Za različico, ki jo je mogoče nastaviti, postavite potenciometre, potisne gumbe, kontrolne LED (in/ali zvočnike) in upore na ploščo in jih povežite z ustreznimi vrati na raziskovalcu pHAT.

Zaženite Pi in namestite potrebne knjižnice, kot je opisano na spletnem mestu Pimoroni, nato zaženite priloženi skript Python 3. Če ena od verig LED ne deluje, je morda priključena v napačno smer. Nato lahko spremenite plus/minus povezave na pHAT ali pa spremenite program, npr. spremenite »eh.motor.one.backwards ()« v »… naprej ()«.

V priponki najdete skripte s fiksnimi nastavitvami, ki jih lahko spremenite v programu, in primer, kjer lahko nekatere nastavitve spremenite s potenciometri, ter z gumbi zaženete in ustavite svetlobni cikel. Ne bi smelo biti preveč težko prilagoditi skripte, ki ustrezajo vaši postavitvi "dihalne luči".

3. korak: Skripti Python

Pimoronijeva knjižnica Python za Explorer HAT/pHAT omogoča izredno preprosto naslavljanje komponent, priključenih na V/I vrata HAT. Dva primera: "eh.two.motor.backwards (80)" poganja napravo, priključeno na PWM/motorna vrata 2, z 80% največjo intenzivnostjo v smeri nazaj, "eh.output.three.flash ()" poveže LED za izhod vrat številka tri utripa, dokler se ne ustavi. Ustvaril sem nekaj različic svetlobe, v bistvu dodal vse večje ravni nadzora z dodajanjem do štirih gumbov in potenciometrov. Na priključku najdete program Python, imenovan "Breathing light fixed lin cosin".py ", kjer je treba v programu spremeniti vse štiri nastavitve parametrov. Poleg tega različica, imenovana "Breathing light var lin cosin.py", kjer je mogoče dolžino dveh faz zatemnitve prilagoditi z uporabo dveh potenciometrov in najbolj podrobno različico "Breathing light var lin cosin3.py" za različico s štirimi potenciometri in tipkami. Programi so napisani v Pythonu 3.

V vseh primerih lahko kolesarski proces prikličete in ustavite z dvema gumboma, v različici s štirimi gumbi pa lahko tudi prekinete in znova zaženete postopek. Poleg tega je mogoče na digitalna izhodna vrata priključiti štiri (barvne) LED, ki označujejo posebne faze. Cikel naprave je sestavljen iz štirih faz:

- faza "vdihavanja", kjer so zgornje LED nizko zatemnjene, spodnje pa povečajo intenzivnost

- faza »zadrži dih«, kjer so zgornje LED izklopljene, spodnje pa nastavljene na maksimum

- faza "izdiha", pri kateri so spodnje LED nizko zatemnjene, zgornje pa povečajo intenzivnost

- faza "zadrži izdih", kjer se spodnje LED izklopijo, zgornje pa svetijo največ.

Dolžina vseh štirih faz je določena s posameznim številskim parametrom, ki se lahko določi v programu in/ali nastavi s potenciometrom.

Peti parameter določa največjo intenzivnost. Omogoča vam, da nastavite največjo svetlost LED, kar je lahko priročno, če jo želite uporabiti kot nočno luč. Poleg tega vam lahko pomaga izboljšati postopek zatemnitve, saj imam vtis, da je težko videti razliko med intenzivnostjo 80 in 100%.

Dodal sem izbirno (so) sinusno funkcijo za povečanje/zmanjšanje svetlosti, saj omogoča bolj gladko povezavo med fazami. Preizkusite druge funkcije. Npr. lahko odpravite prekinitve in uporabite dve različni (kompleksni) sinusni funkciji za obe LED verigi ter prilagodite frekvenco in amplitudo s potenciometri.

# Svetilka "dihanje": različica z dvema gumboma in dvema potenciometroma

# sprememba primera kresnice za Pimoroni Explorer pHAT # tukaj: sinoidno povečanje/zmanjšanje vrednosti motorja/PWM # za linearno funkcijo vklop linearne in utišanje funkcije cosin # Ta različica "var" prebere analogne vhode, preglasi vnaprej določene nastavitve # bere digitalni vhod, gumbi za zagon in ustavitev "" "za zagon ob vklopu Pi lahko uporabite Cron: Cron je program Unix, ki se uporablja za razporejanje opravil, in ima priročno funkcijo @reboot, ki omogoča zagon skripta vsakič, ko se Pi zažene. Odprite terminal in vnesite crontab -e, da uredite crontab. Pomaknite se vse do dna datoteke, mimo vseh vrstic, ki se začnejo #, in dodajte naslednjo vrstico (ob predpostavki, da je vaša koda na /home/pi/firefly.py): @reboot sudo python /home/pi/filename.py & Zaprite in shranite crontab (če uporabljate nano, pritisnite control-x, y in enter za izhod in shranjevanje). "" "čas uvoza import explorerhat kot eh uvoz matematične konstantne vrednosti #sinus xmax = 316 korak = 5 # širina koraka, npr. 315/5 daje 63 korakov/cikel start_button = 0 # to določa stanje tipke, povezane z vhodnimi vrati št. 1 stop_button = 0 # to določa stanje tipke, povezane z vhodnimi vrati št. 3 premor_1 = 0,02 # nastavi dolžino prekinitev v korakih v fazi "vdihavanja", s čimer se stopnja hitrosti in trajanje premora_2 = 0,04 # nastavi prekinitev hitrosti "izdiha "_3 = 1,5 # premor med fazami vdiha in izdiha (zadržite vdih) pavza_4 = 1,2 # premor na koncu izdiha faza (zadržite izdih) max_intens = 0,9 # največja intenzivnost/svetlost max_intens_100 = 100*max_intens # enako v % # Lahko optimizira "dihajoč" vtis LED in zmanjša utripanje. l_cosin = # seznam z vrednostmi, ki izhajajo iz cosinusa (100> = x> = 0) l_lin = # seznam z linearnimi vrednostmi (100> = x> = 0) # ustvari seznam funkcij cosinus za i v območju (0, 316, 3): # 315 je blizu Pi*100, 105 korakov # print (i) n_cosin = [(((math.cos (i/100))+1)/2)*100] #generiraj vrednost # print (n_cosin) l_cosin = l_cosin + n_cosin # dodaj vrednost na seznam # print (l_cosin) # ustvari linearni seznam za i v obsegu (100, -1, -1): # odštevanje od 100 do nič n_lin = l_lin = l_lin + n_lin # print (l_lin) # prikazuje dolgočasen seznam print () print ("" "Za zagon svetlobnih ciklov pritisnite gumb" Start "(Input One)" "") print () print ("" "Za ustavitev lučka, pritisnite in držite gumb "Stop" (vnos tri) "" ") print () # počakajte, da se pritisne gumb Start, medtem ko (start_button == 0): start_button = eh.input.one.read () # preberite gumb številka ena eh.output.one.blink () # utripa LED številka enkrat. spanje (0,5) # dvakrat na sekundo bere # teče luč, medtem ko (stop_button == 0): # branje analognih vhodov ENO in DVE, določite nastavitve set_1 = eh.an alog.one.read () # določa rdeče-> zeleno hitrost rampinga pause_1 = set_1*0,02 # vrednosti se bodo gibale med 0 in 0,13 sek/korak tiskanja ("set_1:", set_1, " -> pause _1:", pause_1) set_2 = eh.analog.two.read () # definira zeleno -> rdeča stopnja povečanja pause_2 = set_2*0,02 # vrednosti se bodo gibale med 0 in 0,13 sekunde/korak tiskanja ("set_2:", set_2, " -> pause _2: ", pause_2) # faza" vdihavanja "eh.output.one.on () # lahko poganja LED ali pisk" "" za x v območju (len (l_lin)): fx = max_intens*l_lin [x] # linearna krivulja eh.motor.one.backwards (fx) eh.motor.two.backwards (max_intens_100-fx) time.sleep (pause_1) eh.output.one.off () '' 'za x v razponu (len (l_cosin)): fx = max_intens*l_cosin [x] # linearna krivulja eh.motor.one.backwards (fx) eh.motor.two.backwards (max_intens_100-fx) time.sleep (pause_1) eh.output.one.off () # preverite, če je pritisnjen gumb za zaustavitev stop_button = eh.input.three.read () # "Zadrži dih" premor na koncu faze vdihavanja eh.output.two.on () # vklopite LED dva eh.motor.one.nazad (0) eh.motor.two.backwards (max_intens_100) time.sleep (pause_3) eh.output.two.off () # preveri, če je pritisnjen gumb Stop, stop_button = eh.input.three.read () # faza "izdiha" eh.output.three.on () # vklopite LED tri "" za x v območju (len (l_lin)): fx = max_intens*l_lin [x] # linearna krivulja eh.motor.one.backwards (max_intens_100-fx) eh.motor.two. backwards (fx) time.sleep (pause_2) '' 'za x v razponu (len (l_cosin)): fx = max_intens*l_cosin [x] # linearna krivulja eh.motor.one.backwards (max_intens_100-fx) eh.motor.two. backwards (fx) time.sleep (pause_2) eh.output.three.off () #check, če je pritisnjen gumb Stop, stop_button = eh.input.three.read () # premor med fazama "izdih" in "vdih" eh. output.four.on () eh.motor.one.backwards (max_intens_100) eh.motor.two.backwards (0) time.sleep (pause_4) eh.output.four.off () #preverite, če je gumb Stop ustavljen = eh.input.three.read () # zaustavitev, izklop vseh izhodnih vrat 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 ("Adijo")

Če želite luč uporabiti kot samostojno napravo, npr. kot luč za spanje ali prebujanje lahko v Pi dodate mobilni vir napajanja in po zagonu programa zaženete program ter za vklop ali izklop v določenem času uporabite »Cron«. Kako uporabljati "Cron" je zelo podrobno opisano drugje.

4. korak: Video primeri

V tem koraku boste našli številne videoposnetke, ki prikazujejo svetlobo v normalnih (tj. Vseh vrednostih> 0, #1) in ekstremnih pogojih, saj so vse vrednosti nastavljene na nič (#2), samo ramping (#3 ), in brez rampinga (#5 ).;

5. korak: Nekaj opomb

Oprostite za vse napačne pogoje, tipkarske napake in napake. Nisem materni govornik angleščine in tudi nimam podrobnega znanja o elektriki, elektroniki ali programiranju. Kar pravzaprav pomeni, da poskušam napisati angleški pouk o stvareh, kjer komaj poznam pravilne izraze v svojem jeziku. Zato so dobrodošli vsi namigi, popravki ali ideje za izboljšave

Priporočena: