Índice:

Wake Me Up - um despertador inteligente: 6 etapas
Wake Me Up - um despertador inteligente: 6 etapas
Anonim
Wake Me Up - um despertador inteligente
Wake Me Up - um despertador inteligente

Wake me up é um despertador inteligente que também pode ser usado como uma luz inteligente.

A faixa de led embutida simula a luz natural que entra em sua sala. Isso possibilita uma maneira calma e natural de começar o dia.

O despertador também está equipado com um display de 4 * 7 segmentos para ler as horas, alto-falantes para acordar com sua música favorita, um botão de toque, um ldr para ajustar o brilho da faixa de led e um sensor de temperatura que você pode usar para ver o temperatura do seu quarto.

Suprimentos

Uma lista dos preços exatos que paguei pode ser encontrada aqui:

Microcontroladores e computadores:

Raspberry Pi 4I usei raspberry pi 4 4GB, no entanto, qualquer raspberry pi modelo 3+ deve servir

Arduino Uno

O arduino é usado para controlar a exibição do relógio de 4 * 7 segmentos.

Sensores:

  • TMP36: sensor de temperatura
  • LDR: resistor dependente de luz

Atuadores:

  • WS2801: Faixa de led individualmente endereçável
  • Visor LCD: Um visor LCD 16 * 2.
  • Display de relógio de 4 * 7 segmentos

IC's:

  • 74HC595: Shiftregister para o display LCD
  • MCP3008: conversor analógico para digital de 8 bits
  • Conversor de nível lógico: usado para comunicação entre raspi e arduino

Outras coisas:

  • Um amplificador adafruit MAX9744 para alimentar os alto-falantes
  • Qualquer alto-falante, usei um alto-falante Visaton 4Ohm 8Watt full range (Art. No. 2240)
  • Uma fonte de alimentação de 9 volts para alimentar o amplificador
  • Uma fonte de alimentação de 5 volts para fornecer o ledstrip e outros componentes. Lembre-se de que cada led no ledstrip pode drow 60mA, portanto, certifique-se de que sua fonte de alimentação seja suficiente.
  • Alguns resistores de 220 ohm
  • Uma pequena placa de ensaio para colocar na sua caixa.

Ferramentas:

  • Um ferro de solda.
  • Algo para fazer o case (usei uma impressora 3D com PLA e PETG e alguns adesivos de vinil para obter o efeito de madeira).

Etapa 1: Configurando o Raspberry Pi

O framboesa pi é o nosso microcontrolador principal.

O raspberry pi executa nosso servidor web local, banco de dados, controla a faixa de led, alto-falantes, …

Parte 1: Instalando o Raspbian

Use este tutorial para instalar o raspbian:

Certifique-se de que o SSH esteja habilitado

Parte 2: Conectando-se

Para se conectar à internet, você precisa acessar o terminal do raspberry pi. Eu recomendo usar massa. No tipo de terminal:

wpa_passphrase "YourNetwork" "YourSSID" >> /etc/wpa_supplicant/wpa_supplicant.conf

"YourNetwork" é o nome da sua rede wi-fi e "YourSSID" é a senha da rede.

Depois de adicionar a rede, tente reiniciar o Raspberry Pi.

Digite o comando 'ping 8.8.8.8' que enviará um pacote para os servidores do google se você obtiver resposta, sua rede está configurada e funcionando!

Parte 3: Instale os programas necessários

Precisaremos instalar alguns programas extras para colocar este projeto em funcionamento.

Antes de começarmos, execute estes 2 comandos para se certificar de que tudo está atualizado.

atualização do apt sudo

atualização do apt sudo

Isso pode demorar um pouco.

Apache

sudo apt install apache2 -y

sudo apt install php libapache2-mod-php -y

MariaDB

sudo apt install mariadb-server mariadb-client -y

sudo apt install php-mysql -y

PHPMyAdmin

sudo apt install phpmyadmin -y

Python pip

Precisamos instalar o pip para habilitar algumas bibliotecas Python

pip3 instalar mysql-connector-python

pip3 instalar flask-socketio

pip3 instalar flask-cors

pip3 instalar gevent

pip3 install gevent-websocket

Etapa 2: Conectando os eletrônicos

Conectando a Eletrônica
Conectando a Eletrônica
Conectando a Eletrônica
Conectando a Eletrônica

Eu adicionei 2 esquemas, 1 é um esquema de breadboard para fins de teste. Eu recomendo construir o primeiro esquema e tentar fazer o código funcionar.

Eu adicionei os arquivos fritzing abaixo.

Etapa 3: Design de banco de dados

Design de banco de dados
Design de banco de dados

Este é o esquema de banco de dados que fiz. As palavras estão em holandês, mas explicarei cada tabela em detalhes.

Tabela 1: tblMuziek

Esta é uma mesa bastante básica. Ele salva o nome do artista, o nome da música e o nome do arquivo de uma música.

Tabela 2: tblLedstrip

Esta tabela mantém o controle do estado atual do ledstrip e salva o estado do ledstrip. Precisamos disso para a função de luz inteligente.

Tabela 3: tblSensoren

Esta tabela mantém o controle dos sensores em nosso alarme. Armazenamos o nome do sensor e o canal do MCP3008

Tabela 4: tblMeting

Esta tabela armazena os valores de nossos sensores junto com seu tempo.

Tabela 5: tblWekker

Esta tabela armazena a senha e o nome do seu despertador (por exemplo, Quarto). Esta tabela não é obrigatória, mas eu a adicionei porque suponho que você terá mais de 1 despertador em sua casa.

Tabela 6: tblAlarm

Esta é provavelmente a tabela mais importante. Ele mantém um registro dos alarmes que você configurou e o que o relógio deve fazer (qual música tocar, qual sequência de led, em que dias deve tocar, …). É muito importante manter o controle de 2 datas. 1 data é usada para armazenar em que horas o alarme deve tocar. O outro acompanha a última vez que o alarme disparou. Para saber em que dia da semana deveria sair, usei um varchar que contém um número de 7 dígitos. O primeiro dígito é segunda-feira, a segunda terça-feira, … Se for 1, então deve soar, se for 0, não deve. Exemplo: 1111100 significa que este alarme deve tocar na segunda, terça, quarta, quinta e sexta-feira.

Etapa 4: configuração do Arduino

Esta etapa é muito fácil. Haverá um link para meu github na próxima etapa, onde você pode baixar o arquivo arduino.

O que o programa faz?

O programa espera que os dados seriais venham do pi.

Assim que os dados são recebidos, ele analisa a string e envia de volta uma confirmação para o pi.

A string será mais ou menos assim: '1201' significa que são 12:01. Usei um display de ânodo comum de 7 segmentos, o que significa que os dígitos devem ser altos e A, B, C, D, E, F, G e DP devem ser baixos para ativá-los. Se você usar um cátodo comum, você deve apenas alterar HIGH para LOW e LOW para HIGH.

Aqui está um link com mais informações sobre como funcionam as telas de 7 segmentos. (com o uso de biblioteca):

www.instructables.com/id/Using-a-4-digit-7…

Aqui está um link sobre exibições de 7 segmentos sem o uso de uma biblioteca:

create.arduino.cc/projecthub/SAnwandter1/p…

Etapa 5: Back-end do Raspberry Pi

Raspberry Pi Back-end
Raspberry Pi Back-end

Você pode baixar meu código usando o Github. (https://github.com/VanHevelNico/WakeMeUp)

Como instalar o programa:

O back-end é escrito em python usando flask. Você pode fazer um serviço que inicia este programa (app.py) automaticamente.

Você deve colocar o código do frontend no arquivo html do servidor apache que baixamos anteriormente. (/ var / html)

Como funciona o programa?

Quando o despertador estiver ligado, vá para o endereço IP do seu relógio (ele será exibido no LCD)

Assim que você acessar esse endereço IP em seu navegador, seu computador enviará uma solicitação socket.io para o backend dizendo que um cliente se conectou. Quando o back-end receber isso, alguns tópicos serão iniciados, os quais explicarei a seguir.

Configurar

Isso inicializa todos os objetos necessários.

GetTemp

Isso lê o canal 0 do mcp3008 e converte os dados binários para a temperatura real e os coloca no banco de dados com a data e hora atuais.

GetTempGrafiek

Isso obtém os últimos 20 valores do sensor de temperatura e os emite para o frontend.

tijd_sturen

Este método obtém a hora atual e verifica se o minuto mudou. Se ele mudou, o programa envia o novo horário para o arduino usando comunicação serial

checkAlarmen

Este é o método mais importante. Ele obtém todos os alarmes que estão ativados e verifica se algum desses alarmes deve sair entre agora e 5 minutos atrás (este é um buffer para garantir que cada alarme seja acionado quando for necessário). Se o alarme tiver que disparar, vamos iniciar a música, o ledstrip, … Lemos o resistor sensível à força continuamente e quando o valor cai abaixo de 1000 (leia o fsr é pressionado) Desligamos o alarme e atualizamos o alarme no base de dados. Ajustamos a data em que o alarme disparou pela última vez para a data atual.

statusLight

Este método emite o valor do ledstrip e liga o ledstrip se necessário.

lichtAanpassen

Este é um método extra para garantir que a faixa de led e a luz do alarme não entrem em conflito.

Etapa 6: Caso

Caso
Caso
Caso
Caso
Caso
Caso

O link para meus arquivos pode ser encontrado aqui:

Usei uma impressora 3D para imprimir o invólucro. É impresso em 4 partes diferentes:

  1. A placa frontal com orifícios para o alto-falante e algumas paredes para a tela de 7 segmentos
  2. O anel externo para o ledstrip em PETG transparente.
  3. A parte do meio
  4. A placa traseira com um orifício para o lcd e um orifício para os cabos.

No modelo original não havia orifício para a tela de 7 segmentos, no entanto, isso é necessário porque, caso contrário, a luz da tela de 7 segmentos não brilhará através dela.

Como você pode ver depois de colocar todos os componentes, usei adesivos de vinil com aspecto de madeira para deixar o resultado final mais bonito. O visor do relógio brilha através do adesivo, o que cria um efeito de aparência muito agradável.

Recomendado: