Índice:
2025 Autor: John Day | [email protected]. Última modificação: 2025-01-13 06:58
O inverno pode ser triste. Você acorda, está escuro e você tem que sair da cama. A última coisa que você quer ouvir é o som irritante do seu despertador. Se você, como eu, tem problemas para acordar de manhã, este despertador é exatamente o que você precisa.
Neste tutorial, vamos construir um Sunrise Alarm Clock. É um despertador como qualquer outro, pois você pode definir a hora e o minuto que deseja acordar, mas com a vantagem de usar a luz para iluminar seu quarto durante um período de tempo, como o nascer do sol para acordar, em vez de um incômodo campainha!
Também usaremos um módulo bluetooth para criar um aplicativo que permite definir o alarme do seu telefone para o relógio. O display LCD mostrará a hora, a data e o dia da semana. Existem lâmpadas solares no mercado, mas podem ser caras (uma busca rápida no Google retorna produtos na faixa de € 100), frágeis e de aparência bastante clínica. É por isso que decidi fazer o meu próprio para meu Projeto da Escola Arduino. Todas as peças serão listadas na próxima etapa. O código pode ser baixado do meu Github repo sunrise-alarm-clock. Vamos começar:)
todo o código pode ser encontrado em:
Etapa 1: reunindo as peças
Usaremos um relógio como entrada e um LED ultrabrilhante como saída para simular o nascer do sol.
Para construir o circuito, precisaremos de:
- Arduino Uno-clockmodule RTC DS3231 - um MOSFET para controlar o brilho da luz - um LED superbrilhante (comprei 2, um aquecido, um frio) - Bateria de 9V para alimentar o LED - uma placa de ensaio - um display LCD (16: 2) - Adaptador Bluetooth hc-05 para que possamos usar um aplicativo para definir o alarme.
Tudo o que você precisa pode ser comprado em www.martoparts.nl
Etapa 2: montagem do circuito
Você pode consultar o esboço do meu circuito, infelizmente não consegui encontrar o RTC DS3231 no programa, então tive que ver com este. As conexões são um pouco diferentes na vida real, aqui estão as conexões. (o módulo bluetooth não está no esboço, mas explicarei como funciona abaixo, porque é bastante complicado)
RTC DS3231GND vai para GND no arduino
VCC vai para 5v
SDA vai para o Arduino
SCL vai para o arduino; não usaremos SQW e 32KMOSFET
O pino da porta vai para o pino ~ 9 no Arduino Uno porque o pino PWMDrain vai para o lado negativo do pino da fonte de LED vai para GND no ArduinoLCD-DisplayGND vai para GND no arduino
VCC vai para 5VSDA vai para A4 no arduinoSKL vai para A5 no arduinoLED- vai para mosfet + vai para bateria 5v9v Você pode comprar uma bateria 9v em qualquer loja local, conecte no arduino com uma tira de conector.
Módulo Bluetooth hc-055V vai para 5V do arduino
GND vai para GND no arduino
Agora há mais 2 entradas, mas aqui vem a parte complicada, temos que conectar as entradas opostas dessas 2 no arduinoTX de hc-05 vai para RX em arduinoRX de hc-05 vai para TX em arduino
Importante: Certifique-se de DESCONECTAR o TX & RX do HC-05 ao fazer o upload do código em seu arduino ou receberá um erro dizendo "algo deu errado com o upload do código" no compilador.
Etapa 3: Configurando a tela LCD e o relógio
A biblioteca usada para o display LCD é de cristal líquido e pode ser encontrada em: https://github.com/fdebrabander/Arduino-LiquidCrys… Baixe o arquivo zip, salve-o e coloque-o na pasta / bibliotecas do seu Arduino
A biblioteca que estou usando para rodar o relógio pode ser encontrada em Rinky-Dinky Electronics https://www.rinkydinkelectronics.com/library.php?id=73 e certifique-se de estar na página DS3231. Baixe o arquivo zip, salve-o e coloque-o na pasta de bibliotecas do seu Arduino.
Tempo
Inclua a biblioteca DS3231 ou DS1307 em seu código Arduino
Remova o comentário dessas 3 linhas de código para definir a hora:
// rtc.setDOW (SEGUNDA-FEIRA); // Defina o dia da semana como DOMINGO // rtc.setTime (23, 57, 0); // Defina a hora para 12:00:00 (formato de 24 horas) // rtc.setDate (14, 1, 2019); // Defina a data para 1º de janeiro de 2014
Tela de LCD
Inclua a biblioteca liqduicrystal_i2c em seu código Arduino
Para imprimir no visor LCD, use
lcd.setCursor (col, linha) // posição do texto impressolcd.print (~) // texto impresso
Etapa 4: codificação
Baixe o código em: github:
Remova o comentário dessas 3 linhas para ajustar o relógio em sua tela LCD:
// rtc.setDOW (SEGUNDA-FEIRA); // Defina o dia da semana como DOMINGO // rtc.setTime (23, 57, 0); // Defina a hora para 12:00:00 (formato de 24 horas) // rtc.setDate (14, 1, 2019); // Defina a data para 1º de janeiro de 2014
Use lcd.setCuros (col, linha); para definir a posição do texto em exibição
lcd.setCursor (0, 2);
e print () para imprimir algo no display
lcd.print (rtc.getDateStr ());
Altere essas variáveis se quiser
int fadeTime = 1; // Quanto tempo a luz vai diminuir para maxint setHour = 02; // Definir horas para despertar (horário militar) int setMin = 49; // Definir minuto para despertar int uled = 9; // Definir pinagem com PWM
Código do módulo bluetooth
String firstHalf = getValue (input, ':', 0); // verifique a primeira entrada até ":"
String secondHalf = getValue (input, ':', 1); // verifique a segunda entrada após ":"
// use este código se você não estiver usando o módulo bluetooth
// // if (t.hour == setHour && t.min == setMin) // Verifique se é hora de acordar! // { // começar(); //}
// verifique as entradas dos primeiros 2 dígitos e, em seguida, verifique os 2 segundos dígitos da entrada
if (t.hour == firstHalf.toInt () && t.min == secondHalf.toInt ()) {start (); }}
// lógica para separar strings
String getValue (dados de string, separador de caractere, índice interno) {int encontrado = 0; int strIndex = {0, -1}; int maxIndex = data.length () - 1;
for (int i = 0; i <= maxIndex && found <= index; i ++) {if (data.charAt (i) == separador || i == maxIndex) {found ++; strIndex [0] = strIndex [1] + 1; strIndex [1] = (i == maxIndex)? i + 1: i; }} retorno encontrado> índice? data.substring (strIndex [0], strIndex [1]): ""; }
Etapa 5: Hora do teste
Compile seu código e teste se os componentes funcionam!
Etapa 6: configuração do aplicativo Bluetooth
Como achei chato pesquisar o código toda vez que queria definir um alarme, queria fazer um aplicativo que definiria o alarme, o que é muito mais fácil.
Vá para https://ai2.appinventor.mit.edu onde podemos fazer um aplicativo simples que nos permite definir o alarme, incluí a configuração de design simples (você sempre pode ajustar isso mais tarde) e o código usado para o conexão bluetooth. Você pode então publicar seu aplicativo e conectar-se a ele em seu telefone usando um código QR ou baixando o aplicativo diretamente em seu computador e, em seguida, transferindo-o com um cabo em seu telefone. (captura de tela)
Etapa 7: Construindo o Caso
Você sempre pode construir uma caixa diferente em torno do relógio do seu arduino. Usei madeira e acrílico fosco para construir minha própria caixa de despertador. Eu escolhi plexiglass fosco para que você possa ver a luz brilhando claramente através da caixa, mas você não pode ver o interior do relógio.
Etapa 8: Concluído
Agora que você carregou o código para o seu arduino, construa o case e verifique se você montou corretamente o seu relógio, você pode definir um alarme no aplicativo bluetooth e começar a acordar com mais naturalidade!:)