Orodha ya maudhui:

NODEMCU Lua ESP8266 Pamoja na Saa Saa Saa (RTC) & EEPROM: Hatua 7
NODEMCU Lua ESP8266 Pamoja na Saa Saa Saa (RTC) & EEPROM: Hatua 7

Video: NODEMCU Lua ESP8266 Pamoja na Saa Saa Saa (RTC) & EEPROM: Hatua 7

Video: NODEMCU Lua ESP8266 Pamoja na Saa Saa Saa (RTC) & EEPROM: Hatua 7
Video: Использование комплекта Wi-Fi Heltec ESP32 OLED 2024, Julai
Anonim
NODEMCU Lua ESP8266 Pamoja na Saa Saa Saa (RTC) & EEPROM
NODEMCU Lua ESP8266 Pamoja na Saa Saa Saa (RTC) & EEPROM

Kupata wakati sahihi ni muhimu ikiwa unataka kuweka kumbukumbu ya data. Kuna njia anuwai za kupata wakati kutoka kwa vyanzo kwenye wavuti.

Unaweza kuuliza kwanini usitumie ESP8266 kuweka wakati kwako? Vizuri unaweza, ina RTC yake ya ndani (Saa Saa Saa), lakini ESP8266 ina masafa 3 tofauti ya saa za kufanya kazi - 52MHz wakati inavu, 80MHz wakati wa operesheni ya kawaida, na 160MHz ikiwa imeongezwa. Ikiwa unahitaji utunzaji wa wakati sahihi zaidi, haswa kwa vipindi virefu, basi RTC ya nje inaweza kutoa suluhisho. Moduli hizi pia zina nakala rudufu ya betri ikiwa utapoteza nguvu. RTC sio sahihi sana kwani inahesabu wakati uliopita tangu ilipowekwa na ingawa inaweza kufanya kwa programu nyingi, inaweza kuwa haitoshi kwa utunzaji wa wakati muhimu. Inawezekana kupata wakati sahihi kutoka kwa seva ya muda ya SNTP ambayo RTC inaweza kusasishwa mara kwa mara ikiwa inahitajika.

Moduli ya DS1307 Tiny RTC I2C (juu) ni mfano wa vitu hivi na inaweza kununuliwa kwenye Ebay na wauzaji wengine kwa chini ya £ 2. Pia kuna zingine kama DS1302 na DS3231 ambazo zinafanya kazi kwa njia sawa na zinagharimu kutoka 99p kwenda juu.

Moduli ya DS1307 inatumia kiolesura cha I2C na kwa ESP-01 inapaswa kushikamana kama:

Vcc - 3.3v, Gnd - Gnd, SDA - D3, SCL - D4

SDA na SCL zinaweza kushikamana na pini yoyote ya I / O kwenye ESP8266 kubwa (badilisha nambari ipasavyo). Pini za upande wa kushoto tu zinahitaji kuunganishwa kwenye moduli hii.

Hatua ya 1: Google Time

Wakati wa Google
Wakati wa Google

Kuna mifano mingi ya kupata wakati kutoka Google na angalia kitu kama hiki. Unapoendesha programu ya GoogleTime.lua unapata matokeo kama haya:

dofile ("GoogleTime.lua")> Wakati: Ijumaa, 15 Desemba 11: 11: 45: 45 GMT

Shida ya njia hii ni kwamba unapata wakati katika muundo wa kamba na lazima ugawanye kamba ndani ya vipande vyake vya kibinafsi kwa masaa, dakika, sekunde nk RTC inakubali wakati katika muundo maalum yaani stempu ya wakati wa UNIX. Kwa maneno ya kawaida, hii ndio idadi ya sekunde ambazo zimepita tangu Alhamisi 1 Januari 1970 hadi leo na wakati. Enzi ya UNIX (1970/01/01 00:00:00) inatumiwa na mifumo mingi ya uendeshaji wa kompyuta na muda uliopita umehifadhiwa kama nambari 32 iliyosainiwa. Hii inamaanisha kuwa mfumo huu utafanya kazi hadi 19 Januari 2038 wakati idadi itakuwa kubwa sana kuweza kuhifadhi hivi. Suluhisho moja ni kuhifadhi nambari kama biti 64, lakini kwa sasa njia 32 kidogo itatosha.

Kuweka wakati hadi 2015 Julai 9, 18:29:49 kwenye RTC ya ndani utatumia laini hii ya nambari:

wakati wa wakati. (1436430589, 0)

Vigezo 2 ni sekunde na sekunde ndogo.

Unaweza kupata habari zaidi ukisoma Hati ya NodeMCU.

Hatua ya 2: Seva za Muda wa SNTP

Seva za Muda wa SNTP
Seva za Muda wa SNTP

Itifaki Rahisi ya Mtandao (SNTP) hutolewa kutoka vyanzo vingi kwenye mtandao, na nchi nyingi ulimwenguni kote zina huduma hii.

Programu, SNTPTime2.lua inaweka wakati kwenye RTC ya ndani. Unahitaji kuwa na moduli za rtctime & sntp katika muundo wako wakati utawasha ESP8266 yako. Programu inapata wakati kutoka kwa seva kwa sekunde na sekunde ndogo na inaweka RTC ya ndani na rtctime.set (sec, usec).

Programu hiyo inaonyesha tarehe na wakati katika muundo tofauti.

Kuna seva nyingi za SNTP ulimwenguni kote na zingine ni kama ifuatavyo.

  • 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"},

Mistari yote hapo juu ya nambari inaweza kubadilishwa katika mpango wa SNTPTime2.lua.

Kuna seva nyingi za SNTP kwenye anwani zilizo chini ambazo zinaweza kutumika tena katika programu.

93.170.62.252, 130.88.202.49, 79.135.97.79, ntp.exnet.com

Google pia hutoa seva za wakati kwenye anwani hizi:

216.239.35.0, 216.239.35.4, 216.239.35.8, 216.239.35.12

Unahitaji kukumbuka kupata wakati kutoka kwa nchi uliyopo au unaweza kuibadilisha kwa maeneo tofauti ya wakati wa ulimwengu. Pia nchi zingine zina wakati wa kuokoa mchana, kwa hivyo unaweza pia kushughulika na hiyo pia.

Hatua ya 3: Kupata Wakati Kutoka kwa Moduli ya RTC

Kupata Wakati Kutoka kwa Moduli ya RTC
Kupata Wakati Kutoka kwa Moduli ya RTC

Mpango GetRTCTime.lua inasoma wakati kutoka kwa RTC ya ndani.

Sehemu ya kwanza inasoma wakati na kuionyesha kwa sekunde na microseconds.

Sehemu ya pili inabadilisha kuwa fomati inayoweza kusomeka zaidi kwa wanadamu.

wakati wa kupiga simu tm = rtctime.epoch2cal (rtctime.get ()) inarudi:

  • mwaka - 1970 ~ 2038
  • mwezi - mwezi 1 ~ 12 katika mwaka wa sasa
  • siku - siku 1 ~ 31 katika mwezi wa sasa
  • saa
  • dakika
  • sec
  • siku - siku 1 ~ 366 katika mwaka wa sasa
  • wday - siku 1 ~ 7 katika wiki ya sasa (Jumapili ni 1)

Kila kitu kinaweza kupatikana kama tm ["siku"], tm ["mwaka"]…

Unaweza kupata habari zaidi ukisoma Hati ya NodeMCU.

DisplaySNTPtime.lua ni njia ya kufafanua zaidi ya kuonyesha tarehe na wakati kwenye onyesho la LCD 128 x 64 OLED, kwani imeunganishwa kwa urahisi na inaweza kutumika na programu hizi.

Hatua ya 4: Kumbukumbu ya Mtumiaji wa RTC

Kubadilisha kidogo kutoka kwa utunzaji wa muda ni RTC ya ndani kwenye ESP8266 ina anwani za kumbukumbu za 128 x 32 ambazo zinaweza kupatikana na programu. Ni muhimu sana kwani zinaweza kuishi katika mzunguko wa usingizi mzito wa ESP8266. Ni juu ya programu kudhibiti matumizi yao na kuhakikisha kuwa hayakuandikwa tena kwa bahati mbaya.

Nimejumuisha RTCmem.lua, programu rahisi ambayo inaonyesha matumizi yake. Unahitaji kuwa na moduli ya rtcmem katika muundo wako.

Hatua ya 5: Moduli za nje za RTC

Moduli za nje za RTC
Moduli za nje za RTC

Moduli za nje za RTC zinaunganisha kwenye ESP8266 kupitia kiolesura cha I2C, ambacho hutumia tu pini mbili za I / O na hufanya kazi na ESP-01 na vifaa vingine vingi vya ESP8266.

Anwani ya moduli ya RTC ni 0x68 na inapatikana kwa kutumia amri za kawaida za I2C. Kuna, hata hivyo, kuna kitu cha kuzingatia, data katika rejista za RTC imehifadhiwa katika muundo wa BCD (msingi 16), kwa hivyo mipango yako inapaswa kushughulika na hii. Wakati na tarehe zimehifadhiwa katika rejista 7 ndani ya RTC. Kwenye RTC ya ndani, mabadiliko ya BCD yanatunzwa na moduli ya rtctime.

SetExtRTC.lua inabadilisha data kuwa BCD na kuweka wakati.

ReadExtRTC.lua inasoma data ya wakati na kuichapisha. KUMBUKA: data imechapishwa kwa hexadecimal.

Sijatumia muda mwingi kupangilia maonyesho kwani unaweza kuwa na maoni yako mwenyewe juu ya kile unachotaka kufanya na tarehe na saa. Hii ndio injini ya kimsingi katika hali rahisi, ili uweze kuikuza zaidi ikiwa unataka.

Hatua ya 6: Kuingia kwa Takwimu

Kuingia kwa Takwimu
Kuingia kwa Takwimu

Ukiangalia kwa karibu moduli za RTC, utagundua kuwa zina AT24C32 EEPROM IC au sawa iliyojengwa ndani yao, au unaweza kutumia bodi ya 24C256 kama hapo juu. Zaidi ya hizi IC za EEPROM zina njia sawa za pini kama hapo juu. Wanakuja na kiasi anuwai cha uhifadhi, lakini wote wanapatikana kwa njia ile ile. Kwa kuwa AT24C32 tayari imeuzwa kwenye bodi, inaweza kutumika moja kwa moja kutoka kwa I2C ya RTC ya nje.

Ikiwa una tu 24C256 IC au sawa, unaweza kuiweka kwenye bodi ya mkate, unganisha A1, A2 na A3 hadi Gnd, Vcc hadi 3.3V na SDA NA SCL hadi I2C, WP inaweza kushoto ikielea. Baadhi ya IC za EEPROM hufanya kazi kwa 5V tu, kwa hivyo angalia kwanza karatasi ya data inayofaa.

ByteWR.lua inaandika 1 ka data kwa eneo la kumbukumbu 0x00 ya EEPROM na kuisoma tena.

Desiderata.lua anaandika mistari michache kutoka maandishi maarufu hadi EEPROM.

eeRead.lua inasoma data kutoka EEPROM na kuichapisha.

KUMBUKA: Programu hizi zinapaswa kufanya kazi na bodi zingine za EEPROM pia.

Hatua ya 7: Hitimisho

Nimejaribu kuonyesha jinsi RTC na EEPROM inavyofanya kazi kwa ukataji wa data. Hii ni mwanzo tu kwako kukuza zaidi. Unaweza kuunganisha vifaa anuwai kwenye basi ya I2C kama sensorer nyepesi, sensorer ya shinikizo la kibaometri, sensorer ya joto na unyevu na rekodi data kwenye EEPROM.

Ilipendekeza: