Talaan ng mga Nilalaman:

Isang Banayad na Paghinga na Kinokontrol ng isang Raspberry Pi: 5 Hakbang
Isang Banayad na Paghinga na Kinokontrol ng isang Raspberry Pi: 5 Hakbang

Video: Isang Banayad na Paghinga na Kinokontrol ng isang Raspberry Pi: 5 Hakbang

Video: Isang Banayad na Paghinga na Kinokontrol ng isang Raspberry Pi: 5 Hakbang
Video: Часть 1 - Аудиокнига Герберта Уэллса «Анна Вероника» (гл. 01–03) 2024, Hulyo
Anonim
Isang Banayad na Paghinga na Kinokontrol ng isang Raspberry Pi
Isang Banayad na Paghinga na Kinokontrol ng isang Raspberry Pi

Ang "Breathing Exercise Light" na inilarawan dito ay isang simple at medyo hindi magaan na ilaw ng pag-pulso na maaaring suportahan ka sa iyong paghinga execises at matulungan kang mapanatili ang isang pare-parehong ritmo sa paghinga. Maaari din itong magamit hal. bilang isang nakapapawing pagod na ilaw sa gabi para sa mga bata. Sa kasalukuyang yugto ito ay higit na isang gumaganang prototype.

Maaari mo ring gamitin ito bilang isang mura at simpleng upang bumuo ng halimbawa para sa "pisikal na computing" gamit ang isang Raspberry Pi, hal. upang magamit bilang isang pang-edukasyon na proyekto sa antas ng mga nagsisimula, Narito mayroon kang analog (paikot na potensyomiter) at mga digital na input (push button) pati na rin digital (LED) at PWM output (LED chain), at ang mga epekto ng mga pagbabago ay direktang nakikita.

Ang ilaw ay dumadaloy sa mga paulit-ulit na bilog na binubuo ng apat na phase: isang berde (itaas) hanggang pula (mas mababa) na paglipat, isang pulang yugto lamang, isang red-to-green na paglipat at isang berdeng-bahagi lamang. Ang haba ng mga bahaging ito ay tinukoy ng mga pare-pareho na maaaring mabago ng mga potensyal. Maaaring simulan ang proseso, i-pause, ipagpatuloy at itigil sa pamamagitan ng pagpindot sa mga pindutan ng push. Ang mga LED ay nagpapahiwatig ng kasalukuyang yugto. Ito ay batay sa halimbawa ng "Firefly Light" ni Pimoroni (tingnan dito). Katulad ng "Firefly Light" nangangailangan ito ng isang Raspberry Pi (Zero), ang Pimoroni Explorer pHAT (o HAT) at dalawang IKEA SÄRDAL LED light chain. Ang paglaon ay konektado sa dalawang PMW / motor port ng phat. Sa halip na gumamit ng isang garapon, inilagay ko ang mga LED sa isang frame ng larawan ng IKEA. Sinusubukan kong i-optimize nang kaunti ang orihinal na script ng "firefly light" na python, na nagpapatupad ng isang opsyonal na pagpapaandar ng sinus para sa mga pagbabago sa liwanag / pulso na lapad at ipinakilala ang dalawang "hold" na phase sa pagitan ng mga dimming phase. Habang binabago ang mga parameter upang makahanap ng isang light pattern na pakiramdam ay mas komportable, nalaman kong ang aparato ay maaaring makatulong upang suportahan ang isang napakalinaw na tinukoy, regular na pattern ng paghinga. Kaya, ang ilan sa inyo ay maaaring makita na kapaki-pakinabang ang "Banayad na Paghinga" para sa mga hangarin sa pagninilay o pagsasanay. Tulad ng Explorer pHAT ay may apat na digital at apat na analog input, napakadali upang makontrol ang hanggang sa apat na magkakaibang mga parameter gamit ang slide o rotary potentiometers, at upang ipakilala ang mga pagpapaandar / pagsisimula / pag-andar para sa mga ilaw gamit ang mga push button. Papayagan ka nitong gamitin ang aparato at i-optimize ang mga parameter sa iyong mga pangangailangan nang walang monitor ay dapat na nakakabit sa Pi.

Bilang karagdagan ang Explorer PHAT ay mayroong apat na digital out-port, na nagbibigay-daan upang magdagdag ng mga LED o buzzer, kasama ang dalawang 5V at dalawang mga port ng Ground at dalawang mga port ng PWM para sa mga motor o katulad na aparato. Mangyaring tiyaking gumagamit ka ng tamang resistors upang mabawasan ang boltahe para sa iyong mga LED.

Ang Pimoroni's Explorer PHAT python library ay ginagawang napaka-simple upang makontrol ang lahat ng mga port na I / O.

Sa itinuturo na mga bersyon ng aparato na may 0, 2 at 4 na potentiometers at mga pindutan ay inilarawan. Piliin ang isa na umaangkop sa iyong mga pangangailangan.

Upang mapatakbo nang solo ang aparato, maaaring gumamit ang alinman sa isang power pack, o ang kombinasyon ng isang Pimoroni LiPo shim at isang baterya ng LiPo, tulad ng inilarawan para sa "Firefly Light".

Nai-update na mga bersyon Disyembre 28, 2018: Naidagdag ang bersyon na 'apat na potensyal at apat na mga pindutan ng pindutan. Dec. 30: code para sa bersyon ng 4-poti at idinagdag ang mga fritzing na imahe.

Hakbang 1: Mga Materyal na Ginamit / Kinakailangan

Mga Materyal na Ginamit / Kinakailangan
Mga Materyal na Ginamit / Kinakailangan
Mga Materyal na Ginamit / Kinakailangan
Mga Materyal na Ginamit / Kinakailangan
Mga Materyal na Ginamit / Kinakailangan
Mga Materyal na Ginamit / Kinakailangan

- Raspberry Pi Zero (4.80 GBP sa Pimoroni, UK), at isang micro SD card (> = 8 GB) w / Raspian

- Pimoroni Explorer PHAT (10 GBP sa Pimoroni, UK). Opsyonal: isang solong row ng header, jumper cables

- IKEA SÄRDAL LED chain lights w / 12 LEDs (2 x, 3.99 € bawat isa sa IKEA Germany), o anumang katulad na 3-5V LED chain.- IKEA RIBBA picture frame (13 x 18 cm, 2.49 € sa IKEA Germany).

- Isang piraso ng PU foam (2 x 18 x 13.5 cm), upang hawakan ang mga LED. Maaaring gamitin ang alternatibong foam na styro.

- Isang piraso ng opaque plastic (18 x 13.5 cm), kumikilos bilang diffusor.

- Dalawang sheet ng kulay na transparent na papel (9 x 13.5 cm bawat isa). Gumamit ako ng pula at berde.

- Isang piraso ng manipis, mataas na opaque plastic sheet (18 x 13.5 cm), kumikilos bilang panlabas na screen. Gumamit ako ng isang manipis na puting polycarbonate sheet. Opsyonal, para sa maaayos na bersyon:

Upang ayusin ang oras ng pag-ramping at tagal ng talampas, o kahalili iba pang mga parameter tulad ng ningning. - 10, 20 o 50 kOhm potentiometers (hanggang sa apat, gumamit ako ng dalawang 10 kOhm ayon sa pagkakabanggit apat na 50 Ohm).

Bilang mga pindutan ng pagsisimula / pagtigil / pag-pause / resume: - Mga pindutan ng push (hanggang sa apat, ginamit ko ang dalawa o dalawa)

Bilang mga tagapagpahiwatig para sa mga phase ng bilog: - Mga may kulay na LED at ang kinakailangang resistors (ay depende sa mga katangian ng mga LED na gagamitin mo).

  1. tungkol sa 140 Ohm para sa 5.2 -> 2, 2 V (dilaw, orange, pula; ilang mga berdeng LEDs),
  2. tungkol sa 100 Ohm para sa 5.3 -> 3.3 V (ilang berde; asul, puting LEDs)

- Mga Jumper cable at isang breadboard

Opsyonal, para sa isang bersyon na hinimok ng baterya:

  • 5V Micro-USB power pack, o
  • Pimoroni Zero LiPo shim at isang baterya ng LiPo

Hakbang 2: Lazout at Assembly

Lazout at Assembly
Lazout at Assembly
Lazout at Assembly
Lazout at Assembly
Lazout at Assembly
Lazout at Assembly

Ipunin ang Explorer PHAT tulad ng inilarawan ng gumawa. Nagdagdag ako ng isang solong hilera na header ng babae para sa pinasimple na koneksyon ng mga jumper cable sa mga port ng I / O na pHAT. I-set up ang iyong Pi at i-install ang Pimoroni library para sa Explorer HAT / pHAT, tulad ng inilarawan ng Pimoroni. Patayin ang Pi at ikabit ang pHAT sa Pi. Alisin ang mga pack ng baterya mula sa mga LED chain sa pamamagitan ng paggupit ng mga wire at i-lata ang dulo ng mga wire. Gupitin ang dalawang 2x male jumper cables sa gitna, i-lata ang dulo ng mga wire. Paghinang ang mga jumper cable sa mga LED chain, at ihiwalay ang mga soldering point gamit ang alinman sa adhesive tape o shrink tubing. Bago ang paghihinang, suriin kung alin sa mga wire ang dapat na konektado sa mga plus o ground port, at markahan ang mga ito nang naaayon. Gumamit ako ng mga wire ng jumper na may iba't ibang kulay. Gupitin ang foam upang hawakan ang mga LED, ang diffusor at mga sheet ng screen sa naaangkop na laki. Sa LED hawak na plato markahan ang mga posisyon kung saan ang mga LED ay dapat ilagay at suntukin ang 3-5 mm na mga butas sa foam. Pagkatapos ay ipasok ang 24 LEDs sa mga ibinigay na posisyon. Ilagay ang mga may kulay na papel at diffusor plate sa LED plate (tingnan ang mga imahe), inilalagay nila ang frame sa itaas ng pack. Ayusin ang mga layer ng foam sa frame, hal. gamit ang adhesive tape. Ikabit ang mga LED strip cable sa mga "motor" port ng Explorer PHAT. Para sa naaayos na bersyon maglagay ng mga potensyal, itulak ang mga pindutan, kontrolin ang mga LED (at / o mga buzzer) at mga resistor sa breadboard at ikonekta ang mga ito sa mga kaukulang port sa Explorer PHAT.

Simulan ang iyong Pi at i-install ang kinakailangang mga aklatan, tulad ng inilarawan sa website ng Pimoroni, pagkatapos ay patakbuhin ang ibinigay na script ng Python 3. Kung ang isa sa mga LED chain ay hindi gumagana maaaring ito ay konektado sa maling direksyon. Pagkatapos ay maaari mong baguhin ang mga koneksyon ng plus / minus sa pHAT o gumawa ng pagbabago sa programa, hal. palitan ang "eh.motor.one.backward ()" sa "… pasulong ()".

Nakalakip na mahahanap mo ang mga script na may mga nakapirming setting na maaari mong baguhin sa loob ng programa at isang halimbawa kung saan maaari mong baguhin ang ilan sa mga setting gamit ang mga potensyal, at simulan at ihinto ang light cycle gamit ang mga push button. Hindi dapat maging napakahirap upang ayusin ang mga script na akma sa iyong sariling layout ng "ilaw ng paghinga".

Hakbang 3: Ang Mga Script ng Python

Pimoroni's Python library para sa Explorer HAT / PHAT ginagawang napaka-simple upang idagdag ang mga sangkap na nakakabit sa mga port ng I / O ng HATs. Dalawang halimbawa: "eh.two.motor.backward (80)" hinihimok ang aparato na nakakabit sa PWM / motor port 2 na may 80% maximum na intensity sa paatras na direksyon, "eh.output.three.flash ()" ay gumagawa ng isang konektado sa LED upang mai-output ang numero ng tatlong flash hanggang sa ito ay tumigil. Nakagawa ako ng ilang mga pagkakaiba-iba ng ilaw, karaniwang nagdaragdag ng pagtaas ng mga antas ng kontrol sa pamamagitan ng pagdaragdag ng hanggang sa apat na mga pindutan ng push at potentiometers. Nakalakip nakita mo ang isang programa ng Python na tinatawag na "Breathing light nakapirming lin cosin.py "kung saan ang lahat ng mga setting ng apat na parameter ay kailangang mabago sa loob ng programa. Bilang karagdagan isang bersyon na tinatawag na "Breathing light var lin cosin.py" kung saan ang haba ng dalawang dimming phase ay maaaring maiakma gamit ang dalawang potentiometers at ang pinakahusay na bersyon na "Breathing light var lin cosin3.py" para sa apat na potensyomiter at push button na bersyon. Ang mga programa ay nakasulat sa Python 3.

Sa lahat ng mga kaso ang proseso ng pagbibisikleta ay maaaring pukawin at tumigil sa paggamit ng dalawang mga pindutan ng push, sa bersyon ng apat na pindutan maaari mo ring magambala at muling simulan ang proseso. Bilang karagdagan apat (may kulay) na mga LED ay maaaring konektado sa mga digital output port, na nagpapahiwatig ng mga tukoy na phase. Ang isang ikot ng aparato ay binubuo ng apat na phase:

- ang yugto na "lumanghap", kung saan ang mas mataas na mga LED ay malabo at ang mas mababang mga LED ay nagdaragdag ng kasidhian

- ang yugto ng "hawakan ang iyong hininga", kung saan naka-off ang mga itaas na LED at ang mas mababang mga LED ay nakatakda sa maximum

- ang yugto na "huminga nang palabas", kung saan ang mga mas mababang LEDs ay mababa ang dimmed at ang itaas na LEDs ay nagdaragdag ng kasidhian

- ang yugto na "manatiling hininga", kung saan ang mga mas mababang LEDs ay naka-patay at ang itaas na mga ilaw ng LEDs ay maximum.

Ang haba ng lahat ng apat na mga phase ay tinukoy ng isang indibidwal na parameter na numeric, na maaaring maayos sa programa at / o maaaring ayusin gamit ang isang potensyomiter.

Ang isang ikalimang parameter ay tumutukoy sa maximum na kasidhian. Pinapayagan kang itakda ang maximum na ningning ng mga LED, na maaaring maging madaling gamiting kung nais mong gamitin ito bilang isang nightlight. Bilang karagdagan maaari kang payagan na mapabuti ang proseso ng paglabo, dahil mayroon akong impression na mahirap makita ang pagkakaiba sa pagitan ng 80 at 100% na intensidad.

Nagdaragdag ako ng isang opsyonal na (co-) pagpapaandar ng sinus para sa pagtaas / pagbaba ng ningning, dahil nagbibigay ito ng isang mas maayos na koneksyon sa pagitan ng mga phase. Huwag mag-atubiling subukan ang iba pang mga pagpapaandar. Hal. maaari mong alisin ang mga break at gumamit ng dalawang magkakaibang (kumplikadong) sinus function para sa parehong LED chain at ayusin ang dalas at amplitude ng mga potentiometers.

# Ang "paghinga" na ilawan: dalawang pindutan at dalawang bersyon ng potensyomiter

# isang pagbabago ng halimbawa ng alitaptap para sa Pimoroni Explorer pHAT # dito: sinoid pagtaas / pagbaba ng mga halaga ng motor / PWM # para sa linear function na unmute linear at mute cosin function # Ang bersyon na "var" ay binabasa ang mga analog na input, na-override ang mga paunang natukoy na setting # na binabasa digital input, mga pindutan upang simulan at ihinto ang "" "upang magsimula sa paglipat sa Pi maaari mong gamitin ang Cron: Cron ay isang programa ng Unix na ginagamit upang mag-iskedyul ng mga trabaho, at mayroon itong isang maginhawang pagpapaandar na @reboot na nagbibigay-daan sa iyo upang magpatakbo ng isang script tuwing ang iyong Pi boots. Magbukas ng isang terminal, at i-type ang crontab -e upang mai-edit ang iyong crontab. Mag-scroll hanggang sa ilalim ng file, lagpas sa lahat ng mga linya na nagsisimula sa #, at idagdag ang sumusunod na linya (sa pag-aakala na ang iyong code ay nasa /home/pi/firefly.py): @reboot sudo python /home/pi/filename.py & Isara at i-save ang iyong crontab (kung gumagamit ka ng nano pagkatapos ay pindutin ang control-x, y at ipasok upang lumabas at i-save). "" "i-import ang oras ng pag-import ng explorerhat bilang eh pag-import ng matematika ng pare-pareho ang halaga #sinus xmax = 316 hakbang = 5 # ang lapad ng hakbang, hal Nagbibigay ang 315/5 ng 63 hakbang / cycle start_button = 0 # tinutukoy nito ang estado ng isang pindutan ng push na konektado sa input port no 1 stop_button = 0 # tinutukoy nito ang estado ng isang pindutan ng push na konektado sa input port no 3 pause_1 = 0.02 # nagtatakda ng haba ng mga break sa loob ng mga hakbang sa yugto ng "lumanghap", sa gayon ang rate ng ramping at tagal pause_2 = 0.04 # set "huminga nang palabas" rate ng ramping pause_3 = 1.5 # break sa pagitan ng mga inhale at exhale phase (panatilihing nalanghap) pause_4 = 1.2 # break sa dulo ng pagbuga phase (panatilihin ang pagbuga) max_intens = 0.9 # maximum intensity / brightness max_intens_100 = 100 * max_intens # pareho sa% # Maaaring payagan na i-optimize ang impression na "paghinga" ng mga LED at mabawasan ang pagkutitap. l_cosin = # listahan na may mga nagkuhang halaga ng cosinus (100> = x> = 0) l_lin = # lista na may mga linear na halaga (100> = x> = 0) # bumuo ng listahan ng pagpapaandar ng cosinus para sa i sa saklaw (0, 316, 3): Ang # 315 ay malapit sa Pi * 100, 105 mga hakbang # print (i) n_cosin = [((((math.cos (i / 100)) + 1) / 2) * 100] #nilikha ang halagang # print (n_cosin) l_cosin = l_cosin + n_cosin #add na halaga sa listahan ng # print (l_cosin) # bumuo ng linear na listahan para sa ako sa saklaw (100, -1, -1): # count down mula 100 hanggang zero n_lin = l_lin = l_lin + n_lin # print (l_lin) # ay nagpapakita ng isang boring listahan ng pag-print () print ("" "Upang simulan ang light cycle, pindutin ang" Start "Button (Input One)" "") print () print ("" "To stop ang ilaw, pindutin nang matagal ang "Stop" Button (Input Three) "" ") print () # maghintay hanggang mapindot ang Start Button habang (start_button == 0): start_button = eh.input.one.read () # read button number one eh.output.one.blink () # blink LED number one time.sulog (0.5) # basahin ng dalawang beses sa isang segundo #run lights habang (stop_button == 0): # basahin ang mga analog na input na ONE at DALAWA, tukuyin ang mga setting na set_1 = eh.an alog.one.read () # tumutukoy sa pula-> berde na rate ng pag-ramping pause_1 = set_1 * 0.02 # ang mga halaga ay saklaw sa pagitan ng 0 at 0.13 sec / hakbang na pag-print ("set_1:", set_1, "-> pause _1:", pause_1) set_2 = eh.analog.two.read () # tumutukoy sa berde -> red ramping rate pause_2 = set_2 * 0.02 # ang mga halaga ay saklaw sa pagitan ng 0 at 0.13 sec / step print ("set_2:", set_2, "-> pause _2: ", pause_2) #" inhalation "phase eh.output.one.on () # ay maaaring maghimok ng isang LED o beeper '' 'para sa x sa saklaw (len (l_lin)): fx = max_intens * l_lin [x] # linear curve eh.motor.one.backward (fx) eh.motor.two.backward (max_intens_100-fx) time.s Sleep (pause_1) eh.output.one.off () "" para sa x sa saklaw (len (l_cosin)): fx = max_intens * l_cosin [x] # linear curve eh.motor.one.backward (fx) eh.motor.two.backward (max_intens_100-fx) time.s Sleep (pause_1) eh.output.one.off () # suriin kung pinindot ang Stop Button stop_button = eh.input.three.read () # "Keep your breath" pause at the end of the inhalation phase eh.output.two.on () # turn on LED two eh.motor.one. pabalik (0) eh.motor.two.backward (max_intens_100) time.s Sleep (pause_3) eh.output.two.off () #check kung ang Pindutan ng Stop ay pinindot stop_button = eh.input.three.read () # "huminga nang palabas" phase eh.output.three.on () # i-on ang LED ng tatlong "para sa saklaw na x (len (l_lin)): fx = max_intens * l_lin [x] # linear curve eh.motor.one.backward (max_intens_100-fx) eh.motor.two.backward (fx) time.s Sleep (pause_2) "" para sa x sa saklaw (len (l_cosin)): fx = max_intens * l_cosin [x] # linear curve eh.motor.one.backward (max_intens_100-fx) eh.motor.two. paatras (fx) oras.sulog (pause_2) eh.output.three.off () #check kung ang Pindutan ng Stop ay pinindot ang stop_button = eh.input.three.read () # pause sa pagitan ng mga "huminga nang palabas" at "lumanghap" na mga yugto eh. output.four.on () eh.motor.one.backward (max_intens_100) eh.motor.two.backward (0) time.s Sleep (pause_4) eh.output.four.off () #check kung ang Stop Button ay pinindot na 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 ("Bye bye")

Kung nais mong gamitin ang ilaw bilang isang stand-alone na aparato, hal. bilang ilaw sa pagtulog o paggising, maaari kang magdagdag ng mapagkukunang mobile power sa Pi at simulan ang programa pagkatapos ng pag-boot at gamitin ang "Cron" upang i-on o i-off ito sa mga naibigay na oras. Kung paano gamitin ang "Cron" ay inilarawan sa malawak na detalye sa ibang lugar.

Hakbang 4: Mga Halimbawa ng Video

Sa hakbang na ito mahahanap mo ang isang bilang ng mga video na nagpapakita ng ilaw sa ilalim ng normal (ibig sabihin, lahat ng mga halaga> 0, # 1) at matinding mga kundisyon, tulad ng lahat ng mga halagang itinakda sa zero (# 2), ramping lamang (# 3 ), at walang ramping (# 5 ).;

Hakbang 5: Ilang Mga Pahayag

Mangyaring humingi ng paumanhin sa anumang maling tuntunin, typo at error. Hindi ako katutubong nagsasalita ng Ingles, o may naidagdag din akong kaalaman sa electrics, electronics o programing. Na nangangahulugang sinusubukan kong sumulat ng isang itinuturo sa Ingles tungkol sa mga bagay na hindi ko alam ang tamang mga term sa aking sariling wika. Sa gayon ang anumang mga pahiwatig, pagwawasto o ideya para sa pagpapabuti ay malugod na tinatanggap. H.

Inirerekumendang: