Мазмуну:
- 1 -кадам: Идеяга мээ чабуулу
- 2 -кадам: Эскиз жана материалдар
- 3 -кадам: Сырткы корпусту түзүү
- 4 -кадам: Сырткы корпусту лазер менен кесүү
- 5 -кадам: Аны бириктирүү
- 6 -кадам: Код
- 7 -кадам: Электроника
- 8 -кадам: Финал
Video: Таңкы дос: 8 кадам
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:41
Кээ бир кишилердин бош убактысы бар, бул бир же эки нерсени унутууну жеңилдетет. Бул ойготкучтун жардамы менен сиз график боюнча жүрүү үчүн бир нече ойготкучту коё аласыз. Саат 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 -кадам: Финал
Эгер сиз берилген маалыматты ээрчисеңиз, сиздин долбоор жогорудагы сүрөттө окшош болушу мүмкүн. Биз бул долбоорду кайра түзүү аракеттериңизге ийгилик каалайбыз жана долбооруңузду аяктагандан кийин биз сизди комментарийлерде сүрөттөр жана эскертүүлөр менен бөлүшүүгө чакырабыз. Рахмат жана жаратуучуларга ийгилик.
Сунушталууда:
Таңкы ич кийим: 11 кадам (сүрөттөр менен)
Goodmorning Underwear: Goodmorning Underwear - бул эртең менен сизди ойготуу үчүн дирилдеген трусики. Бул долбоор - электрондук ич кийим тармагын андан ары өнүктүрүүгө болгон аракеттеримдин уландысы. Мурунку татаал циркти колдонгон бардык долбоорлорумдан айырмаланып
ShWelcome кутуча: Кээде дос: 8 кадам
ShWelcome Box: Кээде дос: Сиз компания издеп жүрөсүзбү?
Таңкы машина: 5 кадам (сүрөттөр менен)
Таңкы машина: Сиз таң эрте тажатып жиберген ойготкучтан ойгонуп, анан суусундукту төгүү аракетинен өтүү үчүн ашканага чейин басып өттүңүз беле. Мейли, ары караба! Бул көрсөтмө сизге жасай албаган машинаны кантип жасоону үйрөтөт
Сокур дос үчүн сериалды кантип сүрөттөө керек: 4 кадам (сүрөттөр менен)
Сокур дос үчүн телесериалды кантип сүрөттөө керек.: Кээ бир сериалдар сүрөттөлөт (DVS), бирок көбү андай эмес, эгер сиз сокур же көрүүсү начар болсоңуз, нерселер бир аз түшүнүксүз болуп калышы мүмкүн. Сиз досуңуздун сүрөттөмөсүн жаза аласыз (бул досуңуз бир аз убакытты талап кыла баштайт), бирок жазыңыз
Дос үчүн сааттан ашык үйрөткүч: 7 кадам
Дос үчүн сааттан ашык үйрөткүч: ASUS Striker II мобосун кантип ылдамдатуу боюнча окуу куралы