Índice:
- Suprimentos
- Etapa 1: Impressão 3D
- Etapa 2: o circuito
- Etapa 3: Preparação de Raspberry Pi
- Etapa 4: O Código
- Etapa 5: juntando tudo
- Etapa 6: Um ano depois …
Vídeo: Relógio infantil para treinamento do sono: 6 etapas (com fotos)
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:36
Eu precisava de um relógio para ajudar meus gêmeos de 4 anos a aprender a dormir um pouco mais (já estou farto de ter que acordar às 5h30 da manhã aos sábados), mas eles ainda não conseguem ler as horas. Depois de navegar por alguns itens em um site de compras muito popular, pensei: "Quão difícil seria apenas fazer um ?!"
Então, aqui está o que imaginei que queria neste projeto. Ele usaria alguns LEDs RGB (principalmente porque tenho cerca de cinquenta deles de outro projeto) para exibir três cores diferentes. Vermelho significaria voltar a dormir, é muito cedo para acordar. Amarelo significa que eles podem se levantar e brincar tranquilamente em seu quarto. Verde, é claro, significa que você pode se levantar. Também queria poder ajustar o tempo, porque gostaria de dormir mais alguns dias (fins de semana / feriados vs dias de semana e outros).
Suprimentos
Raspberry Pi Zero W
Dois LEDs RGB
Seis resistores de 220 Ohm
Arquivos (.stl, python, html) encontrados aqui
Vários pequenos parafusos, fios e peças pequenas, conforme necessário.
Etapa 1: Impressão 3D
Minha filha realmente gosta de unicórnios, então para este projeto eu remixou Unicorn Nightlight de Riven02, que é um remix do Unicorn Trophy de Apachcreation, que pode ser encontrado em Thingiverse.com e usado sob uma licença Creative Commons Non-Commercial. Modifiquei a base de unicórnio para encaixar um cabo de alimentação para o framboesa pi zero. Acontece que eu tinha um pouco de AMZ3D Red PLA ao redor, então a base e a cabeça do unicórnio serão vermelhas. Usei PLA claro / translúcido para o chifre. Os arquivos.stl e configurações que usei são:
Unicorn.stl
- Altura da camada: 0,02
- Espessura da parede: 0,8
- Contagem de linha da parede: 2
- Infill: 15%
- Padrão de enchimento: grade
UnicornBase.stl
- Altura da camada: 0,02
- Espessura da parede: 0,8
- Contagem de linha da parede: 2
- Infill: 15%
- Padrão de enchimento: grade
Horn.stl
- Altura da camada: 0,02
- Espessura da parede: 0,8
- Contagem de linha da parede: 3
- Infill: 0
Etapa 2: o circuito
O circuito é bem fácil. Eu escolhi seis pinos GPIO diferentes para controlar a ativação / desativação das diferentes cores do RGB. Esses pinos e as cores de LED correspondentes são:
- Pino 11 para RGB 1 VERMELHO
- Pino 13 para RGB 1 VERDE
- Pino 15 para RGB 1 AZUL
- Pino 16 para RGB 2 RED
- Pino 18 para RGB 2 VERDE
- Pino 36 para RGB 2 AZUL
- Pino 39 para aterrar
Cada pino é conectado ao resistor por meio de um resistor limitador de corrente de 220 ohms (com exceção do aterramento, é claro). Soldei o resistor em linha e o cobri com um tubo termorretrátil.
Etapa 3: Preparação de Raspberry Pi
Eu queria ser capaz de definir horários para o relógio do treinador de sono usando uma interface da web. Então eu precisei configurar um servidor Apache e PHP no Raspberry Pi. A primeira coisa que você sempre deve fazer ao instalar um novo software em um Raspberry Pi é verificar se ele está atualizado digitando:
sudo apt-get update
Depois disso, podemos realmente começar a trabalhar. Faremos isso instalando o Apache2:
sudo apt-get install apache2 -y
isso deve instalar o servidor da web Apache. Você pode testar isso usando um navegador no Raspberry pi e navegando para:
localhost /
ou navegando do navegador de outro computador até o endereço IP do Raspberry Pi. Para encontrar o seu tipo de endereço IP:
hostname -I
Fazer isso levará a uma página padrão do Apache Web Server. Isso pode ser alterado substituindo index.html localizado no diretório / var / www / html /. Ele pode ser substituído pelo meu próprio arquivo index.html.
A seguir, configuraremos o servidor da web Apache para poder executar arquivos PHP. Comece digitando:
sudo apt-get install php libapache2-mod-php -y
agora você deve ser capaz de colocar o arquivo sleepset.php em / var / www / html com o arquivo index.html.
Para navegar para esta página em sua própria rede, você precisará configurar seu Raspberry Pi com um endereço IP estático (ou você pode apenas tentar descobrir o novo endereço IP quando sua rede o renovar de vez em quando). Você precisará editar alguns arquivos para que isso funcione. Você precisará editar o arquivo /etc/dhcpcd.conf com o seguinte:
interface wlan0
static ip_address = 192.168.1.static routers = 192.168.1.1 static domain_name_servers = 192.168.1.1
Substitua pelas informações da sua rede. A única coisa que você precisa fazer agora é reiniciar.
sudo reboot
A localização dos arquivos do link do Google Drive deve ser a seguinte:
- index.html e sleepset.php devem ser colocados no diretório / var / www / html
- sleepset.txt e sleeptrainer1_1.py devem ser colocados no diretório / home / pi / pythoncode (dica: você terá que criar este diretório)
Depois de colocar esses arquivos no diretório correto, o arquivo rc.local precisa ser modificado para executar o programa sleeptrainer1_1.py na inicialização. Você precisará de acesso de nível raiz para modificar o arquivo rc.local, então digite:
sudo nano /etc/rc.local
No editor, role para baixo e, antes da linha de saída 0, adicione:
python /home/pi/pythoncode/sleeptrainer1_1.py &
Há duas coisas a serem lembradas aqui:
- Use o caminho de arquivo absoluto para que o LINUX não pense que o arquivo sleeptraner1_1.py está localizado no mesmo diretório que rc.local.
- Não se esqueça do E comercial (&) no final. isso permitirá que o LINUX execute este arquivo em segundo plano e continue inicializando.
Agora, salve o arquivo digitando ctrl-x e, em seguida, y quando solicitado a salvar e, em seguida, ENTER.
Em seguida, digite sudo reboot.
Deve ser mencionado em algum lugar aqui que (no mínimo) você deve alterar sua senha do Raspberry Pi usando o comando passwd. Se você ainda não fez isso, agora seria um bom momento.
Etapa 4: O Código
A seguir está o código do arquivo sleeptrainer1_1.py. Usei um objeto datetime para comparar os tempos com aqueles lidos no arquivo sleepset.txt. O arquivo de texto tem apenas duas linhas, a primeira para hora, a segunda para minuto. sleeptrainer1_1.py dorme por um minuto entre as iterações do loop para não paralisar o processador. A luz verde estava originalmente saindo muito brilhante, então usei a modulação de largura de pulso para escurecê-la quando usado com vermelho para fazer amarelo.
Código Python:
importar RPi. GPIO como GPIO
de datetime import datetime as dt import time GPIO.setmode (GPIO. BOARD) GPIO.setwarnings (False) red1 = 11 red2 = 16 green1 = 13 green2 = 18 blue1 = 15 blue2 = 36 GPIO.setup (red1, GPIO. OUT) GPIO.setup (red2, GPIO. OUT) GPIO.setup (green1, GPIO. OUT) GPIO.setup (green2, GPIO. OUT) GPIO.setup (blue1, GPIO. OUT) GPIO.setup (blue2, GPIO. OUT) p1 = GPIO. PWM (verde1, 100) p2 = GPIO. PWM (verde2, 100) def readset (): setfile = open ("/ home / pi / pythoncode / sleepset.txt", 'r') a = setfile. readline () b = setfile.readline () a = int (a) b = int (b) retornar a, b def ledlight (color): if (color == "red"): GPIO.output (red1, GPIO. HIGH) GPIO.output (red2, GPIO. HIGH) p1.stop () p2.stop () GPIO.output (blue1, GPIO. LOW) GPIO.output (blue2, GPIO. LOW) elif (color == "blue"): GPIO.output (red1, GPIO. LOW) GPIO.output (red2, GPIO. LOW) p1.stop () p2.stop () GPIO.output (blue1, GPIO. HIGH) GPIO.output (blue2, GPIO. HIGH) elif (color == "green"): GPIO.output (red1, GPIO. LOW) GPIO.output (red2, GPIO. LOW) p1.start (100) p2.start (100) GPIO.output (blue1, GPIO. LOW) GPIO.output (blue2, GPIO. LOW) elif (color == "yellow"): p1.start (60) p2.start (60) GPIO.output (red1, GPIO. HIGH) GPIO.output (red2, GPIO. HIGH) GPIO.output (blue1, GPIO. LOW) GPIO.output (blue2, GPIO. LOW) elif (color == "off"): GPIO.output (red1, GPIO. LOW) GPIO.output (red2, GPIO. LOW) GPIO.output (blue1, GPIO. LOW) GPIO.output (blue2, GPIO. LOW) p1.stop () p2.stop () enquanto True: settime = readset () hora, minuto = settime se minuto == 0: se dt (dt.now (). ano, dt.now (). mês, dt.now (). dia, hora-2) <dt.now () <dt (dt.now ().ano, dt.now (). mês, dt.now (). dia, hora-1, minuto + 30): ledlight ("vermelho") elif dt (dt.now (). ano, dt.now ().month, dt.now (). day, hour-1, minute + 30) <dt.now () <dt (dt.now (). year, dt.now (). month, dt.now ().dia, hora, minuto): ledlight ("amarelo") elif dt (dt.now (). ano, dt.now (). mês, dt.now (). dia, hora, minuto) <dt.now () <dt (dt.now (). ano, dt.now (). mês, dt.now (). dia, hora + 1, minuto): ledlight ("verde") else: ledlight ("desligado") elif dt (dt.now (). ano, dt.now (). mês, dt.now (). dia, ho ur-2) <dt.now () <dt (dt.now (). ano, dt.now (). mês, dt.now (). dia, hora, minuto-30): ledlight ("vermelho") elif dt (dt.now (). ano, dt.now (). mês, dt.now (). dia, hora, minuto-30) <dt.now () <dt (dt.now (). ano, dt.now (). mês, dt.now (). dia, hora, minuto): ledlight ("amarelo") elif dt (dt.now (). ano, dt.now (). mês, dt.now ().dia, hora, minuto) <dt.now () <dt (dt.now (). ano, dt.now (). mês, dt.now (). dia, hora + 1, minuto): ledlight ("verde") else: ledlight ("desligado") time.sleep (60)
O arquivo index.html é um formulário básico desenvolvido em HTML. Ele pega o conteúdo de duas caixas de texto e os passa para o arquivo sleepset.php para tratamento de formulários. O arquivo PHP simplesmente sobrescreve o arquivo sleepset.txt com dados atualizados.
Etapa 5: juntando tudo
Com a codificação finalizada e todas as peças impressas, é hora da montagem. Eu segui estas etapas para colocar tudo junto:
- Faça dois pequenos orifícios dimensionados para os LEDs RGB na parte inferior da buzina e coloque os LEDs nesses orifícios.
- Coloque o chifre no orifício da cabeça do unicórnio e puxe-o até que esteja apertado. Use cola de dentro para prender o chifre.
- Prenda o Raspberry Pi Zero W no interior da cabeça do unicórnio. (Usando pistola de cola quente, talvez)
- Anexe a cabeça do unicórnio à base do unicórnio.
- Conecte o cabo de alimentação e fixe o conjunto inteiro na parede.
- Conecte o relógio.
Neste ponto, tenho um relógio infantil do Sleep Trainer em funcionamento.
Etapa 6: Um ano depois …
Um ano depois:
Minhas meninas estão dormindo um pouco mais. Nós nos acostumamos a acordar com crianças pequenas em nosso quarto dizendo: "Papai, o sinal está verde." e isso é ótimo. Para encurtar a história, só acordamos às 5h30 de um sábado, quando planejamos mais.
Coisas que pretendo melhorar no futuro:
- Talvez adicionando alguns sensores ou outros itens como um microfone e alto-falantes.
- Talvez editar o código para funcionar com um alto-falante para usar como despertador, pois meus filhos começarão a frequentar a escola em breve.
Recomendado:
Relógio Vortex: um relógio de pulso com espelho infinito: 10 etapas (com fotos)
Relógio Vortex: um relógio de pulso com espelho infinito: O objetivo deste projeto era criar uma versão vestível de um relógio com espelho infinito. Ele usa seus LEDs RGB para indicar o tempo, atribuindo horas, minutos e segundos às luzes vermelha, verde e azul, respectivamente, e sobrepondo esses tons t
Manequim de treinamento de reação: 9 etapas (com fotos)
Manequim de treinamento de reação: Como um pedido de um amigo atleta para construir um dispositivo barato, mas eficaz para melhorar o treinamento de reação, eu vim com isso! A ideia era criar um conjunto de dispositivos LED que os usuários têm que desativar por sensor de proximidade. Após a desativação dos dispositivos aleatoriamente
Óculos de cristal líquido para ambliopia (óculos de treinamento de oclusão alternada) [ATtiny13]: 10 etapas (com fotos)
Óculos de cristal líquido para ambliopia (óculos de treinamento de oclusão alternada) [ATtiny13]: Ambliopia (olho preguiçoso), um distúrbio da visão que afeta aproximadamente 3% da população, geralmente tratado com simples colírios ou colírios de atropina. Infelizmente, esses métodos de tratamento obstruem o olho mais forte por longos e ininterruptos períodos de tempo, não
Cozinha infantil que diz BEEP: 7 etapas (com fotos)
Kids Kitchen That Says BEEP: Minha filha de dois anos tinha um pedido 'pequeno' para seu terceiro aniversário. Ela queria uma pequena cozinha que dizia Beep. - Você quer o quê? foi minha resposta. 'Uma cozinha que fala bip, assim como a cozinha da mamãe!', Ela disse … Então, essa foi a inspiração (eu
Construa um relógio de sino real para seu PC e um relógio de extintor de incêndio: 3 etapas (com fotos)
Construa um relógio de sino real para seu PC e um relógio de extintor de incêndio .: Um sino de latão, um pequeno relé, mais algumas coisas e um sino de verdade podem marcar as horas em sua área de trabalho. Embora este projeto seja executado no Windows e Mac No OS X também, decidi instalar o Ubuntu Linux em um PC que encontrei na lixeira e trabalhar nisso: eu nunca tinha