Sisällysluettelo:

Hengitysvalo, jota ohjaa Vadelma Pi: 5 vaihetta
Hengitysvalo, jota ohjaa Vadelma Pi: 5 vaihetta

Video: Hengitysvalo, jota ohjaa Vadelma Pi: 5 vaihetta

Video: Hengitysvalo, jota ohjaa Vadelma Pi: 5 vaihetta
Video: Part 5 - The Jungle Audiobook by Upton Sinclair (Chs 18-22) 2024, Heinäkuu
Anonim
Hengitysvalo, jota ohjaa Raspberry Pi
Hengitysvalo, jota ohjaa Raspberry Pi

Tässä kuvattu "Hengitysharjoitusvalo" on yksinkertainen ja suhteellisen edullinen sykkivä valo, joka voi tukea sinua hengitystehtävissäsi ja auttaa ylläpitämään jatkuvaa hengitysrytmiä. Sitä voidaan käyttää myös mm. rauhoittavana yövalona lapsille. Nykyisessä vaiheessa se on enemmän toimiva prototyyppi.

Voit myös käyttää sitä edullisena ja yksinkertaisesti rakennettavana esimerkkinä "fyysiselle laskennalle" Raspberry Pi: llä, esim. käytettäväksi koulutusprojektina aloittelijoille, Täällä on analogiset (pyörivä potentiometri) ja digitaaliset tulot (painike) sekä digitaalinen (LED) ja PWM -lähtö (LED -ketjut), ja muutosten vaikutukset näkyvät suoraan.

Valo kulkee toistuvien ympyröiden läpi, jotka koostuvat neljästä vaiheesta: vihreä (ylempi) punaiseen (alempi) siirtymä, vain punaisen vaiheen, punaisesta vihreään siirtymisen ja vain vihreän vaiheen. Näiden vaiheiden pituus määritetään vakioilla, joita voidaan muuttaa potentiometreillä. Prosessi voidaan käynnistää, keskeyttää, jatkaa ja pysäyttää painamalla painikkeita. LEDit osoittavat nykyisen vaiheen, ja se perustuu Pimoronin Firefly Light -esimerkkiin (katso täältä). Kuten Firefly Light, se vaatii Raspberry Pi (Zero), Pimoroni Explorer pHAT (tai HAT) ja kaksi IKEA SÄRDAL LED -valoketjua. Jälkimmäiset on kytketty pHAT: n kahteen PMW/moottoriporttiin. Purkin käyttämisen sijaan olen asettanut LEDit IKEA -kuvakehykseen. Olen yrittänyt hieman optimoida alkuperäistä "firefly light" python -skriptiä, toteuttamalla valinnaisen sinus -toiminnon kirkkauden/ pulssin leveyden muutoksiin ja olen ottanut käyttöön kaksi "pitovaihetta" himmennysvaiheiden välillä. Muuttaessani parametreja löytääksesi miellyttävämmän valokuvion, huomasin, että laite voi auttaa tukemaan hyvin selvästi määriteltyä, säännöllistä hengitysmallia. Jotkut teistä saattavat siis löytää tämän”Hengitysvalon” hyödylliseksi meditaatiossa tai harjoittelussa. Koska Explorer pHAT -laitteessa on neljä digitaalista ja neljä analogista tuloa, on erittäin helppo säätää jopa neljää eri parametria liuku- tai pyörivillä potentiometreillä ja ottaa käyttöön käynnistys-/uudelleenkäynnistys-/pysäytystoiminnot valoille painikkeilla. Tämän avulla voit käyttää laitetta ja optimoida parametrit tarpeidesi mukaan ilman, että näyttöä on liitettävä Pi: hen.

Lisäksi Explorer pHAT -laitteessa on neljä digitaalista lähtöporttia, joiden avulla voidaan lisätä LED-valoja tai summeria, sekä kaksi 5 V- ja kaksi maadoitusporttia ja kaksi PWM-lähtöporttia moottoreille tai vastaaville laitteille. Varmista, että käytät oikeita vastuksia LED -valojännitteen pienentämiseksi.

Pimoronin Explorer pHAT python -kirjastossa on erittäin helppoa hallita kaikkia näitä I/O -portteja.

Tässä ohjeessa kuvataan laitteen versiot, joissa on 0, 2 ja 4 potentiometriä ja painikkeet. Valitse tarpeisiisi sopiva.

Laitetta voidaan käyttää itsenäisesti käyttämällä joko virtalähdettä tai Pimoroni LiPo -levyn ja LiPo -akun yhdistelmää, kuten "Firefly Light" on kuvattu.

Päivitetyt versiot 28. joulukuuta 2018: lisätty versio "neljä potentiometriä ja neljä painonappia". 30: 4-poti-version koodi ja fritzing-kuvat lisätty.

Vaihe 1: Käytetyt / vaaditut materiaalit

Käytetyt / pakolliset materiaalit
Käytetyt / pakolliset materiaalit
Käytetyt / pakolliset materiaalit
Käytetyt / pakolliset materiaalit
Käytetyt / pakolliset materiaalit
Käytetyt / pakolliset materiaalit

- Raspberry Pi Zero (4,80 GBP Pimoronissa, Iso -Britannia) ja micro SD -kortti (> = 8 Gt) raspianilla

- Pimoroni Explorer pHAT (10 GBP, Pimoroni, UK). Valinnainen: yksirivinen otsikko, hyppyjohdot

- IKEA SÄRDAL LED-ketjuvalot 12 LEDillä (2 x, 3,99 €/ kpl IKEA Saksassa) tai vastaava 3-5 V: n LED-ketju.- IKEA RIBBA -kehys (13 x 18 cm, 2,49 € IKEA Saksassa).

- pala PU -vaahtoa (2 x 18 x 13,5 cm) LEDien pitämiseksi. Vaihtoehtoisesti voidaan käyttää styro -vaahtoa.

- Paksu läpinäkymätön muovi (18 x 13,5 cm), joka toimii hajottimena.

- Kaksi arkkia värillistä läpinäkyvää paperia (kukin 9 x 13,5 cm). Käytin punaista ja vihreää.

- Paksu ohut, erittäin läpinäkymätön muovilevy (18 x 13,5 cm), joka toimii ulkoseinämänä. Käytin ohutta valkoista polykarbonaattilevyä. Valinnainen, viritettävä versio:

Ramppiajoituksen ja tasangon keston tai muiden parametrien, kuten kirkkauden, säätämiseen.- 10, 20 tai 50 kOhm: n potentiometrit (enintään neljään käytin kahta 10 kOhm: aa vastaavasti neljää 50 ohmia).

Käynnistys-/pysäytys-/tauko-/jatkamispainikkeina:- Painikkeet (enintään neljä, käytin neljää tai kahta)

Indikaattoreina ympyrän vaiheille:- Värilliset LEDit ja tarvittavat vastukset (riippuu käyttämiesi LEDien ominaisuuksista).

  1. noin 140 ohmia, 5,2 -> 2, 2 V (keltainen, oranssi, punainen; jotkut vihreät LEDit),
  2. noin 100 ohmia, 5,3 -> 3,3 V (jotkut vihreät, siniset, valkoiset LEDit)

- Hyppyjohdot ja leipälauta

Lisävaruste, akkukäyttöinen versio:

  • 5 V: n Micro-USB-virtalähde tai
  • Pimoroni Zero LiPo -levy ja LiPo -akku

Vaihe 2: Lazout ja kokoonpano

Lazout ja kokoonpano
Lazout ja kokoonpano
Lazout ja kokoonpano
Lazout ja kokoonpano
Lazout ja kokoonpano
Lazout ja kokoonpano

Kokoa Explorer pHAT valmistajan ohjeiden mukaisesti. Olen lisännyt yksirivisen naarasliitännän hyppyjohtojen yksinkertaiseen liittämiseen pHAT -I/O -portteihin. Määritä Pi ja asenna Pimoroni -kirjasto Explorer HAT/pHAT: lle, kuten Pimoroni on kuvannut. Sammuta Pi ja kiinnitä pHAT Pi -laitteeseen. Katkaise kaksi 2x uroshyppykaapelia keskeltä, tina johtojen päät. Juotos hyppyjohdot LED -ketjuihin ja eristä juotoskohdat joko teipillä tai kutisteputkella. Tarkista ennen juottamista, mitkä johdot on liitettävä plus- tai maadoitusportteihin, ja merkitse ne vastaavasti. Käytin erivärisiä hyppyjohtoja. Leikkaa vaahto pitämään LEDit, diffuusori ja suojalevyt sopivan kokoisina. Merkitse LED-pidikelevyyn paikat, joihin LEDit on sijoitettava, ja lyö 3-5 mm reikää vaahtoon. Aseta sitten 24 LEDiä annettuihin paikkoihin. Aseta värilliset paperit ja diffuusorilevyt LED -levylle (katso kuvat), ne asettavat kehyksen pakkauksen yläpuolelle. Kiinnitä vaahtomuovikerrokset runkoon, esim. käyttämällä teippiä. Kiinnitä LED -nauhakaapelit Explorer pHAT: n moottoriportteihin. Aseta viritettävässä versiossa potentiometrit, painikkeet, ohjaus -LEDit (ja/tai summerit) ja vastukset leipälevylle ja liitä ne vastaaviin Explorer pHAT -portteihin.

Käynnistä Pi ja asenna tarvittavat kirjastot, kuten Pimoroni -verkkosivustolla on kuvattu, ja suorita sitten mukana toimitettu Python 3 -skripti. Jos jokin LED -ketjuista ei toimi, se saattaa olla kytketty väärään suuntaan. Sitten voit joko muuttaa plus-/miinusliitäntöjä pHAT: ssa tai tehdä muutoksia ohjelmaan, esim. muuta”eh.motor.one.backwards ()” arvoksi “… eteenpäin ()”.

Liitteenä löydät skriptejä, joilla on kiinteät asetukset, joita voit muuttaa ohjelman sisällä, ja esimerkki, jossa voit muuttaa joitain asetuksia potentiometreillä ja aloittaa ja lopettaa valosyklin painikkeilla. Ei pitäisi olla liian vaikeaa säätää käsikirjoituksia sopimaan omaan”hengitysvalon” asetteluun.

Vaihe 3: Python -komentosarjat

Pimoronin Python -kirjasto Explorer HAT/pHAT: lle tekee HAT -laitteiden I/O -portteihin liitettyjen komponenttien käsittelemisestä erittäin helppoa. Kaksi esimerkkiä: "eh.two.motor.backwards (80)" ajaa PWM-/moottoriporttiin 2 kiinnitettyä laitetta 80% enimmäisvoimakkuudella taaksepäin, "eh.output.three.flash ()" yhdistää LED -valon lähtöporttiin numero kolme vilkkuu, kunnes se pysähtyy..py ", jossa kaikkia neljää parametriasetusta on muutettava ohjelman sisällä. Lisäksi versio nimeltä "Hengitysvalo var lin cosin.py", jossa kahden himmennysvaiheen pituutta voidaan säätää kahdella potentiometrillä ja kehittyneimmällä versiolla "Hengitysvalo var lin cosin3.py" neljän potentiometrin ja painikkeen versiolle. Ohjelmat on kirjoitettu Python 3: lla.

Kaikissa tapauksissa pyöräilyprosessi voidaan käynnistää ja pysäyttää kahdella painikkeella, neljän painikkeen versiossa voit myös keskeyttää ja käynnistää prosessin uudelleen. Lisäksi neljä (värillistä) LEDiä voidaan kytkeä digitaalisiin lähtöportteihin, jotka osoittavat tietyt vaiheet. Laitteen sykli koostuu neljästä vaiheesta:

- "hengitys" -vaihe, jossa ylemmät LEDit himmenevät alhaisiksi ja alemmat LEDit lisäävät voimakkuutta

- "pidätä hengitystäsi" -vaihe, jossa ylemmät LEDit sammuvat ja alemmat LEDit asetetaan maksimiin

- "uloshengitys" -vaihe, jossa alemmat LEDit himmenevät alhaiseksi ja ylemmät LEDit lisäävät voimakkuutta

- "Pysy hengitettynä" -vaihe, jossa alemmat LEDit sammuvat ja ylemmät LEDit syttyvät maksimi.

Kaikkien neljän vaiheen pituuden määrittelee yksittäinen numeerinen parametri, joka voidaan joko korjata ohjelmassa ja/tai säätää potentiometrillä.

Viides parametri määrittää suurimman intensiteetin. Sen avulla voit asettaa LEDien suurimman kirkkauden, mikä voi olla kätevää, jos haluat käyttää sitä yövalona. Lisäksi sen avulla voit parantaa himmennysprosessia, koska minusta tuntuu, että on vaikea nähdä eroa 80 ja 100% voimakkuuden välillä.

Lisäsin valinnaisen (rinnakkain) sinus-toiminnon kirkkauden lisäämiseksi/vähentämiseksi, koska se antaa tasaisemman yhteyden vaiheiden välillä. Kokeile rohkeasti muita toimintoja. Esim. Voit poistaa katkokset ja käyttää kahta erilaista (monimutkaista) sinitoimintoa molemmille LED -ketjuille ja säätää taajuutta ja amplitudia potentiometreillä.

# "Hengittävä" lamppu: kaksi painiketta ja kaksi potentiometriä

# muutos Firefly -esimerkistä Pimoroni Explorer pHAT # -tuotteelle # tässä: moottorin/PWM -arvojen synoidinen lisäys/vähennys # lineaariselle toiminnolle Poista lineaarinen mykistys ja mykistys cosin -toiminto # Tämä versio "var" lukee analogiset tulot, ohittaa ennalta määritetyt asetukset # lukee digitaalitulo, painikkeet käynnistys- ja pysäytyspainikkeille "" "käynnistyäksesi, kun Pi käynnistetään, voit käyttää Cronia: Cron on Unix -ohjelma, jota käytetään töiden ajoittamiseen, ja siinä on kätevä @reboot -toiminto, jonka avulla voit suorittaa komentosarjan aina kun Pi käynnistyy. Avaa päätelaite ja kirjoita crontab -e muokataksesi crontab. Selaa tiedoston loppuun asti kaikkien rivien jälkeen, jotka alkavat #, ja lisää seuraava rivi (olettaen, että koodisi on /home/pi/firefly.py): @reboot sudo python /home/pi/filename.py & Sulje ja tallenna crontab (jos käytät nanoa, paina control-x, y ja enter poistuaksesi ja tallentaaksesi). "" "tuonti aika tuonti tutkimusohjelma kuten tuonti matemaattiset vakioarvot #sinus xmax = 316 askel = 5 # askeleen leveys, esim. 315/5 antaa 63 askelta/sykli start_button = 0 # tämä määrittää tuloporttiin nro 1 kytketyn painikkeen tilan stop_button = 0 # tämä määrittää tuloporttiin nro 3 kytketyn painikkeen tilan tauko 3 = 0,02 # asettaa pituuden taukoja "sisäänhengitys" -vaiheen vaiheissa, jolloin rampinopeus ja kesto tauko_2 = 0,04 # asettaa "uloshengityksen" nousunopeuden tauon_3 = 1,5 # tauon hengitys- ja uloshengitysvaiheiden välillä (pidä hengitys) tauko_4 = 1,2 # tauko uloshengityksen lopussa vaihe (pidä uloshengitys) max_intens = 0.9 # suurin voimakkuus/kirkkaus max_intens_100 = 100*max_intens # sama % # Saattaa optimoida LEDien "hengittävän" vaikutelman ja vähentää välkkymistä. l_cosin = # lista cosinus -johdetuilla arvoilla (100> = x> = 0) l_lin = # luettelo lineaarisilla arvoilla (100> = x> = 0) # luo cosinus -funktioluettelon i: lle alueella (0, 316, 3): # 315 on lähellä Pi*100, 105 vaihetta # print (i) n_cosin = [(((math.cos (i/100))+1)/2)*100] #generate value # print (n_cosin) l_cosin = l_cosin + n_cosin #lisäys luetteloon # print (l_cosin) # luo lineaarisen luettelon i: lle alueella (100, -1, -1): # laske alas 100: sta nollaan n_lin = l_lin = l_lin + n_lin # print (l_lin) # näyttää tylsän luettelon print () print ("" "Aloita valosyklit painamalla" Start "-painiketta (Input One)" "") print () print ("" Lopeta valo, paina "Stop" -painiketta (syöte kolme) "" ") print () # odota, kunnes Start -painiketta painetaan, kun (start_button == 0): start_button = eh.input.one.read () # read painike numero yksi eh.output.one.blink () # vilkkuu LED -numero kerran. nukkumassa (0.5) # lukee kaksi kertaa sekunnissa #ajon valot, kun taas (stop_button == 0): # lue analogiset tulot YKSI ja KAKSI, määritä asetukset set_1 = eh.an alog.one.read () # määrittää punaisen-> vihreän rampinopeuden tauko_1 = set_1*0,02 # -arvot vaihtelevat välillä 0 -0,13 sekuntia/askel tulostus ("set_1:", set_1, " -> pause _1:", pause_1) set_2 = eh.analog.two.read () # määrittää vihreän -> punaisen rampinopeuden tauon_2 = set_2*0.02 # -arvot vaihtelevat välillä 0 -0,13 sekuntia/askel ("set_2:", set_2, " -> tauko _2: ", pause_2) #" inhalation "vaihe eh.output.one.on () # voi ajaa LEDiä tai piippausta '' 'x: lle alueella (len (l_lin)): fx = max_intens*l_lin [x] # lineaarinen käyrä eh.motor.one.backwards (fx) eh.motor.two.backwards (max_intens_100-fx) time.sleep (tauko_1) eh.output.one.off () '' 'x alueella (len (l_cosin)): fx = max_intens*l_cosin [x] # lineaarinen käyrä eh.motor.one.backwards (fx) eh.motor.two.backwards (max_intens_100-fx) time.sleep (pause_1) eh.output.one.off () # tarkista onko Stop -painiketta painettu stop_button = eh.input.three.read () # "Pidätä hengitystäsi" tauko inhalaatiovaiheen lopussa eh.output.two.on () # kytke LED päälle kaksi eh.motor.one. taaksepäin (0) eh.motor.two. taaksepäin (max_intens_100) time.sleep (pause_3) eh.output.two.off () #check jos Stop -painiketta painetaan stop_button = eh.input.three.read () # "uloshengitys" vaihe eh.output.three.on () # sytytä LED kolme '' 'x: lle alueella (len (l_lin)): fx = max_intens*l_lin [x] # lineaarinen käyrä eh.motor.one.backwards (max_intens_100-fx) eh.motor.two.backwards (fx) time.sleep (pause_2) '' 'x alueella (len (l_cosin)): fx = max_intens*l_cosin [x] # lineaarinen käyrä eh.motor.one.backwards (max_intens_100-fx) eh.motor.two. taaksepäin (fx) time.sleep (pause_2) eh.output.three.off () #check jos Stop -painiketta painetaan stop_button = eh.input.three.read () # tauko "uloshengityksen" ja "sisäänhengityksen" vaiheiden välillä eh. output.four.on () eh.motor.one.backwards (maks. = eh.input.three.read () # shutdown, käännä kaikki lähtöportit eh.motor.one.stop () eh.motor.two.stop () eh.output.one.off () eh.output.two.off () eh.output.three.off () eh.output.four.off () tulosta () tulosta ("Heippa")

Jos haluat käyttää valoa itsenäisenä laitteena, esim. nukkumis- tai herätysvalona, voit lisätä Pi-laitteeseen liikkuvan virtalähteen ja käynnistää ohjelman käynnistyksen jälkeen ja kytkeä sen päälle tai pois päältä "Cron" -toiminnolla tiettyinä aikoina. "Cronin" käyttö on kuvattu laajasti muualla.

Vaihe 4: Esimerkkejä videoista

Tässä vaiheessa löydät useita videoita, jotka osoittavat valoa normaaleissa (eli kaikki arvot> 0, #1) ja äärimmäisissä olosuhteissa, kun kaikki arvot on asetettu nollaan (#2), vain ramppi (#3 ), eikä ramppia (#5 ).;

Vaihe 5: Muutamia huomautuksia

Pyydä anteeksi mahdolliset virheet, kirjoitusvirheet ja virheet. En ole englannin äidinkielenään puhuja, enkä ole kehittänyt sähkö-, elektroniikka- tai ohjelmointitaitoja. Mikä oikeastaan tarkoittaa, että yritän kirjoittaa englanninkielisen ohjeen asioista, joissa tuskin tiedän oikeita termejä omalla kielelläni. Siksi kaikki vihjeet, korjaukset tai parannusideat ovat tervetulleita

Suositeltava: