İlan

Arduino projelerinde zaman ayırmak düşündüğünüz kadar kolay değildir: bilgisayar bağlantısı orada olmadığında, güçsüz Arduino'nuz dahili ticker dahil olmak üzere çalışmayı durdurur.

Arduino'nuzu çevresindeki dünyayla senkronize tutmak için “Gerçek Zamanlı Saat modülü” olarak adlandırılan şeye ihtiyacınız olacak. Birini nasıl kullanacağınız aşağıda açıklanmıştır.

Gerçek Zamanlı Saat'in (RTC) anlamı nedir?

Bilgisayarınız büyük olasılıkla zamanını internetle senkronize eder, ancak yine de İnternet bağlantısı olmadan da devam eden dahili bir saati vardır veya güç kapatılır. Bilgisayara takılı bir Arduino kullandığınızda, sistem saatiniz tarafından sağlanan doğru zamana erişebilir. Bu oldukça kullanışlı, ancak çoğu Arduino projesi bilgisayardan uzakta kullanılmak üzere tasarlandı - nokta, gücün fişi çekildiğinde veya Arduino yeniden başlatıldığında, saatin ne olduğuna dair hiçbir fikri olmayacaktır. bu. Dahili saat sıfırlanacak ve tekrar açıldığında tekrar sıfırdan saymaya başlayacaktır.

Projenizin zamana ihtiyaç duymakla ilgisi varsa - benim

instagram viewer
gece lambası ve gündoğumu çalar saat Arduino Gece Işığı ve Gündoğumu Alarm ProjesiBugün, rahatsız edici bir gürültü yapma makinesine başvurmadan sizi yavaşça ve yavaşça uyandıracak bir gündoğumu çalar saat yapacağız. Daha fazla oku - bu açıkça bir sorun olacak. Bu projede, her gece zamanı oldukça kaba bir şekilde manuel olarak ayarlayarak sorunu çözdük yol - kullanıcı yatmadan hemen önce sıfırlama düğmesine basar ve manuel bir zaman sağlar senkron. Açıkçası bu uzun zamandır ideal bir çözüm değil.

Bir RTC modülü, Arduino'nuz kapalı olduğunda bile zamanı saymaya devam eden küçük bir madeni para büyüklüğündeki pil gerektiren ek bir devre parçasıdır. Bir kez ayarlandıktan sonra - pil ömrü boyunca bu süreyi koruyacaktır, genellikle iyi bir yıl kadar.

TinyRTC

Arduino için en popüler RTC'ye TinyRTC denir ve etrafından satın alınabilir EBay'de 5- $ 10. Büyük olasılıkla kendi pilinizi (bunları yurtdışına birçok yere göndermek yasadışıdır) ve bazı başlıkları (kendinize lehimlemeniz gereken deliklere yerleştirilen pimler) sağlamanız gerekecektir.

Bu sahip olduğum modül:

RTC modülü

Dahili bir sıcaklık sensörü bile vardır, ancak kullanmıyorsanız pil daha uzun süre dayanır.

O şeydeki deliklerin sayısı oldukça korkutucu görünüyor, ancak bunlardan sadece dörtüne ihtiyacınız var; GND, VCC, SCL ve SDA - RTC modülünün her iki yanındaki ilgili pimleri kullanabilirsiniz. Saatle konuşarak I2C protokolüyani sadece iki pim kullanılır - biri “saat” (seri iletişim veri saati, zamanla ilgisi yok) ve diğeri veriler için. Aslında, aynı iki pim üzerinde 121 I2C cihaza kadar zincirleme yapabilirsiniz - check-out bu Adafruit sayfası ekleyebileceğiniz diğer I2C cihazlarının bir seçimi için, çünkü çok şey var!

Başlangıç

TinyRTC modülünüzü aşağıdaki şemaya göre bağlayın - sıcaklık sensörü için olduğu gibi pembe DS hattına gerek yoktur.

kablo

Ardından, zaman ve DS1307RTC kitaplıkları açın ve elde edilen klasörleri /libraries Klasör.

Kütüphanelerden ve örneklerden yüklemek için Arduino ortamından çıkın ve yeniden başlatın.
ds1307rtc-örnek menü

DS1307RTC menüsünde iki örnek bulacaksınız: Ayarlanan zaman önce örnek - bu RTC'yi doğru zamana ayarlayacaktır. Gerçek kod, ayrıntıya girmeye değmez, sadece ilk kez senkronizasyonu gerçekleştirmek için bir kez çalıştırmanız gerektiğini bilin.

Ardından, aşağıdaki örnek kullanıma bakın: ReadTest.


#Dahil etmek 
#Dahil etmek 
#Dahil etmek  void setup () {Serial.begin (9600); süre (! Seri); // seri gecikmeyi bekleyin (200); Serial.println ("DS1307RTC Okuma Testi"); Serial.println ( ""); } void loop () {tmElements_t tm; if (RTC.read (tm)) {Seri.print ("Tamam, Zaman ="); print2digits (tm. Saat); Serial.write ( ':'); print2digits (tm. Dakika); Serial.write ( ':'); print2digits (tm. İkinci); Serial.print (", Tarih (G / A / Y) ="); Serial.print (tm. Gün); Serial.write ( '/'); Serial.print (tm. Ay); Serial.write ( '/'); Serial.print (tmYearToCalendar (tm. Yıl)); Serial.println (); } else {if (RTC.chipPresent ()) {Serial.println ("DS1307 durduruldu. Lütfen SetTime'ı çalıştırın "); Serial.println ("zamanı başlatmak ve çalışmaya başlamak için örnek"); Serial.println (); } else {Serial.println ("DS1307 okuma hatası! Lütfen devreyi kontrol edin. "); Serial.println (); } gecikme (9000); } gecikme (1000); } void print2digits (int sayı) {if (sayı> = 0 && sayı <10) {Serial.write ('0'); } Seri.print (sayı); }

Çekirdeği de dahil ettiğimizi unutmayın Wire.h kütüphane - bu Arduino ile birlikte gelir ve I2C üzerinden iletişim için kullanılır. Kodu yükleyin, 9600 baud'da seri konsolu açın ve izleyin ve Arduino'nuzun her saniye geçerli saatini verir. Muhteşem!

Örnekteki en önemli kod, tmElements_t tm - bu bir yapı şimdiki zamanla dolduracağımızı; ve RTC.read (tm) RTC modülünden şimdiki zamanı alan fonksiyon, tm yapı ve her şey yolunda giderse doğru döner. Hata ayıklama veya mantık kodunuzu, zamanı yazdırmak veya buna yanıt vermek gibi bu “if” deyiminin içine ekleyin.

Artık Arduino ile doğru zamanı nasıl alacağınızı bildiğinize göre, gündoğumu alarm projesini yeniden yazmayı veya bir LED kelime saati oluşturmayı deneyebilirsiniz - olanaklar sınırsız! Ne yapacaksın?

Resim Kredileri: Snootlab Flickr ile

James Yapay Zeka alanında lisans derecesine sahiptir ve CompTIA A + ve Network + sertifikalıdır. MakeUseOf'un baş geliştiricisi ve boş zamanlarını VR paintball ve boardgames oynayarak geçiriyor. Çocukluğundan beri bilgisayar yapıyor.