Мазмуну:

Таңкы дос: 8 кадам
Таңкы дос: 8 кадам

Video: Таңкы дос: 8 кадам

Video: Таңкы дос: 8 кадам
Video: Дана найманбаева 2024, Ноябрь
Anonim
Image
Image

Кээ бир кишилердин бош убактысы бар, бул бир же эки нерсени унутууну жеңилдетет. Бул ойготкучтун жардамы менен сиз график боюнча жүрүү үчүн бир нече ойготкучту коё аласыз. Саат 24 жолу иштейт жана болгону графигиңизге туура келген күндүн ар кайсы убагында өчүрүү үчүн программалоо керек. Муну аткарганда, сиз койгон убакыттар ЖК экранда пайда болот, ошондо сиз алардын туура экендигин текшерип, кошумча эскертүү катары кызмат кыла аласыз.

1 -кадам: Идеяга мээ чабуулу

Эскиз жана материалдар
Эскиз жана материалдар

Биз маселени чечүүгө аракет кылып жатканда, биз бир идеяны ойлоп табуу үчүн fishbone ыкмасын колдонуп, будильникибизди чыгардык.

2 -кадам: Эскиз жана материалдар

Эскиз жана материалдар
Эскиз жана материалдар

Бул этапта биз электроника жана сырткы корпус үчүн керек деп ойлогон нерселерибиздин тизмесин түзүүгө аракет кылдык. Андан кийин биз будильниктин кандай болушун каалаганыбызды жана анын сырткы корпусун кантип чогултканыбыздын эскизин ойлоп таптык.

3 -кадам: Сырткы корпусту түзүү

Сырткы корпусту түзүү
Сырткы корпусту түзүү
Сырткы корпусту түзүү
Сырткы корпусту түзүү

Биринчи прототип үчүн манжалардын муундары кантип бири -бирине туура келерин көргүм келди, ошондуктан бут кийим кутучасын колдондум жана так өлчөөлөрдү колдонгон жокмун.

4 -кадам: Сырткы корпусту лазер менен кесүү

Сырткы корпусту лазер менен кесүү
Сырткы корпусту лазер менен кесүү

Экинчи прототип үчүн мен так өлчөөлөрдү алгым келди жана лазер кескичке жөнөтүү үчүн pdf түзүүгө туура келди. Бул үчүн мен кутучаларды чыгаруучу колдонмонун веб -сайтын колдондум, https://boxdesigner.connectionlab.org. Ошол веб-сайтка мен кутунун 3-D өлчөмдөрүн, биздин материалдын калыңдыгын, өлчөө бирдиктерин жана кандай файлдын түзүлүшүн каалаганымды киргиздим. Кутучалардын өлчөмү 7,5 дюйм 3 х 5 дюйм болчу, мен калың акрил материалынын 1/8 бөлүгүн колдондум. Манжалардын биргелешкен оюктарынын өлчөөлөрү автоматтык түрдө 0.46875 дюймга конфигурацияланды. Мен pdf версиясын тандап алдым, анткени бул лазердик кескич окуй турган файлдын түрү жана Adobeго файлга кээ бир өзгөртүүлөрдү киргизгим келди. Мен сызыктын түстөрүн кызылга өзгөрттүм, ошону үчүн лазер кескич форманы оюп алуунун ордуна аларды кесип салууну билиши үчүн, мен 3.92 өлчөмүндөгү тик бурчтук кутучаны 1.56 дюймга коштум. кутуча. Мен ошондой эле ойготкуч саатка туташкан шнур үчүн ачылыш катары кызмат кылуу үчүн ылдый жагында 1инден 0,5инге чейинки өлчөмдөгү кесилген тик бурчтукту коштум. Акыркы жолу мен үстүңкү бөлүктө эки сигнал жана баскыч үчүн үч тегерек тешик коштум. Зумердин тешиктеринин диаметри 0,5 дюймду жана баскычтын ачылышы 0,375 дюймду түзгөн.

5 -кадам: Аны бириктирүү

Аны бириктирүү
Аны бириктирүү

Бардык бөлүктөр кесилгенде, мен аны шприц менен акрил клей менен жабыштырдым. Мен кесимдерди бириктирип, капталдарын бириктирүү үчүн оюктардын ортосуна клей тамыздым, бирок үстү жабышкан эмес.

6 -кадам: Код

Киришүү:

Бул долбоор Arduino IDE программасында c ++ тилинин жардамы менен коддолгон. Колдонулган микро контроллер ESP8266 менен NodeMCU болгон. Бул долбоор үчүн бизге убакытты так сактоо ыкмасы, ызылдаган үн, сигнализациянын ойготуучу сигнализация системасы жана бардык убакытты жана ойготуу убактысын көрсөтүү үчүн экран керек. Толук кодду бул шилтемеден караңыз

Китепканаларды импорттоо

Биринчиден, биз керектүү китепканаларды импорттошубуз керек.

#"RTClib.h" кошуу

#кошуу "Wire.h" #кошуу #кошуу #кошуу #кошуу

Variables баштоо

Кийинчерээк биз өзгөрмөлөрдү кийинчерээк иштетишибиз керек, ызылдагыч баскычтардын пин жайгашуусун дайындообуз, RTCди орнотуу жана ЖК дисплейинин I2C дарегин коюу керек.

LiquidCrystal_I2C lcd (0x27, 20, 4);

const int buzzer1 = 12; const int buzzer2 = 0; const int баскычы = 2; RTC_DS3231 rtc; char daysOfTheWeek [7] [12] = {"Жекшемби", "Дүйшөмбү", "Шейшемби", "Шаршемби", "Бейшемби", "Жума", "Ишемби"} int starttime; int activetime; int prevoustime = 0; char ahours1 [3]; char amins1 [3]; int hour1 = 0; int min1 = 0; char ahours2 [3]; char amins2 [3]; int hour2 = 0; int min2 = 0; char ahours3 [3]; char amins3 [3]; int hour3 = 0; int min3 = 0; int alarm = 0; int ByteReceived; char recievedChar; const байт numChars = 32; char алындыChars [numChars];

Жайгашуу

Андан кийин, биз бардык керектүү процесстерди баштоочу функцияга ээ болушубуз керек. Бул функцияда биз ЖКны иштетип, баштапкы убакытты басып чыгарышыбыз керек, эгерде ал жок болсо, RTCге реалдуу убакытты бере турган кичирээк функцияны жасап, сериялык мониторду иштетишибиз керек.

жараксыз орнотуу () {

#ifndef ESP8266 while (! Сериялык); #endif if (! rtc.begin ()) {Serial.println ("RTC табылган жок"); while (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 (buzzer1, OUTPUT) унчукпоо баскычы үчүн пин орнотуңуз; // сигнал чыгаруучу pinMode үчүн пин орнотуу (buzzer2, OUTPUT); // ызы -чуу чыгаруу үчүн пин орнотуу Serial.begin (9600); Serial.println ("Ойготкучтардын ортосунда боштук жок HHMM форматындагы сигналдарды киргизүү убактысы"); баштоо убактысы = миллис ()/1000; }

Маалыматтарды алуу

Эми, биз коңгуроо убактысын кабыл алышыбыз керек. Бул үчүн биз сериялык монитордон маалыматтарды алуу жана аны массивде сактоо функциясын түздүк.

жараксыз recvWithEndMarker () {

статикалык int ndx = 0; String timein = Serial.readString (); үчүн (ndx = 0; timein [ndx]; ndx ++) {takenChars [ndx] = timein [ndx]; } алындыChars [ndx] = '\ 0'; Serial.print (алындыChars); }

Ойготкучтарды орнотуу

Кийинки кадам - ойготкучтарды коюу. Бул жерде сигнал 1дин коду бар. 2 жана 3 сигналында ошол эле процесс бир нече сандын өзгөрүшү менен кайталанган.

/* Ойготкуч 1*/

recvWithEndMarker (); int h, m; үчүн (ч = 0; ч <2; ч ++) {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); hour1 = atoi (ahours1); min1 = atoi (amins1); Serial.print (hour1); Serial.print (min1);

Buzzer/Button

Муну менен биз реалдуу убакыт менен ойготкуч убактысы барабар болгондо, коңгуроону өчүрүшүбүз керек. Ошондой эле, бул баскычта биз коңгуроону басып турганда токтотуучу тындыруу сыяктуу баскыч жасайбыз.

/ * Унчукпоо баскычы */

int sessence; int b; b = digitalRead (2); if (b == LOW) {silence = 1; } else {silence = 0; } / * Сигналды баштоо * / if (hours == hour1 && mins == min1) {alarm = 1; } else if (hours == hour2 && mins == min2) {alarm = 1; } if if (hours == hour3 && mins == min3) {alarm = 1; } else {alarm = 0; жымжырттык = 0; } if (alarm == 1 && silence == 0) {тон (buzzer1, 4000, 1000); обон (buzzer2, 4000, 1000); кечигүү (1000); noTone (buzzer1); noTone (buzzer2); кечигүү (1000); }

Басып чыгаруу убактысы

Акыр -аягы, биз ЖК экранга ойготкуч убактысын жана реалдуу убакытты басып чыгарышыбыз керек.

DateTime now = rtc.now ();

int hours = (now.hour ()); int mins = (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 (amins3); / * Display Time from RTC */ lcd.setCursor (0, 0); lcd.print (саат); lcd.print (":"); lcd.print (мүнөт);

7 -кадам: Электроника

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

Материалдардын эсебинен көрүнүп тургандай, бул долбоордун электроникасында бир нече бөлүктөр бар. Биринчи сүрөт - бул долбоордун акыркы электроникасынын схемасы. Экинчи сүрөт - бул биздин акыркы электрондук дизайн. Үчүнчү сүрөт биздин долбоордун экинчи прототипинин ортосунда.

NodeMCUңузду панелдин эң четине тиркөө үчүн. Сиз андан кийин башка электроникаңыздын бардыгын NodeMCU жана нан тактасына туташтырышыңыз керек болот. ЖК экранды SCL үчүн D1 жана SDA үчүн D2 казыктарына туташтыруудан баштаңыз. ЖК колдонуучуга учурдагы убакытты жана коюлган ойготкуч убакытты көрүүгө мүмкүндүк берет. Эми зымдарды D3 жана D6 казыктарына туташтыруучу зым бар. Белгиленген убакыт жеткенде сигналдар колдонуучуну эскертүүгө мүмкүндүк берет. Сиз азыр сигналды токтотууга уруксат берүү үчүн баскычты тиркөөңүз керек. D4 туташтыруу үчүн бул баскычты тиркеңиз. Эми сиз реалдуу убакыт саатын нанга тактайсыз. Чыныгы убакыттагы саатты зымга бөлүңүз, андыктан ал LCD дисплей үчүн колдонулган SDA жана SCL төөнөгүчтөрүн колдонот.

8 -кадам: Финал

Финал
Финал

Эгер сиз берилген маалыматты ээрчисеңиз, сиздин долбоор жогорудагы сүрөттө окшош болушу мүмкүн. Биз бул долбоорду кайра түзүү аракеттериңизге ийгилик каалайбыз жана долбооруңузду аяктагандан кийин биз сизди комментарийлерде сүрөттөр жана эскертүүлөр менен бөлүшүүгө чакырабыз. Рахмат жана жаратуучуларга ийгилик.

Сунушталууда: