Kazalo:
- 1. korak: Google Time
- Korak: Časovni strežniki SNTP
- 3. korak: Pridobite čas od modula RTC
- 4. korak: Uporabniški pomnilnik RTC
- 5. korak: Zunanji moduli RTC
- 6. korak: beleženje podatkov
- 7. korak: Zaključek
Video: NODEMCU Lua ESP8266 z uro v realnem času (RTC) in EEPROM: 7 korakov
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:05
Če želite voditi dnevnik podatkov, je bistven pravilen čas. Obstajajo različni načini pridobivanja časa iz virov na internetu.
Lahko se vprašate, zakaj ne uporabite ESP8266, da bi si vzeli čas zase? No, lahko, ima svoj notranji RTC (ura realnega časa), vendar ima ESP8266 3 različne delovne frekvence - 52 MHz pri zagonu, 80 MHz med rednim delovanjem in 160 MHz, če je ojačan. Če potrebujete natančnejše merjenje časa, zlasti v daljših obdobjih, potem lahko rešitev ponudi zunanji RTC. Ti moduli imajo tudi rezervno baterijo v primeru izpada energije. RTC ni zelo natančen, saj šteje čas, ki je pretekel od njegove nastavitve, in čeprav je za večino aplikacij to morda dovolj, morda ni dovolj dober za kritično shranjevanje časa. Natančen čas je mogoče dobiti od časovnega strežnika SNTP, s katerega je mogoče po potrebi redno posodabljati RTC.
Modul DS1307 Tiny RTC I2C (zgoraj) je primer teh izdelkov in ga je mogoče kupiti na Ebayu in drugih dobaviteljih za manj kot 2 £. Obstajajo tudi drugi, kot sta DS1302 in DS3231, ki delujeta na podoben način in stanejo od 99p navzgor.
Modul DS1307 uporablja vmesnik I2C in za ESP-01 mora biti priključen kot:
Vcc - 3.3v, Gnd - Gnd, SDA - D3, SCL - D4
SDA in SCL lahko priključite na kateri koli I/O zatič na večjih ESP8266 (ustrezno spremenite kodo). Na ta modul je treba priključiti le leve stranske zatiče.
1. korak: Google Time
Obstaja veliko primerov, kako si vzeti čas od Googla in izgledati nekako tako. Ko zaženete program GoogleTime.lua, dobite rezultat, kot je ta:
dofile ("GoogleTime.lua")> Čas: pet, 15. december 2017 11:19:45 GMT
Težava pri tej metodi je, da dobite čas v obliki niza in morate niz razdeliti na posamezne bite za ure, minute, sekunde itd. RTC sprejme čas v posebni obliki, to je časovni žig UNIX. Laično rečeno je to število sekund, ki so pretekle od četrtka, 1. januarja 1970, do danes in ure. UNIX Epoch (1970/01/01 00:00:00) uporablja večina računalniških operacijskih sistemov, pretečeni čas pa je shranjen kot podpisana 32 -bitna številka. To pomeni, da bo ta sistem deloval do 19. januarja 2038, ko bo število postalo preveliko za shranjevanje na ta način. Ena od rešitev je shranjevanje števila kot 64 bitov, zaenkrat pa zadošča 32 -bitna metoda.
Za nastavitev časa na 9. julij 2015, 18:29:49 v internem RTC, uporabite to vrstico kode:
rtctime.set (1436430589, 0)
Dva parametra sta sekundi in mikro sekunde.
Več informacij najdete v dokumentaciji NodeMCU.
Korak: Časovni strežniki SNTP
Enostavni protokol omrežnega časa (SNTP) je na voljo iz številnih virov na internetu in številne države po vsem svetu imajo to storitev.
Program SNTPTime2.lua nastavi čas na notranjem RTC -ju. Ko utripate svoj ESP8266, morate imeti v svoji zgradbi module rtctime & sntp. Program dobi čas od strežnika v sekundah in mikrosekundah ter nastavi notranji RTC z rtctime.set (sec, usec).
Program nato prikaže datum in čas v različnih oblikah.
Po vsem svetu obstaja veliko strežnikov SNTP, nekateri pa so naslednji:
- 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"},
Vse zgornje vrstice kode je mogoče nadomestiti s programom SNTPTime2.lua.
Na spodnjih naslovih je več strežnikov SNTP, ki jih lahko znova uporabite v programu.
93.170.62.252, 130.88.202.49, 79.135.97.79, ntp.exnet.com
Google ponuja tudi časovne strežnike na teh naslovih:
216.239.35.0, 216.239.35.4, 216.239.35.8, 216.239.35.12
Ne pozabite vzeti časa iz države, v kateri ste, ali pa ga boste morali spremeniti za različne svetovne časovne pasove. Tudi nekatere države imajo poletni čas, zato se boste morda morali spoprijeti tudi s tem.
3. korak: Pridobite čas od modula RTC
Program GetRTCTime.lua bere čas iz notranjega RTC.
Prvi del bere čas in ga prikazuje v sekundah in mikrosekundah.
Drugi del ga pretvori v bolj berljivo obliko.
pri klicu tm = rtctime.epoch2cal (rtctime.get ()) vrne:
- leto - 1970 ~ 2038
- pon - mesec 1 ~ 12 v tekočem letu
- dan - dan 1 ~ 31 v tekočem mesecu
- uro
- min
- sek
- dan - dan 1 ~ 366 v tekočem letu
- wday - dan 1 ~ 7 v tekočem tednu (nedelja je 1)
Do vsakega elementa je mogoče dostopati kot tm ["dan"], tm ["leto"] …
Več informacij najdete v dokumentaciji NodeMCU.
DisplaySNTPtime.lua je bolj izpopolnjen način prikaza datuma in časa na LCD -zaslonu 128 x 64 OLED, saj ga je enostavno povezati in ga je mogoče uporabljati s temi programi.
4. korak: Uporabniški pomnilnik RTC
Nekoliko odmik od merjenja časa je, da ima notranji RTC na ESP8266 128 x 32 -bitne pomnilniške naslove, do katerih lahko dostopa programer. Še posebej so uporabni, saj lahko preživijo cikel globokega spanja ESP8266. Programer mora nadzorovati njihovo uporabo in zagotoviti, da niso nenamerno prepisani.
Vključil sem preprost program RTCmem.lua, ki dokazuje njegovo uporabo. V svoji zgradbi morate imeti modul rtcmem.
5. korak: Zunanji moduli RTC
Zunanji moduli RTC se povežejo z ESP8266 prek vmesnika I2C, ki uporablja le dva V/I zatiča in tako deluje tako z ESP-01 kot tudi z večino drugih naprav ESP8266.
Naslov modula RTC je 0x68 in do njega dostopate z običajnimi ukazi I2C. Ne pozabite pa, da so podatki v registrih RTC shranjeni v formatu BCD (osnova 16), zato se morajo vaši programi spoprijeti s tem. Ura in datum sta shranjena v 7 registrih znotraj RTC. Na notranjem RTC -ju za pretvorbe BCD skrbi modul rtctime.
SetExtRTC.lua pretvori podatke v BCD in nastavi čas.
ReadExtRTC.lua bere časovne podatke in jih natisne. OPOMBA: podatki so natisnjeni v šestnajstiški številki.
Nisem porabil veliko časa za oblikovanje zaslona, saj imate morda svoje ideje o tem, kaj želite narediti z datumom in uro. To je osnovni motor v svoji najpreprostejši obliki, tako da ga lahko po želji še razvijate.
6. korak: beleženje podatkov
Če natančno pogledate module RTC, boste opazili, da imajo vgrajen integriran EEPROM IC AT24C32 ali podoben, ali pa uporabite ploščo 24C256, kot je opisano zgoraj. Večina teh mikrokontrolerjev EEPROM ima podobne izhode kot zgoraj. Prihajajo z različnimi količinami prostora za shranjevanje, do vseh pa se dostopa na enak način. Ker je AT24C32 že spajkan na ploščo, ga je mogoče uporabiti neposredno iz I2C zunanjega RTC.
Če imate samo 24C256 IC ali podobno, ga lahko nastavite na plošči za kruh, priključite A1, A2 in A3 na Gnd, Vcc na 3,3 V in SDA IN SCL na I2C, WP lahko pustite plavajoče. Nekateri IC -ji EEPROM delujejo samo pri 5V, zato najprej preverite ustrezen podatkovni list.
ByteWR.lua zapiše 1 bajt podatkov v pomnilniško mesto 0x00 EEPROM -a in jih prebere nazaj.
Desiderata.lua napiše nekaj vrstic iz znanega besedila v EEPROM.
eeRead.lua prebere podatke iz EEPROM -a in jih natisne.
OPOMBA: Ti programi bi morali delovati tudi z drugimi ploščami EEPROM.
7. korak: Zaključek
Poskušal sem pokazati, kako delujeta RTC in EEPROM za beleženje podatkov. To je samo začetek za nadaljnji razvoj. Na vodilo I2C lahko povežete različne naprave, kot so svetlobni senzorji, senzorji barometričnega tlaka, senzorji temperature in vlažnosti ter beležite podatke na EEPROM.
Priporočena:
Nastavitev DS3231 RTC (ura v realnem času) natančno, hitro in avtomatizirano z uporabo Java (+-1 s): 3 koraki
Nastavitev DS3231 RTC (ure v realnem času) natančno, hitro in avtomatizirano z uporabo Jave (+-1 s): Ta navodila vam bodo pokazala, kako nastaviti uro na uri DS3231 v realnem času z uporabo Arduina in majhne aplikacije Java, ki uporablja serijska povezava Arduina. Osnovna logika tega programa: 1. Arduino pošlje serijsko zahtevo
DS1307 Ura v realnem času RTC z Arduinom: 4 koraki
DS1307 Ura v realnem času RTC z Arduinom: V tem vodiču bomo spoznali uro v realnem času (RTC) in kako Arduino & Ura za realni čas IC DS1307 sta skupaj sestavljena kot časovna naprava. Ura realnega časa (RTC) se uporablja za spremljanje časa in vzdrževanje koledarja
Ustvarjanje ure z M5stick C z uporabo Arduino IDE - RTC ura v realnem času z M5stack M5stick-C: 4 koraki
Ustvarjanje ure z M5stick C z uporabo Arduino IDE | RTC ura v realnem času z M5stack M5stick-C: Pozdravljeni fantje, v tem navodilu se bomo naučili, kako narediti uro z m5stick-C razvojno ploščo m5stack z uporabo Arduino IDE. Tako bo m5stick prikazal datum, čas in amp; tedna v mesecu na zaslonu
Kako narediti uro v realnem času z zaslonom Arduino in TFT - Arduino Mega RTC s 3,5 -palčnim zaslonom TFT: 4 koraki
Kako narediti uro v realnem času z zaslonom Arduino in TFT | Arduino Mega RTC s 3,5-palčnim zaslonom TFT: Obiščite moj kanal Youtube. Uvod:- V tem prispevku bom naredil »uro v realnem času« s 3,5-palčnim TFT LCD na dotik, Arduino Mega 2560 in DS3231 modul RTC… .Preden začnete… preverite videoposnetek z mojega kanala YouTube .. Opomba:- Če uporabljate Arduin
Pretvorite običajno navadno uro v samosvetlečo uro: 8 korakov (s slikami)
Pretvorite navadno domačo uro v samosvetlečo uro: NAJPREJ SVOJO SRČNO HVALO INSTRUKTIVNIM TIMAMA, DA BODO MOJI ZDRAVSTVENI DANI ODPRAVLJENI, KOT BODE ODGOVORNEJŠI ….. V teh navodilih želim z vami deliti, kako spremeniti svojo domačo običajno uro v samosvetlečo uro. > > Za to početje