Daftar Isi:
2025 Pengarang: John Day | [email protected]. Terakhir diubah: 2025-01-23 14:49
Mendapatkan waktu yang tepat sangat penting jika Anda ingin menyimpan log data. Ada berbagai cara untuk mendapatkan waktu dari sumber di Internet.
Anda mungkin bertanya mengapa tidak menggunakan ESP8266 untuk menghemat waktu Anda? Anda bisa, ia memiliki RTC (Real Time Clock) internalnya sendiri, tetapi ESP8266 memiliki 3 frekuensi jam operasi yang berbeda - 52MHz saat boot, 80MHz selama operasi reguler, dan 160MHz jika dikuatkan. Jika Anda membutuhkan pengaturan waktu yang lebih akurat, terutama dalam periode yang lebih lama, maka RTC eksternal mungkin memberikan solusi. Modul ini juga memiliki baterai cadangan jika terjadi kehilangan daya. RTC tidak terlalu akurat karena menghitung waktu yang telah berlalu sejak ditetapkan dan meskipun dapat dilakukan untuk sebagian besar aplikasi, mungkin tidak cukup baik untuk menjaga waktu kritis. Dimungkinkan untuk mendapatkan waktu yang akurat dari server waktu SNTP dari mana RTC dapat diperbarui secara berkala jika diperlukan.
Modul DS1307 Tiny RTC I2C (di atas) adalah contoh item ini dan dapat dibeli di Ebay dan pemasok lain dengan harga kurang dari £2. Ada juga yang lain seperti DS1302 dan DS3231 yang bekerja dengan cara yang sama dan harganya mulai 99p ke atas.
Modul DS1307 menggunakan antarmuka I2C dan untuk ESP-01 harus dihubungkan sebagai:
Vcc - 3.3v, Gnd - Gnd, SDA - D3, SCL - D4
SDA dan SCL dapat dihubungkan ke salah satu pin I/O pada ESP8266 yang lebih besar (ubah kode yang sesuai). Hanya pin sisi kiri yang perlu dihubungkan pada modul ini.
Langkah 1: Waktu Google
Ada banyak contoh mendapatkan waktu dari Google dan terlihat seperti ini. Saat Anda menjalankan program GoogleTime.lua Anda mendapatkan hasil seperti ini:
dofile("GoogleTime.lua")> Waktu: Jum, 15 Des 2017 11:19:45 GMT
Masalah dengan metode ini adalah Anda mendapatkan waktu dalam format string dan Anda harus membagi string menjadi bit individual selama berjam-jam, menit, detik, dll. RTC menerima waktu dalam format khusus yaitu cap waktu UNIX. Dalam istilah awam, ini adalah jumlah detik yang telah berlalu sejak Kamis 1 Januari 1970 hingga hari dan waktu sekarang. UNIX Epoch (1970/01/01 00:00:00) digunakan oleh sebagian besar sistem operasi komputer dan waktu yang telah berlalu disimpan sebagai nomor 32 bit yang ditandatangani. Ini berarti bahwa sistem ini akan bekerja hingga 19 Januari 2038 ketika jumlahnya akan menjadi terlalu besar untuk disimpan dengan cara ini. Salah satu solusinya adalah menyimpan nomor sebagai 64 bit, tetapi untuk saat ini metode 32 bit sudah cukup.
Untuk menyetel waktu ke 9 Juli 2015, 18:29:49 di RTC internal, Anda akan menggunakan baris kode ini:
rtctime.set(1436430589, 0)
2 parameter adalah detik dan mikro detik.
Anda dapat menemukan informasi lebih lanjut dengan membaca Dokumentasi NodeMCU.
Langkah 2: Server Waktu SNTP
Simple Network Time Protocol (SNTP) disediakan dari banyak sumber di Internet, dan banyak negara di dunia memiliki layanan ini.
Program, SNTPTime2.lua mengatur waktu pada RTC internal. Anda harus memiliki modul rtctime & sntp di build Anda saat mem-flash ESP8266 Anda. Program mendapatkan waktu dari server dalam detik dan mikro detik dan menyetel RTC internal dengan rtctime.set(sec, usec).
Program kemudian menampilkan tanggal dan waktu dalam format yang berbeda.
Ada banyak Server SNTP di seluruh dunia dan beberapa adalah sebagai berikut:
- sntp.sync({"216.239.35.0"},
- sntp.sync({"0.uk.pool.ntp.org", "0.uk.pool.ntp.org"},
- sntp.sync({"3.uk.pool.ntp.org", "143.210.16.201"},
- sntp.sync({"0.uk.pool.ntp.org", "1.uk.pool.ntp.org", "3.uk.pool.ntp.org"},
Semua baris kode di atas dapat diganti ke dalam program SNTPTime2.lua.
Ada lebih banyak Server SNTP di alamat di bawah ini yang lagi-lagi dapat digunakan dalam program.
93.170.62.252, 130.88.202.49, 79.135.97.79, ntp.exnet.com
Google juga menyediakan server waktu di alamat berikut:
216.239.35.0, 216.239.35.4, 216.239.35.8, 216.239.35.12
Anda harus ingat untuk mendapatkan waktu dari negara tempat Anda berada atau Anda mungkin harus memodifikasinya untuk zona waktu dunia yang berbeda. Juga beberapa negara memiliki waktu musim panas, jadi Anda mungkin harus menghadapinya juga.
Langkah 3: Mendapatkan Waktu Dari Modul RTC
Program GetRTCTime.lua membaca waktu dari RTC internal.
Bagian pertama membaca waktu dan menampilkannya dalam hitungan detik dan mikrodetik.
Bagian kedua mengubahnya menjadi format yang lebih mudah dibaca manusia.
saat memanggil tm = rtctime.epoch2cal(rtctime.get()) ia mengembalikan:
- tahun - 1970 ~ 2038
- mon - bulan 1 ~ 12 di tahun berjalan
- hari - hari 1 ~ 31 di bulan berjalan
- jam
- min
- detik
- hari - hari 1 ~ 366 di tahun berjalan
- wday - hari 1 ~ 7 dalam minggu ini (Minggu adalah 1)
Setiap item dapat diakses sebagai tm["hari"], tm["tahun"]…
Anda dapat menemukan informasi lebih lanjut dengan membaca Dokumentasi NodeMCU.
DisplaySNTPtime.lua adalah cara yang lebih rumit untuk menampilkan tanggal dan waktu pada layar LCD 128 x 64 OLED, karena mudah dihubungkan dan dapat digunakan dengan program ini.
Langkah 4: Memori Pengguna RTC
Sedikit pengalihan dari pencatat waktu adalah RTC internal pada ESP8266 memiliki alamat memori 128 x 32 bit yang dapat diakses oleh programmer. Mereka sangat berguna karena mereka dapat bertahan dari siklus tidur nyenyak ESP8266. Terserah programmer untuk mengontrol penggunaannya dan memastikan bahwa mereka tidak ditimpa secara tidak sengaja.
Saya telah menyertakan RTCmem.lua, sebuah program sederhana yang mendemonstrasikan penggunaannya. Anda harus memiliki modul rtcmem di file build.gradle Anda.
Langkah 5: Modul RTC Eksternal
Modul RTC eksternal terhubung ke ESP8266 melalui antarmuka I2C, yang hanya menggunakan dua pin I/O dan bekerja dengan ESP-01 serta sebagian besar perangkat ESP8266 lainnya.
Alamat modul RTC adalah 0x68 dan diakses menggunakan perintah I2C normal. Namun, ada sesuatu yang perlu diingat, data dalam register RTC disimpan dalam format BCD (basis 16), jadi program Anda harus menangani hal ini. Waktu dan tanggal disimpan dalam 7 register dalam RTC. Pada RTC internal, konversi BCD ditangani oleh modul rtctime.
SetExtRTC.lua mengonversi data ke BCD dan menyetel waktu.
ReadExtRTC.lua membaca data waktu dan mencetaknya. CATATAN: data dicetak dalam heksadesimal.
Saya tidak menghabiskan banyak waktu untuk memformat tampilan karena Anda mungkin memiliki ide sendiri tentang apa yang ingin Anda lakukan dengan tanggal dan waktu. Ini adalah mesin dasar dalam bentuknya yang paling sederhana, sehingga Anda dapat mengembangkannya lebih lanjut jika Anda mau.
Langkah 6: Pencatatan Data
Jika Anda melihat lebih dekat pada modul RTC, Anda akan melihat bahwa mereka memiliki IC EEPROM AT24C32 atau sejenisnya yang terpasang di dalamnya, atau Anda dapat menggunakan papan 24C256 seperti di atas. Sebagian besar IC EEPROM ini memiliki pin out yang sama seperti di atas. Mereka datang dengan berbagai jumlah penyimpanan, tetapi semuanya diakses dengan cara yang sama. Karena AT24C32 sudah disolder ke papan, AT24C32 dapat digunakan langsung dari I2C RTC eksternal.
Jika Anda hanya memiliki IC 24C256 atau serupa, Anda dapat mengaturnya di papan roti, sambungkan A1, A2 dan A3 ke Gnd, Vcc ke 3.3V dan SDA AND SCL ke I2C, WP dapat dibiarkan mengambang. Beberapa IC EEPROM hanya beroperasi pada 5V, jadi periksa lembar data yang relevan terlebih dahulu.
ByteWR.lua menulis 1 byte data ke lokasi memori 0x00 EEPROM dan membacanya kembali.
Desiderata.lua menulis beberapa baris dari teks terkenal ke EEPROM.
eeRead.lua membaca data dari EEPROM dan mencetaknya.
CATATAN: Program-program ini juga harus bekerja dengan papan EEPROM lainnya.
Langkah 7: Kesimpulan
Saya telah mencoba menunjukkan cara kerja RTC dan EEPROM untuk pencatatan data. Ini hanyalah permulaan bagi Anda untuk berkembang lebih jauh. Anda dapat menghubungkan berbagai perangkat ke bus I2C seperti sensor cahaya, sensor tekanan barometrik, sensor suhu dan kelembaban dan merekam data pada EEPROM.
Direkomendasikan:
Cara Menggunakan Modul Jam Waktu Nyata (DS3231): 5 Langkah
Cara Menggunakan Modul Jam Waktu Nyata (DS3231): DS3231 adalah jam waktu nyata (RTC) I2C yang sangat akurat dan berbiaya rendah dengan osilator kristal kompensasi suhu (TCXO) dan kristal yang terintegrasi. Perangkat ini menggabungkan input baterai dan mempertahankan ketepatan waktu yang akurat saat daya utama ke
Jam Waktu Nyata Dengan Arduino: 3 Langkah
Jam Waktu Nyata Dengan Arduino: Dalam proyek ini, kami akan membuat jam dengan bantuan modul Arduino dan RTC. Seperti yang kita ketahui Arduino tidak dapat menampilkan waktu yang sebenarnya sehingga kita akan menggunakan modul RTC untuk menampilkan waktu yang tepat pada LCD. Baca semua langkah dengan seksama, ini akan membantu Anda
Jam Jaringan ESP8266 Tanpa RTC - Nodemcu NTP Jam Tidak Ada RTC - PROYEK JAM INTERNET: 4 Langkah
Jam Jaringan ESP8266 Tanpa RTC | Nodemcu NTP Jam Tidak Ada RTC | INTERNET CLOCK PROJECT : Pada project ini akan dibuat project clock tanpa RTC, akan memakan waktu dari internet menggunakan wifi dan akan ditampilkan pada layar st7735
DS1307 Jam Waktu Nyata RTC Dengan Arduino: 4 Langkah
DS1307 Real Time Clock RTC With Arduino: Dalam Tutorial ini, kita akan belajar tentang Real Time Clock (RTC) dan bagaimana Arduino & IC Real Time Clock DS1307 disatukan sebagai perangkat pengatur waktu.Real Time Clock (RTC) digunakan untuk memantau waktu dan memelihara kalender.Untuk menggunakan RTC
Membuat Jam Dengan M5stick C Menggunakan Arduino IDE - Jam Waktu Nyata RTC Dengan M5stack M5stick-C: 4 Langkah
Membuat Jam Dengan M5stick C Menggunakan Arduino IDE | Jam Waktu Nyata RTC Dengan M5stack M5stick-C: Hai teman-teman dalam instruksi ini kita akan belajar cara membuat jam dengan papan pengembangan m5stick-C dari m5stack menggunakan Arduino IDE. Jadi m5stick akan menampilkan tanggal, waktu & minggu dalam sebulan di layar