Përmbajtje:
- Hapi 1: Koha e Google
- Hapi 2: Serverët e kohës SNTP
- Hapi 3: Marrja e kohës nga moduli RTC
- Hapi 4: RTC Memory User
- Hapi 5: Modulet e jashtme RTC
- Hapi 6: Regjistrimi i të dhënave
- Hapi 7: Përfundimi
Video: NODEMCU Lua ESP8266 Me orë në kohë reale (RTC) & EEPROM: 7 hapa
2024 Autor: John Day | [email protected]. E modifikuara e fundit: 2024-01-30 12:19
Marrja e kohës së duhur është thelbësore nëse doni të mbani një regjistër të të dhënave. Ka mënyra të ndryshme për të marrë kohë nga burimet në internet.
Ju mund të pyesni pse të mos përdorni ESP8266 për të mbajtur kohë për ju? Epo, mundeni, ai ka RTC -në e tij të brendshme (Ora në kohë reale), por ESP8266 ka 3 frekuenca të ndryshme të orës së funksionimit - 52MHz kur fillon, 80MHz gjatë funksionimit të rregullt dhe 160MHz nëse rritet. Nëse keni nevojë për ruajtje më të saktë të kohës, veçanërisht për periudha më të gjata, atëherë një RTC e jashtme mund të japë një zgjidhje. Këto module gjithashtu kanë një rezervë të baterisë në rast të humbjes së energjisë. Një RTC nuk është jashtëzakonisht e saktë pasi numëron kohën e kaluar që kur është vendosur dhe megjithëse mund të jetë për shumicën e aplikacioneve, mund të mos jetë mjaft e mirë për mbajtjen e kohës kritike. Isshtë e mundur të merrni një kohë të saktë nga një server kohor SNTP nga i cili RTC mund të përditësohet në intervale të rregullta nëse kërkohet.
Moduli DS1307 Tiny RTC I2C (lart) është një shembull i këtyre artikujve dhe mund të blihet në Ebay dhe furnizues të tjerë për më pak se 2. Ka edhe të tjerë si DS1302 dhe DS3231 të cilët punojnë në mënyrë të ngjashme dhe kushtojnë nga 99p e lart.
Moduli DS1307 përdor një ndërfaqe I2C dhe për një ESP-01 duhet të lidhet si:
Vcc - 3.3v, Gnd - Gnd, SDA - D3, SCL - D4
SDA dhe SCL mund të lidhen me ndonjë nga kunjat I/O në ESP8266 më të mëdhenj (ndryshoni kodin në përputhje me rrethanat). Vetëm kunjat e anës së majtë duhet të lidhen në këtë modul.
Hapi 1: Koha e Google
Ka shumë shembuj të marrjes së kohës nga Google dhe të duket diçka e tillë. Kur drejtoni programin GoogleTime.lua ju merrni një rezultat si ky:
dofile ("GoogleTime.lua")> Koha: e Premte, 15 Dhjetor 2017 11:19:45 GMT
Problemi me këtë metodë është se ju merrni kohën në formatin e vargut dhe ju duhet ta ndani vargun në copat e tij individuale për orë, minuta, sekonda etj. RTC pranon kohën në një format të veçantë, domethënë vulën kohore UNIX. Në terma laikë, ky është numri i sekondave që kanë kaluar që nga e enjtja 1 janar 1970 e deri në ditët dhe orët e sotme. Epoka UNIX (1970/01/01 00:00:00) përdoret nga shumica e sistemeve operative të kompjuterit dhe koha e kaluar ruhet si një numër i nënshkruar 32 bit. Kjo do të thotë se ky sistem do të funksionojë deri më 19 janar 2038 kur numri do të bëhet shumë i madh për tu ruajtur në këtë mënyrë. Një zgjidhje është ruajtja e numrit si 64 bit, por tani për tani metoda 32 bit do të jetë e mjaftueshme.
Për të caktuar kohën në 2015 9 korrik, 18:29:49 në RTC të brendshme ju do të përdorni këtë linjë kodi:
rtctime.set (1436430589, 0)
2 parametrat janë sekonda dhe mikro sekonda.
Mund të gjeni më shumë informacion duke lexuar Dokumentacionin NodeMCU.
Hapi 2: Serverët e kohës SNTP
Protokolli i thjeshtë i kohës së rrjetit (SNTP) ofrohet nga shumë burime në internet, dhe shumë vende në të gjithë botën e kanë këtë shërbim.
Programi, SNTPTime2.lua cakton kohën në RTC të brendshme. Ju duhet të keni modulet rtctime & sntp në ndërtimin tuaj kur ndizni ESP8266 tuaj. Programi merr kohën nga serveri në sekonda dhe mikro sekonda dhe vendos RTC -në e brendshme me rtctime.set (sec, usec).
Programi pastaj shfaq datën dhe kohën në formate të ndryshme.
Ka shumë serverë SNTP në të gjithë botën dhe disa janë si më poshtë:
- 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"},
Të gjitha linjat e mësipërme të kodit mund të zëvendësohen në programin SNTPTime2.lua.
Ka më shumë serverë SNTP në adresat më poshtë të cilat përsëri mund të përdoren në program.
93.170.62.252, 130.88.202.49, 79.135.97.79, ntp.exnet.com
Google gjithashtu ofron serverë të kohës në këto adresa:
216.239.35.0, 216.239.35.4, 216.239.35.8, 216.239.35.12
Ju duhet të mbani mend që të merrni kohën nga vendi ku jeni ose mund t'ju duhet ta modifikoni atë për zonat e ndryshme kohore të botës. Gjithashtu disa vende kanë kohë për të kursyer ditën, kështu që ju mund të duhet të merreni edhe me këtë.
Hapi 3: Marrja e kohës nga moduli RTC
Programi GetRTCTime.lua lexon kohën nga RTC e brendshme.
Pjesa e parë lexon kohën dhe e shfaq atë në sekonda dhe mikrosekonda.
Pjesa e dytë e shndërron atë në një format më të lexueshëm nga njerëzit.
kur thërret tm = rtctime.epoch2cal (rtctime.get ()) kthen:
- viti - 1970 ~ 2038
- një muaj - 1 ~ 12 në vitin aktual
- ditë - ditë 1 ~ 31 në muajin aktual
- orë
- min
- sek
- ditë - ditë 1 ~ 366 në vitin aktual
- ditë - ditë 1 ~ 7 në javën aktuale (e diela është 1)
Çdo artikull mund të arrihet si tm ["ditë"], tm ["vit"]…
Mund të gjeni më shumë informacion duke lexuar Dokumentacionin NodeMCU.
DisplaySNTPtime.lua është një mënyrë më e përpunuar për të treguar datën dhe orën në një ekran LCD OLED 128 x 64, pasi lidhet lehtësisht dhe mund të përdoret me këto programe.
Hapi 4: RTC Memory User
Një devijim i vogël nga mbajtja e kohës është RTC e brendshme në ESP8266 ka 128 x 32 bit adresa kujtese që mund të arrihen nga programuesi. Ato janë veçanërisht të dobishme pasi mund t'i mbijetojnë ciklit të gjumit të thellë të ESP8266. I takon programuesit të kontrollojë përdorimin e tyre dhe të sigurohet që ato të mos rishkruhen rastësisht.
Unë kam përfshirë RTCmem.lua, një program i thjeshtë i cili demonstron përdorimin e tij. Ju duhet të keni modul rtcmem në ndërtimin tuaj.
Hapi 5: Modulet e jashtme RTC
Modulet e jashtme RTC lidhen me ESP8266 përmes ndërfaqes I2C, e cila përdor vetëm dy kunja I/O dhe kështu punon me ESP-01 si dhe shumicën e pajisjeve të tjera ESP8266.
Adresa e modulit RTC është 0x68 dhe arrihet duke përdorur komandat normale I2C. Sidoqoftë, ka diçka për të pasur parasysh, të dhënat në regjistrat RTC ruhen në formatin BCD (baza 16), kështu që programet tuaja duhet të merren me këtë. Koha dhe data ruhen në 7 regjistra brenda RTC. Në RTC të brendshme, konvertimet BCD kujdesen nga moduli rtctime.
SetExtRTC.lua konverton të dhënat në BCD dhe cakton kohën.
ReadExtRTC.lua lexon të dhënat e kohës dhe i printon ato. SH NOTNIM: të dhënat shtypen në formë gjashtëmbëdhjetë.
Unë nuk kam kaluar shumë kohë duke formatuar ekranin pasi ju mund të keni idetë tuaja për atë që dëshironi të bëni me datën dhe kohën. Ky është motori bazë në formën e tij më të thjeshtë, në mënyrë që ta zhvilloni më tej nëse dëshironi.
Hapi 6: Regjistrimi i të dhënave
Nëse shikoni nga afër modulet RTC, do të vini re se ato kanë një IC AT24C32 EEPROM ose të ngjashme të ndërtuara në to, ose mund të përdorni një tabelë 24C256 si më sipër. Shumica e këtyre IC EEPROM kanë dalje të ngjashme pin si më sipër. Ato vijnë me sasi të ndryshme magazinimi, por të gjitha arrihen në të njëjtën mënyrë. Meqenëse AT24C32 është ngjitur tashmë në tabelë, mund të përdoret direkt nga I2C i RTC të jashtëm.
Nëse keni vetëm një IC 24C256 ose të ngjashme, mund ta vendosni në një dërrasë buke, të lidhni A1, A2 dhe A3 me Gnd, Vcc në 3.3V dhe SDA DHE SCL në I2C, WP mund të lihet të lundrojë. Disa IC të EEPROM funksionojnë vetëm në 5V, prandaj kontrolloni së pari fletën e të dhënave përkatëse.
ByteWR.lua shkruan 1 bajt të dhëna në vendndodhjen e kujtesës 0x00 të EEPROM dhe i lexon ato përsëri.
Desiderata.lua shkruan disa rreshta nga teksti i famshëm në EEPROM.
eeRead.lua lexon të dhëna nga EEPROM dhe i printon ato.
SHENIM: Këto programe duhet të punojnë edhe me bordet e tjera të EEPROM.
Hapi 7: Përfundimi
Unë jam përpjekur të tregoj se si funksionon RTC dhe EEPROM për regjistrimin e të dhënave. Ky është vetëm një fillestar për ju që të zhvilloheni më tej. Mund të lidhni pajisje të ndryshme me autobusin I2C siç janë sensorët e dritës, sensorët e presionit barometrik, sensorët e temperaturës dhe lagështisë dhe të regjistroni të dhënat në EEPROM.
Recommended:
Vendosja e DS3231 RTC (Ora në kohë reale) në mënyrë të saktë, të shpejtë dhe të automatizuar duke përdorur Java (+-1s): 3 hapa
Vendosja e DS3231 RTC (Ora në kohë reale) në mënyrë të saktë, të shpejtë dhe të automatizuar duke përdorur Java (+-1s): Ky udhëzues do t'ju tregojë se si të vendosni kohën në një orë në kohë reale DS3231 duke përdorur një Arduino dhe një aplikacion të vogël Java që përdor lidhja serike e Arduino. Logjika themelore e këtij programi: 1. Arduino dërgon një kërkesë serike
Ora e bazuar në Arduino duke përdorur modulin DS1307 Ora në kohë reale (RTC) & 0.96: 5 hapa
Ora e bazuar në Arduino duke përdorur modulin DS1307 Ora në kohë reale (RTC) & 0.96: Përshëndetje djema në këtë tutorial do të shohim se si të bëjmë një orë pune duke përdorur një modul orësh në kohë reale DS1307 & Ekranet OLED. Pra, ne do të lexojmë kohën nga moduli i orës DS1307. Dhe shtypeni atë në ekranin OLED
Bërja e një ore me M5stick C duke përdorur Arduino IDE - Ora në kohë reale RTC Me M5stack M5stick-C: 4 hapa
Bërja e një ore me M5stick C duke përdorur Arduino IDE | Ora në kohë reale RTC Me M5stack M5stick-C: Përshëndetje djema në këtë udhëzues do të mësojmë se si të bëjmë një orë me tabelën e zhvillimit m5stick-C të m5stack duke përdorur Arduino IDE. Pra, m5stick do të shfaqë datën, kohën dhe amp; javë të muajit në ekran
Orë Ambienti në kohë reale: 4 hapa
Ora e Ambientit në Kohë të Vërtetë: AimI e bëra këtë Orë sepse kam një shirit LED të adresueshëm që shtrihet përreth dhe dua ta përdor. Pastaj pashë që dhoma ime nuk kishte një orë të mirë që përputhet me muret e saj. Kështu vendosa të bëj një orë e cila mund të ndryshojë ngjyrat e saj sipas disponimit të përdoruesit ose
Si të bëni orë në kohë reale duke përdorur ekranin Arduino dhe TFT - Arduino Mega RTC me ekran TFT 3.5 inç: 4 hapa
Si të bëni orë në kohë reale duke përdorur ekranin Arduino dhe TFT | Arduino Mega RTC me ekran TFT 3.5 inç: Vizitoni kanalin tim në Youtube. Hyrje:- Në këtë postim do të bëj "Ora në kohë reale" duke përdorur LCD me prekje 3.5 inç TFT, Arduino Mega Moduli 2560 dhe DS3231 RTC…. Para fillimit… shikoni videon nga kanali im në YouTube..Shënim:- Nëse jeni duke përdorur Arduin