İçindekiler:
2025 Yazar: John Day | [email protected]. Son düzenleme: 2025-01-13 06:58
Kış mevsimi üzücü olabilir. Uyandın, hava karanlık ve yataktan çıkman gerekiyor. Duymak isteyeceğiniz son şey çalar saatinizin gür sesidir. Londra'da yaşıyorum ve sabahları uyanmakta zorlanıyorum. Ayrıca, doğal ışıkla uyanmayı özledim.
Bu eğitimde, bir Gündoğumu Alarm Saati oluşturacağız. Uyanmak istediğiniz saat ve dakikayı ayarlayabileceğiniz, ancak sizi daha doğal bir şekilde uyandırmak için gün doğumu gibi bir süre boyunca yatak odanızı aydınlatmak için ışık kullanmanın ek faydası ile diğerleri gibi bir çalar saat.
Gündoğumu lambaları piyasada mevcuttur, ancak pahalı olabilirler (Amazon'da hızlı bir arama 100 sterlin aralığındaki ürünleri döndürür), kırılgan ve oldukça klinik görünümlü olabilir. Çok daha ucuz ve çok daha güzel bir şey yapacağız.
Tüm parçalar bir sonraki adımda listelenecektir. Kod, Github deposu altın-gündoğumu-saatimden indirilebilir. Vaka için tüm şemalar ve derleme dosyaları bu eğitimde indirilebilir.
Hadi gidelim:)
Sorunlarla karşılaşırsanız veya merhaba demek isterseniz, bana [email protected] yazın veya beni @celinechappert Instagram hesabından takip edin.
Adım 1: Bileşenleri Toplama
Başlangıç olarak, gün doğumumuzu simüle etmek için girişimiz olarak bir saat ve çıkışımız olarak ultra parlak bir LED kullanacağız.
Devreyi kurmak için ihtiyacımız olacak:
- bir saat. RTC DS3231'i (5 £) kullanacağız
- ışığın parlaklığını kontrol etmek için bir MOSFET (9 £)
- süper parlak bir LED (1 £)
- LED'e güç sağlamak için 9V pil (3 £)
- kolay montaj için bir breadboard (3 £)
- bir Arduino Uno (20 £)
- bir buton (isteğe bağlı - yalnızca demo amaçlı)
Toplam fiyat = 41 £
Evinizde zaten bir Arduino'nuz, bir devre tahtası ve 9V piliniz varsa, tüm proje size 15 £ 'dan daha azına mal olacak.
Akrilik kasayı yapmak için ihtiyacınız olacak:
- 2 yaprak 0.3mm Perspex akrilik levha, güneş ve kasa için renk başına 1 sayfa.
- lazer kesiciye erişim.
Okulumun atölyesine erişimim olduğu için şanslıyım, bu yüzden bu masrafların çoğu karşılandı. Fazladan bir akrilik levha aldım çünkü tasarımım güneş için turuncu bir ton gerektiriyordu, bu da levha başına 14 sterline mal oldu (Perspex pahalıdır!).
Adım 2: Devrenin Montajı
Devremin siyah beyaz taslağına (dağınıklığı affedin) ve Arduino'yu içeren şemaya (Fritzing ile yapılan) başvurabilirsiniz.
Esasen burada neyin neye bağlı olduğuna dair bir döküm var:
Saat:
(-) GND'ye bağlanır
NC, 'Bağlı Değil' anlamına gelir ve hiçbir şeye bağlanmaz
C/SCL, Arduino'daki A5 pinine bağlanır
D/SDA, Arduino'daki A4 pinine bağlanır
(+) Arduino'da 5V'a bağlanır
MOSFET
Kapı pimi Arduino Uno'da pin ~ 9'a gidiyor çünkü bu PWM
Tahliye pimi LED'in negatif tarafına gider
Kaynak pini Arduino'da GND'ye gider
LED
Negatif taraf MOSFET üzerindeki tahliye pimine bağlanır
Breadboard'da pozitif taraf 5V'a bağlanır
9V pil
(+) ile (+) arasında, (-) ile aynı.
Arduino Uno
5V'yi devre tahtasındaki (+)'ya ve GND'yi (-)'ye bağlamayı unutmayın. Breadboard'un bir tarafında (-) ile diğer tarafında (-) arasında bağlantı yapmayı unutmayın.
Sırada DS3231 kitaplığını kullanarak saatimizi ayarlayacağız.
Adım 3: Saati Kurma ve Ayarlama
Bu saati çalıştırmak için kullandığım kitaplık Rinky-Dink Electronics'te bulunabilir (yukarıdaki ekran görüntüleri). Bağlantıya tıklayın ve DS3231 sayfasında olduğunuzdan emin olun. Zip dosyasını indirin, kaydedin ve Arduino'nuzun /libraries klasörüne yerleştirin.
Şimdi saatte doğru zamanı ayarlamak için Arduino'yu açın ve Example/DS3231/Arduino/DS3231_Serial_Easy'ye gidin.
Üç kod satırını kaldırın (ekran görüntüsünde turuncu ile belirtilmiştir), askeri formattaki bu üç kod satırında doğru zamanı ve yeri kontrol edin.
Yükle'ye basın.
Şimdi bu üç satırın yorumunu kaldırabilir ve tekrar Yükle'ye basabilirsiniz.
Seri Monitörünüzü açın ve saatinizin doğru olup olmadığını kontrol edin.
Saatimiz ayarlandı! Devremiz hazır, şimdi kodlamaya başlayalım. Yine, repo Github'da mevcuttur.
Adım 4: Kodlama
Kodu indirin ve DS3231 kitaplığının doğru şekilde kurulduğundan emin olun.
Öncelikle ayarlarımızı tanımlamak istiyoruz.
fadeTime, ışığın dakikalar içinde 0'dan maksimum parlaklığına ne kadar süreyle söneceğini gösterir. setHour/setMin, uyanmak istediğimiz zamana karşılık gelir (not: bu askeri formattır, bu nedenle 24 saatlik zaman gereklidir). Arduino üzerindeki pin 9'u da ÇIKIŞIMIZ olarak tanımlıyoruz.
setup() içinde, SerialBegin numarasının (burada 96000 baud) Seri Monitörün numarasına karşılık geldiğinden emin olun.
loop() içinde, bir if ifadesi uyanma zamanının gelip gelmediğini kontrol eder. Kod bir döngü üzerinde çalışır ve saat tarafından döndürülen saat ve dakika değerlerinin setHour/setMin değişkenlerimize karşılık gelip gelmediğini her seferinde kontrol eder. Bu durumda, if ifadesi bir active() işlevi döndürür.
active() işlevi iki bölümden oluşur. İlk önce ışığı kademeli olarak soldurmaya başlıyoruz: gecikme işlevleri, fadeTime'ın 'erken' aşamalarında LED'in çok çabuk parlamasını önlemek için burada. Ardından bir for döngüsü, fadeTime'a bağlı olarak ışığın daha parlak ve daha parlak olması gereken hızı kontrol eder. Son olarak analogWrite() fonksiyonunda ledimize 0 değerini vererek ışığı kapatıyoruz.
Yukarıdaki video, prototip akrilik kasalardan birinde çalışan devreyi göstermektedir.
Adım 5: Karton Prototip (isteğe bağlı)
Bu projeden önce hiç lazer kesiciyle çalışmadım. Bir karton prototip yapmak, nesnenin gerçek uzayda ne kadar iyi göründüğünü (boyut, görünüm vb.) test ederken makineye aşina olmamı sağladı. Indirmek için vaka planları.