Cuprins:

O lumină de respirație controlată de un Raspberry Pi: 5 pași
O lumină de respirație controlată de un Raspberry Pi: 5 pași

Video: O lumină de respirație controlată de un Raspberry Pi: 5 pași

Video: O lumină de respirație controlată de un Raspberry Pi: 5 pași
Video: High Density 2022 2024, Iulie
Anonim
O lumină de respirație controlată de un Raspberry Pi
O lumină de respirație controlată de un Raspberry Pi

"Lumina de exercițiu de respirație" descrisă aici este o lumină pulsatorie simplă și relativ ieftină care vă poate sprijini în respirație și vă poate ajuta să păstrați un ritm de respirație constant. S-ar putea folosi și de ex. ca lumină de noapte liniștitoare pentru copii. În etapa actuală este mai mult un prototip funcțional.

De asemenea, îl puteți folosi ca un exemplu ieftin și simplu de construit pentru "calcul fizic" cu un Raspberry Pi, de ex. pentru a fi folosit ca proiect educațional la începători, aici aveți intrări analogice (potențiometru rotativ) și digitale (buton), precum și ieșiri digitale (LED) și PWM (lanțuri LED), iar efectele modificărilor sunt vizibile direct.

Lumina trece prin cercuri repetitive formate din patru faze: o tranziție verde (superior) la roșu (inferior), o fază numai roșie, o tranziție roșu-verde și o fază numai verde. Lungimea acestor faze este definită de constante care pot fi modificate de potențiometre. Procesul poate fi pornit, întrerupt, reluat și oprit prin apăsarea butoanelor. LED-urile indică faza curentă. Se bazează pe exemplul „Firefly Light” de la Pimoroni (vezi aici). Similar cu „Firefly Light” necesită un Raspberry Pi (Zero), Pimoroni Explorer pHAT (sau HAT) și două lanțuri luminoase LED IKEA SÄRDAL. Ultimele sunt conectate la cele două porturi PMW / motor ale pHAT. În loc să folosesc un borcan, am plasat LED-urile într-o ramă foto IKEA. Am încercat să optimizez un pic scriptul original Python „firefly light”, implementând o funcție sinusală opțională pentru modificările de luminozitate / lățime a impulsului și am introdus două faze „hold” între fazele de estompare. În timp ce modificam parametrii pentru a găsi un model ușor care se simte mai confortabil, am constatat că dispozitivul poate fi util pentru a susține un model de respirație regulat foarte clar. Astfel, unii dintre voi ar putea găsi această „Lumină de respirație” utilă în scopuri de meditație sau de antrenament. Deoarece Explorer pHAT are patru intrări digitale și patru intrări analogice, este foarte ușor să reglați până la patru parametri diferiți utilizând potențiometre glisante sau rotative și să introduceți funcții de pornire / repornire / oprire pentru lumini folosind butoane. Acest lucru vă va permite să utilizați dispozitivul și să optimizați parametrii în funcție de nevoile dvs. fără ca un monitor să fie atașat la Pi.

În plus, Explorer pHAT vine cu patru porturi de ieșire digitale, care permit adăugarea de LED-uri sau buzzere, plus două porturi de 5V și două la sol și două porturi de ieșire PWM pentru motoare sau dispozitive similare. Vă rugăm să vă asigurați că utilizați rezistențele corecte pentru a reduce tensiunea pentru LED-urile dvs.

Biblioteca Python Explorer PHAT de la Pimoroni simplifică controlul tuturor acestor porturi I / O.

În această versiune instructivă a dispozitivului cu 0, 2 și 4 potențiometre și butoane sunt descrise. Alege-l pe cel care se potrivește nevoilor tale.

Pentru a rula dispozitivul în mod autonom, s-ar putea folosi fie un pachet de alimentare, fie combinația dintre un shim Pimoroni LiPo și o baterie LiPo, așa cum este descris pentru „Firefly Light”.

Versiuni actualizate 28 decembrie 2018: s-au adăugat versiunea „patru potențiometre și patru butoane”. Dec. 30: cod pentru versiunea cu 4 poti și imagini încântătoare adăugate.

Pasul 1: Materiale utilizate / necesare

Materiale utilizate / necesare
Materiale utilizate / necesare
Materiale utilizate / necesare
Materiale utilizate / necesare
Materiale utilizate / necesare
Materiale utilizate / necesare

- Raspberry Pi Zero (4,80 GBP la Pimoroni, Marea Britanie) și un card micro SD (> = 8 GB) cu Raspian

- Pimoroni Explorer pHAT (10 GBP la Pimoroni, Marea Britanie). Opțional: un antet cu un singur rând, cabluri jumper

- Lămpi cu lanț IKEA SÄRDAL cu 12 LED-uri (2 x, 3,99 € fiecare la IKEA Germania), sau orice lanț similar cu LED de 3-5V. - Rama foto IKEA RIBBA (13 x 18 cm, 2,49 € la IKEA Germania).

- O bucată de spumă PU (2 x 18 x 13,5 cm), pentru a ține LED-urile. Alternativ, ar putea fi utilizată spumă stiro.

- O bucată de plastic opac (18 x 13,5 cm), care acționează ca difuzor.

- Două coli de hârtie transparentă colorată (9 x 13,5 cm fiecare). Am folosit roșu și verde.

- O bucată de foaie de plastic subțire, foarte opacă (18 x 13,5 cm), care acționează ca ecran exterior. Am folosit o foaie subțire de policarbonat alb. Opțional, pentru versiunea reglabilă:

Pentru a regla cronometrarea rampei și durata platoului, sau, alternativ, alți parametri, cum ar fi luminozitatea.- 10, 20 sau 50 kOhm potențiometre (până la patru, am folosit două 10 kOhm respectiv patru 50 Ohm).

Ca butoane de pornire / oprire / pauză / reluare: - Butoane (până la patru, am folosit patru sau două)

Ca indicatori pentru fazele cercului: - LED-uri colorate și rezistențele necesare (vor depinde de caracteristicile LED-urilor pe care le veți utiliza).

  1. aproximativ 140 Ohm pentru 5,2 -> 2, 2 V (galben, portocaliu, roșu; unele LED-uri verzi),
  2. aproximativ 100 Ohm pentru 5,3 -> 3,3 V (unele LED-uri verzi; albastre, albe)

- Cabluri jumper și o placă de măsurare

Opțional, pentru o versiune cu baterie:

  • Pachet de alimentare Micro-USB de 5V sau
  • Pimoroni Zero LiPo shim și o baterie LiPo

Pasul 2: Lazout și asamblare

Lazout și Asamblare
Lazout și Asamblare
Lazout și Asamblare
Lazout și Asamblare
Lazout și Asamblare
Lazout și Asamblare

Asamblați Explorer pHAT așa cum este descris de producător. Am adăugat un antet feminin pe un singur rând pentru conectarea simplificată a cablurilor jumper la porturile I / O ale pHAT-urilor. Configurați Pi și instalați biblioteca Pimoroni pentru Explorer HAT / pHAT, așa cum este descris de Pimoroni. Opriți Pi și atașați pHAT-ul pe Pi. Scoateți pachetele de baterii din lanțurile cu LED-uri tăind firele și făcuți capătul firelor. Tăiați două cabluri jumper de două ori la mijloc, întindeți capătul firelor. Lipiți cablurile jumperului pe lanțurile cu LED-uri și izolați punctele de lipit folosind fie bandă adezivă, fie tuburi termocontractabile. Înainte de lipire, verificați care dintre fire trebuie conectate la porturile plus sau la masă și marcați-le în consecință. Am folosit fire jumper cu diferite culori. Tăiați spuma pentru a menține LED-urile, difuzorul și foile de ecran la dimensiunea adecvată. Pe placa de susținere a LED-urilor marcați pozițiile în care LED-urile trebuie plasate și introduceți găuri de 3-5 mm în spumă. Apoi introduceți cele 24 de LED-uri în pozițiile date. Așezați hârtiile colorate și plăcile difuzoare pe placa LED (a se vedea imaginile), așezați rama deasupra ambalajului. Fixați straturile de spumă în cadru, de ex. folosind bandă adezivă. Atașați cablurile benzii LED la porturile „motor” ale Explorer pHAT. Pentru versiunea reglabilă, plasați potențiometre, butoane, LED-uri de control (și / sau buzzere) și rezistențe pe panou și conectați-le cu porturile corespunzătoare la Explorer pHAT.

Porniți Pi și instalați bibliotecile necesare, așa cum este descris pe site-ul web Pimoroni, apoi rulați scriptul Python 3 furnizat. Dacă unul dintre lanțurile LED nu funcționează, ar putea fi conectat în direcția greșită. Apoi, puteți schimba conexiunile plus / minus de pe pHAT sau puteți face o schimbare în program, de ex. schimbați „eh.motor.one.backwards ()” la „… forward ()”.

Atașat găsiți scripturi cu setări fixe pe care le puteți modifica în cadrul programului și un exemplu în care puteți modifica unele setări cu potențiometre și puteți porni și opri ciclul de lumină folosind butoane. Nu ar trebui să fie prea dificil să reglați scripturile care se potrivesc propriului aspect al „luminii de respirație”.

Pasul 3: Scripturile Python

Biblioteca Python Pimoroni pentru Explorer HAT / pHAT face extrem de simplă adresarea componentelor atașate la porturile I / O ale HAT-urilor. Două exemple: „eh.two.motor.backwards (80)” conduce dispozitivul atașat la PWM / portul motor 2 cu 80% intensitate maximă în direcție inversă, „eh.output.three.flash ()” face conectat un LED la portul de ieșire numărul trei clipește până când este oprit. Am generat câteva variații ale luminii, adăugând practic niveluri crescute de control prin adăugarea a până la patru butoane și potențiometre. Atașat găsiți un program Python numit „Lumina de respirație fixă lin cosin.py "unde toate cele patru setări ale parametrilor trebuie modificate în cadrul programului. În plus, o versiune numită "Lumina de respirație var lin cosin.py" în care lungimea celor două faze de estompare poate fi ajustată folosind două potențiometre și cea mai elaborată versiune "Lumina de respirație var lin cosin3.py" pentru versiunea cu patru potențiometre și buton. Programele sunt scrise în Python 3.

În toate cazurile, procesul de ciclare poate fi evocat și oprit folosind două butoane, în versiunea cu patru butoane puteți, de asemenea, întrerupe și reporni procesul. În plus, patru LED-uri (colorate) pot fi conectate la porturile de ieșire digitale, indicând fazele specifice. Un ciclu al dispozitivului constă din patru faze:

- faza „inspirați”, în care LED-urile superioare sunt estompate scăzut și LED-urile inferioare cresc intensitatea

- faza „țineți-vă respirația”, unde LED-urile superioare sunt oprite, iar cele inferioare sunt setate la maxim

- faza de „expirație”, în care LED-urile inferioare sunt estompate scăzut și LED-urile superioare cresc intensitatea

- faza „rămâne expirat”, unde LED-urile inferioare sunt stinse și LED-urile superioare se aprind maxim.

Lungimea tuturor celor patru faze este definită de un parametru numeric individual, care poate fi fixat în program și / sau poate fi ajustat cu ajutorul unui potențiometru.

Un al cincilea parametru definește intensitatea maximă. Vă permite să setați luminozitatea maximă a LED-urilor, care ar putea fi la îndemână dacă doriți să îl utilizați ca lumină de noapte. În plus, vă poate permite să îmbunătățiți procesul de estompare, deoarece am impresia că este greu să vedeți o diferență între intensitatea de 80 și 100%.

Adăugam o funcție opțională (co-) sinusală pentru creșterea / scăderea luminozității, deoarece oferă o conexiune mai lină între faze. Simțiți-vă liber să încercați alte funcții. De exemplu. puteți elimina pauzele și puteți utiliza două funcții sinusale diferite (complexe) pentru ambele lanțuri LED și puteți regla frecvența și amplitudinea prin potențiometre.

# Lampa „respirație”: versiune cu două butoane și două potențiometre

# o modificare a exemplului de licurici pentru Pimoroni Explorer pHAT # aici: creșterea / scăderea sinoidului a valorilor motorului / PWM # pentru funcția liniară activarea funcției cosin liniare și mute # Această versiune „var” citește intrări analogice, suprascrie setările predefinite intrare digitală, butoane pentru pornire și oprire "" "pentru a porni la pornirea dispozitivului Pi, puteți utiliza Cron: Cron este un program Unix care este utilizat pentru a programa lucrări și are o funcție convenabilă @reboot care vă permite să rulați un script ori de câte ori Pi-ul dvs. pornește. Deschideți un terminal și tastați crontab -e pentru a edita crontab-ul. Derulați până la partea de jos a fișierului, depășind toate liniile care încep # și adăugați următoarea linie (presupunând că codul dvs. este la /home/pi/firefly.py): @reboot sudo python /home/pi/filename.py & Închideți și salvați crontabul (dacă utilizați nano, apoi apăsați control-x, y și introduceți pentru a ieși și a salva). "" "timp de import explorator de importat ca import import de valori matematice constante # sinus xmax = 316 pas = 5 # pas lățime, de ex. 315/5 dă 63 de pași / ciclu start_button = 0 # acesta definește starea unui buton conectat la portul de intrare nr. 1 stop_button = 0 # acesta definește starea unui buton conectat la portul de intrare nr. 3 pauză_1 = 0,02 # lungimi pauzelor la pași în faza „inspirați”, astfel rata de rampa și durata pauză_2 = 0,04 # setează rata de rampa „expirați” pauză_3 = 1,5 # pauză între fazele de inhalare și expirație (păstrați inhalarea) pauză_4 = 1,2 # pauză la sfârșitul expirației fază (mențineți expirat) max_intens = 0.9 # intensitate maximă / luminozitate max_intens_100 = 100 * max_intens # la fel în% # Poate permite optimizarea impresiei „respirației” LED-urilor și reducerea pâlpâirii. l_cosin = # listă cu valori derivate din cosinus (100> = x> = 0) l_lin = # listă cu valori liniare (100> = x> = 0) # generați lista de funcții cosinus pentru i în intervalul (0, 316, 3): # 315 este aproape de Pi * 100, 105 pași # print (i) n_cosin = [(((math.cos (i / 100)) + 1) / 2) * 100] #generate value # print (n_cosin) l_cosin = l_cosin + n_cosin #add value to list # print (l_cosin) # generează listă liniară pentru i în intervalul (100, -1, -1): # numărătoarea inversă de la 100 la zero n_lin = l_lin = l_lin + n_lin # print (l_lin) # afișează o listă plictisitoare print () print ("" "Pentru a începe ciclurile de lumină, apăsați butonul" Start "(Input One)" "") print () print ("" "Pentru a opri lumina, apăsați și mențineți apăsat butonul „Stop” (Intrare trei) „„ „)) print () # așteptați până când butonul Start este apăsat în timp ce (start_button == 0): start_button = eh.input.one.read () # read butonul numărul unu eh.output.one.blink () # LED intermitent numărul o dată.sleep (0.5) # citit de două ori pe secundă # se aprinde în timp ce (stop_button == 0): # citește intrările analogice UN și DOUĂ, definește setările set_1 = eh.an alog.one.read () # definește viteza de rampă roșu-> verde pauză_1 = set_1 * 0,02 # valorile vor fi cuprinse între 0 și 0,13 sec / imprimare pas ("set_1:", set_1, "-> pauză _1:", pauză_1) set_2 = eh.analog.two.read () # definește verde -> rata de rampă roșie pause_2 = set_2 * 0,02 # valorile vor fi cuprinse între 0 și 0,13 sec / tipărire pas ("set_2:", set_2, "-> pauză _2: ", pauză_2) # faza de" inhalare "eh.output.one.on () # poate conduce un LED sau un beeper '' 'pentru x în interval (len (l_lin)): fx = max_intens * l_lin [x] # curbă liniară eh.motor.one.backwards (fx) eh.motor.two.backwards (max_intens_100-fx) time.sleep (pause_1) eh.output.one.off () '' 'pentru x în interval (len (l_cosin)): fx = max_intens * l_cosin [x] # curbă liniară eh.motor.one.backwards (fx) eh.motor.two.backwards (max_intens_100-fx) time.sleep (pause_1) eh.output.one.off () # verificați dacă butonul Stop este apăsat stop_button = eh.input.three.read () # Pauză „Țineți-vă respirația” la sfârșitul fazei de inhalare eh.output.two.on () # porniți LED-ul doi eh.motor.one.backwards (0) eh.motor.two.backwards (max_intens_100) time.sleep (pause_3) eh.output.two.off () # verificați dacă butonul Stop este apăsat stop_button = eh.input.three.read () # faza "expiră" eh.output.three.on () # porniți LED-ul de trei "pentru x în interval (len (l_lin)): fx = max_intens * l_lin [x] # curbă liniară eh.motor.one.backwards (max_intens_100-fx) eh.motor.two.backwards (fx) time.sleep (pause_2) '' 'pentru x în interval (len (l_cosin)): fx = max_intens * l_cosin [x] # curbă liniară eh.motor.one.backwards (max_intens_100-fx) eh.motor.two. backwards (fx) time.sleep (pause_2) eh.output.three.off () #verificați dacă butonul Stop este apăsat stop_button = eh.input.three.read () # pauză între fazele „expiră” și „inhalați” eh. output.four.on () eh.motor.one.backwards (max_intens_100) eh.motor.two.backwards (0) time.sleep (pause_4) eh.output.four.off () # verificați dacă butonul Stop este apăsat stop_button = eh.input.three.read () # închidere, rândul său, toate porturile de ieșire 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 („Pa la revedere”)

Dacă doriți să utilizați lumina ca dispozitiv autonom, de ex. ca lumină de repaus sau de trezire, puteți adăuga o sursă de alimentare mobilă la Pi și puteți porni programul după pornire și puteți utiliza „Cron” pentru a-l porni sau opri la anumite momente. Cum se folosește „Cron” a descris în detaliu în alte părți.

Pasul 4: Exemple video

În acest pas, veți găsi un număr de videoclipuri care prezintă lumina în condiții normale (adică toate valorile> 0, # 1) și condiții extreme, deoarece toate valorile sunt setate la zero (# 2), doar la rampă (# 3 și # 4), și fără rampă (# 5 și # 6).

Pasul 5: câteva observații

Vă rugăm să vă scuzați orice termen greșit, greșeli de eroare și erori. Nu sunt vorbitor nativ de engleză și nici nu am cunoștințe detaliate în domeniul electricității, electronicii sau programării. Ceea ce înseamnă de fapt că încerc să scriu o engleză instructabilă despre lucruri în care nu știu cu greu termenii corecti în propria mea limbă. Astfel, orice sfaturi, corecturi sau idei de îmbunătățire sunt binevenite

Recomandat: