İçindekiler:
- Adım 1: Parça Listesi ve Araçlar
- 2. Adım: OLED Ekranı ve Gerçek Zamanlı Saati Hazırlayın
- Adım 3: Döner Kodlayıcıyı Hazırlayın
- 4. Adım: Muhafaza
- Adım 5: Arduino Güç LED'ini devre dışı bırakın (isteğe bağlı)
- Adım 6: Güç Kaynağı + Katı Hal Rölesi
- Adım 7: Arduino Nano + Güç Kaynağı + Katı Hal Röle
- Adım 8: Arduino Nano + Gerçek Zamanlı Saat
- 9. Adım: OLED Ekranı Bağlayın
- Adım 10: Döner Kodlayıcı
- Adım 11: Muhafazaya Kurulum
- Adım 12: Şebekeye Bağlama / Açılacak Işık
- Adım 13: Muhafazayı Bitirme
- Adım 14: Arduino'yu Programlama
- Adım 15: Zamanı Ayarlama ve Zamanları Değiştirme
Video: Arduino Alacakaranlık/Şafak Saati Zamanlayıcı: 15 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:20
Özet:
Bu Arduino tabanlı zamanlayıcı, alacakaranlıkta, şafakta veya belirli bir zamanda bir 220V ışığı değiştirebilir.
Tanıtım:
Evimdeki bazı ışıklar, alacakaranlıkta, önceden belirlenmiş bir zamana veya sabaha kadar (bütün gece) otomatik olarak açılır.
Işıkların konumu, bir ışık sensörünün kullanılmasına izin vermez. Normal mevcut saat zamanlayıcıları belirli bir zamanda açılır. Bu nedenle alacakaranlıkta açmak için zamanlayıcı program ayarının düzenli olarak ayarlanması gerekir.
Güzel bir meydan okuma olarak, bunun yerine özel bir Arduino tabanlı bağımsız zamanlayıcı oluşturmaya karar verdim. Işıkların açılması veya kapatılması gereken zamanı belirlemek için gerçek zamanlı bir saat ve Dusk2Dawn kitaplığı kullanır. Bu zamanlayıcının kasası 3B yazdırılmıştır ve Thingiverse'de bulunabilir. Bu proje için Arduino kodu GitHub'da bulunabilir.
Bu zamanlayıcıyı oluştururken internetteki birçok tasarım ve devreden ilham aldım. Açıkça belirtilmeyen tüm katkıda bulunanlara teşekkür ederim.
Okunabilirlik için, tam bir devre şeması yerine, gerektiğinde adımlarda kısmi şemalar gösterilmiştir.
Alternatif çözümler:
Bağımsız bir zamanlayıcı yerine, akıllı ev otomasyon sisteminin ışıkları yönlendirdiği birçok çözüm var. Amacım WIFI (veya diğer) bağlantılara bağlı olmayan bağımsız bir çözüme sahip olmaktı.
Kısıtlamalar:
Bu proje ile sağlanan kod, Avrupa yaz saati uygulamasına dayalı bir gün ışığından yararlanma değişiklik uygulamasını içeriyordu.
Adım 1: Parça Listesi ve Araçlar
Parçalar:
Toplam parça maliyeti (3d baskı hariç) yaklaşık 30€, -.
- Başlıksız Arduino Nano V3 (uyumlu)
- Güç kaynağı 5V 0.6A (34 x 20 x 15mm)
- Katı hal rölesi 5V - Aktif düşük - 2A 230VAC
- Gerçek zamanlı saat DS3231 (küçük)
- 0.96” OLED ekran SPI 128*64 piksel
- Döner kodlayıcı - EC11 - 20mm
- Topuz 6mm mil 15mm * 17mm
- Breadboard baskılı devre kartı,
- 4* M3x25mm vidalar
- 3d baskılı muhafaza
- Isıyla daralan makaron
- teller
- Vidalı terminal bloğu (nötr kabloları bağlamak için)
Gerekli aletler:
- Havya
- Lehim Teli
- Lehim sökme pompası
- Tel Sıyırıcılar
- kesiciler
- 3D yazıcı (muhafazayı yazdırmak için)
- Çeşitli Küçük Aletler
UYARI
Bu devre 230v AC ile çalışmaktadır ve şebeke gerilimi ile çalışmaya alışkın değilseniz veya 230v AC Şebeke Gerilimi ile çalışma konusunda yeterli tecrübeniz yoksa lütfen bu projeden uzak durunuz
Bu projeden doğrudan veya bunun bir sonucu olarak ortaya çıkan herhangi bir kayıp veya zarardan sorumlu değilim
AC Şebeke ile çalışırken her zaman uygun özen ve önlemin alınması tavsiye edilir
2. Adım: OLED Ekranı ve Gerçek Zamanlı Saati Hazırlayın
3D baskılı muhafaza, minimum boyut için tasarlanmıştır. Sonuç olarak, OLED ekranın ve gerçek zamanlı saatin başlıkları kaldırılmalıdır.
Bir sonraki adıma hazırlanırken, lehim sökme pompasıyla deliklerden kalan lehimi temizleyin.
Adım 3: Döner Kodlayıcıyı Hazırlayın
Döner kodlayıcının zayıf konektörleri vardır. Hasarı önlemek için kodlayıcıya bir parça baskılı devre kartı takın.
Resimde toprak bağlantısı da (sağ üst ve orta alt) zaten hazır.
Not: Baskılı devre kartlı döner kodlayıcının Arduino'ya dokunmadan kasaya oturduğundan emin olun. Sıkıca oturması için baskılı devre kartının taşlanması gerekebilir.
4. Adım: Muhafaza
Muhafazanın üç parçasını bir 3d yazıcı ile yazdırın. Thingiverse'deki talimatlara bakın.
Adım 5: Arduino Güç LED'ini devre dışı bırakın (isteğe bağlı)
Zamanlayıcıda yeşil yanmasını önlemek için Arduino'nun güç LED'i devre dışı bırakılabilir.
Bu değişikliğin isteğe bağlı olduğunu unutmayın.
Arduino Nano'da yapılan değişiklik, güç ledinin yanındaki direncin çıkarılmasından oluşur (resimdeki kırmızı daireye bakın).
Adım 6: Güç Kaynağı + Katı Hal Rölesi
Bu adımda güç kaynağı ve katı hal rölesi birleştirilir ve muhafazanın alt kısmına monte edilir.
Güç kaynağı ve röle arasındaki bağlantılar bu bileşenlerin alt kısmında yapılır. Arduino'ya bağlanmak için rölenin vidalı terminal bloğu kullanılacaktır.
Not: Bağlantıları yaparken katı hal rölesinin montaj deliklerinin açık kaldığından emin olun.
- Katı hal rölesi A1 ile güç kaynağının AC bağlantılarından birine bir bağlantı teli lehimleyin
- Güç kaynağının diğer AC bağlantısına bir kablo lehimleyin (bu, 7. adımda nötr vidalı terminal bloğuna bağlanacaktır)
- Güç kaynağı -Vo ile DC rölesi arasında bir tel lehimleyin-
- Güç kaynağını +Vo'yu DC+ rölesine bağlamak için bir tel lehimleyin
Not: Kasaya sığabilmesi için güç kaynağı ve röle üzerindeki kabloların kısaltılması gerekebilir.
Adım 7: Arduino Nano + Güç Kaynağı + Katı Hal Röle
Bu adımda Arduino Nano güç kaynağına ve katı hal rölesine bağlanır.
- Yaklaşık 70 mm uzunluğunda iki kablo kesin. Bir tarafta 30 mm, diğer tarafta 4 mm izolasyonu soyun.
- Arduino + 5V ve GND'ye 30 mm soyulmuş izolasyonlu tarafı tel yapışarak lehimleyin
- 20 mm uzunluğunda iki ısı büzüşmeli boru kesin ve bunları 25 mm'lik soyulmuş parçanın üzerine monte edin. Bu, katı hal rölesinin montaj vidalı terminal bloğu DC+ ve DC- ile bağlantıya kadar olan kabloları yalıtır.
- GND ve +5V kablolarının röle vidalı terminal bloğuna doğru şekilde bağlanması için çapraz olması gerektiğini unutmayın.
- Yaklaşık 40 mm uzunluğunda bir tel kesin ve her iki ucundan 4 mm izolasyonu soyun. Bir tarafı Arduino'nun ARKA tarafındaki A2 bağlantısına lehimleyin ve diğer tarafı katı hal montajlı vidalı terminal bloğunun CH1 bağlantısına bağlayın.
UYARI
Arduino, Arduino dahili güç regülatörünü kullanmak yerine doğrudan kararlı + 5V güç kaynağından güç alır. Bu nedenle, Arduino güç kaynağından güç aldığında USB'yi bağlamak güvenli değildir.
Arduino USB bağlantısını kullanmadan önce daima 230VAC şebeke bağlantısını kesin.
Adım 8: Arduino Nano + Gerçek Zamanlı Saat
Bu adımda gerçek zamanlı saat kısmen bir önceki adımda hazırlanan kablolar kullanılarak Arduino'ya bağlanır.
- Arduino GND'den (aynı zamanda rölenin DC-'sine bağlı) gelen kabloyu gerçek zaman saatinin '–' sine lehimleyin.
- Arduino +5V'den (rölenin DC+'sına da bağlı) gelen kabloyu gerçek zamanlı saatin '+'sına lehimleyin.
- Yaklaşık 40 mm uzunluğunda iki kablo kesin ve her iki ucundan 4 mm izolasyonu soyun.
- Arduino A4 ile gerçek zamanlı saat D (SDA) arasına bir tel lehimleyin.
- Arduino A5 ile gerçek zamanlı saat C (SCL) arasına bir tel lehimleyin.
- Döner kodlayıcıya müdahale etmeyeceklerinden emin olmak için gerçek zamanlı saatin kablolarını şekillendirin. Bunun için kabloların kasanın altında olması gerekir.
9. Adım: OLED Ekranı Bağlayın
Bu adımda Arduino'ya OLED SPI ekranı eklenir.
- 65 mm uzunluğunda 2 kablo kesin ve her iki ucundan 4 mm izolasyonu soyun.
- OLED ekranın GND bağlantısına bir kablo lehimleyin. Bu kabloyu Arduino GND'den gelen ısıyla daralan makaron izoleli kabloya lehimleyin (4. adıma bakın) ve her iki kabloyu da katı hal rölesinin DC montajlı vidalı terminal bloğuna bağlayın.
- OLED ekranın VCC bağlantısına bir kablo lehimleyin. Bu kabloyu Arduino +5V'den gelen ısıyla daralan makaron izole kablosuna lehimleyin (4. adıma bakın) ve her iki kabloyu da katı hal rölesinin DC+ montaj vidalı terminal bloğuna bağlayın.
- 65 mm uzunluğunda 5 kablo kesin ve her iki ucundan 4 mm izolasyonu soyun.
- D0'ı (CLK) Arduino D10'a bağlamak için bir tel lehimleyin
- D1'i (MOSI / DATA) Arduino D9'a bağlamak için bir tel lehimleyin
- RES'i (RT) Arduino D8'e bağlamak için bir tel lehimleyin
- DC'yi Arduino D11'e bağlamak için bir tel lehimleyin
- CS'yi Arduino D12'ye bağlamak için bir tel lehimleyin
Not: Ekran kablolarının sırası mantıklı değildir. Bu, önce Adafruit örneğini kullanmanın ve ardından bağlantıları değiştirmenin sonucudur, çünkü D13 kullanımı Arduino'da her zaman kırmızı bir LED ile sonuçlanır.
Alternatif
SPI bağlantıları için 'normal' bir sıralama kullanmak mümkündür. Bunun için oledcontrol.cpp içindeki Arduino programı dijital çıkış tanımı buna göre ayarlanmalıdır:
// SPI yazılımını kullanma
// pin tanımları
#define CS_PIN 12
#define RST_PIN 8
#define DC_PIN 11
#define MOSI_PIN 9
#define CLK_PIN 10
Adım 10: Döner Kodlayıcı
Diyagram, Arduino'nun döner kodlayıcıya olan bağlantılarını gösterir (üstten görülen kodlayıcı).
- 45 mm'lik 4 kabloyu kesin ve her iki ucundan 4 mm izolasyonu soyun.
- Arduino GND'yi kodlayıcının sağ üst ve alt orta konektörlerine bağlayın
- Arduino D2'yi kodlayıcının sol alt kısmına bağlayın
- Arduino D3'ü kodlayıcının sağ altına bağlayın
- Arduino D4'ü kodlayıcının sol üst köşesine bağlayın
Adım 11: Muhafazaya Kurulum
Tüm elektronik aksamları muhafazanın alt kısmına takın:
- Arduino'yu dikey yuvaya kaydırın
- Gerçek zamanlı saati alt bölmeye kaydırın
- Güç kaynağını ve röleyi üst bölmeye kaydırın, rölenin yuvalarına oturduğundan emin olun.
Adım 12: Şebekeye Bağlama / Açılacak Işık
UYARI
AC Şebeke ile çalışırken uygun özen ve önlemin alındığından emin olun, AC Şebekesinin bağlantısının kesildiğinden emin olun
Bu projeden doğrudan veya bunun bir sonucu olarak ortaya çıkan herhangi bir kayıp veya zarardan sorumlu değilim
- AC Şebeke fazını rölenin A1 (sol) vidalı terminal bloğuna bağlayın.
- Anahtarlanacak ışığın fazını rölenin B1 (sağ) vidalı terminal bloğuna bağlayın.
- AC ana şebeke nötr kablosunu, hafif nötr kabloyu ve güç kaynağının nötr kablosunu bağlamak için ayrı bir vidalı terminal bloğu kullanın.
- Gerilimi azaltmak için, güç kablolarının her birinin etrafına bir bağ sargısı takın.
Adım 13: Muhafazayı Bitirme
Bu adımda kasaya montaj tamamlanır.
- OLED ekranı kasanın orta kısmındaki ekran montaj deliğinden kaydırın.
- Döner kodlayıcıyı orta kısımdaki delikten kaydırın, anti-rotasyonun hizalandığından emin olun. Birlikte verilen rondela ve somunu kullanarak döner kodlayıcıyı monte edin.
- Muhafazanın üst kısmını monte edin ve alttan dört adet M3x25mm vidayı takarak muhafazayı kapatın.
Adım 14: Arduino'yu Programlama
UYARI
Arduino, Arduino dahili güç regülatörünü kullanmak yerine doğrudan kararlı + 5V güç kaynağından güç alır. Bu nedenle, Arduino güç kaynağından güç aldığında USB'yi bağlamak güvenli değildir.
Arduino USB bağlantısını kullanmadan önce daima 230VAC şebeke bağlantısını kesin.
Arduino zamanlayıcı programını GitHub'dan alın.
Bu program, buradan edinebileceğiniz Arduino IDE'yi kullanır.
Program aşağıdaki ek kitaplıkları kullanır:
SSD1303Ascii
Arduino Tel kitaplığı
Dusk2dawn kitaplığının da kullanıldığını, ancak arayüzündeki bir değişiklik nedeniyle kod olarak dahil edildiğini unutmayın.
Doğru alacakaranlık / şafak hesaplamasını sağlamak için boylam ve enlem ve saat dilimi ayarlanmalıdır.
alacakaranlık2dawn örneğinde açıklandığı gibi, herhangi bir konum için enlem ve boylam bulmanın kolay bir yolu, Google Haritalar'da noktayı bulmak, haritadaki yeri sağ tıklayıp "Burada ne var?" öğesini seçmektir. Altta, koordinatları olan bir kart göreceksiniz.
Boylam ve enlem programda, Dusk2Dawn.cpp satır 19 ve 20'de kodlanmıştır:
/* Bulunduğunuz yerin enlem ve boylamı burada ayarlanmalıdır.
* * İPUCU: Herhangi bir yerin enlem ve boylamını bulmanın kolay bir yolu, Google Haritalar'da yeri * bulmak, haritadaki yeri sağ tıklayıp * "Burada ne var?" seçeneğini seçmektir. Altta * koordinatlarına sahip bir kart göreceksiniz. */ #define LATITUDE 52.097105; // Utrecht #define LONGTITUDE 5.068294; // Utrecht
Saat dilimi ayrıca Dusk2Dawn.cpp satır 24'te sabit kodlanmıştır. Varsayılan olarak Hollanda (GMT + 1) olarak ayarlanmıştır:
/* Saat diliminizi (GMT'ye göre) buraya girin.
*/ #define TIMEZONE 1
Arduino'yu ilk kez programlarken, EEPROM belleğinin başlatılması gerekir. Bunun için timer.cpp satır 11'i EEPROM başlatma yapacak şekilde değiştirin:
// ilk kez programlama için true olarak değiştir
#define INITIALIZE_EEPROM_MEMORY yanlış
Programı Arduino'ya yükleyin ve Arduino'yu önyükleyin.
EEPROM başlatmayı devre dışı bırakın ve programı tekrar Arduino'ya yükleyin. Zamanlayıcı şimdi yeniden başlatıldığında geçiş zamanı ayarlarını hatırlayacaktır.
Adım 15: Zamanı Ayarlama ve Zamanları Değiştirme
Kullanıcı etkileşimi kavramları:
- Seçimleri onaylamak için kısa basış kullanılır. Ayrıca, ana zamanlayıcı ekranında kısa bir basış ışığı açar veya kapatır.
- Ana zamanlayıcı ekranından menüye girmek için uzun basış kullanılır. Menünün herhangi bir yerinde, uzun bir basış ana zamanlayıcı ekranına dönecektir.
- '>' Seçim cursus. Bu imleç, bir menüde seçilen seçeneği gösterir.
Ana zamanlayıcı ekranı
Ana zamanlayıcı ekranı şunları gösterir:
Haftanın günü Su
Geçerli saat 16:00
Geçerli zamanlayıcı durumu ve sonraki geçiş zamanı Zamanlayıcı KAPALI 17:12'ye kadar
Şafak ve alacakaranlık zamanı Şafak 08:05 Alacakaranlık 17:10
Doğru zamanı ayarlama
Menüye girmek için uzun basın. Aşağıdaki seçenekler gösterilir:
Zamanı Geri AyarlaHafta içi programHafta sonu programıSeçenekler
Gerçek zamanlı saatin tarihini ve saatini ayarlamak için saati ayarla'yı seçin. Şunlar için doğru değerleri girin:
YılAyGünZaman
Zamanlayıcı otomatik olarak haftanın gününü belirler. Yaz saati uygulamasına geçiş de otomatik olarak yapılır. Gün ışığından yararlanma yalnızca Avrupa saat dilimi için uygulanır.
Zamanlayıcı programını ayarlama
Zamanlayıcının biri hafta içi, diğeri hafta sonu olmak üzere 2 programı vardır. Cuma gününün hafta sonunun bir parçası olarak kabul edildiğini, ışıkların biraz daha uzun süre açık kalabileceğini unutmayın.
Her zamanlayıcının bir açma ve kapama anı vardır. An aşağıdakilerden biri olabilir:
- Zaman: Tam belirtilen zaman
- Şafak: Hesaplanan şafak saatine göre geçiş yapın
- Alacakaranlık: Hesaplanan alacakaranlık zamanına göre geçiş yapın
Alacakaranlık ve şafak için 59 dakika önce veya sonra bir düzeltme değeri girmek mümkündür.
Örnekler:
Tüm gece bir ışığı yakmak için açma (alacakaranlık + 10dk)'da açmayı, (şafak - 10dk)'da kapatmayı seçin.
Akşamları bir ışığı yakmak için alacakaranlıkta aç'ı seçin, saat 22:30'da kapatın.
Seçenekler
Seçenekler ekranında, ekranın değiştirilmesi için bir zaman aşımı ayarlanabilir.
Ekran kapatıldığında, döner kodlayıcı düğmesine basılması, ana zamanlayıcı ekranına geri dönecektir.
Önerilen:
ESP8266'yı Kullanan Ağ Saati Dijital Saati: 4 Adım (Resimlerle)
ESP8266'yı Kullanarak Ağ Saati Dijital Saati: NTP sunucuları ile iletişim kuran ve ağ veya internet saatini gösteren küçük şirin bir dijital saatin nasıl oluşturulacağını öğreniyoruz. WeMos D1 mini'yi bir WiFi ağına bağlanmak, NTP zamanını almak ve bir OLED modülünde görüntülemek için kullanıyoruz.Yukarıdaki video t
Emeklilik Saati / Sayım/Dn Saati: 4 Adım (Resimli)
Emeklilik Saati / Sayım / Dn Saati: Çekmecede bu 8x8 LED nokta vuruşlu ekranlardan birkaçı vardı ve onlarla ne yapacağımı düşünüyordum. Diğer talimatlardan esinlenerek, gelecekteki bir tarihe/saate geri sayım yapmak için bir geri sayım/yukarı geri sayım ekranı oluşturma fikrini aldım ve eğer hedef zaman p
Arduino Hang Guardian - Arduino Watchdog Zamanlayıcı Eğitimi: 6 Adım
Arduino Hang Guardian - Arduino Watchdog Zamanlayıcı Eğitimi: Herkese Merhaba, Hepimizin başına gelir. Bir proje oluşturursunuz, tüm sensörleri hevesle bağlarsınız ve aniden Arduino kilitlenir ve hiçbir girdi işlenmez. “Neler oluyor?”, soracak ve kodunuzu incelemeye başlayacaksınız, sadece yeniden
İnternet Saati: NTP Protokolüyle ESP8266 NodeMCU Kullanan OLED İle Tarih ve Saati Görüntüleme: 6 Adım
İnternet Saati: OLED ile Tarih ve Saati Görüntüleme ESP8266 ile NodeMCU Kullanarak NTP Protokolü ile: Merhaba arkadaşlar, bu talimatta internetten zaman alacak bir internet saati oluşturacağız, böylece bu projenin çalışması için herhangi bir RTC'ye ihtiyacı olmayacak, sadece bir çalışan internet bağlantısı Ve bu proje için bir esp8266'ya ihtiyacınız var
Şafak: 6 Adım
The Dawm: The Dawm, TLC5940 yongası için bir devre kartıdır. Bu çip, örneğin bir arduino mikrodenetleyici veya benzerinden seri iletişim üzerinden 16 farklı portu pwm (darbe genişlik modülasyonu) yapma imkanına sahiptir. (Bu, sıradan dilde y