Sisukord:
- Samm: Google'i aeg
- 2. samm: SNTP ajaserverid
- 3. samm: RTC -moodulist aja hankimine
- Samm: RTC kasutaja mälu
- 5. samm: välised RTC -moodulid
- 6. samm: andmete logimine
- Samm 7: Järeldus
Video: NODEMCU Lua ESP8266 reaalajas kellaga (RTC) ja EEPROM: 7 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:48
Andmepäeviku pidamiseks on oluline õige aja leidmine. Internetis olevatest allikatest saab aega mitmel viisil.
Võite küsida, miks mitte kasutada ESP8266, et teie jaoks aega hoida? Saate seda teha, sellel on oma sisemine RTC (reaalajas kell), kuid ESP8266 -l on 3 erinevat töötavat taktsagedust - käivitamisel 52 MHz, tavalise töö ajal 80 MHz ja võimenduse korral 160 MHz. Kui vajate täpsemat ajaarvestust, eriti pikema aja jooksul, võib lahendus olla väline RTC. Nendel moodulitel on ka voolukatkestuse korral aku varukoopia. RTC ei ole kohutavalt täpne, kuna see loeb seadistamisest möödunud aega ja kuigi see võib toimuda enamiku rakenduste puhul, ei pruugi see kriitilise aja hoidmiseks piisavalt hea olla. SNTP ajaserverist on võimalik saada täpne aeg, kust RTC -d saab vajadusel korrapäraste ajavahemike järel värskendada.
DS1307 Tiny RTC I2C moodul (ülal) on nende kaupade näide ja seda saab osta Ebayst ja teistelt tarnijatelt vähem kui 2 naela eest. On ka teisi, näiteks DS1302 ja DS3231, mis töötavad sarnaselt ja maksavad alates 99p.
DS1307 moodul kasutab I2C liidest ja ESP-01 jaoks tuleks see ühendada järgmiselt:
Vcc - 3.3v, Gnd - Gnd, SDA - D3, SCL - D4
SDA ja SCL saab ühendada suuremate ESP8266 -de mis tahes I/O -pistikutega (muutke koodi vastavalt). Selle mooduli külge tuleb ühendada ainult vasakpoolsed tihvtid.
Samm: Google'i aeg
On palju näiteid, kuidas Google'ilt aega saada ja midagi sellist välja näha. Kui käivitate programmi GoogleTime.lua, saate sellise tulemuse:
dofile ("GoogleTime.lua")> Aeg: reede, 15. detsember 2017 11:19:45 GMT
Selle meetodi probleem on see, et saate aja stringivormingus ja peate stringi jagama üksikuteks bittideks tundideks, minutiteks, sekunditeks jne. RTC aktsepteerib aega erivormingus, st UNIX -i ajatempliga. Võhiku mõistes on see sekundite arv, mis on möödunud neljapäevast 1. jaanuarist 1970 kuni tänapäevani. UNIX Epoch (1970/01/01 00:00:00) on kasutusel enamikus arvuti opsüsteemides ja möödunud aeg salvestatakse allkirjastatud 32 -bitise numbrina. See tähendab, et see süsteem töötab kuni 19. jaanuarini 2038, kui number muutub selliseks salvestamiseks liiga suureks. Üks lahendus on salvestada number 64 -bitiseks, kuid praegu piisab 32 -bitisest meetodist.
Sisemises RTC -s aja määramiseks 2015. aasta 9. juulile 18:29:49 peaksite kasutama järgmist koodirida:
rtctime.set (1436430589, 0)
2 parameetrit on sekundid ja mikrosekundid.
Lisateavet leiate NodeMCU dokumentatsioonist.
2. samm: SNTP ajaserverid
Lihtsat võrguajaprotokolli (SNTP) pakuvad paljud Interneti -allikad ja paljudes riikides üle maailma on see teenus saadaval.
Programm SNTPTime2.lua määrab sisemise RTC aja. ESP8266 välgutamisel peab teie ehituses olema rtctime & sntp moodul. Programm saab serverilt aega sekundites ja mikrosekundites ning määrab sisemise RTC väärtuseks rtctime.set (sec, usec).
Seejärel kuvab programm kuupäeva ja kellaaja erinevates vormingutes.
Kogu maailmas on palju SNTP -servereid ja mõned neist on järgmised:
- 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"},
Kõik ülaltoodud koodiridad saab asendada programmiga SNTPTime2.lua.
Allolevatel aadressidel on rohkem SNTP -servereid, mida saab programmis uuesti kasutada.
93.170.62.252, 130.88.202.49, 79.135.97.79, ntp.exnet.com
Google pakub ka ajaservereid järgmistel aadressidel:
216.239.35.0, 216.239.35.4, 216.239.35.8, 216.239.35.12
Peate meeles pidama, et saate aja oma riigist, kus viibite, või peate seda muutma erinevate maailma ajavööndite jaoks. Samuti on mõnes riigis suveaeg, nii et peate võib -olla ka sellega tegelema.
3. samm: RTC -moodulist aja hankimine
Programm GetRTCTime.lua loeb aega sisemiselt RTC -lt.
Esimene osa loeb aega ja kuvab selle sekundites ja mikrosekundites.
Teine osa muudab selle inimloetavamaks.
helistamisel tm = rtctime.epoch2cal (rtctime.get ()) tagastab:
- aasta - 1970 ~ 2038
- esmakuu 1–12 jooksval aastal
- päev - jooksva kuu 1 ~ 31 päev
- tund
- min
- sek
- päev - päev 1 ~ 366 jooksval aastal
- wday - jooksva nädala 1–7 päev (pühapäev on 1)
Igale üksusele pääseb juurde kui tm ["päev"], tm ["aasta"]…
Lisateavet leiate NodeMCU dokumentatsioonist.
DisplaySNTPtime.lua on keerukam viis kuupäeva ja kellaaja kuvamiseks LCD 128 x 64 OLED -ekraanil, kuna see on hõlpsasti ühendatav ja seda saab nende programmidega kasutada.
Samm: RTC kasutaja mälu
Väike kõrvalekalle aja arvestamisest on ESP8266 sisemisel RTC -l on 128 x 32 -bitised mäluaadressid, millele programmeerija pääseb juurde. Need on eriti kasulikud, kuna suudavad ESP8266 sügava une tsükli üle elada. Programmeerija ülesanne on kontrollida nende kasutamist ja tagada, et neid kogemata üle ei kirjutataks.
Olen lisanud RTCmem.lua, lihtsa programmi, mis näitab selle kasutamist. Teil peab olema rtcmem moodul.
5. samm: välised RTC -moodulid
Välised RTC-moodulid ühenduvad ESP8266-ga I2C-liidese kaudu, mis kasutab ainult kahte I/O-kontakti ja töötab nii ESP-01 kui ka enamiku teiste ESP8266-seadmetega.
RTC mooduli aadress on 0x68 ja sellele pääseb juurde tavaliste I2C käskude abil. Siiski tuleb midagi meeles pidada: RTC -registrite andmed salvestatakse BCD -vormingus (alus 16), nii et teie programmid peavad sellega tegelema. Kellaaeg ja kuupäev salvestatakse RTC seitsmes registris. Sisemises RTC -s hoolitseb BCD teisenduste eest rtctime moodul.
SetExtRTC.lua teisendab andmed BCD -ks ja määrab aja.
ReadExtRTC.lua loeb ajaandmeid ja prindib need välja. MÄRKUS. Andmed prinditakse kuueteistkümnendsüsteemis.
Ma ei ole kulutanud palju aega ekraani vormindamisele, kuna teil võib olla oma ideid selle kohta, mida soovite kuupäeva ja kellaajaga teha. See on põhimootor kõige lihtsamal kujul, nii et saate seda soovi korral edasi arendada.
6. samm: andmete logimine
Kui vaatate RTC mooduleid tähelepanelikult, märkate, et neil on sisseehitatud AT24C32 EEPROM IC või muu sarnane, või võite kasutada 24C256 tahvlit, nagu eespool kirjeldatud. Enamikul neist EEPROM -i IC -dest on sarnased nööpnõelad nagu eespool. Need on varustatud erineva kogusega salvestusruumiga, kuid neile kõigile on juurdepääs ühtemoodi. Kuna AT24C32 on plaadile juba joodetud, saab seda kasutada otse välise RTC I2C -st.
Kui teil on ainult 24C256 IC või sarnane, saate selle seadistada leivalauale, ühendada A1, A2 ja A3 Gnd, Vcc to 3.3V ja SDA AND SCL I2C -ga, WP võib jätta vedelema. Mõned EEPROM -i IC -d töötavad ainult 5 V pingel, seega kontrollige kõigepealt vastavat andmelehte.
ByteWR.lua kirjutab 1 baidi andmeid EEPROM -i mälupaika 0x00 ja loeb need tagasi.
Desiderata.lua kirjutab paar rida kuulsast tekstist EEPROM -i.
eeRead.lua loeb EEPROMi andmeid ja prindib need välja.
MÄRKUS. Need programmid peaksid töötama ka teiste EEPROM -tahvlitega.
Samm 7: Järeldus
Olen proovinud näidata, kuidas RTC ja EEPROM töötavad andmete logimisel. See on alles alustuseks, et saaksite edasi areneda. Saate ühendada I2C siiniga mitmesuguseid seadmeid, nagu valgusandurid, õhurõhu andurid, temperatuuri ja niiskuse andurid ning salvestada andmed EEPROM -i.
Soovitan:
Lauaarvuti COVID19 jälgija kellaga! Raspberry Pi Powered Tracker: 6 sammu
Lauaarvuti COVID19 jälgija kellaga! Raspberry Pi Powered Tracker: Me teame, et võime igal ajal surra, isegi mina võin selle postituse kirjutamise ajal surra, lõppude lõpuks olen mina, sina, me kõik surelikud. Kogu maailm värises COVID19 pandeemia tõttu. Me teame, kuidas seda vältida, aga hei! kas me teame, kuidas palvetada ja miks palvetada
Reaalajas Covid19 jälgija, kasutades ESP8266 ja OLED - Reaalajas Covid19 armatuurlaud: 4 sammu
Reaalajas Covid19 jälgija, kasutades ESP8266 ja OLED | Reaalajas Covid19 armatuurlaud: külastage Techtronic Harshi veebisaiti: http: //techtronicharsh.com Kõikjal, kus esineb tohutu uudse koroonaviiruse (COVID19) puhang. Vajalik oli jälgida praegust COVID-19 stsenaariumi maailmas. Niisiis oli see kodus olles
DS3231 RTC (reaalajas kella) täpne, kiire ja automatiseeritud seadistamine Java abil (+-1 s): 3 sammu
DS3231 RTC (reaalajas kella) täpne, kiire ja automatiseeritud seadistamine Java abil (+-1 s): see juhend annab teile teada, kuidas DS3231 reaalajas kellale aega määrata, kasutades Arduino ja väikest Java-rakendust, mis kasutab Arduino jadaühendus. Selle programmi põhiloogika: 1. Arduino saadab jadataotluse
DS1307 reaalajas kella RTC Arduinoga: 4 sammu
DS1307 reaalajas kella RTC Arduinoga: Selles õpetuses õpime reaalajas kella (RTC) ja Arduino & Reaalajas kella IC DS1307 on kokku pandud ajastusseadmena. Reaalajas kella (RTC) kasutatakse aja jälgimiseks ja kalendri pidamiseks. RTC kasutamiseks kasutage
Arduino -põhine kell, kasutades DS1307 reaalajas kella (RTC) moodulit ja 0,96: 5 sammu
Arduino -põhine kell, mis kasutab DS1307 reaalajas kella (RTC) moodulit ja 0.96: Tere, poisid, selles õpetuses näeme, kuidas DS1307 reaalajas kella moodulit kasutades töökella teha & OLED kuvab. Nii loeme kella mooduli DS1307 ajast. Ja printige see OLED -ekraanile