Índice:
- Etapa 1: Brainstorming da ideia
- Etapa 2: esboço e materiais
- Etapa 3: Criação do revestimento externo
- Etapa 4: corte a laser do revestimento externo
- Etapa 5: juntando tudo
- Etapa 6: Código
- Etapa 7: Eletrônica
- Etapa 8: final
Vídeo: Morning Buddy: 8 Passos
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:38
Algumas pessoas têm agendas muito ocupadas, o que torna fácil esquecer uma ou duas coisas. Com este despertador, você pode definir vários alarmes para mantê-lo dentro do cronograma. O relógio funciona 24 horas e tudo o que você precisa fazer é programá-lo para tocar em horários diferentes do seu horário. Quando você fizer isso, os horários que você configurou aparecerão na tela LCD, para que você possa verificar se estão corretos e servir como um lembrete extra.
Etapa 1: Brainstorming da ideia
Quando estávamos tentando resolver o problema, usamos o método espinha de peixe para ter uma ideia e o resultado foi nosso despertador.
Etapa 2: esboço e materiais
Durante esta etapa, tentamos fazer uma lista de todas as coisas que pensamos que precisaríamos para a parte eletrônica e o revestimento externo. Em seguida, fizemos um esboço de como queríamos que fosse o despertador e como montaríamos seu invólucro externo.
Etapa 3: Criação do revestimento externo
Para o primeiro protótipo, eu só queria ver como as juntas dos dedos se encaixariam, então usei uma caixa de sapatos e não usei medidas exatas.
Etapa 4: corte a laser do revestimento externo
Para o segundo protótipo, eu queria obter medidas exatas e tive que criar um pdf para enviar ao cortador a laser. Para fazer isso, usei um site de aplicativo do box maker, https://boxdesigner.connectionlab.org. Nesse site, digitei as dimensões 3-D da caixa, a espessura do nosso material, as unidades de medida e o tipo de arquivo que eu queria criar. As dimensões das caixas eram de 7,5 pol. X 3 pol. X 5 pol. E usei um material acrílico de espessura de 1/8 pol. As medidas dos entalhes das juntas dos dedos foram então configuradas automaticamente para 0,46875 polegadas. Eu selecionei a versão em pdf porque esse é o tipo de arquivo que um cortador a laser lê e eu queria fazer algumas alterações no adobe no arquivo. Mudei as cores das linhas para vermelho, para que o cortador a laser soubesse como cortá-las em vez de gravar a forma, e adicionei uma caixa retângulo com dimensões de 3,92 pol por 1,56 pol no que seria a parte frontal do caixa. Também adicionei um retângulo cortado com dimensões de 1 pol. Por 0,5 pol. Na peça do lado direito na parte inferior para servir como uma abertura para o cabo conectado ao despertador. Por último, acrescentei três aberturas circulares na parte superior para as duas campainhas e o botão. As aberturas da campainha tinham um diâmetro de 0,5 pol. E a abertura do botão, 0,375 pol.
Etapa 5: juntando tudo
Quando todas as peças foram cortadas, usei uma seringa e cola acrílica para selar. Eu segurei as peças juntas e pinguei a cola entre os entalhes para fazer as laterais juntas, mas a parte superior não estava colada.
Etapa 6: Código
Introdução:
Este projeto foi codificado usando a linguagem c ++ no software Arduino IDE. O microcontrolador usado foi o NodeMCU com o ESP8266. Para este projeto, precisaríamos de uma maneira de manter o tempo com precisão, uma campainha para soar, um sistema de alarme para fazer o alarme tocar e uma tela para mostrar a hora e as horas do alarme. Para o código completo, consulte este link
Importando Bibliotecas
Em primeiro lugar, precisamos importar as bibliotecas necessárias.
#include "RTClib.h"
#include "Wire.h" #include #include #include #include
Variáveis de iniciação
Em seguida, precisamos iniciar variáveis para mais tarde, atribuir o layout de pino para os botões de campainha, configurar o RTC e definir o endereço I2C do display LCD.
LiquidCrystal_I2C lcd (0x27, 20, 4);
const int buzzer1 = 12; const int buzzer2 = 0; botão int const = 2; RTC_DS3231 rtc; char daysOfTheWeek [7] [12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"} int starttime; int activetime; int prevoustime = 0; char ahours1 [3]; char amins1 [3]; int hora1 = 0; int min1 = 0; char ahours2 [3]; char amins2 [3]; int hora2 = 0; int min2 = 0; char ahours3 [3]; char amins3 [3]; int hora3 = 0; int min3 = 0; alarme interno = 0; int ByteReceived; char recievedChar; const byte numChars = 32; char receivedChars [numChars];
Configurar
Em seguida, precisamos ter uma função que inicie todos os processos necessários. Nesta função, precisamos inicializar o LCD e imprimir os tempos iniciais, fazer uma função menor que dê ao RTC o tempo real se ainda não o tiver e iniciar o monitor serial.
void setup () {
#ifndef ESP8266 while (! Serial); #endif if (! rtc.begin ()) {Serial.println ("Não foi possível encontrar RTC"); enquanto (1); } if (rtc.lostPower ()) {Serial.println ("RTC perdeu energia, vamos definir a hora!"); rtc.adjust (DateTime (F (_ DATE_), F (_ TIME_)))} lcd.init (); lcd.backlight (); // torna o Baklight LIGADO. lcd.clear (); // Limpa o LCD lcd.print ("00:00"); // exibe no LCD após o upload do código lcd.setCursor (10, 0); lcd.print ("00:00"); lcd.setCursor (0, 1); lcd.print ("Tempo"); lcd.setCursor (10, 1); lcd.print ("Alarme 1"); lcd.setCursor (0, 3); lcd.print ("Alarme 2"); lcd.setCursor (0, 2); lcd.print ("00:00"); lcd.setCursor (10, 3); lcd.print ("Alarme 3"); lcd.setCursor (10, 2); lcd.print ("00:00"); rtc.begin (); pinMode (botão, INPUT); // Define um pino para o botão de silêncio pinMode (buzzer1, OUTPUT); // define um pino para a saída da campainha pinMode (buzzer2, OUTPUT); // define um pino para a saída da campainha Serial.begin (9600); Serial.println ("Tempo de entrada dos alarmes no formato HHMM sem espaço entre os alarmes"); hora de início = milis () / 1000; }
Recebendo dados
Agora, precisamos ser capazes de receber os horários de alarme. Para isso, criamos uma função para receber os dados do monitor serial e armazená-los em um array.
void recvWithEndMarker () {
estático int ndx = 0; String timein = Serial.readString (); para (ndx = 0; tempoin [ndx]; ndx ++) {recebidosChars [ndx] = tempoin [ndx]; } receivedChars [ndx] = '\ 0'; Serial.print (receivedChars); }
Configurando Alarmes
A próxima etapa é poder definir alarmes. Aqui está o código para o alarme 1. Para os alarmes 2 e 3, o mesmo processo foi repetido com algumas alterações de número.
/ * Alarme 1 * /
recvWithEndMarker (); int h, m; para (h = 0; h <2; h ++) {ahours1 [h] = Chars recebidos [h]; } para (m = 2; m <4; m ++) {amins1 [m-2] = Chars recebidos [m]; } ahours1 [h] = '\ 0'; amins1 [m-2] = '\ 0'; Serial.print (ahours1); Serial.print (amins1); hora1 = atoi (horas1); min1 = atoi (amins1); Serial.print (hora1); Serial.print (min1);
Campainha / Botão
Feito isso, precisamos fazer a campainha tocar quando o tempo real e o tempo do alarme forem iguais. Também nesta etapa criamos um botão tipo soneca que interrompe a campainha enquanto você o segura.
/ * Botão Silenciar * /
silêncio interno; int b; b = leitura digital (2); se (b == BAIXO) {silêncio = 1; } mais {silêncio = 0; } / * Iniciar alarme * / if (horas == hora1 && minutos == min1) {alarme = 1; } else if (hours == hour2 && mins == min2) {alarm = 1; } else if (hours == hour3 && mins == min3) {alarm = 1; } outro {alarme = 0; silêncio = 0; } if (alarm == 1 && silence == 0) {tone (buzzer1, 4000, 1000); tom (campainha2, 4000, 1000); atraso (1000); noTone (buzzer1); noTone (buzzer2); atraso (1000); }
Tempo de impressão
Finalmente, precisamos imprimir os horários de alarme e tempo real na tela LCD.
DateTime now = rtc.now ();
horas int = (agora.horas ()); min minutos = (agora.minuto ()); / * Hora do alarme no formato 00:00 * / lcd.setCursor (10, 0); lcd.print (ahours1); lcd.setCursor (13, 0); lcd.print (amins1); lcd.setCursor (0, 2); lcd.print (ahours2); lcd.setCursor (3, 2); lcd.print (amins2); lcd.setCursor (10, 2); lcd.print (ahours3); lcd.setCursor (13, 2); lcd.print (amins3); / * Exibir hora de RTC * / lcd.setCursor (0, 0); lcd.print (horas); lcd.print (":"); lcd.print (minutos);
Etapa 7: Eletrônica
Existem várias peças para a eletrônica deste projeto, como pode ser visto na lista de materiais. A primeira imagem é um esquema da eletrônica final do projeto. A segunda imagem é nosso design eletrônico final. A terceira imagem é do nosso projeto no meio do segundo protótipo.
Para começar, conecte seu NodeMCU à extremidade da placa de ensaio. Em seguida, você precisará conectar todos os outros componentes eletrônicos ao NodeMCU e à placa de ensaio. Comece conectando sua tela LCD aos pinos D1 para SCL e D2 para SDA. O LCD permitirá que o usuário veja a hora atual e os horários de alarme definidos. Agora, faça com que um fio conecte suas campainhas aos pinos D3 e D6. As campainhas permitirão que o alarme alerte o usuário quando o tempo definido for atingido. Agora você deve anexar um botão para permitir que o alarme seja interrompido. Anexe este botão ao pino D4. Agora você conectará seu relógio em tempo real à placa de ensaio. Conecte o relógio em tempo real de forma que ele use os mesmos pinos SDA e SCL usados para o display LCD.
Etapa 8: final
Se você seguiu as informações fornecidas, seu projeto pode se parecer com a imagem acima. Desejamos-lhe boa sorte em suas tentativas de recriar este projeto e quando você tiver concluído seu projeto, encorajamos você a compartilhar fotos e comentários conosco nos comentários. Obrigado e boa sorte companheiros Makers.
Recomendado:
Engenheiros Buddy Bluetooth Kbd e Mouse: 3 etapas
Engenheiros Buddy Bluetooth Kbd e Mouse .: Engenheiros Buddy USB teclado e módulo emulador de mouse. Este pequeno e prático dispositivo, com sua conexão blue-tooth, transforma seu telefone / tablet Android em um controle remoto sem fio para qualquer computador. Dá ao seu dispositivo Android controle sobre todos os componentes HID
Preguiçoso 301 Dart Buddy !: 5 Passos
Lazy 301 Dart Buddy !: Meus colegas de quarto da faculdade e eu recentemente herdamos um jogo de dardos surrado … Começamos a explorar jogos como 301, em que cada jogador começa com 301 pontos e chega a zero ao longo de algumas rodadas . Isso foi divertido, no entanto, escrever sobre
Arduino Bread Board Buddy: 12 etapas
Arduino Bread Board Buddy: Eu construo todos os circuitos em uma placa de pão; no entanto, construir o mesmo circuito uma centena de vezes pode se tornar monótono, então eu gosto de peças modulares para construir protótipos. A maioria dos circuitos, como fontes de alimentação de 5 volts, são bem padronizados. O Arduino Bread Board Budd
Stop Rants With the Rant Buddy: 8 etapas (com fotos)
Stop Rants With the Rant Buddy: Em minha casa, encontramos muito do que reclamar: o ônibus estava atrasado, o bebedouro no trabalho não estava frio o suficiente, a delicatessen fechava cedo. Mas se não forem controlados, esses pequenos resmungos podem se transformar em discursos totalmente desenvolvidos
Um sensor de temperatura e umidade de fala - Si7021 e Little Buddy Talker: 3 etapas
Um sensor de temperatura e umidade de fala - Si7021 e o Little Buddy Talker: o " Little Buddy Talker " é um pequeno dispositivo que permite adicionar uma saída de voz simples aos seus projetos do Arduino. Ele contém um conjunto limitado de 254 palavras e pode ser conectado ao Arduino ou a outros microcontroladores via SPI. The Little Buddy T