Съдържание:
- Стъпка 1: Мозъчна атака на идеята
- Стъпка 2: Скициране и материали
- Стъпка 3: Създаване на външен корпус
- Стъпка 4: Лазерно рязане на външния корпус
- Стъпка 5: Сглобявайки го заедно
- Стъпка 6: Код
- Стъпка 7: Електроника
- Стъпка 8: Крайна
Видео: Сутрешен приятел: 8 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:53
Някои хора имат много натоварен график, което улеснява забравянето на едно или две неща. С този будилник можете да настроите множество аларми, които да ви държат по график. Часовникът работи 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: Крайна
Ако сте следвали предоставената информация, вашият проект може да изглежда като изображението по -горе. Желаем ви късмет в опитите ви да пресъздадете този проект и когато завършите проекта си, ви препоръчваме да споделите снимки и забележки с нас в коментарите. Благодаря и успех колеги създатели.
Препоръчано:
Учебен приятел: 10 стъпки
Учебен приятел: Този инструктаж обяснява как да си направите ученик приятел Функцията на този приятел е да помага на тийнейджъри на възраст между 14 и 18 години да се научат как да планират и учат. Целта е роботът да се учи с учениците. Корицата е боядисана в
ShWelcome Box: Понякога приятел: 8 стъпки
ShWelcome Box: Понякога приятелят: Търсите ли компания?
Добре дошли в Приятел: 10 стъпки
Добре дошли в „Приятел: Проект, създаден от: Крис Канг, Дейвид Калман, Рик Шут и Миша Глиуни
Изграждане на 3D принтиран приятел на Arduino Social Robot: 9 стъпки
Изграждане на 3D принтиран Arduino социален робот Бъди: Бъди е 3D Printed социален робот arduino. Той взаимодейства със света, като използва ултразвуков сензор, за да очертае непосредствената си област. Когато нещо се промени в средата му, той реагира. Той може да бъде изненадан или любознателен, а понякога и малко агресивен
Приятел на бармана: превключвател @ Home Creative: 6 стъпки
Приятел на бармана: превключвател @ Home Creative: Замисляли ли сте се, докато забавлявате гостите у дома … " Боже - бих искал да имам уникален начин да покажа на госта си, когато напитката му достигне оптималното си ниво за пиене на чаша за парти. .. " ? Сега можете да осъществите това желание с