Bagaimana dan Mengapa Menambah Jam Masa Nyata ke Arduino

Bagaimana dan Mengapa Menambah Jam Masa Nyata ke Arduino

Menjaga masa untuk projek Arduino tidak semudah yang anda fikirkan: setelah sambungan komputer tidak ada, Arduino yang tidak berkuasa anda berhenti berjalan, termasuk ticker dalamannya.





ucapan bebas terbaik untuk perisian teks

Untuk memastikan Arduino anda selari dengan dunia di sekitarnya, anda akan memerlukan apa yang dipanggil 'modul Waktu Sebenar'. Inilah cara penggunaannya.





Apa gunanya Jam Masa Nyata (RTC)?

Komputer anda kemungkinan besar menyegerakkan waktunya dengan internet, tetapi masih mempunyai jam dalaman yang terus berjalan walaupun tanpa sambungan Internet atau kuasa dimatikan. Apabila anda menggunakan Arduino yang terpasang ke komputer, ia dapat mengakses waktu yang tepat yang disediakan oleh jam sistem anda. Itu cukup berguna, tetapi kebanyakan projek Arduino dirancang untuk digunakan jauh dari komputer - pada ketika itu, pada bila-bila masa kuasa dicabut, atau Arduino dimulakan semula, ia sama sekali tidak akan tahu waktunya. Jam dalaman akan diset semula dan mula mengira dari sifar sekali lagi pada waktu ia dihidupkan.





Sekiranya projek anda ada kaitan dengan memerlukan masa - seperti jam penggera malam dan matahari terbit saya - ini jelas akan menjadi masalah. Dalam projek itu, kami menyelesaikan masalah dengan menetapkan waktu setiap malam secara manual dengan cara yang agak kasar - pengguna akan menekan butang set semula sebelum mereka tidur, memberikan penyegerakan waktu manual. Jelas itu bukan penyelesaian jangka panjang yang ideal.

Modul RTC adalah litar tambahan, memerlukan bateri sel duit syiling kecil, yang terus menghitung masa walaupun Arduino anda dimatikan. Setelah ditetapkan sekali - ia akan menyimpan masa untuk jangka hayat bateri, biasanya tahun yang baik.



TinyRTC

RTC yang paling popular untuk Arduino disebut TinyRTC dan boleh dibeli dengan harga sekitar $ 5- $ 10 di eBay. Anda kemungkinan besar perlu membekalkan bateri anda sendiri (tidak sah menghantarnya ke luar negara ke banyak tempat), dan beberapa tajuk (pin yang masuk ke dalam lubang, yang perlu anda pasangkan sendiri).

Ini adalah modul yang saya ada:





Ia bahkan mempunyai sensor suhu terpasang, walaupun bateri akan bertahan lebih lama jika anda tidak menggunakannya.

Jumlah lubang pada benda itu kelihatan sangat menakutkan, tetapi anda hanya memerlukan empat daripadanya; GND, VCC, SCL dan SDA - anda boleh menggunakan pin yang berkaitan di kedua-dua sisi modul RTC. Anda bercakap dengan menggunakan jam Protokol I2C , yang bermaksud hanya dua pin yang digunakan - satu untuk 'jam' (jam data komunikasi bersiri, tiada kaitan dengan masa) dan satu untuk data. Malah, anda bahkan mengikat sehingga 121 peranti I2C pada dua pin yang sama - lihat halaman Adafruit ini untuk pilihan peranti I2C lain yang boleh anda tambahkan, kerana terdapat banyak!





Bermula

Sambungkan modul TinyRTC anda mengikut rajah di bawah - garis DS merah jambu tidak diperlukan, kerana itu untuk sensor suhu.

Seterusnya, muat turun Masa dan DS1307RTC perpustakaan dan letakkan folder yang dihasilkan di folder anda / perpustakaan folder.

Keluar dan lancarkan semula persekitaran Arduino untuk dimuat di perpustakaan dan contoh.

Anda akan menemui dua contoh dalam menu DS1307RTC: muat naik dan jalankan Tetapkan masa contoh pertama - ini akan menetapkan RTC ke masa yang betul. Kod sebenarnya tidak perlu diperincikan dengan terperinci, ketahui bahawa anda perlu menjalankannya sekali untuk melakukan penyegerakan waktu awal.

Seterusnya, lihat contoh penggunaan dengan Ujian Baca .

usb jenis c vs usb 3.0

#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);
}

Perhatikan bahawa kami juga memasukkan intinya Wire.h perpustakaan - ini dilengkapi dengan Arduino dan digunakan untuk berkomunikasi melalui I2C. Muat naik kod, buka konsol bersiri pada 9600 baud, dan tonton dan Arduino anda mengeluarkan masa semasa setiap saat. Hebat!

Kod yang paling penting dalam contoh adalah membuat a tmElements_t tm - ini a struktur bahawa kita akan mengisi masa sekarang; dan juga RTC.baca (tm) fungsi, yang mendapat masa semasa dari modul RTC, memasukkannya ke dalam kita tm struktur, dan kembali benar sekiranya semuanya berjalan lancar. Tambahkan kod debug atau logik anda di dalam pernyataan 'if' itu, seperti mencetak masa atau bertindak balas terhadapnya.

pemuat turun dan pemain muzik luar talian percuma

Sekarang setelah anda mengetahui bagaimana mendapatkan masa yang tepat dengan Arduino, anda boleh mencuba menulis semula projek penggera matahari terbit atau membuat jam perkataan LED - kemungkinannya tidak akan habis! Apa yang akan anda buat?

Kredit Gambar: Snootlab Melalui Flickr

Berkongsi Berkongsi Tweet E-mel Cara Mengubah Rupa dan Rasa Desktop Windows 10 Anda

Ingin tahu bagaimana menjadikan Windows 10 kelihatan lebih baik? Gunakan penyesuaian mudah ini untuk menjadikan Windows 10 milik anda sendiri.

Baca Seterusnya
Topik-topik yang berkaitan
  • DIY
  • Arduino
Mengenai Pengarang James Bruce(707 Artikel Diterbitkan)

James mempunyai BSc dalam Artificial Intelligence dan disahkan CompTIA A + dan Network +. Apabila dia tidak sibuk sebagai Editor Ulasan Perkakasan, dia menikmati permainan LEGO, VR, dan permainan papan. Sebelum menyertai MakeUseOf, dia adalah juruteknik pencahayaan, guru bahasa Inggeris, dan jurutera pusat data.

Lebih Banyak Dari James Bruce

Langgan buletin kami

Sertailah buletin kami untuk mendapatkan petua, ulasan, ebook percuma, dan tawaran eksklusif!

Klik di sini untuk melanggan