Índice:

Relógio infantil para treinamento do sono: 6 etapas (com fotos)
Relógio infantil para treinamento do sono: 6 etapas (com fotos)

Vídeo: Relógio infantil para treinamento do sono: 6 etapas (com fotos)

Vídeo: Relógio infantil para treinamento do sono: 6 etapas (com fotos)
Vídeo: 🍼 O DESENVOLVIMENTO, a ROTINA de SONO + CURIOSIDADES e DICAS sobre o BEBÊ de 4 MESES! | Dra Jannuzzi 2024, Julho
Anonim
Relógio de treino de sono infantil
Relógio de treino de sono infantil
Relógio para treino de sono infantil
Relógio para treino de sono infantil
Relógio para treino de sono infantil
Relógio para treino de sono infantil
Relógio de treino de sono infantil
Relógio de treino de sono infantil

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

impressao 3D
impressao 3D
impressao 3D
impressao 3D
impressao 3D
impressao 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
O circuito
O circuito
O circuito
O circuito
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:

  1. 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.
  2. 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

Juntando tudo
Juntando tudo
Juntando tudo
Juntando tudo
Juntando tudo
Juntando tudo

Com a codificação finalizada e todas as peças impressas, é hora da montagem. Eu segui estas etapas para colocar tudo junto:

  1. Faça dois pequenos orifícios dimensionados para os LEDs RGB na parte inferior da buzina e coloque os LEDs nesses orifícios.
  2. 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.
  3. Prenda o Raspberry Pi Zero W no interior da cabeça do unicórnio. (Usando pistola de cola quente, talvez)
  4. Anexe a cabeça do unicórnio à base do unicórnio.
  5. Conecte o cabo de alimentação e fixe o conjunto inteiro na parede.
  6. Conecte o relógio.

Neste ponto, tenho um relógio infantil do Sleep Trainer em funcionamento.

Etapa 6: Um ano depois …

Um ano depois …
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: