İçindekiler:

DIY Arduino İkili Çalar Saat: 14 Adım (Resimlerle)
DIY Arduino İkili Çalar Saat: 14 Adım (Resimlerle)

Video: DIY Arduino İkili Çalar Saat: 14 Adım (Resimlerle)

Video: DIY Arduino İkili Çalar Saat: 14 Adım (Resimlerle)
Video: TİKTOK DİLENCİLERİ PART 1 DAHA NELER DEDİRTEN Video #tiktok #tiktokvideo #tiktokvideo 2024, Temmuz
Anonim
DIY Arduino İkili Çalar Saat
DIY Arduino İkili Çalar Saat
DIY Arduino İkili Çalar Saat
DIY Arduino İkili Çalar Saat
DIY Arduino İkili Çalar Saat
DIY Arduino İkili Çalar Saat

Yine klasik ikili saat! Ama bu sefer daha fazla ek işlevle! Bu talimatta, Arduino ile size sadece zamanı değil, aynı zamanda tarihi, ayı, hatta başucu lambası olarak da kullanılabilen zamanlayıcı ve alarm fonksiyonlarıyla birlikte gösteren bir ikili alarm saatinin nasıl oluşturulacağını göstereceğim! Daha fazla uzatmadan başlayalım!

Not: Bu proje bir RTC modülü kullanmaz, bu nedenle doğruluk kullandığınız karta bağlıdır. Belirli bir süre boyunca zaman kaymasını düzeltecek bir düzeltici mekanizma ekledim, ancak zaman aralığı için doğru değeri bulmak için denemeler yapmanız gerekecek (Aşağıda bununla ilgili daha fazla bilgi var) ve düzeltici mekanizmayla bile kaymaya devam edecek uzun bir süre boyunca (bir olmadan karşılaştırıldığında). Herhangi biri ilgileniyorsa, bu projede RTC modülünün kullanımını uygulamaktan çekinmeyin

Gereçler

5mm LED (herhangi bir renkte, gösterge olarak bir RGB LED'li 13 beyaz LED kullandım) --- 14 adet

Arduino Nano (diğerleri çalışabilir) --- 1 adet

Mikro anahtar --- 1 adet

Küçük bir parça alüminyum folyo

Montaj panosu (muhafaza için, ancak kendinizinkini tasarlamaktan çekinmeyin)

Beyaz kağıt parçası (veya başka bir renk)

Biraz plastik film (kitabın kapağı olarak kullanılan)

demet tel

Zil --- 1 adet

NPN transistör --- 1 adet

Dirençler 6k8 --- 14 adet, 500R --- 1 adet, 20R (10Rx2) --- 1 adet, 4k7 --- 1 adet

Proje için güç kaynağı (li-on pil kullandım)

5050 LED şerit ve sürgülü anahtar (isteğe bağlı)

Adım 1: Devreyi Bağlayın

Devreyi Bağlayın!
Devreyi Bağlayın!

Bu adımı şu şekilde böleceğim:

1) Zil parçası

2) LED paneli

3) Anahtar (düğme)

4) LED şerit

5) Kapasite sensörü

6) Güç kaynağı

7) Hepsini Arduino'ya bağlayın

Çoğu zaman, bu sadece bir "şemayı takip et" adımıdır. Bu yüzden yukarıdaki şemaya bakın veya hatta indirin ve yazdırın!

Adım 2: Buzzer Bölümünü Hazırlama

Buzzer Parçasını Hazırlama
Buzzer Parçasını Hazırlama
Buzzer Parçasını Hazırlama
Buzzer Parçasını Hazırlama
Buzzer Parçasını Hazırlama
Buzzer Parçasını Hazırlama

Daha önce Arduino ile buzzer kullandıysanız, doğrudan Arduino'ya bağlarsak yeterince yüksek olmayacağını bileceksiniz. Yani bir amplifikatöre ihtiyacımız var. Amplifikatörü inşa etmek için bir NPN transistörüne ihtiyacımız var (temelde herhangi bir NPN çalışacak, eski projeden aldığım için S9013 kullandım) ve akımı sınırlamak için bir direnç. Başlamak için önce transistörün kollektörünü, vericisini ve tabanını tanımlayın. Veri sayfasını biraz araştırmak bunun için işe yarayacaktır. Ardından, transistörün kolektörünü buzzerın negatif terminaline lehimleyin. Buzzer'ın pozitif terminalinde, daha sonra Arduino'muza lehimleyebilmemiz için sadece bir parça tel lehimliyoruz. Bundan sonra, 500R (veya herhangi bir benzer direnç değeri) direncini transistörün tabanına ve dirençten lehimleyin, ileride kullanmak üzere başka bir tel parçası lehimleyin. Son olarak, iki 10R direncini seri olarak transistörün emitörüne lehimleyin ve dirençlerden gelen başka bir kabloyu bağlayın.

Gerçekten, şemaya bakın.

p/s: Bunu yazarken hala transistör için direnç seçmeyi gerçekten bilmiyorum. Kullandığım değer ampirik olarak seçilmiştir.

Adım 3: LED Panelini Hazırlama

LED Panelin Hazırlanması
LED Panelin Hazırlanması
LED Panelin Hazırlanması
LED Panelin Hazırlanması
LED Panelin Hazırlanması
LED Panelin Hazırlanması

LED'leri ve rezistörü buna göre prototip panosuna takın ve lehimleyin. Bu kadar. Şemayı takip edin. Kullandığım boşlukla ilgileniyorsanız, her sütun için 3 delik ve her satır için iki delik (resme bakın). Ve gösterge LED'i? Rastgele taktım.

LED'leri ve direnci karta lehimledikten sonra, LED'lerin tüm pozitif terminallerini birbirine bağlayın. Daha sonra LED'lerin negatif terminallerindeki dirençlerin her birine kabloları tek tek lehimliyoruz, böylece daha sonra Arduino'ya lehimleyebiliriz.

NOT: Bu adımda kafanız karışabilir. Unutmayın, tüm toprakları birbirine bağlamak yerine, tüm pozitif terminalleri birbirine ve negatif terminali Arduino'daki bireysel pime bağlarız. Böylece toprak olarak Vcc değil Arduino GPIO pinini kullanıyoruz. Yanlışlıkla geriye bağlarsanız endişelenmeyin. Tüm YÜKSEK'ten DÜŞÜK'e ve DÜŞÜK'ten YÜKSEK'e kadar hepsini ledkontrol işlevinde değiştirebilirsiniz.

Adım 4: Anahtarı Hazırlama (Aslında buton)

Anahtarı Hazırlama (Aslında buton)
Anahtarı Hazırlama (Aslında buton)
Anahtarı Hazırlama (Aslında buton)
Anahtarı Hazırlama (Aslında buton)
Anahtarı Hazırlama (Aslında buton)
Anahtarı Hazırlama (Aslında buton)

Anahtar için (buna anahtar diyeceğim çünkü mikro anahtar kullandım, ancak bunun buton olduğunu biliyorsunuz), 4k7 çekme direncine ve tabii ki anahtarın kendisine ihtiyacımız var. Ah, biraz kablo hazırlamayı unutma. Direnci ve bir parça teli mikro anahtarın ortak toprağına (COM) lehimleyerek başlayın. Ardından, mikro anahtarın normalde açık olan (NO) ucuna başka bir tel parçası lehimleyin. Son olarak, dirence başka bir kablo bağlayın. Biraz sıcak tutkalla sabitleyin.

Bilgi köşesi: Neden bir aşağı çekme direncine ihtiyacımız var?

"Dijital G/Ç pinini her şeyden ayırırsanız, LED düzensiz bir şekilde yanıp sönebilir. Bunun nedeni, girişin "kayan" olmasıdır - yani, rastgele YÜKSEK veya DÜŞÜK olarak dönecektir. devredeki aşağı çekme direnci." -- Kaynak: Arduino web sitesi

Adım 5: LED Şeridi Hazırlama

LED Şerit Hazırlama
LED Şerit Hazırlama
LED Şerit Hazırlama
LED Şerit Hazırlama

LED şerit, isteğe bağlı olan başucu lambası içindir. Sadece LED şeridi bağlayın ve anahtarı seri olarak kaydırın, özel bir şey değil.

Adım 6: Kapasitans Sensörünün Hazırlanması

Kapasitans Sensörünün Hazırlanması
Kapasitans Sensörünün Hazırlanması
Kapasitans Sensörünün Hazırlanması
Kapasitans Sensörünün Hazırlanması
Kapasitans Sensörünün Hazırlanması
Kapasitans Sensörünün Hazırlanması
Kapasitans Sensörünün Hazırlanması
Kapasitans Sensörünün Hazırlanması

Tamam resme bakın. Temel olarak, teli küçük bir alüminyum folyo parçasına bağlayacağız (çünkü alüminyum folyo lehimlenemez), ardından küçük bir montaj panosuna bantlayacağız. Nazik bir hatırlatma, alüminyum folyoyu tamamen bantlamadığınızdan emin olun. Bir kısmını doğrudan temas için açıkta bırakın.

7. Adım: Güç Kaynağını Hazırlama

Güç Kaynağının Hazırlanması
Güç Kaynağının Hazırlanması
Güç Kaynağının Hazırlanması
Güç Kaynağının Hazırlanması
Güç Kaynağının Hazırlanması
Güç Kaynağının Hazırlanması

Güç kaynağı olarak li-on pil kullandığım için şarj ve koruma için bir TP4056 modülüne ve voltajı 9v'a dönüştürmek için bir boost dönüştürücüye ihtiyacım var. 9V duvar adaptörü kullanmaya karar verdiyseniz, bir DC jakına ihtiyacınız olabilir veya doğrudan bağlayın. Amplifikatörün direnç değerinin 9V için tasarlandığını ve başka bir voltaj kullanmak istiyorsanız direnci değiştirmeniz gerekebileceğini unutmayın.

Adım 8: Arduino'ya Bağlama

Onları Arduino'ya Bağlama
Onları Arduino'ya Bağlama
Onları Arduino'ya Bağlama
Onları Arduino'ya Bağlama
Onları Arduino'ya Bağlama
Onları Arduino'ya Bağlama

Şemayı takip edin! Şemayı takip edin! Şemayı takip edin!

Yanlış pini bağlamayın yoksa işler garipleşir.

9. Adım: Muhafaza

muhafaza
muhafaza
muhafaza
muhafaza
muhafaza
muhafaza
muhafaza
muhafaza

Tasarımımın ölçüleri 6.5cm*6.5cm*8cm olduğu için biraz hacimlidir. LED ekran için bir ön pencere ve başucu lambası için üst pencereden oluşur. Tasarımım için resimlere bakın.

Adım 10: Programlama Süresi

Image
Image
Programlama Zamanı!
Programlama Zamanı!

Aşağıdaki çizimimi indirin ve Arduino'nuza yükleyin. Bunu nasıl yapacağınızı bilmiyorsanız, bu projeyi yapmak için zahmet etmeyin! Hayır, şaka yapıyorum, işte iyi bir öğretici: Arduino'ya kroki yükleyin

Ardından seri monitörü açın ve geçerli saati çıkardığını görmelisiniz. Zamanı ayarlamak için, bunun nasıl yapılacağı aşağıda açıklanmıştır.

Saati ayarlamak için: h, XX -- burada xx geçerli saattir

Dakikayı ayarlamak için: min, XX -- xx geçerli dakikadır

Saniyeyi ayarlamak için: s, XX

Tarihi ayarlamak için: d, XX

Ayı ayarlamak için: pzt, XX

Yukarıdaki yorum yürütüldüğünde, size az önce ayarladığınız değeri döndürmelidir. (Örneğin, saati h, 15 ile ayarladığınızda, seri monitörde Saat: 15 döndürmesi gerekir.

Kapasitans sensörü için, çalışmadan önce kalibre etmeniz gerekebilir. Bunu yapmak için mikro anahtara iki kez basın ve seri monitöre bakın. Bir grup sayı vermelidir. Şimdi parmağınızı kapasitans sensörünün üzerine koyun ve sayının aralığını not edin bakın. Ardından, "captrigger" değişkenini değiştirin. Diyelim ki basıldığında 20-30 elde ettiniz, ardından captrigger'ı 20'ye ayarlayın.

Çizim, ADCTouch kitaplığını kullanır, yüklediğinizden emin olun.

Adım 11: Düzeltme Mekanizması

Kodumdaki düzeltme mekanizmasının süresi benim için doğru olana ayarlandı. Zaman hala doğru değilse, "corrdur" değişkeninin değerini değiştirmeniz gerekir.

Düzeltme artık en son güncellemede varsayılan olarak 0'dır.

Corrdur değeri, bir saniyeyi yavaşlatmanın kaç milisaniye sürdüğünü ifade eder.

Corrdur'un değerini bulmak için aşağıdaki formülü kullanın:

2000/(y-x)/x)

Burada x=geçen gerçek süre ve y=saatin geçen süre, her ikisi de saniye cinsinden

x ve y'nin değerini bulmak için küçük bir deney yapmanız gerekir.

Saatin zamanını gerçek zamana ayarlayın ve başlangıç zamanını kaydedin (gerçek başlangıç zamanı ve saat başlangıç zamanı aynı olmalıdır). Bir süre sonra (birkaç saat), son gerçek zamanı ve saatin son zamanını kaydedin.

x=gerçek son zaman-başlangıç zamanı ve y=saat son zaman-başlangıç zamanı

Ardından koddaki corrdur değerini değiştirin ve Arduino'ya yeniden yükleyin.

Ardından testi tekrarlayın ve bu sefer formül şu şekilde değişti:

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

Burada x ve y öncekiyle aynı şeydir, z ise mevcut düzeltme değeridir.

Tekrar yükleyin ve sizin için yeterince hassas olana kadar testi tekrar tekrar yapın.

Saatiniz hala hızlanıyorsa, corrdur 0'a ayarlanmışsa (düzeltici mekanizma olmadığı anlamına gelir), ikinci++ 'ı ikinci olarak değiştirmeniz gerekir - kodun düzeltici mekanizma kısmında (yorum yaptım), corrdur'u 0'a ayarlayın, sonra hayır'ı bulun. bir saniyeyi hızlandırmak için gereken milisaniye.

Adım 12: Tüm İşlevler Nasıl Kullanılır

Image
Image

Mikro anahtara basarak modu değiştirebilirsiniz.

İlk modda, sadece zamanı gösterir. Gösterge ışığı saniyede 1 kez yanıp sönerse, alarm kapalıdır. Saniyede 2 kez ise alarm açıktır. Kapasitans sensörüne basarak ilk modda alarmı 10 dakika erteleyebilirsiniz.

İkinci modda tarihi gösterir. Kapasitans sensörüne basmak hiçbir şey yapmaz.

Üçüncü modda zamanlayıcıyı ayarlayabilirsiniz. Kapasitans sensörüne basmak zamanlayıcıyı açacaktır ve gösterge ışığının yanıp sönmeye başladığını görmelisiniz. Kapasitans sensörü ayrıca zamanlayıcı süresini ayarlamak için kullanılır. Zamanlayıcı aralığı 1 dakika ile 59 dakika arasındadır.

Dördüncü modda, kapasitans sensörünü kullanarak alarm saatini ayarlayabilirsiniz.

Beşinci modda, kapasitans sensörünü kullanarak alarm dakikasını ayarlayabilirsiniz.

Altıncı modda, kapasitans sensörüne basmak, saati değiştirmeden dakikayı 30'a ve saniyeyi 0'a sıfırlayacaktır. Bu, saatiniz 30 dakikadan fazla kaymadığı sürece, bu modu kullanarak yeniden kalibre edebilirsiniz.

Yedinci mod, şarj olurken kapasitans sensörünün arızalanması durumunda hiçbir şey yapmama modudur.

Oh, alarmı kapatmak için mikro anahtara basmanız yeterli. (ALARM ERTELEMEYİ İÇEREN SON GÜNCELLEME)

Peki, saati okumaya ne dersin? Bu kolay! İkili Saat Okuma -- Wikihow İlk başta garip hissedebilirsin ama alışacaksın!

Adım 13: Sonuç

Çözüm
Çözüm
Çözüm
Çözüm

Bu projeye neden başladım. Başlangıçta bunun nedeni eski bir dijital saatim olması ve onu bir çalar saate dönüştürmek istememdi. Ne yazık ki eski saat bozuldu. Bu yüzden neden Arduino kullanarak bir tane yapmıyor gibiydim? Biraz google aramasıyla, Cello62 tarafından verilen talimatta RTC'siz bu ikili saat projesini buldum. Ancak benim istediğim çalar saat özelliği yok, bu yüzden kodu alıp kendim değiştiriyorum. Ve proje doğuyor. Ayrıca, son zamanlarda öğretilebilir üzerinde çalışan saat yarışmasını gördüm ve bu da bana bunu yapmak için daha fazla motivasyon verdi. Her neyse, bu hala Arduino kullanan ilk projem, bu yüzden bir sürü olası iyileştirme.

Gelecekteki iyileştirme:

1) RTC'yi kullanın

2) Alarmı veya saati veya zamanlayıcıyı kablosuz olarak ayarlayın!

3) Aklıma gelen özellik ne olursa olsun

Adım 14: Güncelleme: Bir Hafta Kullanımdan Sonra

Güncelleme: Bir Hafta Kullanımdan Sonra
Güncelleme: Bir Hafta Kullanımdan Sonra
Güncelleme: Bir Hafta Kullanımdan Sonra
Güncelleme: Bir Hafta Kullanımdan Sonra
Güncelleme: Bir Hafta Kullanımdan Sonra
Güncelleme: Bir Hafta Kullanımdan Sonra

Bariz problemin yanı sıra - zaman kayması, söyleyeceğim bir sonraki şey güç tüketimi. Öncelikle voltajı 9v'a çıkarıyorum, daha sonra Arduino'daki lineer regülatör tarafından düşürülecek. Doğrusal regülatör çok verimsizdir. Saat sadece BİR GÜN sürer. Bu, her gün şarj etmem gerektiği anlamına geliyor. Tüm sistemin sadece yaklaşık %50 verimli olduğunu anlayana kadar bu en büyük anlaşma değil. Pilimin 2000 mAh olduğu göz önüne alındığında, her gün boşa harcanan gücü hesaplayabilirdim.

Güç kaybı=(7,4Wh*%10)+(7,4Wh*90%*50%)=4,07Wh/gün

Bu, yılda 1.486kWh! 283 g su kaynatmak için kullanılabilir (25 C'den 100 C'ye kadar)? Ama yine de, saatin verimliliğini artıracağım. Bunu yapmanın yolu ise lineer regülatörü hiç kullanmamaktır. Bu, yükseltici dönüştürücüyü 5V'yi doğrudan Arduino'daki 5V pinine verecek şekilde ayarlamamız gerektiği anlamına gelir. Daha sonra, boşa harcanan gücü daha da en aza indirmek için, günde 0.95Wh boşa harcayacakları için iki yerleşik LED'i (pin13 ve güç) çıkarmam gerekiyor. Ne yazık ki, SMD lehimlemede tamamen acemiyim, bu yüzden bunu yapmamın tek yolu tahtadaki rayı kesmek. Bundan sonra, buzzer ve başucu lambasındaki emitör direncini çıkarmam gerekiyor (LED şerit 5V'ta çalışmıyor). Ancak bu, bu harika özelliği bırakmanız gerektiği anlamına mı geliyor? Numara! Burada iki seçeneğiniz var: Normal 5mm LED diyotu kullanın veya 5V LED şerit kullanın. Ama benim için, geçen hafta boyunca bu projeyi yapmaktan çoktan yorulmuştum, bu yüzden bu özelliği bırakmaya karar verdim. Bununla birlikte, anahtarı orijinal olarak daha fazla enerji tasarrufu sağlamak için saat panelini açmak veya kapatmak için ışık özelliği için kullandım, ancak kapattığımda LED yanıp sönüyor. Hata özellik haline geldi mi? Bilmiyorum (Bilenler lütfen bana aşağıdan anlatsın).

Değişikliğin sonunda, saat artık 2 günden fazla sürecek!

Sırada saatle ilgili daha az ciddi bir sorunum var. Şarj sırasında kapasitans sensörü çıldıracaktı, bu yüzden tamamen hiçbir şey yapmayan başka bir mod ekledim.

Zaman kaymasına gelince, sıfırlamak için her gün bilgisayara bağlanmak çok zahmetli olduğu için, dakikayı 30'a ve saniyeyi 0'a ayarlayacak başka bir mod ekledim. Bu, herhangi bir saatin yarısında sıfırlayabileceğiniz anlamına geliyor!

Önerilen: