Isi kandungan:
- Langkah 1: Komponen yang Diperlukan
- Langkah 2: Sambungan Jam Arduino
- Langkah 3: Kod untuk Jam Arduino Dengan RTC
Video: Jam Masa Sebenar Dengan Arduino: 3 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:08
Dalam projek ini, kami akan membuat jam dengan bantuan modul Arduino dan RTC. Seperti yang kita ketahui, Arduino tidak dapat memaparkan waktu yang sebenarnya jadi kita akan menggunakan modul RTC untuk memaparkan waktu yang tepat di LCD. Baca semua langkah dengan teliti, ia akan banyak membantu anda membuat kerja jam.
Kod DS3231 Arduino adalah seperti kod DS1307 dan berfungsi dengan kedua-dua cip RTC.
Kod Arduino di bawahnya tidak menggunakan perpustakaan mana pun untuk DS3231 RTC, perpustakaan Wire adalah untuk korespondensi antara Arduino dan DS3231 menggunakan konvensi I2C.
Yeah! Banyak jurutera elektronik bergantung pada projek berdasarkan masa mereka tetapi RTC tidak boleh dipercayai sepenuhnya. Ia dikendalikan dengan bateri dan mesti diganti segera atau lambat. Datang ke projek IoT ia memerlukan pin SPI (Serial Peripheral Interface) yang berharga dan tidak kemas dengan wayar yang kusut. Penyelesaian…. Inilah NTP wira kami (protokol masa Rangkaian). NTP begitu tepat kerana mendapat masa dari internet. Kami akan mengoperasikan protokol ini menggunakan mod pelayan pelanggan. prosesnya sangat mudah sehingga Nodemcu kami bertindak sebagai pelanggan dan meminta paket NTP dari pelayan menggunakan UDP. Sebagai balasan, pelayan menghantar paket kepada klien yang menguraikan data. NTP adalah protokol penyegerakan masa sejagat. Sekarang mari kita menerangi stesen kerja makmal kita
Langkah 1: Komponen yang Diperlukan
- Papan Arduino
- Papan RTC DS3231
- Skrin LCD 16x2
- Butang tekan 2 x
- Perintang pemboleh ubah 10K ohm (atau potensiometer)
- Perintang 330 ohm
- Bateri sel duit syiling 3V
- Papan roti
- Wayar pelompat
RTC mocule DS3231
Masa adalah rasa penting yang diperlukan dalam dunia manusia yang serba pantas ini. Dalam projek masa nyata
Kami menggunakan RTC (A. K. A Jam masa nyata)
RTC Real-time-clock (RTC) adalah litar bersepadu (IC) yang memantau masa semasa. RTC mengurus masa dalam mod sebenar. RTC biasanya terdapat di papan induk komputer dan sistem tertanam untuk memerlukan akses tepat pada masanya.
Langkah 2: Sambungan Jam Arduino
- Sambungkan pin SCL ke modul RTC ke Arduino A5
- Sambungkan pin SDA ke modul RTC ke Arduino A4
- Sambungkan VCC TO 5v dan GND TO GND
- Sambungkan butang tekan ke pin 8
- Sambungkan butang tekan lain ke pin 9
- Sambungkan RS LCD ke pin 2 Arduino
- Sambungkan E LCD ke pin 3 Arduino
- Sambungkan D7 LCD ke pin 7 Arduino
- Sambungkan D6 LCD ke pin 6 Arduino
- Sambungkan D5 LCD ke pin 5 Arduino
- Sambungkan D4 LCD ke pin 4 Arduino
- Sambungkan VSS & K ke GND
- Sambungkan VDD & A ke 5v
- Sambungkan vo ke pin output potensiometer
Langkah 3: Kod untuk Jam Arduino Dengan RTC
DS3231 berfungsi dengan format BCD sahaja dan untuk menukar BCD menjadi perpuluhan dan sebaliknya saya menggunakan 2 baris di bawah (contoh untuk minit): // Tukarkan BCD ke perpuluhan = (minit >> 4) * 10 + (minit & 0x0F);
// Tukar perpuluhan menjadi BCDminute = ((minit / 10) << 4) + (minit% 10); batal DS3231_display (): memaparkan masa dan kalendar, sebelum memaparkan waktu dan data kalendar ditukar dari BCD ke format perpuluhan. kosongkan blink_parameter ():
// Jam dan kalendar masa nyata dengan butang set menggunakan DS3231 dan Arduino // sertakan kod perpustakaan LCD #sertakan / sertakan kod perpustakaan Wire (diperlukan untuk peranti protokol I2C) #sertakan // sambungan modul LCD (RS, E, D4, D5, D6, D7) LiquidCrystal lcd (2, 3, 4, 5, 6, 7); batal persediaan () {pinMode (8, INPUT_PULLUP); // butang1 disambungkan ke pin 8 pinMode (9, INPUT_PULLUP); // butang2 disambungkan ke pin 9 // tetapkan lajur dan baris LCD lcd.begin (16, 2); Wire.begin (); // Sertailah i2c bus} char Time = "TIME:::"; char Calendar = "TARIKH: / / 20"; bait i, kedua, minit, jam, tarikh, bulan, tahun; batal DS3231_display () {// Tukar BCD ke perpuluhan saat = (kedua >> 4) * 10 + (kedua & 0x0F); minit = (minit >> 4) * 10 + (minit & 0x0F); jam = (jam >> 4) * 10 + (jam & 0x0F); tarikh = (tarikh >> 4) * 10 + (tarikh & 0x0F); bulan = (bulan >> 4) * 10 + (bulan & 0x0F); tahun = (tahun >> 4) * 10 + (tahun & 0x0F); // Masa penukaran akhir [12] =% kedua 10 + 48; Masa [11] = kedua / 10 + 48; Masa [9] = minit% 10 + 48; Masa [8] = minit / 10 + 48; Masa [6] = jam% 10 + 48; Masa [5] = jam / 10 + 48; Kalendar [14] = tahun% 10 + 48; Kalendar [13] = tahun / 10 + 48; Kalendar [9] = bulan% 10 + 48; Kalendar [8] = bulan / 10 + 48; Kalendar [6] = tarikh% 10 + 48; Kalendar [5] = tarikh / 10 + 48; lcd.setCursor (0, 0); lcd.print (Masa); // Waktu paparan lcd.setCursor (0, 1); lcd.print (Kalendar); // Paparan kalendar} kekosongan kosong_parameter () {byte j = 0; manakala (j 23) // Jika jam> 23 ==> jam = 0 parameter = 0; if (i == 1 && parameter> 59) // Jika minit> 59 ==> minit = 0 parameter = 0; if (i == 2 && parameter> 31) // Jika tarikh> 31 ==> tarikh = 1 parameter = 1; if (i == 3 && parameter> 12) // Jika bulan> 12 ==> bulan = 1 parameter = 1; if (i == 4 && parameter> 99) // Jika tahun> 99 ==> tahun = 0 parameter = 0; sprintf (teks, "% 02u", parameter); lcd.setCursor (x, y); lcd.print (teks); kelewatan (200); // Tunggu 200ms} lcd.setCursor (x, y); lcd.print (""); // Paparkan dua ruang blink_parameter (); sprintf (teks, "% 02u", parameter); lcd.setCursor (x, y); lcd.print (teks); blink_parameter (); if (! digitalRead (8)) {// Jika butang (pin # 8) ditekan i ++; // Kenaikan 'i' untuk parameter pengembalian parameter seterusnya; // Nilai parameter kembali dan keluar}}} gelung kosong () {if (! DigitalRead (8)) {// Jika butang (pin # 8) ditekan i = 0; jam = sunting (5, 0, jam); minit = sunting (8, 0, minit); tarikh = sunting (5, 1, tarikh); bulan = sunting (8, 1, bulan); tahun = suntingan (13, 1, tahun); // Tukar perpuluhan menjadi BCD minit = ((minit / 10) << 4) + (minit% 10); jam = ((jam / 10) << 4) + (jam% 10); tarikh = ((tarikh / 10) << 4) + (tarikh% 10); bulan = ((bulan / 10) << 4) + (bulan% 10); tahun = ((tahun / 10) << 4) + (tahun% 10); // Penukaran akhir // Tulis data ke DS3231 RTC Wire.beginTransmission (0x68); // Mulakan protokol I2C dengan alamat DS3231 Wire.write (0); // Hantar alamat daftar Wire.write (0); // Tetapkan semula sesonds dan mulakan pengayun Wire.write (minit); // Tulis minit Wire.write (jam); // Tulis jam Wire.write (1); // Tulis hari (tidak digunakan) Wire.write (tarikh); // Tulis tarikh Wire.write (bulan); // Tulis bulan Wire.write (tahun); // Tulis tahun Wire.endTransmission (); // Hentikan penghantaran dan lepaskan kelewatan bas I2C (200); // Tunggu 200ms} Wire.beginTransmission (0x68); // Mulakan protokol I2C dengan alamat DS3231 Wire.write (0); // Hantar alamat daftar Wire.endTransmission (false); // I2C mulakan semula Wire.requestFrom (0x68, 7); // Minta 7 bait dari DS3231 dan lepaskan bas I2C pada akhir bacaan kedua = Wire.read (); // Baca saat dari daftar 0 minit = Wire.read (); // Baca minit dari daftar 1 jam = Wire.read (); // Baca jam dari daftar 2 Wire.read (); // Baca hari dari daftar 3 (tidak digunakan) tarikh = Wire.read (); // Tarikh baca dari daftar 4 bulan = Wire.read (); // Baca bulan dari daftar 5 tahun = Wire.read (); // Baca tahun dari daftar 6 DS3231_display (); // Masa diet & kelewatan kalendar (50); // Tunggu 50ms}
Disyorkan:
Menetapkan DS3231 RTC (Jam Masa Sebenar) Dengan tepat, pantas dan automatik menggunakan Java (+ -1s): 3 Langkah
Menetapkan DS3231 RTC (Jam Waktu Nyata) Dengan Tepat, Cepat dan Automatik Menggunakan Java (+ -1s): Instructable ini akan menunjukkan kepada anda cara mengatur waktu pada Jam Waktu Nyata DS3231 menggunakan aplikasi Arduino dan Java kecil yang menggunakan sambungan bersiri Arduino. Logik asas program ini: 1. Arduino menghantar permintaan bersiri
Jam Masa Sebenar Minitel: 5 Langkah
Minitel Real Time Clock: Dicipta pada tahun 1978 oleh France Telecom, Minitel adalah perkhidmatan mendapatkan maklumat dan menghantar teks. Dianggap sebagai rangkaian yang paling berjaya sebelum web seluruh dunia. 30 tahun pada 2008 rangkaian akhirnya ditutup. (Terdapat banyak maklumat mengenai ini
Membuat Jam Dengan M5stick C Menggunakan Arduino IDE - Jam Masa Sebenar RTC Dengan M5stack M5stick-C: 4 Langkah
Membuat Jam Dengan M5stick C Menggunakan Arduino IDE | Jam RTC Real Time Dengan M5stack M5stick-C: Hai kawan-kawan dalam arahan ini, kita akan belajar bagaimana membuat jam dengan papan pengembangan m5stick-C m5stack menggunakan Arduino IDE. Jadi m5stick akan memaparkan tarikh, masa & minggu dalam paparan
NODEMCU Lua ESP8266 Dengan Jam Masa Sebenar (RTC) & EEPROM: 7 Langkah
NODEMCU Lua ESP8266 Dengan Jam Waktu Sebenar (RTC) & EEPROM: Mendapatkan masa yang betul adalah mustahak jika anda ingin menyimpan log data. Terdapat pelbagai cara untuk mendapatkan masa dari sumber di Internet. Anda mungkin bertanya mengapa tidak menggunakan ESP8266 untuk menyimpan masa untuk anda? Anda boleh, ia mempunyai RTC dalamannya sendiri (Real Time
Jam Masa Sebenar Ambient: 4 Langkah
Jam Waktu Nyata Ambient: AimI membuat Jam ini kerana saya mempunyai jalur LED yang boleh dialamatkan dan saya mahu menggunakannya. Kemudian saya melihat bilik saya tidak mempunyai Jam yang bagus yang sesuai dengan dindingnya. Oleh itu, saya memutuskan untuk membuat Jam yang dapat mengubah warnanya mengikut mood pengguna atau