Mundarija:
- 1 -qadam: Google vaqti
- 2 -qadam: SNTP vaqt serverlari
- 3 -qadam: RTC modulidan vaqt olish
- 4 -qadam: RTC foydalanuvchi xotirasi
- 5 -qadam: Tashqi RTC modullari
- 6 -qadam: ma'lumotlarni ro'yxatga olish
- 7 -qadam: Xulosa
Video: NODEMCU Lua ESP8266 real vaqtda soat (RTC) va EEPROM bilan: 7 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:25
Ma'lumotlar jurnalini saqlamoqchi bo'lsangiz, to'g'ri vaqtni olish juda muhimdir. Vaqtni Internetdagi manbalardan olishning turli usullari mavjud.
Siz nima uchun vaqt ajratish uchun ESP8266 -dan foydalanmasligingizni so'rashingiz mumkin. O'zingizning ichki RTC (Real Time Clock) ga ega bo'lishingiz mumkin, lekin ESP8266 -da 3 xil ish chastotasi bor - u yuklanganda 52 MGts, muntazam ish paytida 80 MGts va kuchaytirilsa 160 MGts. Agar sizga aniqroq vaqtni saqlash kerak bo'lsa, ayniqsa uzoq vaqt davomida, tashqi RTC yechim taklif qilishi mumkin. Ushbu modullarda, shuningdek, quvvat yo'qolganda batareya zaxirasi mavjud. RTC juda aniq emas, chunki u o'rnatilgandan beri o'tgan vaqtni hisoblab chiqadi va garchi u ko'pgina ilovalarda bajarilishi mumkin bo'lsa -da, bu muhim vaqtni saqlash uchun etarli bo'lmasligi mumkin. Agar kerak bo'lsa, RTC vaqti -vaqti bilan yangilanishi mumkin bo'lgan SNTP vaqt serveridan aniq vaqtni olish mumkin.
DS1307 Tiny RTC I2C moduli (yuqoridagi) bu narsalarga misol bo'lib, ularni Ebay va boshqa etkazib beruvchilardan 2 funtdan arzon narxda sotib olish mumkin. DS1302 va DS3231 kabi boshqalar ham xuddi shunday ishlaydi va narxi 99p dan yuqori.
DS1307 moduli I2C interfeysidan foydalanadi va ESP-01 uchun quyidagicha ulanishi kerak.
Vcc - 3.3v, Gnd - Gnd, SDA - D3, SCL - D4
SDA va SCL kattaroq ESP8266 -dagi har qanday kirish -chiqish pinlariga ulanishi mumkin (kodni mos ravishda o'zgartiring). Ushbu modulda faqat chap qo'l pinlari ulanishi kerak.
1 -qadam: Google vaqti
Google -dan vaqt olish va shunga o'xshash narsalarga misollar ko'p. GoogleTime.lua dasturini ishga tushirganingizda shunday natijaga erishasiz:
dofile ("GoogleTime.lua")> Vaqt: Juma, 2017 yil 15 -dekabr 11:19:45 GMT
Bu usulning muammosi shundaki, siz vaqtni mag'lubiyat formatida olasiz va satrni individual bitlarga soat, daqiqa, soniya va boshqalarga bo'lishingiz kerak bo'ladi. RTC vaqtni maxsus formatda, ya'ni UNIX vaqt tamg'asini qabul qiladi. Oddiy qilib aytganda, bu 1970 yil 1 yanvar payshanbadan hozirgi kungacha va vaqtgacha o'tgan soniyalar soni. UNIX Epoch (1970/01/01 00:00:00) ko'pchilik kompyuter operatsion tizimlarida ishlatiladi va o'tgan vaqt 32 bitli raqam sifatida saqlanadi. Bu shuni anglatadiki, bu tizim 2038 yil 19 -yanvargacha ishlaydi va bu raqamni saqlash uchun juda katta bo'ladi. Bitta yechim - bu raqamni 64 bit sifatida saqlash, lekin hozircha 32 bitli usul etarli bo'ladi.
Ichki RTCda 2015 yil 9 -iyul, 18:29:49 vaqtini belgilash uchun siz ushbu kod qatoridan foydalangan bo'lar edingiz:
rtctime.set (1436430589, 0)
2 parametr - soniya va mikro soniya.
Qo'shimcha ma'lumotni NodeMCU hujjatlarini o'qib topishingiz mumkin.
2 -qadam: SNTP vaqt serverlari
Oddiy tarmoq vaqt protokoli (SNTP) Internetdagi ko'plab manbalardan taqdim etilgan va dunyoning ko'plab mamlakatlarida bu xizmat mavjud.
SNTPTime2.lua dasturi ichki RTC vaqtini belgilaydi. ESP8266 -ni yondirganda, sizda rtctime & sntp modullari bo'lishi kerak. Dastur serverdan vaqtni soniya va mikro soniyalarda oladi va rtctime.set (sec, usec) bilan ichki RTC ni o'rnatadi.
Keyin dastur sana va vaqtni turli formatlarda ko'rsatadi.
Dunyo bo'ylab ko'plab SNTP serverlari mavjud va ularning ba'zilari quyidagicha:
- 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"},
Yuqoridagi barcha kod satrlarini SNTPTime2.lua dasturiga almashtirish mumkin.
Quyidagi manzillarda yana SNTP serverlari bor, ularni yana dasturda ishlatish mumkin.
93.170.62.252, 130.88.202.49, 79.135.97.79, ntp.exnet.com
Google shuningdek, quyidagi manzillarda vaqt serverlarini taqdim etadi:
216.239.35.0, 216.239.35.4, 216.239.35.8, 216.239.35.12
Vaqtni o'zingiz yashayotgan mamlakatdan olishni unutmang yoki uni dunyoning turli vaqt mintaqalari uchun o'zgartirishingiz kerak bo'ladi. Shuningdek, ba'zi mamlakatlarda yozgi vaqt bor, shuning uchun siz ham bu bilan shug'ullanishingizga to'g'ri keladi.
3 -qadam: RTC modulidan vaqt olish
GetRTCTime.lua dasturi ichki RTC dan vaqtni o'qiydi.
Birinchi qism vaqtni o'qiydi va uni soniyalar va mikrosaniyalarda ko'rsatadi.
Ikkinchi qism esa uni inson o'qiy oladigan formatga aylantiradi.
tm = rtctime.epoch2cal (rtctime.get ()) ni chaqirganda u qaytadi:
- yil - 1970 ~ 2038
- dushanba - joriy yilning 1 ~ 12 oyi
- kun - joriy oyning 1 ~ 31 -kuni
- soat
- min
- sek
- kun - joriy yilning 1 ~ 366 -kuni
- wday - joriy haftaning 1-7 -kuni (yakshanba 1)
Har bir elementga tm ["kun"], tm ["yil"] sifatida kirish mumkin …
Qo'shimcha ma'lumotni NodeMCU hujjatlarini o'qib topishingiz mumkin.
DisplaySNTPtime.lua - bu sana va vaqtni 128 x 64 OLED -displeyda ko'rsatishning yanada aniq usuli, chunki u osonlik bilan ulanadi va uni ushbu dasturlar bilan ishlatish mumkin.
4 -qadam: RTC foydalanuvchi xotirasi
Vaqtni saqlashdan biroz chalg'itadigan narsa, ESP8266 -dagi ichki RTC 128 x 32 bitli xotira manzillariga ega, ularga dasturchi kirishi mumkin. Ular ayniqsa foydalidir, chunki ular ESP8266 chuqur uyqu tsiklidan omon qolishadi. Ularning ishlatilishini nazorat qilish va tasodifan yozilmasligini ta'minlash dasturchiga bog'liq.
Men RTCmem.lua -ni qo'shdim, bu uning ishlatilishini ko'rsatadigan oddiy dastur. Sizda rtcmem moduli bo'lishi kerak.
5 -qadam: Tashqi RTC modullari
Tashqi RTC modullari ESP8266-ga I2C interfeysi orqali ulanadi, u faqat ikkita kirish-chiqish pinidan foydalanadi, shuning uchun ESP-01 va boshqa ESP8266 qurilmalari bilan ishlaydi.
RTC modulining manzili 0x68 bo'lib, unga oddiy I2C buyruqlari yordamida kirish mumkin. Shuni yodda tutish kerakki, RTC registrlaridagi ma'lumotlar BCD formatida saqlanadi (16 -tayanch), shuning uchun sizning dasturingiz bu bilan shug'ullanishi kerak. Vaqt va sana RTC doirasida 7 ta registrda saqlanadi. Ichki RTC -da, BCD konvertatsiyasi rtctime moduli orqali amalga oshiriladi.
SetExtRTC.lua ma'lumotlarni BCD ga o'zgartiradi va vaqtni belgilaydi.
ReadExtRTC.lua vaqt ma'lumotlarini o'qiydi va chop etadi. QAYD: ma'lumotlar o'n oltilikda chop etiladi.
Men ekranni formatlash uchun ko'p vaqt sarflamadim, chunki sizda sana va vaqt bilan nima qilishni xohlayotganingiz haqida o'z fikringiz bo'lishi mumkin. Bu asosiy dvigatel, agar xohlasangiz, uni yanada rivojlantirishingiz mumkin.
6 -qadam: ma'lumotlarni ro'yxatga olish
Agar siz RTC modullariga diqqat bilan qarasangiz, ularning ichida AT24C32 EEPROM IC yoki shunga o'xshash o'rnatilganini yoki yuqoridagi kabi 24C256 taxtasidan foydalanishingiz mumkinligini sezasiz. Ushbu EEPROM IC -larning ko'pchiligi yuqoridagi kabi o'xshash chiqishlarga ega. Ular har xil miqdordagi saqlash joylari bilan birga keladi, lekin ularning hammasiga bir xil tarzda kirish mumkin. AT24C32 allaqachon taxtaga lehimlanganligi sababli, uni to'g'ridan -to'g'ri tashqi RTC I2C dan ishlatish mumkin.
Agar sizda faqat 24C256 IC yoki shunga o'xshash bo'lsa, uni non panelida o'rnatishingiz mumkin, A1, A2 va A3 ni Gnd, Vcc ni 3.3V ga va SDA VA SCL ni I2C ga ulashingiz mumkin, WP suzuvchi bo'lib qolishi mumkin. Ba'zi EEPROM IC'lari faqat 5Vda ishlaydi, shuning uchun avval tegishli ma'lumot varag'ini tekshiring.
ByteWR.lua EEPROMning 0x00 xotira joyiga 1 bayt ma'lumot yozadi va uni qayta o'qiydi.
Desiderata.lua mashhur matndan EEPROMga bir necha satr yozadi.
eeRead.lua EEPROM ma'lumotlarini o'qiydi va uni chop etadi.
QAYD: Ushbu dasturlar boshqa EEPROM platalari bilan ham ishlashi kerak.
7 -qadam: Xulosa
Ma'lumotlarni yozish uchun RTC va EEPROM qanday ishlashini ko'rsatishga harakat qildim. Bu siz yanada rivojlanishingiz uchun boshlang'ich. Siz I2C avtobusiga yorug'lik sensori, barometrik bosim sensori, harorat va namlik sensori kabi turli xil qurilmalarni ulashingiz va ma'lumotlarni EEPROMga yozib olishingiz mumkin.
Tavsiya:
Arduino bilan DS1307 va DS3231 real vaqtda soat modullaridan foydalanish: 3 qadam
Arduino bilan DS1307 va DS3231 real vaqtda soat modullaridan foydalanish: Biz har xil manbalardan DS1307 va DS3231 real vaqtda soat modullarini Arduino-dan qanday ishlatish bo'yicha so'rovlarni olamiz-shuning uchun bu ulardan foydalanish bo'yicha ikki qismli darslikning birinchisi. Bu Arduino qo'llanmasi uchun bizda ikkita real vaqtda soat moduli bor
DS1307 Arduino bilan real vaqtda soat RTC: 4 qadam
DS1307 Arduino bilan Real Time CTC RTC: Bu Qo'llanma, Biz Real Time Clock haqida bilib olamiz (RTC) va qanday Arduino & Haqiqiy vaqt soati IC DS1307 vaqt qurilmasi sifatida yig'ilgan. Haqiqiy vaqt soati (RTC) vaqtni kuzatish va taqvimni saqlash uchun ishlatiladi. RTCdan foydalanish uchun
Arduino IDE yordamida M5stick C yordamida soat yasash - M5stack M5stick-C bilan RTC real vaqt soati: 4 qadam
Arduino IDE yordamida M5stick C yordamida soat yasash | M5stack M5stick-C bilan RTC Real Time Clock: Salom bolalar, bu ko'rsatmalarni o'qib, biz Arduino IDE yordamida m5stack-ning m5stick-C rivojlanish taxtasi bilan soat yasashni o'rganamiz.So m5stick sana, vaqt va ampni ko'rsatadi; displeyda oyning haftasi
Atrofdagi real vaqtda soat: 4 qadam
Haqiqiy vaqtli atrof -muhit soati: AimI bu soatni yaratdi, chunki menda LED tasmasi bor va men uni ishlatmoqchiman. Keyin ko'rdimki, mening xonamda devorlariga mos keladigan yaxshi soat yo'q. Shunday qilib, men foydalanuvchilarning kayfiyatiga qarab ranglarini o'zgartiradigan soat yasashga qaror qildim
Arduino va TFT displeyi yordamida real vaqtda soatni qanday qilish mumkin - 3,5 dyuymli TFT displeyli Arduino Mega RTC: 4 qadam
Arduino va TFT displeyidan foydalanib real vaqtda soatni qanday qilish mumkin | 3,5 dyuymli TFT displeyli Arduino Mega RTC: Mening Youtube kanalimga tashrif buyuring. Kirish:- Bu postda men 3,5 dyuymli TFT sensorli LCD, Arduino Mega yordamida "Real vaqtli soat" ni tayyorlayman. 2560 va DS3231 RTC moduli… .Boshlashdan oldin… YouTube kanalimdagi videoni ko'ring .. Eslatma:- Agar siz Arduin-dan foydalanayotgan bo'lsangiz