İçindekiler:
2025 Yazar: John Day | [email protected]. Son düzenleme: 2025-01-13 06:58
Bazı insanların çok yoğun programları vardır, bu da bir veya iki şeyi unutmayı kolaylaştırır. Bu çalar saatle, sizi programa uygun tutmak için birden fazla alarm ayarlayabilirsiniz. Saat 24'te çalışır ve tek yapmanız gereken onu, programınıza uyan günün farklı saatlerinde çalışacak şekilde programlamaktır. Bunu yaptığınızda, ayarladığınız saatler LCD ekranda belirecektir, böylece doğru olup olmadıklarını kontrol edebilir ve ekstra bir hatırlatma görevi görebilir.
Adım 1: Fikri Beyin Fırtınası
Sorunu çözmeye çalışırken kılçık yöntemini kullanarak bir fikir bulduk ve alarm saatimiz ortaya çıktı.
Adım 2: Eskiz ve Malzemeler
Bu adımda elektronik ve dış kasa için ihtiyaç duyacağımızı düşündüğümüz her şeyin bir listesini yapmaya çalıştık. Sonra çalar saatin nasıl görünmesini istediğimize ve dış kasasını nasıl monte edeceğimize dair bir taslak bulduk.
Adım 3: Dış Muhafazayı Oluşturma
İlk prototip için sadece parmak eklemlerinin nasıl birbirine uyacağını görmek istedim, bu yüzden bir ayakkabı kutusu kullandım ve kesin ölçüler kullanmadım.
Adım 4: Dış Muhafazanın Lazer Kesimi
İkinci prototip için kesin ölçümler almak istedim ve lazer kesiciye göndermek için bir pdf oluşturmam gerekiyordu. Bunu yapmak için https://boxdesigner.connectionlab.org adlı bir kutu üreticisi uygulaması web sitesi kullandım. O sitede daha sonra kutunun 3 boyutlu boyutlarını, malzememizin kalınlığını, ölçü birimlerini ve ne tür bir dosya oluşturmasını istediğimi girdim. Kutu boyutları 7,5 inç x 3 inç x 5 inç idi ve 1/8 kalınlığında akrilik malzeme kullandım. Parmak eklemi çentik ölçümleri daha sonra otomatik olarak 0,46875 inç olacak şekilde yapılandırıldı. Bir lazer kesicinin okuduğu dosya türü olduğu için pdf sürümünü seçtim ve dosyada adobe'da bazı değişiklikler yapmak istedim. Çizgi renklerini kırmızıya değiştirdim, böylece lazer kesici, şekli kazımak yerine onları keseceğini bilsin ve ön parçasının ne olacağı üzerine 3,92 x 1,56 inç boyutlarında bir dikdörtgen kutu ekledim. kutu. Ayrıca, çalar saate bağlı kablo için bir açıklık görevi görmesi için sağ taraftaki parçaya 1 inç x 0,5 inç boyutlarında kesilmiş bir dikdörtgen ekledim. Son olarak, iki zil ve düğme için üstte üç dairesel açıklık ekledim. Zil açıklıklarının çapı 0,5 inç ve düğme açıklığı 0,375 inç idi.
Adım 5: Bir araya getirmek
Tüm parçalar kesildiğinde, birbirine yapıştırmak için bir şırınga ve akrilik yapıştırıcı kullandım. Parçaları bir arada tuttum ve kenarları birleştirmek için yapıştırıcıyı çentiklerin arasına damlattım, ancak üst kısım yapıştırılmadı.
6. Adım: Kod
Tanıtım:
Bu proje Arduino IDE yazılımında c++ dili kullanılarak kodlanmıştır. Kullanılan mikro denetleyici, ESP8266'ya sahip NodeMCU idi. Bu proje için zamanı doğru bir şekilde tutacak bir yola, bir zil çalacak, alarmı çaldıracak bir alarm sistemine ve tüm zamanı ve alarm zamanlarını gösterecek bir ekrana ihtiyacımız olacak. Kodun tamamı için bu bağlantıya bakın
Kitaplıkları İçe Aktarma
Öncelikle gerekli kütüphaneleri import etmemiz gerekiyor.
#include "RTClib.h"
#include "Wire.h" #include #include #include #include
Değişkenleri Başlatma
Daha sonra değişkenleri başlatmamız, buzzer düğmeleri için pin düzenini atamamız, RTC'yi kurmamız ve LCD ekranın I2C adresini ayarlamamız gerekiyor.
LiquidCrystal_I2C lcd (0x27, 20, 4);
const int buzzer1 = 12; const int buzzer2 = 0; const int düğmesi = 2; RTC_DS3231 rtc; char daysOfTheWeek[7][12] = {"Pazar", "Pazartesi", "Salı", "Çarşamba", "Perşembe", "Cuma", "Cumartesi"} int başlangıç zamanı; int aktif zaman; int önceki zaman = 0; char ahours1[3]; char amins1[3]; int saat1 = 0; int min1 = 0; karakter saat2[3]; karakter aminler2[3]; int saat2 = 0; int min2 = 0; char saat3[3]; karakter aminler3[3]; int saat3 = 0; int min3 = 0; int alarm = 0; int ByteAlınan; alınan karakterChar; const bayt numChars = 32; alınan karakter[numChars];
Kurmak
Ardından, gerekli tüm işlemleri başlatan bir fonksiyona ihtiyacımız var. Bu fonksiyonda, LCD'yi başlatmamız ve ilk zamanları yazdırmamız, RTC'ye zaten sahip değilse gerçek zamanlı veren daha küçük bir fonksiyon yapmamız ve seri monitörü başlatmamız gerekiyor.
geçersiz kurulum() {
#ifndef ESP8266 while (!Seri); #endif if(! rtc.begin()) { Serial.println("RTC bulunamadı"); süre(1); } if (rtc.lostPower()) { Serial.println("RTC güç kaybetti, zamanı ayarlayalım!"); rtc.adjust(DateTime(F(_DATE_), F(_TIME_))) } lcd.init(); lcd.backlight(); // Baklight'ı AÇIK yapar. lcd.clear(); // LCD lcd.print("00:00"); //kod yüklendikten sonra LCD'de göster lcd.setCursor(10, 0); lcd.print("00:00"); lcd.setCursor(0, 1); lcd.print("Zaman"); lcd.setCursor(10, 1); lcd.print("Alarm 1"); lcd.setCursor(0, 3); lcd.print("Alarm 2"); lcd.setCursor(0, 2); lcd.print("00:00"); lcd.setCursor(10, 3); lcd.print("Alarm 3"); lcd.setCursor(10, 2); lcd.print("00:00"); rtc.begin(); pinMode(düğme, GİRİŞ); //Sessizlik düğmesi için bir pin ayarlayın pinMode(buzzer1, OUTPUT); // buzzer çıkışı için bir pin ayarla pinMode(buzzer2, OUTPUT); // buzzer çıkışı için bir pin ayarla Serial.begin(9600); Serial.println("Alarmlar arasında boşluk olmadan SSMM formatında alarmların giriş zamanı"); başlangıç zamanı = millis()/1000; }
Veri alıyor
Artık alarm zamanlarını alabilmemiz gerekiyor. Bunu yapmak için seri monitörden veri almak ve bir dizide saklamak için bir fonksiyon yarattık.
geçersiz recvWithEndMarker() {
statik int ndx = 0; String timein = Serial.readString(); for(ndx = 0; timein[ndx]; ndx++){ alınanKarakterler[ndx] = timein[ndx]; } alınanKarakterler[ndx] = '\0'; Serial.print(alınan Karakterler); }
Alarmları Ayarlama
Bir sonraki adım, alarmları ayarlayabilmektir. İşte alarm 1'in kodu. Alarm 2 ve 3 için aynı işlem birkaç numara değişikliği ile tekrarlandı.
/* Alarm 1*/
recvWithEndMarker(); int h, m; for (h = 0; h < 2; h++) { ahours1[h] = alınanKarakter[h]; } for (m = 2; m < 4; m++) { amins1[m-2] = alınanKarakter[m]; } ahours1[h] = '\0'; amins1[m-2] = '\0'; Serial.print(saat1); Serial.print(amins1); saat1 = atoi(saat1); min1 = atoi(aminler1); Seri.baskı(saat1); Seri.baskı(min1);
Zil/Düğme
Bunu yaptıktan sonra, gerçek zaman ve alarm zamanı eşit olduğunda buzzer'ı kapatmamız gerekiyor. Ayrıca bu adımda, siz basılı tutarken zili durduran bir erteleme benzeri düğme yapıyoruz.
/* Sessiz Düğmesi */
int sessizlik; int b; b = digitalRead(2); if (b == DÜŞÜK) { sessizlik = 1; } başka { sessizlik = 0; } /* Alarmı Başlat */ if (saat == saat1 && dakika == dakika1) { alarm = 1; } else if (saat == saat2 && dakika == min2) { alarm = 1; } else if (saat == saat3 && dakika == min3) { alarm = 1; } başka { alarm = 0; sessizlik = 0; } if (alarm == 1 && sessizlik == 0) { ton(buzzer1, 4000, 1000); ton(buzzer2, 4000, 1000); gecikme(1000); noTone(buzzer1); noTone(buzzer2); gecikme(1000); }
Baskı Süreleri
Son olarak alarm zamanlarını ve gerçek zamanı LCD ekrana yazdırmamız gerekiyor.
DateTime şimdi = rtc.now();
int saat = (şimdi.saat()); int dakika = (şimdi.dakika()); /* 00:00 formatında alarm zamanı */ lcd.setCursor(10, 0); lcd.print(saat1); lcd.setCursor(13, 0); lcd.print(amins1);lcd.setCursor(0, 2); lcd.print(saat2); lcd.setCursor(3, 2); lcd.print(amins2); lcd.setCursor(10, 2); lcd.print(saat3); lcd.setCursor(13, 2); lcd.print(amins3); /* RTC'den Zamanı Görüntüle */ lcd.setCursor(0, 0); lcd.print(saat); lcd.print(":"); lcd.print(dakika);
Adım 7: Elektronik
Malzeme listesinde görüldüğü gibi, bu projenin elektroniğine ait birden fazla parça var. İlk görüntü, projelerin nihai elektroniğinin bir şemasıdır. İkinci resim, son elektronik tasarımımızdır. Üçüncü görüntü, ikinci prototipin ortasındaki projemize ait.
NodeMCU'nuzu breadboard'unuzun uzak ucuna takmaya başlamak için. Daha sonra diğer tüm elektronik cihazlarınızı NodeMCU'ya ve devre tahtasına bağlamanız gerekecektir. LCD ekranınızı SCL için D1 ve SDA için D2 pinlerine bağlayarak başlayın. LCD, kullanıcının geçerli saati ve ayarlanmış alarm zamanlarını görmesini sağlar. Şimdi buzzerlarınızı D3 ve D6 pinlerine bağlayan bir kabloya sahip olun. Buzzer'lar, ayarlanan zamana ulaşıldığında alarmın kullanıcıyı uyarmasını sağlar. Alarmın durdurulmasına izin vermek için şimdi bir düğme eklemelisiniz. Bu düğmeyi D4 pimine takın. Şimdi gerçek zamanlı saatinizi devre tahtasına ekleyeceksiniz. Gerçek zamanlı saati, LCD ekran için kullanılan aynı SDA ve SCL pinlerini kullanacak şekilde bağlayın.
Adım 8: Son
Verilen bilgileri takip ettiyseniz projeniz yukarıdaki resimdeki gibi görünebilir. Bu projeyi yeniden yaratma girişimlerinizde size şans diliyoruz ve projenizi tamamladığınızda, yorumlarda bizimle resim ve görüşlerinizi paylaşmanızı öneririz. Teşekkürler ve iyi şanslar yapımcı arkadaşlar.