Arduino'ya Gerçek Zamanlı Saat Nasıl ve Neden Eklenir?

Arduino'ya Gerçek Zamanlı Saat Nasıl ve Neden Eklenir?

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





Windows 10 grafik kartımı nasıl kontrol edebilirim

Arduino'nuzu etrafındaki dünyayla senkronize tutmak için 'Gerçek Zamanlı Saat modülü' denilen şeye ihtiyacınız olacak. İşte bir tane nasıl kullanılır.





Gerçek Zamanlı Saatin (RTC) anlamı nedir?

Bilgisayarınız büyük olasılıkla zamanını internet ile senkronize eder, ancak yine de İnternet bağlantısı olmasa veya güç kapatılsa bile çalışmaya devam eden dahili bir saati vardır. Bir bilgisayara takılı bir Arduino kullandığınızda, sistem saatiniz tarafından sağlanan doğru zamana erişimi vardır. Bu oldukça kullanışlıdır, ancak çoğu Arduino projesi bir bilgisayardan uzakta kullanılmak üzere tasarlanmıştır - bu noktada, güç her kesildiğinde veya Arduino yeniden başlatıldığında, saatin kaç olduğu konusunda kesinlikle hiçbir fikri olmayacaktır. Dahili saat sıfırlanacak ve bir sonraki açılışında tekrar sıfırdan saymaya başlayacaktır.





Projenizin zamana ihtiyaç duyma ile bir ilgisi varsa - örneğin gece lambası ve gün doğumu çalar saatim - bu açıkça bir sorun olacaktır. Bu projede, her gece saati oldukça kaba bir şekilde manuel olarak ayarlayarak sorunu çözdük - kullanıcı, manuel zaman senkronizasyonu sağlayarak yatmadan hemen önce sıfırlama düğmesine basacaktı. Açıkçası bu ideal bir uzun süreli çözüm değil.

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



minikRTC

Arduino için en popüler RTC'ye TinyRTC denir ve eBay'de yaklaşık 5-10$'a satın alınabilir. Büyük olasılıkla kendi pilinizi (bunları denizaşırı ülkelere göndermek yasa dışıdır) ve bazı başlıkları (deliklere takılan pimler, kendiniz lehimlemeniz gerekecek) sağlamanız gerekecektir.

Bu sahip olduğum modül:





Hatta yerleşik bir sıcaklık sensörüne sahiptir, ancak kullanmadığınız takdirde pil daha uzun süre dayanır.

O şeyin üzerindeki deliklerin sayısı oldukça ürkütücü görünüyor, ancak bunlardan sadece dördüne ihtiyacınız var; GND, VCC, SCL ve SDA - RTC modülünün her iki tarafındaki ilgili pinleri kullanabilirsiniz. kullanarak saatle konuşursunuz I2C protokolü , bu sadece iki pinin kullanıldığı anlamına gelir - biri 'saat' (seri iletişim veri saati, zamanla ilgisi yoktur) ve diğeri veri için. Hatta aynı iki pin üzerinde 121 adede kadar I2C cihazını zincirlersiniz - kontrol edin bu Adafruit sayfası ekleyebileceğiniz diğer I2C cihazlarının bir seçimi için, çünkü çok şey var!





Başlarken

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

Ardından, indirin Zaman ve DS1307RTC kitaplıkları ve ortaya çıkan klasörleri /kütüphaneler dosya.

Kütüphanelere ve örneklere yüklemek için Arduino ortamından çıkın ve yeniden başlatın.

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

Ardından, ile örnek kullanıma bakın Okuma Testi .

Windows 10 harici sürücü görünmüyor

#include
#include
#include
void setup() {
Serial.begin(9600);
while (!Serial) ; // wait for serial
delay(200);
Serial.println('DS1307RTC Read Test');
Serial.println('-------------------');
}
void loop() {
tmElements_t tm;
if (RTC.read(tm)) {
Serial.print('Ok, Time = ');
print2digits(tm.Hour);
Serial.write(':');
print2digits(tm.Minute);
Serial.write(':');
print2digits(tm.Second);
Serial.print(', Date (D/M/Y) = ');
Serial.print(tm.Day);
Serial.write('/');
Serial.print(tm.Month);
Serial.write('/');
Serial.print(tmYearToCalendar(tm.Year));
Serial.println();
} else {
if (RTC.chipPresent()) {
Serial.println('The DS1307 is stopped. Please run the SetTime');
Serial.println('example to initialize the time and begin running.');
Serial.println();
} else {
Serial.println('DS1307 read error! Please check the circuitry.');
Serial.println();
}
delay(9000);
}
delay(1000);
}
void print2digits(int number) {
if (number >= 0 && number <10) {
Serial.write('0');
}
Serial.print(number);
}

Çekirdeği de dahil ettiğimizi unutmayın. tel.h kitaplık - bu Arduino ile birlikte gelir ve I2C üzerinden iletişim kurmak için kullanılır. Kodu yükleyin, seri konsolu 9600 baud'da açın ve izleyin ve Arduino'nuz her saniye o anki zamanı verir. Harika!

Örnekteki en önemli kod, bir tmElements_t tm - bu bir yapı şimdiki zamanla dolduracağımız; ve RTC.oku(tm) RTC modülünden o anki zamanı alan fonksiyon, onu bizim tm yapı ve her şey yolunda giderse true değerini döndürür. Hata ayıklama veya mantık kodunuzu bu 'if' ifadesinin içine, örneğin zamanı yazdırmak veya buna tepki vermek gibi ekleyin.

bir telefonun kilidini açmanın maliyeti nedir

Artık Arduino ile doğru zamanı nasıl alacağınızı bildiğinize göre, gün doğumu alarm projesini yeniden yazmayı deneyebilir veya bir LED kelime saati oluşturabilirsiniz - olasılıklar sonsuzdur! ne yapacaksın

Resim Kredisi: Snootlab Flickr aracılığıyla

Paylaş Paylaş Cıvıldamak E-posta Windows 10 Masaüstünüzün Görünümü ve Hissi Nasıl Değiştirilir

Windows 10'un nasıl daha iyi görüneceğini bilmek ister misiniz? Windows 10'u kendinize özel hale getirmek için bu basit özelleştirmeleri kullanın.

Sonrakini Oku
İlgili konular
  • kendin yap
  • Arduino
Yazar hakkında James Bruce(707 Makale Yayınlandı)

James, Yapay Zeka alanında lisans derecesine sahiptir ve CompTIA A+ ve Network+ sertifikalıdır. Donanım İncelemeleri Editörü olarak meşgul olmadığı zamanlarda LEGO, VR ve masa oyunlarından hoşlanır. MakeUseOf'a katılmadan önce aydınlatma teknisyeni, İngilizce öğretmeni ve veri merkezi mühendisiydi.

James Bruce'dan Daha Fazla

Haber bültenimize abone ol

Teknik ipuçları, incelemeler, ücretsiz e-kitaplar ve özel fırsatlar için bültenimize katılın!

Abone olmak için buraya tıklayın