Mündəricat:

DIY Arduino İkili Zəngli Saat: 14 Adım (Şəkillərlə birlikdə)
DIY Arduino İkili Zəngli Saat: 14 Adım (Şəkillərlə birlikdə)

Video: DIY Arduino İkili Zəngli Saat: 14 Adım (Şəkillərlə birlikdə)

Video: DIY Arduino İkili Zəngli Saat: 14 Adım (Şəkillərlə birlikdə)
Video: LDmicro 18: GPS-будильник Ublox NEO-6M (программирование лестничной схемы ПЛК микроконтроллера с помощью LDmicro) 2024, Noyabr
Anonim
DIY Arduino İkili Zəngli Saat
DIY Arduino İkili Zəngli Saat
DIY Arduino İkili Zəngli Saat
DIY Arduino İkili Zəngli Saat
DIY Arduino İkili Zəngli Saat
DIY Arduino İkili Zəngli Saat

Yenidən klassik ikili saatdır! Ancaq bu dəfə daha çox əlavə funksiya ilə! Bu təlimatlı kitabda, Arduino ilə nəinki vaxtı, həm də tarixi, ayı, hətta çarpayı lampası kimi də istifadə edilə bilən taymer və həyəcan funksiyalarını göstərə biləcək ikili zəngli saat qurmağı sizə göstərəcəyəm! Əlavə danışmadan başlayaq!

Qeyd: Bu layihə bir RTC modulundan istifadə etmir, buna görə dəqiqlik istifadə etdiyiniz lövhədən asılıdır. Müəyyən bir müddət ərzində zamanın sürüşməsini düzəldəcək bir düzəldici mexanizm daxil etdim, ancaq zaman aralığında doğru dəyəri tapmaq üçün təcrübə etməlisiniz (aşağıda bu barədə daha çox) və hətta düzəltmə mexanizmi ilə yenə də sürüşəcək. uzun müddət ərzində (biri olmadan müqayisə edildikdə). Kimsə maraqlıdırsa, bu layihədə RTC modulundan istifadə etməkdən çekinmeyin

Təchizat

5 mm LED (istənilən rəngdə, göstərici olaraq bir RGB LEDli 13 ağ LED istifadə etdim) --- 14 ədəd

Arduino Nano (digərləri işləyə bilər) --- 1 ədəd

Mikro açar-1 ədəd

Kiçik alüminium folqa parçası

Montaj lövhəsi (qapaq üçün, ancaq özünüz üçün dizayn etməkdən çekinmeyin)

Ağ kağız parçası (və ya başqa rəng)

Bəzi plastik film (kitabın üz qabığı kimi istifadə olunur)

Bir dəstə tel

Buzzer-1 ədəd

NPN transistoru-1 ədəd

Rezistorlar 6k8 --- 14 ədəd, 500R --- 1 ədəd, 20R (10Rx2) --- 1 ədəd, 4k7 --- 1 ədəd

Layihə üçün enerji təchizatı (li-on batareyadan istifadə etdim)

5050 LED şeridi və sürüşmə açarı (isteğe bağlı)

Addım 1: Dövrəni bağlayın

Dövrəni bağlayın!
Dövrəni bağlayın!

Bu addımı bölürəm:

1) Buzzer hissəsi

2) LED paneli

3) keçid (düymə)

4) LED şeridi

5) Kapasitans sensoru

6) Enerji təchizatı

7) Hamısını Arduinoya bağlayın

Çox vaxt bu, sadəcə "sxematik şəkildə izləyin" addımdır. Buna görə yuxarıdakı sxemə baxın və ya hətta yükləyin və çap edin!

Addım 2: Buzzer hissəsinin hazırlanması

Buzzer hissəsinin hazırlanması
Buzzer hissəsinin hazırlanması
Buzzer hissəsinin hazırlanması
Buzzer hissəsinin hazırlanması
Buzzer hissəsinin hazırlanması
Buzzer hissəsinin hazırlanması

Daha əvvəl Arduino ilə buzzer istifadə etmisinizsə, biləcəksiniz ki, onu birbaşa Arduino -ya bağlasaq, kifayət qədər yüksək olmayacaq. Buna görə gücləndiriciyə ehtiyacımız var. Gücləndiricini qurmaq üçün bir NPN tranzistoruna ehtiyacımız var (əsasən hər hansı bir NPN işləyəcək, köhnə layihədən aldığım üçün S9013 istifadə etdim) və cərəyanı məhdudlaşdırmaq üçün bəzi rezistorlar. Başlamaq üçün əvvəlcə tranzistorun kollektorunu, emitentini və əsasını müəyyənləşdirin. Məlumat cədvəlini bir az googling etmək bunun üçün işləyəcək. Sonra, tranzistorun kollektorunu siqnalın mənfi terminalına lehimləyin. Səs siqnalının pozitiv terminalında biz ona bir parça tel lehimləyirik ki, daha sonra Arduino -ya lehimləyək. Bundan sonra, 500R (və ya buna bənzər bir müqavimət dəyəri) müqavimətini tranzistorun bazasına və rezistordan lehimləyin, gələcək istifadə üçün başqa bir tel parçası lehimləyin. Nəhayət, iki 10R müqavimətini ardıcıl olaraq transistor emitörünə lehimləyin və rezistorlardan başqa bir tel bağlayın.

Həqiqətən, sxematiklərə baxın.

p/s: Bunu yazarkən hələ də tranzistor üçün müqavimət necə seçəcəyimi bilmirəm. İstifadə etdiyim dəyər empirik olaraq seçilir.

Addım 3: LED panelinin hazırlanması

LED panelinin hazırlanması
LED panelinin hazırlanması
LED panelinin hazırlanması
LED panelinin hazırlanması
LED panelinin hazırlanması
LED panelinin hazırlanması

LEDləri və rezistoru prototip lövhəsinə uyğun olaraq qoşun və lehimləyin. Bu belədir. Sxemaya əməl edin. İstifadə etdiyim boşluqla maraqlanırsınızsa, hər sütun üçün 3 deşik və hər satır üçün iki deşik (şəkilə baxın). Və göstərici LED? Təsadüfi olaraq bağladım.

LEDləri və rezistoru lövhəyə lehimlədikdən sonra, LED -lərin bütün müsbət terminallarını bir -birinə bağlayın. Sonra, LED -lərin mənfi terminallarında rezistorların hər birini bir -bir lehimləyin ki, daha sonra Arduinoya lehim edə bilək.

DİQQƏT: Bu addımı ata bilərsiniz. Unutmayın ki, bütün zəmini bir -birinə bağlamaq əvəzinə, bütün müsbət terminalı bir -birinə bağlayırıq və mənfi terminalı Arduino -dakı fərdi pinə bağlayırıq. Beləliklə, Arduino GPIO pinini Vcc yox, torpaq kimi istifadə edirik. Təsadüfən arxaya bağlasanız, narahat olmayın. LED nəzarət funksiyasında bütün YÜKSƏKLƏRİ DÜŞÜK və YÜKSƏK olaraq YÜKSƏ dəyişə bilərsiniz.

Addım 4: Anahtarı hazırlamaq (əslində düymə)

Anahtarı hazırlamaq (əslində düymə)
Anahtarı hazırlamaq (əslində düymə)
Anahtarı hazırlamaq (əslində düymə)
Anahtarı hazırlamaq (əslində düymə)
Anahtarı hazırlamaq (əslində düymə)
Anahtarı hazırlamaq (əslində düymə)

Keçid üçün (keçid adlandıracağam, çünki mikro keçid istifadə etdim, ancaq bunun düymə olduğunu bilirsiniz) 4k7 açılan rezistora və əlbəttə ki, keçidin özünə ehtiyacımız var. Ah, bəzi tellər hazırlamağı unutmayın. Rezistoru və bir tel parçasını mikro açarın ümumi zəminə (COM) lehimləməklə başlayın. Sonra başqa bir tel parçasını mikro açarın normal açılmış (NO) hissəsinə lehimləyin. Nəhayət, rezistora başqa bir tel bağlayın. Bir az isti yapışqan ilə bərkidin.

Bilik küncü: Niyə açılan bir rezistora ehtiyacımız var?

"Rəqəmsal G/Ç pinini hər şeydən ayırsanız, LED nizamsız yanıb -sönə bilər. Bunun səbəbi girişin" üzən "olmasıdır, yəni təsadüfi olaraq ya YÜKSƏK, ya da DÜŞÜK qaytaracaq. Bu səbəbdən bir çəkmə və ya dövrədəki açılan rezistor. " - Mənbə: Arduino veb saytı

Addım 5: LED şeridinin hazırlanması

LED şeridin hazırlanması
LED şeridin hazırlanması
LED şeridin hazırlanması
LED şeridin hazırlanması

LED şeridi isteğe bağlı olan yataq lampası üçündür. Sadəcə LED şeridi və sürüşmə açarını ardıcıl olaraq birləşdirin, xüsusi bir şey yoxdur.

Addım 6: Kapasitans Sensorunun Hazırlanması

Kapasitans Sensorunun Hazırlanması
Kapasitans Sensorunun Hazırlanması
Kapasitans Sensorunun Hazırlanması
Kapasitans Sensorunun Hazırlanması
Kapasitans Sensorunun Hazırlanması
Kapasitans Sensorunun Hazırlanması
Kapasitans Sensorunun Hazırlanması
Kapasitans Sensorunun Hazırlanması

Tamam şəkilə baxın. Əsasən teli kiçik bir alüminium folqa parçasına bağlayacağıq (çünki alüminium folqa lehimlənə bilməz) sonra montaj lövhəsinin kiçik bir hissəsinə yapışdırın. Xatırlatma, alüminium folqa tamamilə yapışdırmadığınızdan əmin olun. Bir hissəsini birbaşa təmas üçün açıq qoyun.

Addım 7: Güc Təchizatının Hazırlanması

Güc Təchizatının Hazırlanması
Güc Təchizatının Hazırlanması
Güc Təchizatının Hazırlanması
Güc Təchizatının Hazırlanması
Güc Təchizatının Hazırlanması
Güc Təchizatının Hazırlanması

Li-on batareyanı enerji təchizatı olaraq istifadə etdiyim üçün şarj və qoruma üçün TP4056 moduluna və gərginliyi 9v-a çevirmək üçün gücləndirici çeviriciyə ehtiyacım var. 9V divar adapterindən istifadə etmək qərarına gəlsəniz, DC yuvasına ehtiyacınız ola bilər və ya birbaşa qoşun. Diqqət yetirin ki, gücləndiricinin müqavimət dəyəri 9V üçün nəzərdə tutulmuşdur və başqa bir gərginlik istifadə etmək istəyirsinizsə, rezistoru dəyişdirməyiniz lazım ola bilər.

Addım 8: Onları Arduinoya bağlayın

Onları Arduinoya bağlayın
Onları Arduinoya bağlayın
Onları Arduinoya bağlayın
Onları Arduinoya bağlayın
Onları Arduinoya bağlayın
Onları Arduinoya bağlayın

Sxemaya əməl edin! Sxemaya əməl edin! Sxemaya əməl edin!

Yanlış pin bağlamayın, əks halda hər şey qəribə olacaq.

Addım 9: Qapaq

Mühafizə
Mühafizə
Mühafizə
Mühafizə
Mühafizə
Mühafizə
Mühafizə
Mühafizə

Dizaynımın ölçüsü 6.5cm*6.5cm*8cm olduğu üçün bir az həcmlidir. LED ekran üçün ön pəncərə və yataq lampası üçün üst pəncərədən ibarətdir. Dizaynım üçün şəkillərə baxın.

Addım 10: Proqramlaşdırma vaxtı

Image
Image
Proqramlaşdırma vaxtı!
Proqramlaşdırma vaxtı!

Aşağıdakı eskizimi yükləyin və Arduino -ya yükləyin. Bunu necə edəcəyinizi bilmirsinizsə, bu layihəni etməkdən narahat olmayın! Bəli, zarafat edirəm, burada yaxşı bir dərs var: eskizini arduinoya yükləyin

Sonra serial monitoru açın və cari vaxtı çıxardığını görməlisiniz. Vaxtı təyin etmək üçün bunu necə edəcəyinizi burada tapa bilərsiniz.

Saatı təyin etmək üçün: h, XX - burada xx cari saatdır

Dəqiqəni təyin etmək üçün: min, XX - xx cari dəqiqədir

İkincini təyin etmək üçün: s, XX

Tarixi təyin etmək üçün: d, XX

Ayı təyin etmək üçün: mon, XX

Yuxarıdakı şərh icra edildikdə, sizə təyin etdiyiniz dəyəri qaytarmalıdır. (Məsələn, h, 15 ilə saatı təyin edərkən, serial monitorda Saat: 15 -i qaytarmalıdır.

Kapasitans sensoru üçün işləməzdən əvvəl onu kalibr etməyiniz lazım ola bilər. Bunu etmək üçün mikro açarı iki dəfə basın və serial monitoruna baxın. Bir dəstə ədəd çıxarmalıdır. İndi barmağınızı kapasitans sensörünə qoyun və nömrənin aralığına diqqət yetirin. Sonra, "captrigger" dəyişənini dəyişdirin. Tutaq ki, basıldığında 20-30 alırsınız, sonra kaptrigger-i 20-yə qoyun.

Eskiz ADCTouch kitabxanasından istifadə edir, onu quraşdırdığınızdan əmin olun.

Addım 11: Düzəldici Mexanizm

Kodumdakı düzəliş mexanizminin müddəti mənim üçün dəqiq olana təyin edilmişdir. Saat hələ dəqiq deyilsə, "corrdur" dəyişəninin dəyərini dəyişdirməlisiniz.

Düzəliş son yeniləmədə indi 0 olaraq təyin olunur.

Düzəlişin dəyəri, bir saniyəni yavaşlatmaq üçün neçə milisaniyənin lazım olduğunu bildirir

Düzəlişin dəyərini öyrənmək üçün düsturdan istifadə edin:

2000/(y-x)/x)

burada x = keçən vaxtın əsl müddəti və y = saatın hər ikisinin saniyədə keçən müddəti

X və y -nin dəyərini tapmaq üçün kiçik bir təcrübə aparmaq lazımdır.

Saatın vaxtını həqiqi saata təyin edin və ilkin vaxtı qeyd edin (faktiki ilkin vaxt və saatın başlanğıc vaxtı eyni olmalıdır). Bir müddət sonra (bir neçə saat), son faktiki vaxtı və saatın son vaxtını qeyd edin.

x = faktiki son vaxt-başlanğıc vaxt və y = saat son zaman-başlanğıc vaxt

Sonra koddakı corrdur dəyərini dəyişdirin və Arduinoya yenidən yükləyin.

Sonra testi təkrarlayın və bu dəfə düstur dəyişdi:

2000/((2/z)+(y-x/x))

Burada x və y əvvəlki ilə eyni şeydir, z isə cari düzəldici dəyərdir.

Yenidən yükləyin və sizin üçün kifayət qədər dəqiq olana qədər testi təkrar -təkrar edin.

Saatınız hələ də sürətlənirsə, hətta düzəliş 0-a (düzəltmə mexanizmi demək deyil) təyin olunarsa, kodun düzəldici mexanizm hissəsində ikinci ++ -ı ikinciyə dəyişməlisiniz (şərh etdim), korduru 0-a qoyun, sonra no tapın. bir saniyəni sürətləndirmək üçün milisaniyəni alır.

Addım 12: Bütün funksiyaları necə istifadə etmək olar

Image
Image

Mikro açara basaraq rejimi dəyişə bilərsiniz.

Birinci rejimdə sadəcə vaxtı göstərir. Göstərici işığı saniyədə 1 dəfə yanıb -sönərsə, həyəcan sönür. Saniyədə 2 dəfə olarsa, həyəcan açılır. Kapasitans sensoruna basaraq həyəcanı ilk rejimdə 10 dəqiqə gecikdirə bilərsiniz.

İkinci rejimdə tarix göstərilir. Sıxılma sensoru heç bir şey etməz.

Üçüncü rejimdə, taymer təyin edə bilərsiniz. Kapasitans sensoruna basmaq zamanlayıcıyı açacaq və göstərici işığının yanıp sönməyə başladığını görməlisiniz. Kapasitans sensoru, taymer vaxtını təyin etmək üçün də istifadə olunur. Taymer aralığı 1 dəqiqədən 59 dəqiqəyə qədərdir.

Dördüncü rejimdə, kapasitans sensoru istifadə edərək zəngli saat təyin edə bilərsiniz

Beşinci rejimdə, kapasitans sensoru istifadə edərək həyəcan dəqiqəsini təyin edə bilərsiniz.

Altıncı rejimdə, kapasitans sensoruna basaraq saatı dəyişmədən dəqiqəni 30 -a, saniyəni 0 -a sıfırlayacaqsınız. Bu o deməkdir ki, saatınız 30 dəqiqədən çox sürüşmür, bu rejimi istifadə edərək yenidən kalibr edə bilərsiniz.

Yeddinci rejim, kapasitans sensoru şarj edərkən arızalanması halında heç bir şey etməmək rejimidir.

Oh, həyəcanı söndürmək üçün mikro açarı basın. (ALARM SNOOZE DAHİL OLMASINA SON GÜNCÜLMƏ)

Yaxşı, saatı oxumağa necə? Bu asandır! İkili Saat Oxu - Wikihow İlk vaxtlar özünüzü qəribə hiss edə bilərsiniz, ancaq buna öyrəşəcəksiniz!

Addım 13: Nəticə

Nəticə
Nəticə
Nəticə
Nəticə

Niyə bu layihəyə başladım. Başlanğıcda, köhnə bir rəqəmsal saatım olduğuna görə yatıram və onu zəngli saata çevirmək istəyirəm. Təəssüf ki, köhnə saat qırıldı. Niyə Arduino istifadə edərək birini qurmursunuz? Bir az google axtarışı ilə Cello62 tərəfindən öyrədilə bilən RTC olmadan bu ikili saat layihəsini tapdım. Ancaq istədiyim zəngli saat xüsusiyyəti yoxdur, buna görə kodu götürüb özüm dəyişdirirəm. Və layihə doğulur. Üstəlik, bu yaxınlarda təlimat verən bir saat yarışması gördüm ki, bu da mənə daha çox motivasiya verdi. Hər halda, bu hələ də Arduino istifadə edən ilk layihəmdir, buna görə də bir çox mümkün inkişaflar.

Gələcək inkişaf:

1) RTC istifadə edin

2) Siqnal və ya vaxtı və ya taymeri simsiz olaraq təyin edin!

3) Düşündüyüm xüsusiyyət

Addım 14: Yeniləmə: Bir həftəlik istifadədən sonra

Yeniləmə: Bir həftəlik istifadədən sonra
Yeniləmə: Bir həftəlik istifadədən sonra
Yeniləmə: Bir həftəlik istifadədən sonra
Yeniləmə: Bir həftəlik istifadədən sonra
Yeniləmə: Bir həftəlik istifadədən sonra
Yeniləmə: Bir həftəlik istifadədən sonra

Açıq problemdən başqa - vaxt sürüşməsi, deyəcəyim növbəti problem enerji istehlakıdır. Əvvəlcə gərginliyi 9v -a qədər artırıram, sonra Arduinodakı xətti tənzimləyici tərəfindən aşağı salınacaq. Xətti tənzimləyici çox səmərəsizdir. Saat yalnız BİR GÜN üçün davam edir. Yəni hər gün şarj etməliyəm. Bütün sistemin yalnız təxminən 50% səmərəli olduğunu başa düşməyincə bu, ən böyük razılaşma deyil. Batareyamın 2000 mAh olduğunu nəzərə alaraq, hər gün sərf olunan enerjini hesablaya bilərdim.

Enerji boşa çıxdı = (7.4Wh*10%)+(7.4Wh*90%*50%) = 4.07Wh gündə

Bu, ildə 1.486 kVt / saatdır! Bu, 283 q su (25 C ilə 100 C arasında) qaynatmaq üçün istifadə edilə bilərmi? Ancaq hər halda, saatın səmərəliliyini artıracağam. Bunun yolu xətti tənzimləyicidən heç istifadə etməməkdir. Bu o deməkdir ki, gücləndirici çeviricini 5V çıxışını Arduino üzərindəki 5V pininə düzəltməliyik. Daha sonra, daha da boşa çıxan enerjini minimuma endirmək üçün, hər iki LED -i (pin13 və güc) çıxarmalıyam, çünki onlar gündə 0.95Wh sərf edəcəklər. Təəssüf ki, SMD lehimləmə işində heç bir işim yoxdur, buna görə mənim üçün yeganə yol lövhədəki dəmir yolu kəsməkdir. Bundan sonra, səs siqnalı üzərindəki yayıcı rezistoru və yataq lampasını çıxarmalıyam (LED şeridi 5V -də işləmir). Amma bu o gözəl xüsusiyyətdən imtina etməli olduğunuz anlamına gəlirmi? Yox! Burada iki seçiminiz var: Normal 5 mm LED dioddan istifadə edin və ya 5 V LED şeridi istifadə edin. Ancaq mənim üçün bu layihəni keçən həftə ərzində etməkdən yoruldum, buna görə də bu xüsusiyyətdən imtina etmək qərarına gəldim. Bununla birlikdə, açarı əvvəlcə enerjiyə qənaət etmək üçün saat panelini açmaq və ya söndürmək üçün işıq xüsusiyyəti üçün istifadə etdim, amma söndürdüyümdə LED yanıb söndü. Hata xüsusiyyət halına gəlirmi? Bilmirəm (bilən varsa mənə aşağıda yazsın).

Modifikasiyanın sonunda saat artıq 2 gündən çox davam edir!

Növbəti saatla bağlı daha az ciddi problemim var. Şarj edərkən, kapasitans sensoru dəli olacaq, buna görə tamamilə heç bir şey etməyən başqa bir rejim əlavə edirəm.

Vaxt sürüşməsinə gəldikdə, hər gün kompüteri yenidən qurmaq çox əlverişsiz olduğundan, dəqiqəni 30 və saniyəni 0 -a təyin edəcək başqa bir rejim əlavə etdim. Yəni hər hansı bir saatın yarısında sıfırlaya bilərsiniz!

Tövsiyə: