İçindekiler:

Arduino Alacakaranlık/Şafak Saati Zamanlayıcı: 15 Adım
Arduino Alacakaranlık/Şafak Saati Zamanlayıcı: 15 Adım

Video: Arduino Alacakaranlık/Şafak Saati Zamanlayıcı: 15 Adım

Video: Arduino Alacakaranlık/Şafak Saati Zamanlayıcı: 15 Adım
Video: MERTCAN BAHAR İFŞA 2024, Temmuz
Anonim
Arduino Alacakaranlık/Şafak Saati Zamanlayıcısı
Arduino Alacakaranlık/Şafak Saati Zamanlayıcısı

Ö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ça Listesi ve Araçlar
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

OLED Ekranı ve Gerçek Zamanlı Saati Hazırlayın
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ıyı Hazırlayın
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

muhafaza
muhafaza
muhafaza
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ı)

Arduino Güç LED'ini devre dışı bırakın (isteğe bağlı)
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

Güç Kaynağı + Katı Hal Rölesi
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

Arduino Nano + Güç Kaynağı + Katı Hal Röle
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

Arduino Nano + Gerçek Zamanlı Saat
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

OLED Ekranı Bağlayın
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ı

Döner Kodlayıcı
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

Muhafazaya Kurulum
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

Şebekeye Bağlama / Anahtarlanacak Işık
Şebekeye Bağlama / Anahtarlanacak Işık
Şebekeye Bağlama / Anahtarlanacak Işık
Şebekeye Bağlama / Anahtarlanacak 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

Muhafazayı Bitirmek
Muhafazayı Bitirmek

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: