![NODEMCU Lua ESP8266 valós idejű órával (RTC) és EEPROM: 7 lépés NODEMCU Lua ESP8266 valós idejű órával (RTC) és EEPROM: 7 lépés](https://i.howwhatproduce.com/images/003/image-7398-j.webp)
Tartalomjegyzék:
2025 Szerző: John Day | [email protected]. Utoljára módosítva: 2025-01-23 14:48
![NODEMCU Lua ESP8266 valós idejű órával (RTC) és EEPROM -mal NODEMCU Lua ESP8266 valós idejű órával (RTC) és EEPROM -mal](https://i.howwhatproduce.com/images/003/image-7398-1-j.webp)
A helyes idő megadása elengedhetetlen, ha adatnaplót szeretne vezetni. Különféle módon lehet időt szerezni az internetes forrásokból.
Megkérdezheti, hogy miért nem használja az ESP8266 -t, hogy időt szakítson magára? Nos, megteheti, rendelkezik saját belső RTC -vel (Real Time Clock), de az ESP8266 -nak 3 különböző órajel -frekvenciája van - 52MHz indításkor, 80MHz normál működés közben és 160MHz, ha növelik. Ha pontosabb időtartásra van szüksége, különösen hosszabb időszakokra, akkor egy külső RTC nyújthat megoldást. Ezek a modulok akkumulátor -mentéssel is rendelkeznek áramkimaradás esetén. Az RTC nem rettenetesen pontos, mivel számolja a beállítás óta eltelt időt, és bár a legtöbb alkalmazásnál igen, előfordulhat, hogy nem elég jó a kritikus időtartáshoz. Lehetséges pontos időt kapni egy SNTP időkiszolgálóról, ahonnan az RTC szükség esetén rendszeres időközönként frissíthető.
A DS1307 Tiny RTC I2C modul (fent) egy példa ezekre az elemekre, és megvásárolható az Ebay -en és más szállítóknál kevesebb mint 2 fontért. Vannak olyanok is, mint a DS1302 és a DS3231, amelyek hasonló módon működnek, és 99p felől fizetnek.
A DS1307 modul I2C interfészt használ, és az ESP-01 esetében a következőképpen kell csatlakoztatni:
Vcc - 3.3v, Gnd - Gnd, SDA - D3, SCL - D4
Az SDA és az SCL a nagyobb ESP8266 -ok bármelyik I/O csatlakozójához csatlakoztatható (ennek megfelelően módosítsa a kódot). Ehhez a modulhoz csak a bal oldali csapokat kell csatlakoztatni.
1. lépés: Google Time
![Google Time Google Time](https://i.howwhatproduce.com/images/003/image-7398-2-j.webp)
Sok példa van arra, hogy időt kap a Google -tól, és így néz ki. A GoogleTime.lua program futtatásakor a következő eredményt kapja:
dofile ("GoogleTime.lua")> Idő: péntek, 2017. december 15., 11:19:45 GMT
Ezzel a módszerrel az a probléma, hogy az időt karakterlánc formátumban kapja meg, és órákra, percekre, másodpercekre stb. Fel kell osztania a karakterláncot az egyes bitekre. Az RTC elfogadja az időt egy speciális formátumban, azaz UNIX időbélyegben. Laikus értelemben ez az a másodperc, amely 1970. január 1. csütörtöktől napjainkig eltelt. A UNIX Epoch -ot (1970/01/01 00:00:00) a legtöbb számítógépes operációs rendszer használja, és az eltelt időt aláírt 32 bites számként tárolja. Ez azt jelenti, hogy ez a rendszer 2038. január 19 -ig működik, amikor a szám túl nagy lesz az ilyen módon történő tároláshoz. Az egyik megoldás a szám 64 bites tárolása, de egyelőre elegendő a 32 bites módszer.
Az idő beállításához 2015. július 9., 18:29:49 a belső RTC -n a következő kódsor használatával kell történnie:
rtctime.set (1436430589, 0)
A 2 paraméter másodperc és mikroszekundum.
További információkat a NodeMCU dokumentációjában talál.
2. lépés: SNTP időkiszolgálók
![SNTP időkiszolgálók SNTP időkiszolgálók](https://i.howwhatproduce.com/images/003/image-7398-3-j.webp)
Az egyszerű hálózati időprotokollt (SNTP) számos internetes forrás biztosítja, és a világ számos országában van ez a szolgáltatás.
Az SNTPTime2.lua program beállítja az időt a belső RTC -n. Az ESP8266 frissítésekor rendelkeznie kell az rtctime & sntp modulokkal. A program másodpercben és mikroszekundumban kapja meg az időt a szervertől, és beállítja a belső RTC -t az rtctime.set (sec, usec) paraméterrel.
Ezután a program megjeleníti a dátumot és az időt különböző formátumokban.
Világszerte sok SNTP -kiszolgáló létezik, és néhány a következő:
- 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"},
A fenti kódsorok mindegyike behelyettesíthető az SNTPTime2.lua programba.
Az alábbi címeken több SNTP -kiszolgáló található, amelyek ismét használhatók a programban.
93.170.62.252, 130.88.202.49, 79.135.97.79, ntp.exnet.com
A Google időszervereket is biztosít ezeken a címeken:
216.239.35.0, 216.239.35.4, 216.239.35.8, 216.239.35.12
Emlékeznie kell arra, hogy az időt abból az országból szerezze be, amelyben tartózkodik, vagy módosítania kell azt a különböző világ időzónák szerint. Egyes országokban is van nyári időszámítás, ezért előfordulhat, hogy ezzel is foglalkoznia kell.
3. lépés: Az idő lekérése az RTC modulból
![Az idő megszerzése az RTC modulból Az idő megszerzése az RTC modulból](https://i.howwhatproduce.com/images/003/image-7398-4-j.webp)
A GetRTCTime.lua program beolvassa az időt a belső RTC -ből.
Az első rész az időt olvassa, és másodpercekben és mikroszekundumokban jeleníti meg.
A második rész ember által olvashatóbb formátumba konvertálja.
a tm = rtctime.epoch2cal (rtctime.get ()) hívásakor visszatér:
- év - 1970 ~ 2038
- hét - 1-12 hónap a tárgyévben
- nap - 1–31. nap az aktuális hónapban
- óra
- min
- mp
- nap - 1. nap ~ 366 a tárgyévben
- wday - az aktuális hét 1–7. napja (vasárnap 1)
Minden elem elérhető tm ["nap"], tm ["év"] formában …
További információkat a NodeMCU dokumentációjában talál.
A DisplaySNTPtime.lua egy bonyolultabb módja annak, hogy a dátumot és az időt 128 x 64 méretű OLED kijelzőn jelenítse meg, mivel könnyen csatlakoztatható és használható ezekkel a programokkal.
4. lépés: RTC felhasználói memória
Az ESP8266 belső RTC -je 128 x 32 bites memóriacímekkel rendelkezik, amelyekhez a programozó hozzáférhet. Különösen hasznosak, mivel túl tudják élni az ESP8266 mély alvási ciklusát. A programozó feladata, hogy ellenőrizze használatukat, és ügyeljen arra, hogy véletlenül ne írják felül.
Az RTCmem.lua -t, egy egyszerű programot, amely bemutatja használatát. Az rtcmem modulnak rendelkeznie kell a buildben.
5. lépés: Külső RTC modulok
![Külső RTC modulok Külső RTC modulok](https://i.howwhatproduce.com/images/003/image-7398-5-j.webp)
A külső RTC modulok az I2C interfészen keresztül csatlakoznak az ESP8266-hoz, amely csak két I/O érintkezőt használ, és így működik az ESP-01-vel, valamint a többi ESP8266 eszközzel.
Az RTC modul címe 0x68, és a normál I2C parancsokkal érhető el. Van azonban valami, amit szem előtt kell tartani, az RTC regiszterek adatai BCD formátumban vannak tárolva (16. bázis), ezért a programoknak ezzel foglalkozniuk kell. Az időt és a dátumot 7 regiszter tárolja az RTC -n belül. A belső RTC -n a BCD konverziókról az rtctime modul gondoskodik.
A SetExtRTC.lua konvertálja az adatokat BCD -re és beállítja az időt.
A ReadExtRTC.lua beolvassa az időadatokat és kinyomtatja azokat. MEGJEGYZÉS: az adatok hexadecimális formában kerülnek kinyomtatásra.
Nem sok időt töltöttem a kijelző formázásával, mivel elképzelései lehetnek arról, hogy mit szeretne csinálni a dátummal és az idővel. Ez az alapmotor a legegyszerűbb formában, így tovább fejlesztheti, ha szeretné.
6. lépés: Adatnaplózás
![Adatnaplózás Adatnaplózás](https://i.howwhatproduce.com/images/003/image-7398-6-j.webp)
Ha alaposan megnézi az RTC modulokat, észre fogja venni, hogy AT24C32 EEPROM IC vagy hasonló van beépítve, vagy használhat egy 24C256 kártyát a fentiek szerint. Az EEPROM IC -k többségének hasonló tűkimenetei vannak, mint a fentiekben. Különböző mennyiségű tárolóval rendelkeznek, de mindegyik ugyanúgy elérhető. Mivel az AT24C32 már forrasztva van a kártyára, közvetlenül használható a külső RTC I2C -jéből.
Ha csak 24C256 IC -je vagy hasonlója van, beállíthatja egy kenyértáblán, csatlakoztathatja az A1, A2 és A3 csatlakozókat a Gnd, Vcc a 3.3V és az SDA AND SCL csatlakozókat az I2C -hez, a WP lebeghet. Néhány EEPROM IC csak 5V -ról működik, ezért először ellenőrizze a vonatkozó adatlapot.
A ByteWR.lua 1 bájt adatot ír az EEPROM 0x00 memóriahelyére, és visszaolvassa.
A Desiderata.lua néhány sort ír a híres szövegből az EEPROM -ba.
Az eeRead.lua beolvassa az EEPROM adatait és kinyomtatja azokat.
MEGJEGYZÉS: Ezeknek a programoknak más EEPROM kártyákkal is együtt kell működniük.
7. lépés: Következtetés
Megpróbáltam megmutatni, hogyan működik az RTC és az EEPROM az adatnaplózáshoz. Ez csak egy kezdő lépés a további fejlődéshez. Különféle eszközöket csatlakoztathat az I2C buszhoz, például fényérzékelőket, légnyomás -érzékelőket, hőmérséklet- és páratartalom -érzékelőket, és rögzítheti az adatokat az EEPROM -on.
Ajánlott:
A DS3231 RTC (valós idejű óra) pontos beállítása, gyors és automatizált Java használatával (+-1 másodperc): 3 lépés
![A DS3231 RTC (valós idejű óra) pontos beállítása, gyors és automatizált Java használatával (+-1 másodperc): 3 lépés A DS3231 RTC (valós idejű óra) pontos beállítása, gyors és automatizált Java használatával (+-1 másodperc): 3 lépés](https://i.howwhatproduce.com/images/011/image-31716-j.webp)
A DS3231 RTC (valós idejű óra) pontos, gyors és automatikus beállítása Java használatával (+-1 másodperc): Ez az utasítás megmutatja, hogyan kell beállítani az időt egy DS3231 valós idejű órán egy Arduino és egy kis Java-alkalmazás segítségével, amely az Arduino soros kapcsolata. A program alapvető logikája: 1. Az Arduino soros kérést küld
DS1307 Valós idejű óra RTC Arduino -val: 4 lépés
![DS1307 Valós idejű óra RTC Arduino -val: 4 lépés DS1307 Valós idejű óra RTC Arduino -val: 4 lépés](https://i.howwhatproduce.com/images/001/image-678-98-j.webp)
DS1307 Valós idejű óra RTC az Arduino segítségével: Ebben az oktatóanyagban megismerjük a valós idejű órát (RTC) és az Arduino & A DS1307 valós idejű óra IC -t időzítő eszközként állítják össze. A valós idejű óra (RTC) az idő figyelésére és a naptár karbantartására szolgál. Az RTC használatához a
Arduino alapú óra a DS1307 valós idejű óra (RTC) modul használatával és 0.96: 5 lépés
![Arduino alapú óra a DS1307 valós idejű óra (RTC) modul használatával és 0.96: 5 lépés Arduino alapú óra a DS1307 valós idejű óra (RTC) modul használatával és 0.96: 5 lépés](https://i.howwhatproduce.com/images/001/image-2174-20-j.webp)
Arduino alapú óra a DS1307 valós idejű óra (RTC) modul használatával és 0.96: Sziasztok, srácok, ebben az oktatóanyagban látni fogjuk, hogyan lehet működő órát készíteni egy DS1307 valós idejű óramodul segítségével. OLED kijelzők. Tehát kiolvassuk az időt a DS1307 óra modulból. És nyomtassa ki az OLED képernyőn
Óra készítése az M5stick C segítségével Arduino IDE - használatával RTC valós idejű óra az M5stack M5stick-C-vel: 4 lépés
![Óra készítése az M5stick C segítségével Arduino IDE - használatával RTC valós idejű óra az M5stack M5stick-C-vel: 4 lépés Óra készítése az M5stick C segítségével Arduino IDE - használatával RTC valós idejű óra az M5stack M5stick-C-vel: 4 lépés](https://i.howwhatproduce.com/images/002/image-3337-33-j.webp)
Óra készítése az M5stick C segítségével Arduino IDE | használatával RTC valós idejű óra az M5stack M5stick-C-vel: Sziasztok srácok, ebben az utasításban megtanuljuk, hogyan készítsünk órát az m5stick m5stick fejlesztőpaneljével az Arduino IDE segítségével. Így az m5stick megjeleníti a dátumot, az időt és az amp; a hónap hete a kijelzőn
Valós idejű óra készítése Arduino és TFT kijelző használatával - Arduino Mega RTC 3,5 hüvelykes TFT kijelzővel: 4 lépés
![Valós idejű óra készítése Arduino és TFT kijelző használatával - Arduino Mega RTC 3,5 hüvelykes TFT kijelzővel: 4 lépés Valós idejű óra készítése Arduino és TFT kijelző használatával - Arduino Mega RTC 3,5 hüvelykes TFT kijelzővel: 4 lépés](https://i.howwhatproduce.com/images/006/image-16956-9-j.webp)
Hogyan készítsünk valós idejű órát Arduino és TFT kijelző használatával | Arduino Mega RTC 3,5 hüvelykes TFT kijelzővel: Látogasson el a Youtube csatornámra. 2560 és DS3231 RTC modul… .Mielőtt elkezdené… ellenőrizze a videót a YouTube-csatornámról. Megjegyzés:- Ha Arduin-t használ