Mundarija:
- 1 -qadam: Fikrga aqliy hujum
- 2 -qadam: Eskiz va materiallar
- 3 -qadam: Tashqi korpusni yaratish
- 4 -qadam: tashqi qoplamani lazer bilan kesish
- 5 -qadam: uni birlashtirish
- 6 -qadam: kod
- 7 -qadam: elektronika
- 8 -qadam: Final
Video: Ertalabki do'stim: 8 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:26
Ba'zi odamlar juda band bo'lgan jadvalga ega, bu esa bir yoki ikki narsani unutishni osonlashtiradi. Bu budilnik yordamida siz o'z rejangizga rioya qilish uchun bir nechta budilnik o'rnatishingiz mumkin. Soat 24 soat ishlaydi va uni kunning turli vaqtlarida sizning jadvalingizga mos keladigan vaqtda dasturlash kifoya. Buni qilganingizda, siz belgilagan vaqt LCD displeyda paydo bo'ladi, shunda siz ularning to'g'riligini tekshirishingiz va qo'shimcha eslatma sifatida xizmat qilishingiz mumkin.
1 -qadam: Fikrga aqliy hujum
Muammoni hal qilmoqchi bo'lganimizda, biz g'oyani taklif qilish uchun baliq suyagi usulini qo'lladik va natijada budilnikimiz paydo bo'ldi.
2 -qadam: Eskiz va materiallar
Ushbu bosqichda biz elektronika va tashqi korpus uchun kerak bo'lgan hamma narsalarning ro'yxatini tuzishga harakat qildik. Keyin biz budilnik nimaga o'xshashligini va uning tashqi korpusini qanday yig'ishni eskizini ishlab chiqdik.
3 -qadam: Tashqi korpusni yaratish
Birinchi prototip uchun men barmoqlarning bo'g'imlari bir -biriga qanday mos kelishini ko'rishni xohlardim, shuning uchun men poyabzal qutisini ishlatardim va aniq o'lchovlardan foydalanmadim.
4 -qadam: tashqi qoplamani lazer bilan kesish
Ikkinchi prototip uchun men aniq o'lchovlarni olishni xohlardim va pdf formatini yaratib, uni lazer kesgichga yuborardim. Buning uchun men https://boxdesigner.connectionlab.org qutilarini yaratuvchi dastur veb -saytidan foydalandim. O'sha veb-saytda men qutining 3 o'lchamli o'lchamlarini, materialimizning qalinligini, o'lchov birliklarini va qanday fayl turini yaratishni xohlaganimni kiritdim. Qutilarning o'lchami 7,5 x 3 x 5 dyuym edi va men 1/8 dyuymli qalin akril materialdan foydalandim. Barmoqlar bo'g'imlarining o'lchovlari avtomatik ravishda 0,46875 dyuymga o'rnatildi. Men pdf versiyasini tanladim, chunki bu lazer kesuvchi o'qiydigan fayl turi va men Adobe -ga faylga o'zgartirish kiritishni xohlardim. Men chiziq ranglarini qizil rangga o'zgartirdim, shunda lazerli kesuvchi ularni o'yib yozishni emas, balki ularni kesib tashlashni bilishi uchun, men o'lchamlari 3,92 dyuymli 1,56 dyuymli to'rtburchaklar qutini old qismning old qismiga qo'shdim. quti. Bundan tashqari, budilnik bilan bog'langan simni ochish uchun pastki qismidagi o'ng tomoniga 1 dyuymdan 0,5 dyuymgacha kesilgan to'rtburchaklar qo'shdim. Oxir -oqibat men ikkita buzzer va tugma uchun tepaga uchta dumaloq teshik ochdim. Ovoz teshiklarining diametri 0,5 dyuymga, tugma ochilishi esa 0,375 dyuymga teng edi.
5 -qadam: uni birlashtirish
Barcha qismlar kesilganda, men uni yopish uchun shprits va akril elim ishlatardim. Men bo'laklarni bir -biriga bog'lab qo'ydim va qirralarning orasiga elim tomizdim, lekin uning yuqori qismi yopishtirilmagan.
6 -qadam: kod
Kirish:
Ushbu loyiha Arduino IDE dasturida c ++ tili yordamida kodlangan. ESP8266 bilan ishlaydigan NodeMCU mikro-boshqaruvchisi ishlatilgan. Bu loyihani amalga oshirish uchun bizga vaqtni to'g'ri ushlab turish, zil ovozi, signal signalini chaqiradigan signal tizimi, vaqt va signal vaqtlari ko'rsatiladigan ekran kerak bo'ladi. To'liq kodni bu havolaga qarang
Kutubxonalarni import qilish
Birinchidan, biz kerakli kutubxonalarni import qilishimiz kerak.
#"RTClib.h" ni qo'shing
#"Wire.h" ni qo'shing #qo'shishni #qo'shishni #qo'shishni #qo'shishni
O'zgaruvchilarni ishga tushirish
Keyin biz o'zgaruvchilarni keyinroq ishga tushirishimiz, signal tugmachalari uchun pin tartibini belgilashimiz, RTCni sozlashimiz va LCD displeyning I2C manzilini o'rnatishimiz kerak.
LiquidCrystal_I2C lcd (0x27, 20, 4);
const int buzzer1 = 12; const int buzzer2 = 0; const int tugmasi = 2; RTC_DS3231 rtc; char daysOfTheWeek [7] [12] = {"Yakshanba", "Dushanba", "Seshanba", "Chorshanba", "Payshanba", "Juma", "Shanba"} int boshlanish vaqti; int faol vaqt; int prevoustime = 0; char ahours1 [3]; char aminlar1 [3]; int soat1 = 0; int min1 = 0; char ahours2 [3]; char aminlar2 [3]; int soat2 = 0; int min2 = 0; char ahours3 [3]; char aminlari3 [3]; int soat3 = 0; int min3 = 0; int signal = 0; int ByteReceived; char qabul qilindiChar; const bayt numChars = 32; char qabul qilinganChars [numChars];
Sozlash
Keyinchalik, biz barcha kerakli jarayonlarni boshlaydigan funktsiyaga ega bo'lishimiz kerak. Bu funksiyada biz LCD -ni ishga tushirishimiz va boshlang'ich vaqtlarni chop etishimiz, kichikroq funktsiyani bajarishimiz kerak, agar u bo'lmasa, RTC real vaqtini beradi va ketma -ket monitorni ishga tushirishimiz kerak.
bo'sh o'rnatish () {
#ifndef ESP8266 while (! Seriyali); #endif if (! rtc.begin ()) {Serial.println ("RTC topilmadi"); vaqt (1); } if (rtc.lostPower ()) {Serial.println ("RTC kuchini yo'qotdi, vaqtni belgilashga ruxsat bering!"); rtc.adjust (DateTime (F (_ DATE_), F (_ TIME_)))}} lcd.init (); lcd.backlight (); // Baklight -ni yoqadi. lcd.clear (); // LCD lcd.printni tozalaydi ("00:00"); // lcd.setCursor kodini yuklagandan so'ng LCD displeyda ko'rsatish (10, 0); lcd.print ("00:00"); lcd.setCursor (0, 1); lcd.print ("Vaqt"); lcd.setCursor (10, 1); lcd.print ("Signal 1"); lcd.setCursor (0, 3); lcd.print ("Signal 2"); lcd.setCursor (0, 2); lcd.print ("00:00"); lcd.setCursor (10, 3); lcd.print ("Signal 3"); lcd.setCursor (10, 2); lcd.print ("00:00"); rtc.begin (); pinMode (tugma, INPUT); // pinMode (buzzer1, OUTPUT) tugmachasining ovozini o'chirish uchun pin o'rnating; // signal signalini chiqarish uchun pinni o'rnatish pinMode (buzzer2, OUTPUT); // signal signalini chiqarish uchun pin o'rnating Serial.begin (9600); Serial.println ("HHMM formatida signallar orasidagi bo'sh joysiz signallarni kiritish vaqti"); boshlanish vaqti = millis ()/1000; }
Ma'lumotlarni qabul qilish
Endi biz signal vaqtini bilishimiz kerak. Buning uchun biz ketma -ket monitordan ma'lumotlarni olish va ularni massivda saqlash funksiyasini yaratdik.
bekor recvWithEndMarker () {
statik int ndx = 0; String timein = Serial.readString (); uchun (ndx = 0; timein [ndx]; ndx ++) {qabul qilinganChars [ndx] = timein [ndx]; } qabul qilindiChars [ndx] = '\ 0'; Serial.print (qabul qilinganChars); }
Signallarni sozlash
Keyingi qadam - signallarni o'rnatish. Bu erda signal 1 kodi. 2 va 3 signallari uchun xuddi shu jarayon bir nechta raqam o'zgarishi bilan takrorlangan.
/* Signal 1*/
recvWithEndMarker (); int h, m; uchun (h = 0; h <2; h ++) {ahours1 [h] = qabul qilinganChars [h]; } uchun (m = 2; m <4; m ++) {amins1 [m-2] = olinganChars [m]; } soatlik [h] = '\ 0'; amins1 [m-2] = '\ 0'; Serial.print (ahours1); Ketma -ket chop etish (aminlar1); soat1 = atoi (soat 1); min1 = atoi (amins1); Serial.print (soat1); Ketma -ket chop etish (min1);
Buzzer/tugma
Shunday qilib, real vaqt va signal vaqti teng bo'lganda, biz signal signalini o'chirib qo'yishimiz kerak. Shuningdek, bu bosqichda biz signalni ushlab turganingizda to'xtaydigan tugmachani qaytaramiz.
/ * Tovush tugmasi */
int sukunat; int b; b = digitalRead (2); agar (b == LOW) {sukunat = 1; } boshqa {sukunat = 0; } / * Signalni ishga tushirish * / if (soat == soat1 && mins == min1) {signal = 1; } if if (hours == hour2 && mins == min2) {signal = 1; } if if (hours == hour3 && mins == min3) {signal = 1; } boshqa {signal = 0; sukunat = 0; } if (signal == 1 && sukunat == 0) {ohang (buzzer1, 4000, 1000); ohang (buzzer2, 4000, 1000); kechikish (1000); noTone (buzzer1); noTone (buzzer2); kechikish (1000); }
Bosib chiqarish vaqtlari
Nihoyat, biz signal vaqtini va real vaqtni LCD displeyga chop etishimiz kerak.
DateTime now = rtc.now ();
int soat = (hozir.hour ()); int mins = (hozir.minute ()); / * 00:00 formatidagi signal vaqti */ lcd.setCursor (10, 0); lcd.print (1 soat); lcd.setCursor (13, 0); lcd.print (amins1); lcd.setCursor (0, 2); lcd.print (2 soat); lcd.setCursor (3, 2); lcd.print (aminlar 2); lcd.setCursor (10, 2); lcd.print (3 soat); lcd.setCursor (13, 2); lcd.print (aminlar 3); / * RTC dan ko'rsatish vaqti */ lcd.setCursor (0, 0); lcd.print (soat); lcd.print (":"); lcd.print (daqiqa);
7 -qadam: elektronika
Materiallar varaqasida ko'rinib turganidek, ushbu loyihaning elektronikasida bir nechta bo'laklar mavjud. Birinchi rasm - yakuniy elektronika loyihalarining sxemasi. Ikkinchi rasm - bu bizning yakuniy elektron dizaynimiz. Uchinchi rasm - bu bizning loyihamizning ikkinchi prototipi o'rtasida.
Boshlash uchun NodeMCU -ni taxtaning chetiga ulang. Keyin siz boshqa barcha elektronikalarni NodeMCU va non paneliga ulashingiz kerak bo'ladi. LCD displeyni SCL uchun D1 va SDA uchun D2 pinlariga ulashdan boshlang. LCD displeyi foydalanuvchiga joriy vaqt va o'rnatilgan signal vaqtlarini ko'rish imkonini beradi. Endi simlarni D3 va D6 pinlariga ulang. Ovozli signal signallari foydalanuvchiga belgilangan vaqtga yetganda ogohlantirish imkonini beradi. Endi signalni to'xtatishga ruxsat berish uchun tugmani biriktirishingiz kerak. Ushbu tugmani D4 piniga ulang. Endi siz real vaqt soatingizni taxtaga biriktirasiz. Haqiqiy vaqtni sim bilan ulang, shunda u LCD displeyda ishlatiladigan bir xil SDA va SCL pinlarini ishlatadi.
8 -qadam: Final
Agar siz berilgan ma'lumotlarga amal qilgan bo'lsangiz, loyihangiz yuqoridagi rasmga o'xshab ketishi mumkin. Biz sizga ushbu loyihani qayta tiklashga urinishlaringizda omad tilaymiz va siz o'z loyihangizni tugatganingizda, bizni izohlarda rasm va mulohazalar bilan bo'lishishni tavsiya qilamiz. Rahmat va ijodkorlarga omad.
Tavsiya:
To'g'ridan-to'g'ri raqamli sintez (DDS) chipli MIDI tomonidan boshqariladigan qadam dvigateli: 3 qadam
To'g'ridan-to'g'ri raqamli sintez (DDS) chipli MIDI tomonidan boshqariladigan qadamli dvigatel: Siz hech qachon mini-loyihaga aylanishingiz kerak degan yomon fikrga keldingizmi? Xo'sh, men AD9833 to'g'ridan -to'g'ri raqamli sintez (DDS) moduli yordamida musiqa yaratishga qaratilgan Arduino Due uchun chizgan eskiz bilan o'ynab yurardim … va bir paytlar men o'yladim
Arduino uchun qadam tezligini boshqarish menyusi: 6 qadam
Arduino uchun qadam tezligini boshqarish menyusi: Bu SpeedStepper kutubxonasi qadam dvigatelining tezligini nazorat qilish uchun AccelStepper kutubxonasining qayta yozilishi. SpeedStepper kutubxonasi sizga belgilangan dvigatel tezligini o'zgartirishga imkon beradi, so'ngra xuddi shu algoritm yordamida yangi belgilangan tezlikka tezlashadi/sekinlashadi
Qanday qilib qadam taymerini yasash mumkin?: 3 qadam (rasmlar bilan)
Qanday qilib qadam taymerini yasash mumkin ?: Men ko'plab sport turlarida yaxshi qatnashardim: yurish, yugurish, velosiped haydash, badminton o'ynash va hokazo. Men tez orada sayohat qilishni yaxshi ko'raman. Xo'sh, qorin qornimga qarang …… Xo'sh, baribir, men mashg'ulotlarni qaytadan boshlashga qaror qildim. Qanday uskunani tayyorlashim kerak?
Ertalabki ichki kiyim: 11 qadam (rasmlar bilan)
Goodmorning ichki kiyimlari: Goodmorning ichki kiyimlari - bu ertalab sizni uyg'otish uchun tebranadigan külot. Bu loyiha elektron ichki kiyimlar sohasini yanada rivojlantirish borasidagi sa'y -harakatlarimning davomidir. Murakkab tsirkdan foydalanadigan oldingi barcha loyihalarimdan farqli o'laroq
Ertalabki mashina: 5 qadam (rasmlar bilan)
Ertalabki mashina: Siz hech qachon ertalab bezovta qiluvchi signalingizdan uyg'onganmisiz, keyin ichkilikni to'kish uchun oshxonaga borgansiz. Xo'sh, boshqa qaramang! Bu ko'rsatma sizga qila olmaydigan mashinani yasashni o'rgatadi