Obsah:
2025 Autor: John Day | [email protected]. Naposledy zmenené: 2025-01-23 15:05
Ak chcete viesť denník údajov, je dôležité získať správny čas. Existujú rôzne spôsoby, ako získať čas zo zdrojov na internete.
Môžete sa opýtať, prečo nevyužiť ESP8266, aby vám zostal čas? Môžete, má svoj vlastný interný RTC (hodiny v reálnom čase), ale ESP8266 má 3 rôzne frekvencie prevádzkových hodín - 52 MHz pri štarte, 80 MHz pri bežnej prevádzke a 160 MHz, ak je posilnený. Ak potrebujete presnejšie sledovanie času, najmä počas dlhších období, riešenie môže poskytnúť externý RTC. Tieto moduly majú tiež záložnú batériu pre prípad straty napájania. RTC nie je veľmi presný, pretože počíta čas, ktorý uplynul od jeho nastavenia, a hoci to môže fungovať pre väčšinu aplikácií, nemusí byť dosť dobrý na udržanie kritického času. Presný čas je možné získať z časového servera SNTP, z ktorého je možné v prípade potreby v pravidelných intervaloch aktualizovať RTC.
Modul DS1307 Tiny RTC I2C (vyššie) je príkladom týchto položiek a je možné ho zakúpiť na Ebay a u iných dodávateľov za menej ako 2 libry. Existujú aj ďalšie, ako napríklad DS1302 a DS3231, ktoré fungujú podobným spôsobom a stoja od 99 p.
Modul DS1307 používa rozhranie I2C a pre ESP-01 by mal byť pripojený ako:
Vcc - 3,3 V, Gnd - Gnd, SDA - D3, SCL - D4
SDA a SCL je možné pripojiť k akémukoľvek z I/O pinov na väčších ESP8266 (zodpovedajúcim spôsobom zmeňte kód). K tomuto modulu je potrebné pripojiť iba kolíky na ľavej strane.
Krok 1: Čas Google
Existuje mnoho príkladov, ako získať čas od Googlu a vyzerať takto. Keď spustíte program GoogleTime.lua, získate nasledujúci výsledok:
dofile ("GoogleTime.lua")> Čas: Pia, 15. decembra 2017 11:19:45 GMT
Problém pri tejto metóde je ten, že získate čas vo formáte reťazca a budete musieť reťazec rozdeliť na jeho jednotlivé bity na hodiny, minúty, sekundy atď. RTC akceptuje čas v špeciálnom formáte, tj. Časovú pečiatku UNIX. Laicky povedané, je to počet sekúnd, ktoré uplynuli od štvrtka 1. januára 1970 do súčasnosti a času. Epochu UNIX (01/01/01 00:00:00) používa väčšina počítačových operačných systémov a uplynulý čas je uložený ako podpísané 32 -bitové číslo. To znamená, že tento systém bude fungovať do 19. januára 2038, keď bude číslo príliš veľké na uloženie týmto spôsobom. Jedným z riešení je uložiť číslo ako 64 bitov, ale zatiaľ bude stačiť 32 -bitová metóda.
Na nastavenie času na 9. júla 2015, 18:29:49 vo vnútornom RTC, by ste použili tento riadok kódu:
rtctime.set (1436430589, 0)
Dva parametre sú sekundy a mikro sekundy.
Ďalšie informácie nájdete v dokumentácii NodeMCU.
Krok 2: Časové servery SNTP
Simple Network Time Protocol (SNTP) je poskytovaný z mnohých zdrojov na internete a túto službu má mnoho krajín po celom svete.
Program SNTPTime2.lua nastavuje čas na vnútornom RTC. Keď flashujete ESP8266, musíte mať vo svojej zostave moduly rtctime & sntp. Program získa čas zo servera v sekundách a mikro sekundách a nastaví interný RTC pomocou rtctime.set (sec, usec).
Program potom zobrazí dátum a čas v rôznych formátoch.
Na celom svete je veľa serverov SNTP a niektoré z nich sú nasledujúce:
- 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"},
Všetky vyššie uvedené riadky kódu je možné nahradiť programom SNTPTime2.lua.
Na nižšie uvedených adresách je viac serverov SNTP, ktoré je možné v programe opäť použiť.
93.170.62.252, 130.88.202.49, 79.135.97.79, ntp.exnet.com
Google tiež poskytuje časové servery na týchto adresách:
216.239.35.0, 216.239.35.4, 216.239.35.8, 216.239.35.12
Musíte si vziať čas z krajiny, v ktorej sa nachádzate, alebo ho budete musieť upraviť pre rôzne svetové časové pásma. Niektoré krajiny majú aj letný čas, takže sa s tým možno budete musieť vyrovnať aj vy.
Krok 3: Získanie času z modulu RTC
Program GetRTCTime.lua číta čas z interného RTC.
Prvá časť číta čas a zobrazuje ho v sekundách a mikrosekundách.
Druhá časť ho prevádza do ľudsky čitateľnejšieho formátu.
pri volaní tm = rtctime.epoch2cal (rtctime.get ()) vráti:
- rok - 1970 ~ 2038
- mesiac - 1 ~ 12 v aktuálnom roku
- deň - deň 1 ~ 31 v aktuálnom mesiaci
- hodinu
- min
- sek
- deň - deň 1 ~ 366 v aktuálnom roku
- deň - deň 1 ~ 7 v aktuálnom týždni (nedeľa je 1)
Ku každej položke je možné pristupovať ako tm ["deň"], tm ["rok"]…
Ďalšie informácie nájdete v dokumentácii NodeMCU.
DisplaySNTPtime.lua je prepracovanejší spôsob zobrazovania dátumu a času na LCD displeji 128 x 64 OLED, pretože je ľahko pripojiteľný a je možné ho používať s týmito programami.
Krok 4: Užívateľská pamäť RTC
Trochu odklonom od udržiavania času je interný RTC na ESP8266 s adresami pamäte 128 x 32 bitov, ku ktorým má prístup programátor. Sú obzvlášť užitočné, pretože môžu prežiť cyklus hlbokého spánku ESP8266. Je na programátorovi, aby kontroloval ich používanie a zaistil, aby neboli omylom prepísané.
Zahrnul som RTCmem.lua, jednoduchý program, ktorý ukazuje jeho použitie. Vo svojej zostave musíte mať modul rtcmem.
Krok 5: Externé moduly RTC
Externé moduly RTC sa k ESP8266 pripájajú prostredníctvom rozhrania I2C, ktoré používa iba dva I/O piny a funguje tak s ESP-01, ako aj s väčšinou ostatných zariadení ESP8266.
Adresa modulu RTC je 0x68 a je k nej prístup pomocou bežných príkazov I2C. Je však potrebné mať na pamäti, že údaje v registroch RTC sú uložené vo formáte BCD (základňa 16), takže vaše programy sa s tým musia vyrovnať. Čas a dátum sú uložené v 7 registroch v rámci RTC. Na internom RTC sa o konverzie BCD stará modul rtctime.
SetExtRTC.lua prevádza údaje na BCD a nastavuje čas.
ReadExtRTC.lua načíta časové údaje a vytlačí ich. POZNÁMKA: údaje sa vytlačia v hexadecimálnom formáte.
Nestrávil som veľa času formátovaním displeja, pretože môžete mať svoje vlastné predstavy o tom, čo chcete s dátumom a časom robiť. Toto je základný motor v najjednoduchšej forme, takže ho môžete podľa potreby ďalej rozvíjať.
Krok 6: Záznam údajov
Ak sa pozriete pozorne na moduly RTC, všimnete si, že majú v sebe integrovaný integrovaný obvod EEPROM AT24C32 alebo podobný modul, alebo môžete použiť dosku 24C256, ako je uvedené vyššie. Väčšina týchto integrovaných obvodov EEPROM má podobné vývody ako vyššie. Dodávajú sa s rôznym objemom úložiska, ale ku všetkým sa pristupuje rovnakým spôsobom. Pretože AT24C32 je už spájkovaný na doske, môže byť použitý priamo z I2C externého RTC.
Ak máte iba 24C256 IC alebo podobný, môžete ho nastaviť na doske s chlebom, pripojiť A1, A2 a A3 na Gnd, Vcc na 3,3 V a SDA A SCL na I2C, WP môžete nechať plávajúce. Niektoré integrované obvody EEPROM fungujú iba pri 5 V, preto si najskôr overte príslušný list s údajmi.
ByteWR.lua zapíše 1 bajt údajov do pamäte 0x00 pamäte EEPROM a načíta ich späť.
Desiderata.lua napíše niekoľko riadkov zo slávneho textu do EEPROM.
eeRead.lua načíta údaje z EEPROM a vytlačí ich.
POZNÁMKA: Tieto programy by mali fungovať aj s inými doskami EEPROM.
Krok 7: Záver
Pokúsil som sa ukázať, ako RTC a EEPROM fungujú na zaznamenávanie údajov. Je to len začiatok, ktorý môžete ďalej rozvíjať. K zbernici I2C môžete pripojiť rôzne zariadenia, ako sú svetelné senzory, senzory barometrického tlaku, snímače teploty a vlhkosti a zaznamenávať údaje na EEPROM.
Odporúča:
Presné, rýchle a automatické nastavenie DS3231 RTC (hodín v reálnom čase) pomocou Javy (+-1 s): 3 kroky
Presné, rýchle a automatizované nastavenie hodín DS3231 RTC (hodiny v reálnom čase) pomocou Javy (+-1 s): Tento návod vám ukáže, ako nastaviť čas na hodinách reálneho času DS3231 pomocou Arduina a malej aplikácie Java, ktorá používa sériové pripojenie Arduina. Základná logika tohto programu: 1. Arduino odosiela sériovú požiadavku
Hodiny DS1307 v reálnom čase RTC s Arduino: 4 kroky
DS1307 Hodiny v reálnom čase RTC s Arduino: V tomto návode sa dozvieme o hodinách v reálnom čase (RTC) a o tom, ako Arduino & Hodiny v reálnom čase IC DS1307 sú zostavené ako časovacie zariadenie. Hodiny v reálnom čase (RTC) sa používajú na monitorovanie času a údržbu kalendára. Ak chcete používať RTC,
Výroba hodín pomocou M5stick C pomocou Arduino IDE - Hodiny RTC v reálnom čase s M5stack M5stick-C: 4 kroky
Výroba hodín pomocou M5stick C pomocou Arduino IDE | Hodiny RTC v reálnom čase s M5stack M5stick-C: Ahoj chlapci, v tomto návode sa naučíme, ako vyrobiť hodiny s vývojovou doskou m5stick-C m5stack pomocou Arduino IDE. Takže m5stick zobrazí dátum, čas a týždeň v mesiaci na displeji
Ako vytvoriť hodiny v reálnom čase pomocou displeja Arduino a TFT - Arduino Mega RTC s 3,5 palcovým TFT displejom: 4 kroky
Ako vytvoriť hodiny v reálnom čase pomocou Arduino a TFT displeja | Arduino Mega RTC s 3,5 palcovým TFT displejom: Navštívte môj kanál YouTube. Úvod:- V tomto príspevku urobím „Hodiny v reálnom čase“pomocou 3,5 palcového dotykového TFT LCD displeja, Arduino Mega Modul RTC 2560 a DS3231 …. Pred spustením … si pozrite video z môjho kanála YouTube..Poznámka:- Ak používate Arduin
Oznámenia udalostí v reálnom čase pomocou NodeMCU (Arduino), Google Firebase a Laravel: 4 kroky (s obrázkami)
Oznámenia udalostí v reálnom čase pomocou NodeMCU (Arduino), Google Firebase a Laravel: Už ste niekedy chceli byť upozornení, keď sa na vašom webe uskutoční akcia, ale e -mail nie je vhodný? Chcete pri každom predaji počuť zvuk alebo zvonček? Alebo je potrebná vaša okamžitá pozornosť kvôli vznikajúcemu