Taula de continguts:

Una llum de respiració controlada per un Raspberry Pi: 5 passos
Una llum de respiració controlada per un Raspberry Pi: 5 passos

Vídeo: Una llum de respiració controlada per un Raspberry Pi: 5 passos

Vídeo: Una llum de respiració controlada per un Raspberry Pi: 5 passos
Vídeo: Часть 1. Аудиокнига Герберта Уэллса «Машина времени» (гл. 01–06) 2024, Juliol
Anonim
Una llum de respiració controlada per un Raspberry Pi
Una llum de respiració controlada per un Raspberry Pi

La "Llum d'exercici de respiració" que es descriu aquí és una llum polsant senzilla i relativament barata que us pot ajudar a exercir la respiració i ajudar-vos a mantenir un ritme respiratori constant. També es podria utilitzar per exemple com a llum nocturna relaxant per als nens. En l'etapa actual, és més aviat un prototip de treball.

També podeu utilitzar-lo com un exemple econòmic i senzill de construir per a "computació física" amb un Raspberry Pi, per exemple. per utilitzar-lo com a projecte educatiu a nivell de principiants, aquí teniu entrades analògiques (potenciòmetre rotatiu) i digitals (polsador), així com sortida digital (LED) i PWM (cadenes LED), i els efectes dels canvis són directament visibles.

La llum passa per cercles repetitius que consten de quatre fases: una transició de verd (superior) a vermell (inferior), una fase només de vermell, una transició de vermell a verd i una fase només de verd. La longitud d’aquestes fases es defineix per constants que poden ser modificades per potenciòmetres. Es pot iniciar, posar en pausa, reprendre i aturar el procés prement els botons de pressió. Els LED indiquen la fase actual. Es basa en l’exemple de “Firefly Light” de Pimoroni (vegeu aquí). Similar a la "Firefly Light", requereix un Raspberry Pi (Zero), el Pimoroni Explorer pHAT (o HAT) i dues cadenes de llum LED IKEA SÄRDAL. Els darrers estan connectats als dos ports PMW / motor del pHAT. En lloc d’utilitzar un pot, he posat els LEDs en un marc d’imatges IKEA. He estat intentant optimitzar una mica el script python original de "llum de lluvia", implementant una funció sinusal opcional per als canvis de brillantor / amplada de pols i he introduït dues fases de "retenció" entre les fases de regulació. Tot i modificar els paràmetres per trobar un patró lleuger que se sent més còmode, vaig trobar que el dispositiu pot ajudar a donar suport a un patró de respiració regular clarament definit. Per tant, és possible que alguns de vosaltres trobin útil aquesta "llum de respiració" amb finalitats de meditació o d'entrenament. Com que l’Explorer pHAT té quatre entrades digitals i quatre entrades analògiques, és molt fàcil regular fins a quatre paràmetres diferents mitjançant potenciòmetres rotatius o rotatius i introduir funcions d’inici / reinici / aturat dels llums mitjançant els botons de pressió. Això us permetrà utilitzar el dispositiu i optimitzar els paràmetres segons les vostres necessitats sense que s’hagi d’adjuntar cap monitor al Pi.

A més, l'Explorer pHAT inclou quatre ports de sortida digitals, que permeten afegir LEDs o timbres, més dos ports de 5 V i dos de terra i dos ports de sortida PWM per a motors o dispositius similars. Assegureu-vos que utilitzeu les resistències correctes per reduir el voltatge dels vostres LED.

La biblioteca Python Explorer PHAT de Pimoroni fa que sigui extremadament senzill controlar tots aquests ports d'E / S.

En aquesta instrucció es descriuen versions del dispositiu amb 0, 2 i 4 potenciòmetres i botons. Trieu el que s’adapti a les vostres necessitats.

Per fer funcionar el dispositiu de forma autònoma, es podria utilitzar un paquet d'alimentació o bé la combinació d'una carcassa LiPo Pimoroni i una bateria LiPo, tal com es descriu per al "Firefly Light".

Versions actualitzades el 28 de desembre de 2018: versió afegida de "quatre potenciòmetres i quatre botons policials". 30: codi per a la versió de 4 poti i imatges engrescadores afegides.

Pas 1: materials utilitzats / necessaris

Materials utilitzats / requerits
Materials utilitzats / requerits
Materials utilitzats / requerits
Materials utilitzats / requerits
Materials utilitzats / requerits
Materials utilitzats / requerits

- Raspberry Pi Zero (4,80 GBP a Pimoroni, Regne Unit) i una targeta micro SD (> = 8 GB) amb Raspian

- Pimoroni Explorer pHAT (10 GBP a Pimoroni, Regne Unit). Opcional: una capçalera d'una sola fila, cables de pont

- Llums de cadena LED IKEA SÄRDAL amb 12 LEDs (2 x, 3,99 € cadascun a IKEA Alemanya), o qualsevol cadena LED similar de 3-5V.

- Un tros d'escuma de PU (2 x 18 x 13,5 cm) per subjectar els LED. Alternativament, es pot utilitzar escuma estiro.

- Una peça de plàstic opac (18 x 13,5 cm), que actua com a difusor.

- Dos fulls de paper transparent de colors (9 x 13,5 cm cadascun). Jo feia servir vermell i verd.

- Un tros de full de plàstic prim i altament opac (18 x 13,5 cm), que actua com a pantalla exterior. He utilitzat una làmina fina de policarbonat blanc. Opcional, per a la versió ajustable:

Per ajustar el temps de ramping i la durada de l'altiplà, o alternativament altres paràmetres com la brillantor: 10, 20 o 50 kOhm potenciòmetres (fins a quatre, he utilitzat dos 10 kOhm respectivament quatre 50 Ohm).

Com a botons d'inici / aturada / pausa / reactivació: - Polsadors (fins a quatre, he utilitzat quatre o dos)

Com a indicadors de les fases del cercle: - LEDs de colors i les resistències necessàries (dependran de les característiques dels LED que utilitzeu).

  1. uns 140 Ohm per a 5,2 -> 2, 2 V (groc, taronja, vermell; alguns LEDs verds),
  2. uns 100 Ohm per 5,3 -> 3,3 V (alguns LEDs verds; blaus i blancs)

- Cables de pont i una placa de tall

Opcional, per a una versió amb bateria:

  • Paquet d'alimentació micro-USB de 5V o
  • Pimoroni Zero LiPo shim i una bateria LiPo

Pas 2: Lazout i muntatge

Lazout i Assemblea
Lazout i Assemblea
Lazout i Assemblea
Lazout i Assemblea
Lazout i Assemblea
Lazout i Assemblea

Munteu l'Explorer pHAT tal com el descriu el fabricant. He afegit una capçalera femenina d'una sola fila per a la connexió simplificada de cables de pont als ports d'E / S de pHAT. Configureu el vostre Pi i instal·leu la biblioteca Pimoroni per a Explorer HAT / pHAT, tal com ho descriu Pimoroni. Apagueu el Pi i fixeu el pHAT al Pi. Traieu els paquets de bateries de les cadenes de LED tallant els cables i estanyant l'extrem dels cables. Tallar dos cables jumper masculins de 2x al centre, estanyar l'extrem dels cables. Soldeu els cables del pont a les cadenes LED i aïlleu els punts de soldadura mitjançant cinta adhesiva o tubs retràctils. Abans de soldar, comproveu quins dels cables s’han de connectar als ports més o de terra i marqueu-los en conseqüència. Vaig fer servir cables de diferents colors: tallar l’escuma per mantenir els leds, el difusor i els fulls de pantalla a la mida adequada. A la placa de subjecció del LED, marqueu les posicions on s'han de col·locar els LED i punxeu forats de 3-5 mm a l'escuma. A continuació, introduïu els 24 LED a les posicions indicades. Col·loqueu els papers de colors i les plaques difusores a la placa LED (vegeu les imatges) i col·loqueu el marc sobre el paquet. Fixeu les capes d’escuma al marc, p. mitjançant cinta adhesiva. Connecteu els cables de la tira LED als ports "motor" de l'Explorer pHAT. Per a la versió sintonitzadora, col·loqueu potenciòmetres, polsadors, LEDs de control (i / o brunzidors) i resistències a la placa de connexió i connecteu-los amb els ports corresponents a l’Explorer pHAT.

Inicieu el Pi i instal·leu les biblioteques necessàries, tal com es descriu al lloc web de Pimoroni, i després executeu l'script Python 3 proporcionat. Si una de les cadenes LED no funciona, és possible que estigui connectada en la direcció equivocada. A continuació, podeu canviar les connexions més / menys al pHAT o fer un canvi al programa, per exemple. canvieu "eh.motor.one.backwards ()" a "… endavant ()".

Adjunt trobareu scripts amb paràmetres fixos que podeu canviar dins del programa i un exemple on podeu modificar alguns dels paràmetres amb potenciòmetres, i iniciar i aturar el cicle de llum mitjançant els botons de pressió. No hauria de ser massa difícil ajustar els scripts al vostre propi disseny de la "llum respirant".

Pas 3: els scripts Python

La biblioteca Python de Pimoroni per a Explorer HAT / pHAT fa que sigui extremadament senzill dirigir-se als components connectats als ports d'E / S dels HAT. Dos exemples: "eh.two.motor.backwards (80)" condueix el dispositiu connectat al port 2 del PWM / motor amb una intensitat màxima del 80% en sentit invers, "eh.output.three.flash ()" fa connectar un LED al port de sortida número tres de flaix fins que s’aturi. He generat algunes variacions de la llum, bàsicament afegint nivells creixents de control afegint fins a quatre botons i potenciòmetres. Adjunt trobareu un programa Python anomenat "Respiració de llum fixa.py "on s'han de modificar els quatre paràmetres del programa. A més, una versió anomenada "Breathing light var lin cosin.py" on es pot ajustar la longitud de les dues fases de regulació mitjançant dos potenciòmetres i la versió més elaborada "Breathing light var lin cosin3.py" per a la versió de quatre potenciòmetres i polsadors. Els programes estan escrits en Python 3.

En tots els casos, es pot evocar i aturar el procés de ciclisme mitjançant dos botons, a la versió de quatre botons també es pot interrompre i reiniciar el procés. A més, es poden connectar quatre LED (de colors) als ports de sortida digital, que indiquen les fases específiques. Un cicle del dispositiu consta de quatre fases:

- la fase d '"inhalació", on els LED superiors es disminueixen i els LED inferiors augmenten la intensitat

- la fase de "retenir la respiració", on els LED superiors estan apagats i els LED inferiors estan ajustats al màxim

- la fase d '"exhalació", on els LED inferiors es disminueixen i els LED superiors augmenten la intensitat

- la fase "romandre exhalat", on els LED inferiors estan apagats i els LED superiors s'encenen com a màxim.

La longitud de les quatre fases es defineix mitjançant un paràmetre numèric individual, que es pot fixar al programa i / o es pot ajustar mitjançant un potenciòmetre.

Un cinquè paràmetre defineix la intensitat màxima. Permet establir la brillantor màxima dels LED, cosa que pot ser útil si el voleu utilitzar com a llum nocturna. A més, us pot permetre millorar el procés de regulació, ja que tinc la impressió que és difícil veure una diferència entre el 80 i el 100% d’intensitat.

Afegia una funció opcional (co) sinusal per augmentar / disminuir la brillantor, ja que proporciona una connexió més suau entre les fases. No dubteu a provar altres funcions. Per exemple. podeu eliminar les interrupcions i utilitzar dues funcions sinusals (complexes) diferents per a les dues cadenes de LED i ajustar la freqüència i l'amplitud mitjançant potenciòmetres.

# El llum de "respiració": versió amb dos botons i dos potenciòmetres

# una modificació de l'exemple de lluvia per a l'explorador Pimoroni pHAT # aquí: augment de la sinoide / disminució dels valors del motor / PWM # per a funció lineal silenciar la funció de cosin lineal i silenciar # Aquesta versió "var" llegeix entrades analògiques, anul·la els paràmetres predefinits # reads entrada digital, botons per iniciar i aturar "" per començar en encendre el Pi, podeu utilitzar Cron: Cron és un programa Unix que s'utilitza per programar feines, i té una funció @reboot convenient que us permet executar un script sempre que arrenci el Pi. Obriu un terminal i escriviu crontab -e per editar-lo. Desplaceu-vos fins a la part inferior del fitxer, passant per totes les línies que comencen per # i afegiu la línia següent (suposant que el vostre codi estigui a /home/pi/firefly.py): @reboot sudo python /home/pi/filename.py & Tanca i desa el teu crontab (si fas servir nano, premeu control-x, y i entreu per sortir i desar). "" "Explorador d'importació de temps d'importació que importa valors constants de matemàtiques # sinus xmax = 316 pas = 5 # amplada de pas, per exemple 315/5 dóna 63 passos / cycle start_button = 0 # defineix l'estat d'un polsador connectat al port d'entrada no 1 stop_button = 0 # defineix l'estat d'un polsador connectat al port d'entrada no 3 pausa_1 = 0,02 # longituds de pauses en els passos de la fase "inhalar", de manera que augmenta la velocitat i la durada de la pausa_2 = 0,04 # estableix la taxa de rampa de "exhalar" pause_3 = 1,5 # interrupció entre les fases d'inspiració i d'exhalació (mantingueu-la inhalada) pause_4 = 1,2 # pausa al final de l'exhalació fase (mantenir-se exhalat) max_intens = 0,9 # intensitat màxima / brillantor max_intens_100 = 100 * max_intens # el mateix a% # Pot permetre optimitzar la impressió de "respiració" dels LED i reduir el parpelleig. l_cosin = # llista amb valors derivats de cosinus (100> = x> = 0) l_lin = # llista amb valors lineals (100> = x> = 0) # generar llista de funcions de cosinus per a l'interval (0, 316, 3): # 315 és a prop de Pi * 100, 105 passos # print (i) n_cosin = [(((math.cos (i / 100)) + 1) / 2) * 100] # generar valor # print (n_cosin) l_cosin = l_cosin + n_cosin # afegir valor a la llista # imprimir (l_cosin) # generar llista lineal per a i en el rang (100, -1, -1): # compte enrere de 100 a zero n_lin = l_lin = l_lin + n_lin # print (l_lin) # mostra una llista avorrida print () print ("" "Per iniciar els cicles de llum, premeu el botó" Inici "(Input One)" "") print () print ("" "Per aturar la llum, manteniu premut el botó "Atura" (entrada tres) "" ") imprimir () # espereu fins que es prem el botó d'inici mentre (start_button == 0): start_button = eh.input.one.read () # read botó número u eh.output.one.blink () # LED parpellejant número una vegada.sleep (0,5) # lectura dues vegades per segon #executa llums mentre (stop_button == 0): # llegeix les entrades analògiques ONE i TWO, defineix la configuració set_1 = eh.an alog.one.read () # defineix la velocitat de rampeig vermell-> verda pausa_1 = set_1 * 0,02 # valors oscil·laran entre 0 i 0,13 seg / pas d'impressió ("set_1:", set_1, "-> pausa _1:", pausa_1) set_2 = eh.analog.two.read () # defineix verd -> velocitat de rampeig vermella pausa_2 = set_2 * 0,02 # els valors oscil·laran entre 0 i 0,13 seg / pas d'impressió ("set_2:", set_2, "-> pausa _2: ", pausa_2) # fase" inhalació "eh.output.one.on () # pot conduir un LED o un so '' 'per a x en el rang (len (l_lin)): fx = max_intens * l_lin [x] # corba lineal eh.motor.one.backwards (fx) eh.motor.two.backwards (max_intens_100-fx) time.sleep (pause_1) eh.output.one.off () '' 'per a x en el rang (len (l_cosin)): fx = max_intens * l_cosin [x] # linear curve eh.motor.one.backwards (fx) eh.motor.two.backwards (max_intens_100-fx) time.sleep (pause_1) eh.output.one.off () # comproveu si es prem el botó Stop stop_button = eh.input.three.read () # Pausa "Mantingueu la respiració" al final de la fase d'inhalació eh.output.two.on () # enceneu el LED dos eh.motor.one.backwards (0) eh.motor.two.backwards (max_intens_100) time.sleep (pause_3) eh.output.two.off () # comproveu si es prem el botó Stop stop_button = eh.input.three.read () # fase "exhalar" eh.output.three.on () # activeu el LED de tres "per a x en el rang (len (l_lin)): fx = max_intens * l_lin [x] # corba lineal eh.motor.one.backwards (max_intens_100-fx) eh.motor.two.backwards (fx) time.sleep (pause_2) '' 'per a x en el rang (len (l_cosin)): fx = max_intens * l_cosin [x] # corba lineal eh.motor.one.backwards (max_intens_100-fx) eh.motor.two. cap enrere (fx) time.sleep (pausa_2) eh.output.three.off () # comproveu si es prem el botó Stop stop_button = eh.input.three.read () # pausa entre les fases "exhalar" i "inhalar" eh. output.four.on () eh.motor.one.backwards (max_intens_100) eh.motor.two.backwards (0) time.sleep (pause_4) eh.output.four.off () # comproveu si es prem el botó Stop stop_button = eh.input.three.read () # apagat, gir de tots els ports de sortida eh.motor.one.stop () eh.motor.two.stop () eh.output.one.off () eh.output.two.off () eh.output.three.off () eh.output.four.off () imprimir () print ("Adéu")

Si voleu utilitzar la llum com a dispositiu autònom, p. com a llum de repòs o de despertador, podeu afegir una font d'alimentació mòbil al Pi i fer que el programa s'iniciï després d'arrencar i utilitzar "Cron" per activar-lo o apagar-lo en determinats moments. Com s'utilitza "Cron" s'ha descrit amb gran detall en altres llocs.

Pas 4: exemples de vídeo

En aquest pas, trobareu una sèrie de vídeos que mostren la llum en condicions normals (és a dir, tots els valors> 0, # 1) i extrems, ja que tots els valors es posen a zero (# 2), només augmenten (# 3 i # 4), i sense rampes (# 5 i # 6).

Pas 5: algunes observacions

Disculpeu els termes, errors tipogràfics i errors equivocats. Ni parlo nadiu d’anglès, ni tinc coneixements elaborats en electricitat, electrònica o programació. La qual cosa vol dir que estic intentant escriure un anglès instructiu sobre coses on difícilment sé els termes correctes en el meu propi idioma. Per tant, qualsevol suggeriment, correcció o idea de millora és benvinguda

Recomanat: