Sisukord:

Hingav valgus, mida juhib Raspberry Pi: 5 sammu
Hingav valgus, mida juhib Raspberry Pi: 5 sammu

Video: Hingav valgus, mida juhib Raspberry Pi: 5 sammu

Video: Hingav valgus, mida juhib Raspberry Pi: 5 sammu
Video: Начало работы с QLC+ Управление цветомузыкой с компьютера. Как управлять светом. 2024, Juuli
Anonim
Hingav valgus, mida juhib Raspberry Pi
Hingav valgus, mida juhib Raspberry Pi

Siin kirjeldatud "Hingamisharjutuste valgus" on lihtne ja suhteliselt odav pulseeriv valgus, mis võib teid hingamisteedel toetada ja aidata teil hoida pidevat hingamisrütmi. Seda võib kasutada ka nt. rahustava öölambina lastele. Praeguses etapis on see pigem töötav prototüüp.

Võite seda kasutada ka odava ja lihtsalt koostatava näitena Raspberry Pi -ga "füüsiliseks arvutamiseks", nt. kasutamiseks haridusprojektina algajate tasemel, siin on teil analoog (pöörlev potentsiomeeter) ja digitaalsed sisendid (nupp), samuti digitaalne (LED) ja PWM väljund (LED -ahelad) ning muudatuste mõju on otseselt nähtav.

Valgus läbib korduvaid ringe, mis koosnevad neljast faasist: roheline (ülemine) kuni punane (alumine) üleminek, ainult punane faas, punane-roheline üleminek ja ainult roheline faas. Nende faaside pikkuse määravad konstandid, mida saab potentsiomeetritega muuta. Protsessi saab käivitada, peatada, jätkata ja peatada vajutades nuppe. Valgusdioodid näitavad praegust faasi. See põhineb Pimoroni "Firefly Light" näitel (vt siit). Sarnaselt Firefly Light'iga vajab see Raspberry Pi (null), Pimoroni Explorer pHAT (või HAT) ja kahte IKEA SÄRDAL LED -valgusketti. Viimased on ühendatud pHAT kahe PMW/mootoripordiga. Purgi kasutamise asemel olen LED -id paigutanud IKEA pildiraami. Olen püüdnud natuke optimeerida esialgset “firefly light” pythoni skripti, rakendades heleduse/ impulsi laiuse muutmiseks valikulise siinusfunktsiooni ja toonud hämardamisfaaside vahele kaks “hoidmis” faasi. Parameetreid muutes, et leida kergemat mustrit, mis tundub mugavam, leidsin, et seade võib aidata toetada väga selgelt määratletud korrapärast hingamismustrit. Seega võivad mõned teist leida seda hingavat valgust meditatsiooni või koolituse eesmärgil. Kuna Explorer pHAT -l on neli digitaalset ja neli analoogsisendit, on väga lihtne reguleerida kuni nelja erinevat parameetrit slaidi- või pöörlevate potentsiomeetrite abil ning tutvustada tulede käivitamise/taaskäivitamise/seiskamise funktsioone nuppude abil. See võimaldab teil seadet kasutada ja parameetreid vastavalt oma vajadustele optimeerida, ilma et monitor peaks olema Pi külge kinnitatud.

Lisaks on Explorer pHAT-ga kaasas neli digitaalset väljundporti, mis võimaldavad lisada LED-e või helisignaale, lisaks kaks 5V ja kahte maandusporti ning kaks PWM-väljundporti mootoritele või sarnastele seadmetele. Veenduge, et kasutate oma LED -ide pinge vähendamiseks õigeid takistusi.

Pimoroni Explorer pHAT pythoni raamatukogu muudab kõigi nende I/O portide juhtimise äärmiselt lihtsaks.

Selles juhendis kirjeldatakse seadme 0, 2 ja 4 potentsiomeetri ja nuppudega versioone. Valige see, mis sobib teie vajadustega.

Seadme autonoomseks käitamiseks võiks kasutada kas toiteplokki või Pimoroni LiPo ketta ja LiPo aku kombinatsiooni, nagu on kirjeldatud "Firefly Light" jaoks.

Värskendatud versioonid 28. detsember 2018: lisatud versioon „neli potentsiomeetrit ja neli surunuppu“. 30: lisatud 4-poti versiooni kood ja fritzeerivad pildid.

Samm: kasutatud / nõutavad materjalid

Kasutatud / nõutavad materjalid
Kasutatud / nõutavad materjalid
Kasutatud / nõutavad materjalid
Kasutatud / nõutavad materjalid
Kasutatud / nõutavad materjalid
Kasutatud / nõutavad materjalid

- Raspberry Pi Zero (4,80 GBP Pimoronis, Ühendkuningriik) ja mikro -SD -kaart (> = 8 GB) koos Raspianiga

- Pimoroni Explorer pHAT (10 GBP Pimoronis, Ühendkuningriik). Valikuline: üherealine päis, hüppajakaablid

- IKEA SÄRDAL LED-kettvalgustid 12 LED-iga (2 x, 3,99 € igaüks IKEA Saksamaal) või mis tahes sarnane 3-5 V LED-kett.- IKEA RIBBA pildiraam (13 x 18 cm, 2,49 € IKEA Saksamaal).

- tükk PU -vahtu (2 x 18 x 13,5 cm) LED -ide hoidmiseks. Alternatiivina võib kasutada styro vahtu.

- läbipaistmatu plastik (18 x 13,5 cm), mis toimib hajutina.

- kaks lehte värvilist läbipaistvat paberit (igaüks 9 x 13,5 cm). Kasutasin punast ja rohelist.

- tükk õhukest, väga läbipaistmatut plastist lehte (18 x 13,5 cm), mis toimib välise ekraanina. Kasutasin õhukest valget polükarbonaadist lehte. Valikuline, häälestatava versiooni jaoks:

Kaldtee ajastamise ja platoo kestuse või muude parameetrite, näiteks heleduse reguleerimiseks.- 10, 20 või 50 kOhm potentsiomeetrid (kuni neli kasutasin kahte 10 kOhm vastavalt nelja 50 oomi).

Start/stop/pause/jätkamise nuppudena:- Vajutage nuppe (kuni neli, kasutasin nelja või kahte)

Ringi faaside indikaatoritena:- värvilised LED-id ja vajalikud takistid (sõltub kasutatavate valgusdioodide omadustest).

  1. umbes 140 oomi 5,2 -> 2, 2 V (kollane, oranž, punane; mõned rohelised LED -id),
  2. umbes 100 oomi 5,3 -> 3,3 V (mõned rohelised; sinised, valged LED -id)

- Jumperkaablid ja leivaplaat

Valikuline akutoitega versioon:

  • 5V mikro-USB toiteplokk või
  • Pimoroni Zero LiPo vahetükk ja LiPo aku

2. etapp: Lazout ja kokkupanek

Lazout ja kokkupanek
Lazout ja kokkupanek
Lazout ja kokkupanek
Lazout ja kokkupanek
Lazout ja kokkupanek
Lazout ja kokkupanek

Pange Explorer pHAT kokku nii, nagu tootja on kirjeldanud. Olen lisanud üherealise naissoost päise džemprikaablite lihtsustatud ühendamiseks pHATs I/O portidega. Seadistage oma Pi ja installige Explorer HAT/pHAT jaoks Pimoroni raamatukogu, nagu on kirjeldanud Pimoroni. Lülitage Pi välja ja kinnitage pHAT Pi külge. Eemaldage akud LED -ahelatelt, lõigates juhtmed ja tinates juhtmete otsa. Lõigake kaks 2x isast hüppajakaablit keskele, tinake juhtmete ots. Jootke hüppajakaablid LED -kettide külge ja isoleerige jootmiskohad, kasutades kleeplinti või kokkutõmbumistoru. Enne jootmist kontrollige, millised juhtmed tuleb ühendada pluss- või maanduspordidega, ja märkige need vastavalt. Ma kasutasin eri värvi hüppajajuhtmeid. Lõika vaht, et hoida valgusdioodid, hajuti ja ekraanilehed sobivas suuruses. Märkige valgusdioodide hoidmisplaadil kohad, kuhu valgusdioodid paigutatakse, ja torgake vahtu 3-5 mm augud. Seejärel sisestage 24 LED -i etteantud asendisse. Asetage värvilised paberid ja hajuti plaadid LED -plaadile (vt pilte), need asetavad raami pakendi kohale. Kinnitage vahtkihid raami, nt. kasutades kleeplinti. Kinnitage LED -riba kaablid Exploreri pHAT -i mootoriportidesse. Häälestatava versiooni jaoks asetage leivaplaadile potentsiomeetrid, surunupud, juht -LED -id (ja/või helisignaalid) ja takistid ning ühendage need Exploreri pHAT -i vastavate portidega.

Käivitage oma Pi ja installige vajalikud teegid, nagu on kirjeldatud Pimoroni veebisaidil, ja käivitage seejärel kaasasolev Python 3 skript. Kui üks LED -kettidest ei tööta, võib see olla vales suunas ühendatud. Seejärel saate muuta pHAT -i pluss-/miinusühendusi või muuta programmi, nt. muutke “eh.motor.one.backwards ()” väärtuseks “… edasi ()”.

Lisatud on skriptid, millel on fikseeritud seaded, mida saate programmi sees muuta, ja näide, kus saate mõningaid seadeid potentsiomeetritega muuta ning valgustsüklit käivitada ja peatada nuppude abil. Skriptide kohandamine teie „hingava tule” paigutusega ei tohiks olla liiga keeruline.

Samm: Pythoni skriptid

Pimoroni Pythoni raamatukogu Explorer HAT/pHAT jaoks muudab HAT -i I/O -portide külge kinnitatud komponentide käsitlemise äärmiselt lihtsaks. Kaks näidet: "eh.two.motor.backwards (80)" juhib PWM/mootoripordi 2 külge kinnitatud seadet maksimaalse intensiivsusega 80% tagasi, "eh.output.three.flash ()" ühendab LED -i väljundpordi number kolm vilgub, kuni see peatatakse. Olen genereerinud mõned valguse variatsioonid, lisades põhimõtteliselt üha suuremad juhtimistasemed, lisades kuni neli surunuppu ja potentsiomeetrit. Ühendatud leiad Pythoni programmi nimega "Hingava valgusega fikseeritud liini kosin.py ", kus tuleb programmis muuta kõiki nelja parameetri sätteid. Lisaks versioon nimega "Hingav valgus var lin cosin.py", kus kahe hämardamisfaasi pikkust saab reguleerida kahe potentsiomeetri abil ja kõige potentsiaalsema versiooni "Hingamisvalgus var lin cosin3.py" nelja potentsiomeetri ja nupu versiooni jaoks. Programmid on kirjutatud Python 3 -s.

Kõigil juhtudel saab jalgrattaprotsessi käivitada ja peatada kahe nupuvajutusega, nelja nupuga versioonis saate ka protsessi katkestada ja taaskäivitada. Lisaks saab digitaalse väljundpordi külge ühendada neli (värvilist) LED -i, mis näitavad konkreetseid faase. Seadme tsükkel koosneb neljast etapist:

- "sissehingamise" faas, kus ülemised valgusdioodid on hämardunud ja alumised LED -id suurendavad intensiivsust

- "hinge kinni hoidmise" faas, kus ülemised LED -id on välja lülitatud ja alumised LED -id on seatud maksimumile

- "väljahingamise" faas, kus alumised LED -id on hämardunud ja ülemised LED -id suurendavad intensiivsust

- "väljahingamise" faas, kus alumised LED -id on välja lülitatud ja ülemised LED -id põlevad maksimaalselt.

Kõigi nelja faasi pikkus määratakse individuaalse numbrilise parameetriga, mis võib programmis fikseeritud ja/või potentsiomeetri abil reguleeritav.

Viies parameeter määrab maksimaalse intensiivsuse. See võimaldab teil määrata LED -ide maksimaalse heleduse, mis võib olla mugav, kui soovite seda öövalgustina kasutada. Lisaks võib see võimaldada teil parandada hämardamisprotsessi, kuna mulle on jäänud mulje, et 80–100% intensiivsuse vahel on raske vahet näha.

Lisasin heleduse suurendamiseks/vähendamiseks valikulise (kaas) siinusfunktsiooni, kuna see annab sujuvama ühenduse faaside vahel. Proovige julgelt muid funktsioone. Nt. võite katkestused kõrvaldada ja mõlema LED -ahela jaoks kasutada kahte erinevat (keerulist) siinusfunktsiooni ning reguleerida potentsiomeetrite abil sagedust ja amplituudi.

# "Hingav" lamp: kahe nupuga ja kahe potentsiomeetriga versioon

# tulekärbse näite muutmine Pimoroni Exploreri pHAT jaoks # siin: mootori/PWM väärtuste sinoidi suurenemine/vähenemine # lineaarse funktsiooni korral vaigista lineaarne ja vaigista koosinuse funktsioon # See versioon "var" loeb analoogsisendeid, alistab eelmääratud seaded # loeb digitaalne sisend, nupud "" "käivitamiseks ja peatamiseks, et käivitada Pi sisselülitamisel, võite kasutada Cronit: Cron on Unixi programm, mida kasutatakse tööde ajastamiseks ja millel on mugav @reboot -funktsioon, mis võimaldab skripti käivitada iga kord, kui teie Pi käivitub. Avage terminal ja sisestage crontab -i redigeerimiseks crontab -e. Kerige faili lõpuni, mööda kõiki #-ga algavaid ridu ja lisage järgmine rida (eeldusel, et teie kood on /home/pi/firefly.py): @reboot sudo python /home/pi/filename.py & Sulgege ja salvestage oma crontab (kui kasutate nano, vajutage väljumiseks ja salvestamiseks klahve control-x, y ja sisestusklahvi). "" "impordi aeg impordi uurija nagu eh import matemaatika konstantsed väärtused #sinus xmax = 316 samm = 5 # sammu laius, nt 315/5 annab 63 sammu/tsükli start_button = 0 # see määrab sisendpordiga nr 1 ühendatud nupu oleku stopp nupp = 0 # see määrab sisendpordiga nr 3 ühendatud pausi oleku 3 paus_1 = 0,02 # määrab pikkuse sissehingamise faasi etappide vaheaegade vaheaeg, seeläbi kiiruse ja kestuse paus_2 = 0,04 # seab sissehingamise kiiruse pausi_3 = 1,5 # pausi sissehingamise ja väljahingamise faaside vahel (jätkake sissehingamist) paus_4 = 1,2 # paus väljahingamise lõpus faas (hoia väljahingatuna) max_intens = 0,9 # maksimaalne intensiivsus/heledus max_intens_100 = 100*max_intens # sama % # Võimaldab optimeerida LED -ide "hingavat" muljet ja vähendada vilkumist. l_cosin = # loend koosinususe tuletatud väärtustega (100> = x> = 0) l_lin = # loend lineaarsete väärtustega (100> = x> = 0) # genereerib kosinuse funktsioonide loendi i jaoks vahemikus (0, 316, 3): # 315 on Pi*100 lähedal, 105 sammu # print (i) n_cosin = [((((math.cos (i/100))+1)/2)*100] #generate value # print (n_cosin) l_cosin = l_cosin + n_cosin # lisage väärtus loendisse # print (l_cosin) # genereerige lineaarne loend i vahemikus (100, -1, -1): # loendage 100 -st nullini n_lin = l_lin = l_lin + n_lin # print (l_lin) # näitab igavat nimekirja print () print ("" "Valgustsüklite käivitamiseks vajutage nuppu" Start "(üks sisend)" "") print () print ("" "Peatamiseks märgutuli, vajutage ja hoidke all nuppu "Stopp" (kolm sisendit) "" ") print () # oodake, kuni käivitusnuppu vajutatakse (start_button == 0): start_button = eh.input.one.read () # read nupp number üks eh.output.one.blink () # vilgub LED number üks kord.unenägu (0,5) # loeb kaks korda sekundis # jookseb, samas (stop_button == 0): # loe analoogsisendeid ÜKS ja KAKS, määrake seaded = eh.an alog.one.read () # määratleb punase-> rohelise rampimiskiiruse paus_1 = set_1*0,02 # väärtused jäävad vahemikku 0–0,13 sek/sammprint ("set_1:", set_1, " -> pause _1:", pause_1) set_2 = eh.analog.two.read () # määratleb rohelise -> punase rampimiskiiruse pausi_2 = set_2*0.02 # väärtused jäävad vahemikku 0–0,13 sek/sammprint ("set_2:", set_2, " -> paus _2: ", pause_2) #" sissehingamise "faas eh.output.one.on () # võib juhtida LED -i või piiksu '' 'x jaoks vahemikus (len (l_lin)): fx = max_intens*l_lin [x] # lineaarne kõver eh.motor.one.backwards (fx) eh.motor.two.backwards (max_intens_100-fx) time.sleep (pause_1) eh.output.one.off () "" x vahemikus (len (l_cosin)): fx = max_intens*l_cosin [x] # lineaarne kõver eh.motor.one.backwards (fx) eh.motor.two.backwards (max_intens_100-fx) time.sleep (pause_1) eh.output.one.off () # kontrollige, kas stopp -nuppu on vajutatud stop_button = eh.input.three.read () # "Hoidke hinge kinni" pausi sissehingamisfaasi lõpus eh.output.two.on () # lülitage LED sisse kaks eh.motor.one.tagasi (0) eh.motor.two.backwards (max_intens_100) time.sleep (paus_3) eh.output.two.off () #kontrollige, kas stopp -nuppu on vajutatud stop_button = eh.input.three.read () # "väljahingamise" faas eh.output.three.on () # lülitage LED sisse kolm tolli x vahemikus (len (l_lin)): fx = max_intens*l_lin [x] # lineaarne kõver eh.motor.one.backwards (max_intens_100-fx) eh.motor.two.backwards (fx) time.sleep (pause_2) '' 'x vahemikus (len (l_cosin)): fx = max_intens*l_cosin [x] # lineaarne kõver eh.motor.one.backwards (max_intens_100-fx) eh.motor.two. tagurpidi (fx) time.sleep (paus_2) eh.output.three.off () #kontrollige, kas Stopp nuppu on vajutatud stop_button = eh.input.three.read () # paus "väljahingamise" ja "sissehingamise" faasi vahel eh. output.four.on () eh.motor.one.backwards (max_intens_100) eh.motor.two.backward (0) time.sleep (pause_4) eh.output.four.off () #kontrollige, kas stopp -nuppu vajutatakse stop_button = eh.input.three.read () # shutdown, kõigi väljundportide pööramine 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 ("Hüvasti hüvasti")

Kui soovite valgust kasutada iseseisva seadmena, nt. kui magamis- või äratustuli, võite lisada Pi-le mobiilse toiteallika ja lasta programm käivitada pärast käivitamist ning kasutada "Cron", et see teatud aegadel sisse või välja lülitada. "Croni" kasutamist on mujal väga üksikasjalikult kirjeldatud.

4. samm: videonäited

Selles etapis leiate hulga videoid, mis näitavad valgust normaalsetes (st kõik väärtused> 0, #1) ja äärmuslikes tingimustes, kuna kõik väärtused on seatud nulli (#2), ainult kaldteed (#3 ja #4), ja pole rampimist (#5 ).;

5. samm: mõned märkused

Palun vabandage valede terminite, kirjavigade ja vigade eest. Ma ei ole inglise keelt emakeelena kõnelev inimene ega mul pole täiendavaid teadmisi elektri, elektroonika ega programmeerimise alal. Mis tegelikult tähendab, et ma üritan kirjutada juhendatavat inglise keelt asjadest, kus ma vaevalt oma emakeeles õigeid termineid tean. Seega on kõik vihjed, parandused või parandusideed teretulnud. H

Soovitan: