Isi kandungan:
- Langkah 1: Masa Google
- Langkah 2: Pelayan Masa SNTP
- Langkah 3: Mendapatkan Masa Dari Modul RTC
- Langkah 4: Memori Pengguna RTC
- Langkah 5: Modul RTC Luaran
- Langkah 6: Pembalakan Data
- Langkah 7: Kesimpulannya
Video: NODEMCU Lua ESP8266 Dengan Jam Masa Sebenar (RTC) & EEPROM: 7 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:09
Mendapatkan masa yang tepat 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 Clock), tetapi ESP8266 mempunyai 3 frekuensi jam operasi yang berbeza - 52MHz ketika boot, 80MHz semasa operasi biasa, dan 160MHz jika ditingkatkan. Sekiranya anda memerlukan penyimpanan masa yang lebih tepat, terutama dalam jangka masa yang lebih lama, maka RTC luaran mungkin memberikan penyelesaian. Modul ini juga mempunyai sandaran bateri sekiranya berlaku kehilangan kuasa. RTC tidak begitu tepat kerana ia mengira masa yang berlalu sejak ditetapkan dan walaupun mungkin berlaku untuk kebanyakan aplikasi, ia mungkin tidak cukup baik untuk penyimpanan masa yang kritikal. Adalah mungkin untuk mendapatkan waktu yang tepat dari pelayan masa SNTP dari mana RTC dapat dikemas kini secara berkala jika diperlukan.
Modul DS1307 Tiny RTC I2C (di atas) adalah contoh item ini dan boleh dibeli di Ebay dan pembekal lain dengan harga kurang dari £ 2. Terdapat juga yang lain seperti DS1302 dan DS3231 yang berfungsi dengan cara yang serupa dan berharga dari 99p ke atas.
Modul DS1307 menggunakan antara muka I2C dan untuk ESP-01 harus disambungkan sebagai:
Vcc - 3.3v, Gnd - Gnd, SDA - D3, SCL - D4
SDA dan SCL boleh dihubungkan ke salah satu pin I / O pada ESP8266 yang lebih besar (ubah kod yang sesuai). Hanya pin sebelah kiri yang perlu disambungkan pada modul ini.
Langkah 1: Masa Google
Terdapat banyak contoh untuk mendapatkan masa dari Google dan kelihatan seperti ini. Apabila anda menjalankan program GoogleTime.lua anda akan mendapat hasil seperti ini:
dofile ("GoogleTime.lua")> Masa: Jumaat, 15 Dis 2017 11:19:45 GMT
Masalah dengan kaedah ini ialah anda mendapat masa dalam format rentetan dan anda harus membahagi rentetan menjadi bitnya masing-masing selama berjam-jam, minit, saat dan lain-lain. RTC menerima waktu dalam format khas iaitu cap waktu UNIX. Dalam istilah awam ini adalah jumlah detik yang telah berlalu sejak hari Khamis 1 Januari 1970 hingga hari ini dan waktu. UNIX Epoch (1970/01/01 00:00:00) digunakan oleh kebanyakan sistem operasi komputer dan masa yang berlalu disimpan sebagai nombor 32 bit yang ditandatangani. Ini bermaksud bahawa sistem ini akan berfungsi sehingga 19 Januari 2038 apabila jumlahnya akan menjadi terlalu besar untuk disimpan dengan cara ini. Salah satu penyelesaiannya ialah menyimpan nombor sebanyak 64 bit, tetapi buat masa ini kaedah 32 bit sudah mencukupi.
Untuk menetapkan masa ke 2015 9 Julai 18:29:49 pada RTC dalaman, anda akan menggunakan baris kod ini:
rtctime.set (1436430589, 0)
Parameter 2 adalah detik dan detik mikro.
Anda boleh mendapatkan lebih banyak maklumat membaca Dokumentasi NodeMCU.
Langkah 2: Pelayan Masa SNTP
Simple Network Time Protocol (SNTP) disediakan dari banyak sumber di Internet, dan banyak negara di seluruh dunia mempunyai perkhidmatan ini.
Program, SNTPTime2.lua menetapkan masa pada RTC dalaman. Anda perlu mempunyai modul rtctime & sntp dalam binaan anda semasa anda menyalakan ESP8266 anda. Program ini mendapat masa dari pelayan dalam beberapa saat dan detik mikro dan menetapkan RTC dalaman dengan rtctime.set (sec, usec).
Program ini kemudian memaparkan tarikh dan masa dalam format yang berbeza.
Terdapat banyak Server SNTP di seluruh dunia dan ada yang seperti 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 kod di atas boleh diganti ke dalam program SNTPTime2.lua.
Terdapat lebih banyak Server SNTP di alamat di bawah ini yang sekali lagi dapat digunakan dalam program ini.
93.170.62.252, 130.88.202.49, 79.135.97.79, ntp.exnet.com
Google juga menyediakan pelayan masa di alamat berikut:
216.239.35.0, 216.239.35.4, 216.239.35.8, 216.239.35.12
Anda perlu ingat untuk mendapatkan masa dari negara yang anda berada atau anda mungkin perlu mengubahnya untuk zon waktu dunia yang berbeza. Sebilangan negara juga mempunyai waktu menjimatkan waktu siang, jadi anda mungkin juga harus mengatasinya.
Langkah 3: Mendapatkan Masa Dari Modul RTC
Program GetRTCTime.lua membaca masa dari RTC dalaman.
Bahagian pertama membaca masa dan memaparkannya dalam beberapa saat dan mikrodetik.
Bahagian kedua mengubahnya menjadi format yang lebih mudah dibaca oleh manusia.
semasa memanggil tm = rtctime.epoch2cal (rtctime.get ()) ia mengembalikan:
- tahun - 1970 ~ 2038
- mon - bulan 1 ~ 12 pada tahun semasa
- hari - hari 1 ~ 31 pada bulan semasa
- jam
- min
- sek
- hari - hari 1 ~ 366 pada tahun semasa
- wday - hari 1 ~ 7 pada minggu semasa (Ahad adalah 1)
Setiap item boleh diakses sebagai tm ["hari"], tm ["tahun"]…
Anda boleh mendapatkan lebih banyak maklumat membaca Dokumentasi NodeMCU.
DisplaySNTPtime.lua adalah cara yang lebih terperinci untuk menunjukkan tarikh dan waktu pada paparan OLED LCD 128 x 64, kerana ia mudah dihubungkan dan dapat digunakan dengan program-program ini.
Langkah 4: Memori Pengguna RTC
Sedikit pengalihan dari penentuan masa adalah RTC dalaman pada ESP8266 mempunyai alamat memori 128 x 32 bit yang dapat diakses oleh pengaturcara. Mereka sangat berguna kerana mereka dapat bertahan dari kitaran tidur dalam ESP8266. Terserah kepada pengaturcara untuk mengawal penggunaannya dan memastikannya tidak ditimpa secara tidak sengaja.
Saya telah memasukkan RTCmem.lua, program ringkas yang menunjukkan penggunaannya. Anda perlu mempunyai modul rtcmem dalam binaan anda.
Langkah 5: Modul RTC Luaran
Modul RTC luaran menyambung ke ESP8266 melalui antara muka I2C, yang hanya menggunakan dua pin I / O dan berfungsi dengan ESP-01 serta kebanyakan peranti ESP8266 yang lain.
Alamat modul RTC 0x68 dan diakses menggunakan perintah I2C biasa. Namun, ada sesuatu yang perlu diingat, data dalam daftar RTC disimpan dalam format BCD (asas 16), jadi program anda harus menangani hal ini. Masa dan tarikh disimpan dalam 7 daftar dalam RTC. Pada RTC dalaman, penukaran BCD dijaga oleh modul waktu.
SetExtRTC.lua menukar data menjadi BCD dan menetapkan masa.
ReadExtRTC.lua membaca data masa dan mencetaknya. CATATAN: data dicetak dalam heksadesimal.
Saya tidak menghabiskan banyak masa untuk memformat paparan kerana anda mungkin mempunyai idea anda sendiri mengenai perkara yang ingin anda lakukan dengan tarikh dan masa. Ini adalah mesin asas dalam bentuknya yang paling mudah, supaya anda dapat mengembangkannya lebih jauh jika anda mahu.
Langkah 6: Pembalakan Data
Sekiranya anda melihat modul RTC dengan teliti, anda akan melihat bahawa mereka mempunyai IC EEPROM AT24C32 atau yang serupa dengannya, atau anda boleh menggunakan papan 24C256 seperti di atas. Sebilangan besar IC EEPROM ini mempunyai pin out yang serupa seperti di atas. Mereka dilengkapi dengan pelbagai jumlah simpanan, tetapi semuanya diakses dengan cara yang sama. Oleh kerana AT24C32 sudah disolder ke papan, ia dapat digunakan langsung dari I2C dari RTC luaran.
Sekiranya anda hanya mempunyai IC 24C256 atau yang serupa, anda boleh memasangnya di papan roti, sambungkan A1, A2 dan A3 ke Gnd, Vcc ke 3.3V dan SDA DAN SCL ke I2C, WP boleh dibiarkan mengambang. Beberapa IC EEPROM hanya beroperasi pada 5V, jadi periksa dahulu lembaran data yang berkaitan.
ByteWR.lua menulis 1 bait data ke lokasi memori 0x00 EEPROM dan membacanya kembali.
Desiderata.lua menulis beberapa baris dari teks terkenal hingga EEPROM.
eeRead.lua membaca data dari EEPROM dan mencetaknya.
CATATAN: Program-program ini harus berfungsi dengan papan EEPROM lain juga.
Langkah 7: Kesimpulannya
Saya telah cuba menunjukkan bagaimana RTC dan EEPROM berfungsi untuk data log. Ini hanya permulaan untuk anda terus maju. Anda boleh menyambungkan pelbagai peranti ke bas I2C seperti sensor cahaya, sensor tekanan barometrik, sensor suhu dan kelembapan dan merakam data di EEPROM.
Disyorkan:
Jam Masa Sebenar Dengan Arduino: 3 Langkah
Jam Masa Sebenar Dengan Arduino: 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 membantu
Jam Rangkaian ESP8266 Tanpa RTC - Jam NTP Nodemcu Tiada RTC - PROJEK JAM INTERNET: 4 Langkah
Jam Rangkaian ESP8266 Tanpa RTC | Jam NTP Nodemcu Tiada RTC | PROJEK JAM INTERNET: Dalam projek ini akan membuat projek jam tanpa RTC, akan memakan masa dari internet menggunakan wifi dan akan memaparkannya pada paparan st7735
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 Berasaskan Arduino Menggunakan Modul Jam Sebenar (RTC) DS1307 & 0.96: 5 Langkah
Jam Berasaskan Arduino Menggunakan Modul DS1307 Real Time Clock (RTC) & 0.96: Hai kawan-kawan dalam tutorial ini kita akan melihat bagaimana membuat jam kerja menggunakan modul jam masa nyata DS1307 & Paparan OLED. Oleh itu, kita akan membaca masa dari modul jam DS1307. Dan cetak pada skrin OLED
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