Съдържание:

Сутрешен приятел: 8 стъпки
Сутрешен приятел: 8 стъпки

Видео: Сутрешен приятел: 8 стъпки

Видео: Сутрешен приятел: 8 стъпки
Видео: Rumen Borilov - Svatben Blus / Румен Борилов - Сватбен Блус 2024, Ноември
Anonim
Image
Image

Някои хора имат много натоварен график, което улеснява забравянето на едно или две неща. С този будилник можете да настроите множество аларми, които да ви държат по график. Часовникът работи 24 часа и всичко, което трябва да направите, е да го програмирате да изгасне в различните часове на деня, които отговарят на вашия график. Когато правите това, зададените от вас часове ще се появят на LCD екрана, така че можете да проверите дали са правилни и да служат като допълнително напомняне.

Стъпка 1: Мозъчна атака на идеята

Скициране и материали
Скициране и материали

Когато се опитвахме да разрешим проблема, използвахме метода на рибената кост, за да измислим идея и в резултат на това създадохме будилника.

Стъпка 2: Скициране и материали

Скициране и материали
Скициране и материали

По време на тази стъпка се опитахме да направим списък с всички неща, които смятахме, че ще ни трябват за електрониката и външния корпус. След това измислихме скица на това как искаме да изглежда будилникът и как ще сглобим външния му корпус.

Стъпка 3: Създаване на външен корпус

Създаване на външен корпус
Създаване на външен корпус
Създаване на външен корпус
Създаване на външен корпус

За първия прототип просто исках да видя как ставите на пръстите ще си пасват, затова използвах кутия за обувки и не използвах точни измервания.

Стъпка 4: Лазерно рязане на външния корпус

Лазерно рязане на външния корпус
Лазерно рязане на външния корпус

За втория прототип исках да получа точни измервания и трябваше да създам pdf, който да изпратя до лазерния нож. За да направя това, използвах уебсайта на приложението за създаване на кутии, https://boxdesigner.connectionlab.org. След това на този уебсайт въведох триизмерните размери на кутията, дебелината на нашия материал, мерните единици и какъв тип файл искам да създаде. Размерите на кутиите бяха 7,5 x 3 x 5 инча и аз използвах 1/8 дебел акрилен материал. След това измерванията на вдлъбнатините на пръстите бяха автоматично конфигурирани да бъдат 0,46875 инча. Избрах pdf версията, защото това е типът файл, който чете лазерната резачка и исках да направя някои промени в adobe във файла. Промених цветовете на линията в червено, така че лазерният нож да знае да ги изреже, вместо да гравира формата, и добавих правоъгълна кутия с размери 3,92 инча на 1,56 инча върху това, което ще бъде предната част на кутия. Добавих и правоъгълник, изрязан с размери 1 на 0,5 инча в дясната страна в долната част, за да служи като отвор за кабела, свързан към будилника. Последно добавих три кръгли отвора в горната част за двата зумера и бутона. Отворите на зумера са с диаметър 0,5 инча, а отворът на бутона е 0,375 инча.

Стъпка 5: Сглобявайки го заедно

Сглобявайки го заедно
Сглобявайки го заедно

Когато всички парчета бяха изрязани, използвах спринцовка и акрилно лепило, за да го запечатам заедно. Държах парчетата заедно и капех лепилото между прорезите, за да направя страните заедно, но горната част не беше залепена.

Стъпка 6: Код

Въведение:

Този проект е кодиран с помощта на езика c ++ на софтуера Arduino IDE. Използваният микроконтролер беше NodeMCU с ESP8266. За този проект ще ни е необходим начин за точно отчитане на времето, звуков сигнал, алармена система, която да предизвиква бръмчене на алармата, и екран, който да показва всички времена и времената на алармата. За пълния код вижте тази връзка

Импортиране на библиотеки

Първо, трябва да импортираме необходимите библиотеки.

#include "RTClib.h"

#include "Wire.h" #include #include #include #include

Иницииране на променливи

След това трябва да инициираме променливи за по -късно, да зададем оформлението на щифтовете за бутоните, да настроим RTC и да зададем I2C адреса на LCD дисплея.

LiquidCrystal_I2C LCD (0x27, 20, 4);

const int зумер1 = 12; const int зумер2 = 0; const int бутон = 2; RTC_DS3231 rtc; char daysOfTheWeek [7] [12] = {"Неделя", "Понеделник", "Вторник", "Сряда", "Четвъртък", "Петък", "Събота"} int начален час; int activetime; int prevoustime = 0; char ahours1 [3]; въглеродни амини1 [3]; int час1 = 0; int min1 = 0; char ahours2 [3]; въглеродни амини2 [3]; int час2 = 0; int min2 = 0; char ahours3 [3]; въглеродни амини3 [3]; int час3 = 0; int min3 = 0; int аларма = 0; int ByteReceived; char recievedChar; const байт numChars = 32; char получилChars [numChars];

Настройвам

След това трябва да имаме функция, която да стартира всички необходими процеси. В тази функция трябва да стартираме LCD и да отпечатаме първоначалните времена, да направим по -малка функция, която дава RTC в реално време, ако вече няма такава, и да стартираме серийния монитор.

void setup () {

#ifndef ESP8266 while (! Сериен); #endif if (! rtc.begin ()) {Serial.println ("Не можах да намеря RTC"); докато (1); } if (rtc.lostPower ()) {Serial.println ("RTC загуби захранване, нека зададем часа!"); rtc.adjust (DateTime (F (_ DATE_), F (_ TIME_)))}} lcd.init (); lcd.backlight (); // прави Baklight ВКЛЮЧЕН. lcd.clear (); // Изчиства LCD lcd.print ("00:00"); // показване на LCD след качване на код lcd.setCursor (10, 0); lcd.print ("00:00"); lcd.setCursor (0, 1); lcd.print ("Време"); lcd.setCursor (10, 1); lcd.print ("Аларма 1"); lcd.setCursor (0, 3); lcd.print ("Аларма 2"); lcd.setCursor (0, 2); lcd.print ("00:00"); lcd.setCursor (10, 3); lcd.print ("Аларма 3"); lcd.setCursor (10, 2); lcd.print ("00:00"); rtc.begin (); pinMode (бутон, INPUT); // Задайте щифт за бутона за заглушаване pinMode (зумер1, OUTPUT); // задаваме щифт за изход на зумера pinMode (buzzer2, OUTPUT); // задаваме щифт за изход на зумера Serial.begin (9600); Serial.println ("Входно време на аларми във формат HHMM без интервал между алармите"); начален час = милис ()/1000; }

Получаване на данни

Сега трябва да можем да получаваме алармените часове. За да направим това, ние създадохме функция за получаване на данните от серийния монитор и съхраняването им в масив.

void recvWithEndMarker () {

статичен int ndx = 0; String timein = Serial.readString (); for (ndx = 0; timein [ndx]; ndx ++) {полученChars [ndx] = timein [ndx]; } полученChars [ndx] = '\ 0'; Serial.print (полученChars); }

Настройка на аларми

Следващата стъпка е да можете да настроите аларми. Ето кода за аларма 1. За аларма 2 и 3 същият процес беше повторен с няколко промени в номера.

/* Аларма 1*/

recvWithEndMarker (); int h, m; за (h = 0; h <2; h ++) {ahours1 [h] = получениChars [h]; } за (m = 2; m <4; m ++) {amins1 [m-2] = получениChars [m]; } ahours1 [h] = '\ 0'; amins1 [m-2] = '\ 0'; Serial.print (ahours1); Serial.print (amins1); час1 = atoi (ahours1); min1 = atoi (амини1); Serial.print (час1); Serial.print (min1);

Звънец/Бутон

След това трябва да накараме зумера да изгасне, когато реалното и аларменото време са равни. Също така в тази стъпка правим бутон за отлагане, който спира зумера, докато го държите.

/ * Бутон за заглушаване */

вътрешна тишина; int b; b = digitalRead (2); if (b == LOW) {тишина = 1; } else {тишина = 0; } / * Стартиране на аларма * / if (часове == час1 && минути == мин1) {аларма = 1; } иначе ако (часове == час2 && минути == мин2) {аларма = 1; } иначе ако (часове == час3 && минути == мин3) {аларма = 1; } else {аларма = 0; тишина = 0; } if (аларма == 1 && тишина == 0) {тон (зумер1, 4000, 1000); тон (зумер2, 4000, 1000); забавяне (1000); noTone (зумер1); noTone (зумер2); забавяне (1000); }

Печатни времена

И накрая, трябва да отпечатаме алармените времена и реалното време на LCD екрана.

DateTime сега = rtc.now ();

int часове = (now.hour ()); int минути = (now.minute ()); / * Алармено време във формат 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 (амини3); / * Време на показване от RTC */ lcd.setCursor (0, 0); lcd.print (часове); lcd.print (":"); lcd.принт (минути);

Стъпка 7: Електроника

Електроника
Електроника
Електроника
Електроника
Електроника
Електроника

Електрониката на този проект има няколко части, както се вижда от материала. Първото изображение е схема на крайната електроника на проектите. Второто изображение е нашият окончателен електронен дизайн. Третото изображение е на нашия проект в средата на втория прототип.

За да започнете, свържете вашия NodeMCU към далечния край на вашата дъска. След това ще трябва да свържете цялата си друга електроника към NodeMCU и макет. Започнете, като свържете вашия LCD екран към щифтове D1 за SCL и D2 за SDA. LCD дисплеят ще позволи на потребителя да види текущото време и зададените алармени времена. Сега нека кабелът свърже вашите зумери към щифтове D3 и D6. Звуковите сигнали ще позволят на алармата да предупреди потребителя, когато е достигнато зададеното време. Сега трябва да прикачите бутон, за да позволите алармата да бъде спряна. Прикрепете този бутон към щифт D4. Сега ще прикрепите часовника си в реално време към дъската. Свържете часовника в реално време, така че да използва същите щифтове SDA и SCL, използвани за LCD дисплея.

Стъпка 8: Крайна

Финал
Финал

Ако сте следвали предоставената информация, вашият проект може да изглежда като изображението по -горе. Желаем ви късмет в опитите ви да пресъздадете този проект и когато завършите проекта си, ви препоръчваме да споделите снимки и забележки с нас в коментарите. Благодаря и успех колеги създатели.

Препоръчано: