Índice:

Uma luz respiratória controlada por um Pi de framboesa: 5 etapas
Uma luz respiratória controlada por um Pi de framboesa: 5 etapas

Vídeo: Uma luz respiratória controlada por um Pi de framboesa: 5 etapas

Vídeo: Uma luz respiratória controlada por um Pi de framboesa: 5 etapas
Vídeo: VENTILACÃO MECÂNICA -PSV - Modo ventilatório com Pressão de Suporte 2024, Julho
Anonim
Uma luz respiratória controlada por um Raspberry Pi
Uma luz respiratória controlada por um Raspberry Pi

A "Luz para Exercícios de Respiração" descrita aqui é uma luz pulsante simples e relativamente barata que pode apoiá-lo em seus exercícios respiratórios e ajudá-lo a manter um ritmo respiratório constante. Também pode ser usado, por ex. como uma luz noturna calmante para as crianças. No estágio atual, é mais um protótipo funcional.

Você também pode usá-lo como um exemplo barato e simples de construir para "computação física" com um Raspberry Pi, por ex. para ser usado como um projeto educacional no nível iniciante, aqui você tem entradas analógicas (potenciômetro rotativo) e digitais (botão de pressão), bem como saídas digitais (LED) e PWM (cadeias de LED), e os efeitos das mudanças são diretamente visíveis.

A luz percorre círculos repetitivos que consistem em quatro fases: uma transição verde (superior) para vermelho (inferior), uma fase apenas vermelha, uma transição vermelho para verde e uma fase apenas verde. O comprimento dessas fases é definido por constantes que podem ser modificadas por potenciômetros. O processo pode ser iniciado, pausado, retomado e interrompido pressionando botões. Os LEDs indicam a fase atual. É baseado no exemplo “Firefly Light” de Pimoroni (veja aqui). Semelhante ao “Firefly Light”, requer um Raspberry Pi (Zero), o Pimoroni Explorer pHAT (ou HAT) e duas cadeias leves de LED IKEA SÄRDAL. Os últimos são conectados às duas portas PMW / motor do pHAT. Em vez de usar um jarro, coloquei os LEDs em um porta-retratos IKEA. Tenho tentado otimizar um pouco o script python original “luz do vaga-lume”, implementando uma função sinusal opcional para as mudanças de brilho / largura de pulso e introduzi duas fases de “espera” entre as fases de escurecimento. Ao modificar os parâmetros para encontrar um padrão de luz que pareça mais confortável, descobri que o dispositivo pode ser útil para oferecer suporte a um padrão de respiração regular e claramente definido. Assim, alguns de vocês podem achar esta “Luz de Respiração” útil para fins de meditação ou treinamento. Como o Explorer pHAT tem quatro entradas digitais e quatro analógicas, é muito fácil regular até quatro parâmetros diferentes usando potenciômetros deslizantes ou rotativos e introduzir funções de iniciar / reiniciar / parar para as luzes usando botões de pressão. Isso permitirá que você use o dispositivo e otimize os parâmetros de acordo com suas necessidades, sem a necessidade de conectar um monitor ao Pi.

Além disso, o Explorer pHAT vem com quatro portas de saída digitais, que permitem adicionar LEDs ou buzzers, além de duas portas 5V e duas de aterramento e duas portas de saída PWM para motores ou dispositivos semelhantes. Certifique-se de usar os resistores corretos para reduzir a voltagem dos LEDs.

A biblioteca Pimoroni's Explorer pHAT python torna extremamente simples controlar todas essas portas de E / S.

Nestas versões instrutíveis do dispositivo com 0, 2 e 4 potenciômetros e botões são descritos. Escolha aquele que se adapta às suas necessidades.

Para operar o dispositivo de forma autônoma, pode-se usar um pacote de energia ou a combinação de um shim Pimoroni LiPo e uma bateria LiPo, conforme descrito para o "Firefly Light".

Versões atualizadas em 28 de dezembro de 2018: versão 'quatro potenciômetros e quatro botões' adicionada. 30: código para a versão 4-poti e imagens fritas adicionadas.

Etapa 1: Materiais usados / necessários

Materiais usados / necessários
Materiais usados / necessários
Materiais usados / necessários
Materiais usados / necessários
Materiais usados / necessários
Materiais usados / necessários

- Raspberry Pi Zero (4,80 GBP em Pimoroni, Reino Unido) e um cartão micro SD (> = 8 GB) com Raspian

- Pimoroni Explorer pHAT (10 GBP em Pimoroni, Reino Unido). Opcional: um cabeçalho de linha única, cabos de jumper

- Luzes de corrente IKEA SÄRDAL LED com 12 LEDs (2 x, 3,99 € cada na IKEA Alemanha), ou qualquer corrente de LED 3-5V semelhante.- Porta-retratos IKEA RIBBA (13 x 18 cm, 2,49 € na IKEA Alemanha).

- Um pedaço de espuma PU (2 x 18 x 13,5 cm), para segurar os LEDs. Alternativamente, pode ser usada espuma styro.

- Um pedaço de plástico opaco (18 x 13,5 cm), atuando como difusor.

- Duas folhas de papel transparente colorido (9 x 13,5 cm cada). Usei vermelho e verde.

- Um pedaço de folha de plástico fino e altamente opaco (18 x 13,5 cm), atuando como a tela externa. Usei uma folha fina de policarbonato branco. Opcional, para a versão ajustável:

Para ajustar o tempo de rampa e a duração do platô ou, alternativamente, outros parâmetros como brilho. - Potenciômetros de 10, 20 ou 50 kOhm (até quatro, usei dois de 10 kOhm respectivamente quatro de 50 Ohm).

Como botões iniciar / parar / pausar / retomar: - Botões de pressão (até quatro, usei quatro ou dois)

Como indicadores para as fases do círculo: - LEDs coloridos e os resistores necessários (dependerá das características dos LEDs que você usará).

  1. cerca de 140 Ohm para 5,2 -> 2, 2 V (amarelo, laranja, vermelho; alguns LEDs verdes),
  2. cerca de 100 Ohm para 5,3 -> 3,3 V (alguns verdes; azuis, LEDs brancos)

- Cabos de ligação e uma placa de ensaio

Opcional, para uma versão movida a bateria:

  • Pacote de alimentação micro-USB de 5 V ou
  • Calço Pimoroni Zero LiPo e uma bateria LiPo

Etapa 2: Lazout e montagem

Lazout e montagem
Lazout e montagem
Lazout e montagem
Lazout e montagem
Lazout e montagem
Lazout e montagem

Monte o Explorer pHAT conforme descrito pelo fabricante. Eu adicionei um conector fêmea de linha única para a conexão simplificada de cabos jumper às portas de E / S do pHATs. Configure seu Pi e instale a biblioteca Pimoroni para o Explorer HAT / pHAT, conforme descrito por Pimoroni. Desligue o Pi e conecte o pHAT ao Pi. Remova as baterias das cadeias de LED cortando os fios e estanhe a ponta dos fios. Corte dois cabos jumper macho 2x no meio, estanhe a extremidade dos fios. Solde os cabos jumper nas cadeias de LED e isole os pontos de solda usando fita adesiva ou tubo retrátil. Antes de soldar, verifique qual dos fios deve ser conectado às portas plus ou terra e marque-os de acordo. Usei fios de jumper com cores diferentes. Corte a espuma para prender os LEDs, o difusor e as folhas de tela no tamanho apropriado. Na placa de suporte do LED, marque as posições onde os LEDs serão colocados e faça orifícios de 3-5 mm na espuma. Em seguida, insira os 24 LEDs nas posições fornecidas. Coloque os papéis coloridos e as placas difusoras na placa de LED (veja as imagens), coloque a moldura acima da embalagem. Fixe as camadas de espuma na estrutura, por ex. usando fita adesiva. Conecte os cabos da tira de LED às portas do “motor” do Explorer pHAT. Para a versão ajustável, coloque potenciômetros, botões de pressão, LEDs de controle (e / ou buzzers) e resistores na placa de ensaio e conecte-os às portas correspondentes no Explorer pHAT.

Inicie seu Pi e instale as bibliotecas necessárias, conforme descrito no site da Pimoroni, em seguida, execute o script Python 3 fornecido. Se uma das cadeias de LEDs não estiver funcionando, ela pode estar conectada na direção errada. Em seguida, você pode alterar as conexões de mais / menos no pHAT ou fazer uma alteração no programa, por exemplo, mude “eh.motor.one.backwards ()” para “… forwards ()”.

Em anexo, você encontra scripts com configurações fixas que você pode alterar dentro do programa e um exemplo onde você pode modificar algumas das configurações com potenciômetros e iniciar e parar o ciclo de luz usando botões de pressão. Não deve ser muito difícil ajustar os scripts para se adequarem ao seu próprio layout de “luz que respira”.

Etapa 3: os scripts Python

A biblioteca Python de Pimoroni para o Explorer HAT / pHAT torna extremamente simples endereçar os componentes anexados às portas de E / S do HATs. Dois exemplos: "eh.two.motor.backwards (80)" aciona o dispositivo conectado ao PWM / porta do motor 2 com intensidade máxima de 80% na direção inversa, "eh.output.three.flash ()" faz um LED conectado para a porta de saída número três piscar até que seja interrompido. Eu gerei algumas variações da luz, basicamente adicionando níveis crescentes de controle adicionando até quatro botões e potenciômetros. Em anexo, você encontra um programa Python chamado "Breathing light fixed lin cosin.py "em que todas as quatro configurações de parâmetros devem ser modificadas no programa. Além disso, uma versão chamada "Luz respiratória var lin cosin.py" onde o comprimento das duas fases de escurecimento pode ser ajustado usando dois potenciômetros e a versão mais elaborada "Luz respiratória var lin cosin3.py" para a versão de quatro potenciômetros e botão de pressão. Os programas são escritos em Python 3.

Em todos os casos, o processo de ciclo pode ser evocado e interrompido usando dois botões de pressão, na versão de quatro botões você também pode interromper e reiniciar o processo. Além disso, quatro LEDs (coloridos) podem ser conectados às portas de saída digital, indicando as fases específicas. Um ciclo do dispositivo consiste em quatro fases:

- a fase de "inalação", onde os LEDs superiores são esmaecidos e os LEDs inferiores aumentam a intensidade

- a fase de "prender a respiração", onde os LEDs superiores são desligados e os LEDs inferiores são configurados para o máximo

- a fase de "expiração", onde os LEDs inferiores são esmaecidos e os LEDs superiores aumentam a intensidade

- a fase "permanece exalado", onde os LEDs inferiores são desligados e os LEDs superiores acendem no máximo.

A duração de todas as quatro fases é definida por um parâmetro numérico individual, que pode ser fixado no programa e / ou pode ser ajustado por meio de um potenciômetro.

Um quinto parâmetro define a intensidade máxima. Ele permite que você defina o brilho máximo dos LEDs, o que pode ser útil se você quiser usá-lo como uma luz noturna. Além disso, pode permitir melhorar o processo de escurecimento, pois tenho a impressão de que é difícil ver uma diferença entre 80 e 100% de intensidade.

Eu estava adicionando uma função opcional de (co-) sinusite para aumentar / diminuir o brilho, pois dá uma conexão mais suave entre as fases. Sinta-se à vontade para experimentar outras funções. Por exemplo. você pode eliminar as quebras e usar duas funções sinusais diferentes (complexas) para ambas as cadeias de LED e ajustar a frequência e a amplitude por potenciômetros.

# A lâmpada de "respiração": versão com dois botões e dois potenciômetros

# uma modificação do exemplo do firefly para o Pimoroni Explorer pHAT # aqui: aumento / diminuição do sinoide dos valores do motor / PWM # para função linear com som linear e função cosseno muda # Esta versão "var" lê entradas analógicas, substitui configurações predefinidas # lê entrada digital, botões para iniciar e parar "" "para iniciar ao ligar o Pi você pode usar Cron: Cron é um programa Unix usado para agendar tarefas e tem uma função @reboot conveniente que permite executar um script sempre que seu Pi for inicializado. Abra um terminal e digite crontab -e para editar seu crontab. Role até o final do arquivo, passando todas as linhas que começam # e adicione a seguinte linha (assumindo que seu código está em /home/pi/firefly.py): @reboot sudo python /home/pi/filename.py & Feche e salve seu crontab (se estiver usando o nano, pressione control-x, y e enter para sair e salvar). "" "importe o tempo, importe o explorerhat como eh importe os valores da constante matemática #sinus xmax = 316 step = 5 # step width, ex. 315/5 dá 63 passos / ciclo start_button = 0 # isso define o estado de um botão conectado à porta de entrada não 1 stop_button = 0 # isso define o estado de um botão conectado à porta de entrada não 3 pause_1 = 0,02 # define o comprimento de quebras dentro das etapas na fase de "inspiração", aumentando assim a taxa de rampa e a duração pause_2 = 0,04 # define a taxa de rampa de "exalar" pause_3 = 1,5 # intervalo entre as fases de inspiração e expiração (manter inalado) pause_4 = 1,2 # intervalo no final da expiração fase (manter exalado) max_intens = 0,9 # intensidade / brilho máximo max_intens_100 = 100 * max_intens # o mesmo em% # Pode permitir otimizar a impressão de "respiração" dos LEDs e reduzir a cintilação. l_cosin = # lista com valores derivados do cosinus (100> = x> = 0) l_lin = # lista com valores lineares (100> = x> = 0) # gera lista de funções do cosinus para i no intervalo (0, 316, 3): # 315 é próximo a Pi * 100, 105 etapas # print (i) n_cosin = [(((math.cos (i / 100)) + 1) / 2) * 100] #gerar valor # print (n_cosin) l_cosin = l_cosin + n_cosin #add valor para listar # print (l_cosin) # gerar lista linear para i no intervalo (100, -1, -1): # contagem regressiva de 100 a zero n_lin = l_lin = l_lin + n_lin # print (l_lin) # mostra uma lista enfadonha print () print ("" "Para iniciar os ciclos de luz, pressione o botão" Iniciar "(Entrada Um)" "") print () print ("" "Para parar a luz, pressione e segure o botão "Parar" (entrada três) "" ") print () # espere até que o botão Iniciar seja pressionado enquanto (start_button == 0): start_button = eh.input.one.read () # read botão número um eh.output.one.blink () # pisca LED número um time.sleep (0,5) # lê duas vezes por segundo #run ilumina enquanto (stop_button == 0): # lê as entradas analógicas UM e DOIS, define as configurações set_1 = eh.an alog.one.read () # define vermelho-> taxa de rampa verde pause_1 = set_1 * 0,02 # valores irão variar entre 0 e 0,13 seg / impressão da etapa ("set_1:", set_1, "-> pause _1:", pause_1) set_2 = eh.analog.two.read () # define verde -> taxa de rampa vermelha pause_2 = set_2 * 0,02 # valores irão variar entre 0 e 0,13 seg / impressão da etapa ("set_2:", set_2, "-> pause _2: ", pause_2) # fase de" inalação "eh.output.one.on () # pode acionar um LED ou bipe '' 'para x no intervalo (len (l_lin)): fx = max_intens * l_lin [x] # curva linear eh.motor.one.backwards (fx) eh.motor.two.backwards (max_intens_100-fx) time.sleep (pause_1) eh.output.one.off () '' 'para x no intervalo (len (l_cosin)): fx = max_intens * l_cosin [x] # curva linear eh.motor.one.backwards (fx) eh.motor.two.backwards (max_intens_100-fx) time.sleep (pause_1) eh.output.one.off () # verifique se o botão Parar foi pressionado stop_button = eh.input.three.read () # "Mantenha a respiração" pausa no final da fase de inalação eh.output.two.on () # acenda o LED dois eh.motor.one.backwards (0) eh.motor.two.backwards (max_intens_100) time.sleep (pause_3) eh.output.two.off () #verifique se o botão Stop está pressionado stop_button = eh.input.three.read () # fase "exhale" eh.output.three.on () # ligue o LED três '' 'para x no intervalo (len (l_lin)): fx = max_intens * l_lin [x] # curva linear eh.motor.one.backwards (max_intens_100-fx) eh.motor.two.backwards (fx) time.sleep (pause_2) '' 'para x no intervalo (len (l_cosin)): fx = max_intens * l_cosin [x] # curva linear eh.motor.one.backwards (max_intens_100-fx) eh.motor.two. backwards (fx) time.sleep (pause_2) eh.output.three.off () #verifique se o botão Stop está pressionado stop_button = eh.input.three.read () # pausa entre as fases "exalar" e "inalar" eh. output.four.on () eh.motor.one.backwards (max_intens_100) eh.motor.two.backwards (0) time.sleep (pause_4) eh.output.four.off () #verifique se o botão Stop foi pressionado stop_button = eh.input.three.read () # desligamento, desligue todas as portas de saída 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 () imprimir ("Tchau tchau")

Se você deseja usar a luz como um dispositivo autônomo, por exemplo, como luz para dormir ou despertar, você pode adicionar uma fonte de energia móvel ao Pi e fazer o programa iniciar após a inicialização e usar "Cron" para ligá-lo ou desligá-lo em determinados momentos. Como usar o "Cron" foi descrito com muitos detalhes em outro lugar.

Etapa 4: exemplos de vídeo

Nesta etapa, você encontrará uma série de vídeos mostrando a luz em condições normais (ou seja, todos os valores> 0, # 1) e condições extremas, já que todos os valores definidos como zero (# 2), somente rampa (# 3 e # 4), e sem rampa (# 5 e # 6).

Etapa 5: algumas observações

Por favor, peça desculpas por quaisquer termos errados, erros de digitação e erros. Não sou falante nativo de inglês, nem tenho conhecimentos elaborados em elétrica, eletrônica ou programação. O que na verdade significa que estou tentando escrever um inglês instrutível sobre coisas em que dificilmente conheço os termos corretos em minha própria língua. Portanto, quaisquer dicas, correções ou idéias para melhorias são bem-vindas.

Recomendado: