Índice:

Morning Buddy: 8 Passos
Morning Buddy: 8 Passos

Vídeo: Morning Buddy: 8 Passos

Vídeo: Morning Buddy: 8 Passos
Vídeo: We will rock you (Dance Version for Basic Practice)​ 2024, Julho
Anonim
Image
Image

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

Desenho e materiais
Desenho e materiais

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

Desenho e materiais
Desenho 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

Criando o Invólucro Externo
Criando o Invólucro Externo
Criando o Invólucro Externo
Criando o Invólucro 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

Corte a laser do revestimento externo
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

Juntar as peças
Juntar as peças

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

Eletrônicos
Eletrônicos
Eletrônicos
Eletrônicos
Eletrônicos
Eletrônicos

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

Final
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: