Taula de continguts:
- Pas 1: Google Time
- Pas 2: Servidors de temps SNTP
- Pas 3: Obtenir el temps des del mòdul RTC
- Pas 4: memòria d'usuari RTC
- Pas 5: mòduls RTC externs
- Pas 6: registre de dades
- Pas 7: Conclusió
Vídeo: NODEMCU Lua ESP8266 amb rellotge en temps real (RTC) i EEPROM: 7 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:14
Obtenir l’hora correcta és essencial si voleu mantenir un registre de dades. Hi ha diverses maneres d’obtenir el temps de fonts d’Internet.
Us podeu preguntar per què no utilitzeu l’ESP8266 per guardar-vos el temps? Bé, podeu, té el seu propi RTC intern (rellotge en temps real), però l’ESP8266 té 3 freqüències de rellotge de funcionament diferents: 52 MHz quan arrenca, 80 MHz durant el funcionament normal i 160 MHz si s’incrementa. Si necessiteu un temps més precís, sobretot en períodes més llargs, és possible que un RTC extern us proporcioni una solució. Aquests mòduls també tenen una còpia de seguretat de la bateria en cas de pèrdua d’alimentació. Un RTC no és terriblement precís ja que compta el temps transcorregut des que es va configurar i, tot i que ho pot fer per a la majoria d’aplicacions, pot ser que no sigui prou bo per mantenir el temps crític. És possible obtenir una hora exacta d'un servidor de temps SNTP des del qual es pot actualitzar el RTC a intervals regulars si cal.
El mòdul DS1307 Tiny RTC I2C (anterior) és un exemple d’aquests articles i es pot comprar a Ebay i altres proveïdors per menys de 2 GBP. També n’hi ha d’altres com el DS1302 i el DS3231 que funcionen de manera similar i costen des de 99p en amunt.
El mòdul DS1307 utilitza una interfície I2C i per a un ESP-01 s'ha de connectar com:
Vcc - 3.3v, Gnd - Gnd, SDA - D3, SCL - D4
SDA i SCL es poden connectar a qualsevol dels pins d'E / S dels ESP8266 més grans (modifiqueu el codi en conseqüència). Només cal connectar els pins laterals esquerra en aquest mòdul.
Pas 1: Google Time
Hi ha molts exemples d’obtenir el temps de Google i semblar una cosa així. Quan executeu el programa GoogleTime.lua, obtindreu un resultat com aquest:
dofile ("GoogleTime.lua")> Hora: divendres, 15 de desembre de 2017 11:19:45 GMT
El problema d’aquest mètode és que obteniu l’hora en format de cadena i heu de dividir la cadena en els seus bits individuals durant hores, minuts, segons, etc. El RTC accepta l’hora en un format especial, és a dir, segell de temps UNIX. En termes laics, aquest és el nombre de segons que han transcorregut des del dijous 1 de gener de 1970 fins a l'actualitat i l'hora actuals. La majoria de sistemes operatius d’ordinadors utilitzen l’època UNIX (1970/01/01 00:00:00) i el temps transcorregut s’emmagatzema com un número de 32 bits signat. Això significa que aquest sistema funcionarà fins al 19 de gener de 2038, quan el nombre serà massa gran per emmagatzemar-se d'aquesta manera. Una solució és emmagatzemar el nombre com a 64 bits, però per ara el mètode de 32 bits serà suficient.
Per establir l'hora al 9 de juliol de 2015 a les 18:29:49 a l'RTC intern, hauríeu d'utilitzar aquesta línia de codi:
rtctime.set (1436430589, 0)
Els 2 paràmetres són segons i micro segons.
Podeu trobar més informació llegint la documentació NodeMCU.
Pas 2: Servidors de temps SNTP
El protocol de temps de xarxa simple (SNTP) es proporciona de moltes fonts a Internet i molts països de tot el món tenen aquest servei.
El programa SNTPTime2.lua estableix l'hora al RTC intern. Heu de tenir els mòduls rtctime & sntp a la vostra compilació quan feu flaix el vostre ESP8266. El programa obté el temps del servidor en segons i micro segons i estableix el RTC intern amb rtctime.set (sec, usec).
A continuació, el programa mostra la data i l’hora en diferents formats.
Hi ha molts servidors SNTP a tot el món i alguns són els següents:
- 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"},
Totes les línies de codi anteriors es poden substituir al programa SNTPTime2.lua.
Hi ha més servidors SNTP a les adreces de sota que es poden tornar a utilitzar al programa.
93.170.62.252, 130.88.202.49, 79.135.97.79, ntp.exnet.com
Google també proporciona servidors horaris a aquestes adreces:
216.239.35.0, 216.239.35.4, 216.239.35.8, 216.239.35.12
Cal recordar per obtenir el temps del país on es troba o potser haureu de modificar-lo per als diferents fusos horaris mundials. També alguns països tenen horari d’estiu, de manera que és possible que també hàgiu de fer-ho.
Pas 3: Obtenir el temps des del mòdul RTC
El programa GetRTCTime.lua llegeix l’hora del RTC intern.
La primera part llegeix el temps i el mostra en segons i microsegons.
La segona part el converteix en un format més llegible per a humans.
en trucar a tm = rtctime.epoch2cal (rtctime.get ()), torna:
- any - 1970 ~ 2038
- dilluns - 1 a 12 de l'any en curs
- dia - dia 1 ~ 31 del mes actual
- hores
- mín
- seg
- dia - dia 1 ~ 366 de l'any en curs
- wday - dia 1 ~ 7 de la setmana actual (el diumenge és 1)
Es pot accedir a cada element com tm ["dia"], tm ["any"] …
Podeu trobar més informació llegint la documentació NodeMCU.
DisplaySNTPtime.lua és una forma més elaborada de mostrar la data i l'hora en una pantalla OLED LCD de 128 x 64, ja que es connecta fàcilment i es pot utilitzar amb aquests programes.
Pas 4: memòria d'usuari RTC
Una mica de desviació del temps és que l’RTC intern de l’ESP8266 té adreces de memòria de 128 x 32 bits a les quals el programador pot accedir. Són especialment útils ja que poden sobreviure al cicle de son profund de l’ESP8266. Correspon al programador controlar el seu ús i assegurar-se que no se sobreescriuen accidentalment.
He inclòs RTCmem.lua, un programa senzill que demostra el seu ús. Heu de tenir el mòdul rtcmem a la vostra compilació.
Pas 5: mòduls RTC externs
Els mòduls RTC externs es connecten a l'ESP8266 mitjançant la interfície I2C, que només utilitza dos pins d'E / S i, per tant, funciona amb l'ESP-01, així com amb la majoria dels altres dispositius ESP8266.
L'adreça del mòdul RTC és 0x68 i s'hi accedeix mitjançant les ordres I2C normals. Tanmateix, hi ha alguna cosa a tenir en compte: les dades dels registres RTC s’emmagatzemen en format BCD (base 16), de manera que els vostres programes s’hi han d’ocupar. L'hora i la data s'emmagatzemen en 7 registres dins del RTC. Al RTC intern, el mòdul rtctime té cura de les conversions BCD.
SetExtRTC.lua converteix les dades a BCD i estableix l'hora.
ReadExtRTC.lua llegeix les dades de temps i les imprimeix. NOTA: les dades s’imprimeixen en hexadecimal.
No he dedicat gaire temps a formatar la pantalla, ja que és possible que tingueu les vostres idees sobre què voleu fer amb la data i l’hora. Aquest és el motor bàsic en la seva forma més senzilla, perquè pugueu desenvolupar-lo encara més si ho desitgeu.
Pas 6: registre de dades
Si mireu detingudament els mòduls RTC, notareu que tenen integrat un CI EEPROM AT24C32 o similar, o bé podeu utilitzar una placa 24C256 com es va indicar anteriorment. La majoria d’aquests CI EEPROM tenen sortides de pins similars a les anteriors. Ofereixen diverses quantitats d’emmagatzematge, però s’accedeix a tots de la mateixa manera. Com que l'AT24C32 ja està soldat a la placa, es pot utilitzar directament des de l'I2C del RTC extern.
Si només teniu un IC 24C256 o similar, podeu configurar-lo en una placa de connexió, connectar A1, A2 i A3 a Gnd, Vcc a 3,3V i SDA I SCL a I2C, el WP es pot deixar flotant. Alguns circuits integrats EEPROM només funcionen a 5 V, així que consulteu primer el full de dades rellevant.
ByteWR.lua escriu 1 byte de dades a la ubicació de memòria 0x00 de l'EEPROM i les llegeix de nou.
Desiderata.lua escriu un parell de línies de text famós a la EEPROM.
eeRead.lua llegeix les dades de l'EEPROM i les imprimeix.
NOTA: Aquests programes també haurien de funcionar amb altres plaques EEPROM.
Pas 7: Conclusió
He intentat mostrar com funcionen RTC i EEPROM per al registre de dades. Això és només un principi per desenvolupar-lo més. Podeu connectar diversos dispositius al bus I2C com ara sensors de llum, sensors de pressió baromètrica, sensors de temperatura i humitat i enregistrar les dades a l’EEPROM.
Recomanat:
Rellotge de xarxa ESP8266 sense cap RTC - Nodemcu NTP Clock No RTC - PROJECTE DE RELLOTGE INTERNET: 4 passos
Rellotge de xarxa ESP8266 sense cap RTC | Nodemcu NTP Clock No RTC | PROJECTE DE RELLOTGE A INTERNET: Al projecte es realitzarà un projecte de rellotge sense RTC, prendrà temps d’Internet mitjançant wifi i el mostrarà a la pantalla st7735
Rellotge RTC en temps real DS1307 amb Arduino: 4 passos
DS1307 Rellotge en temps real amb Arduino: en aquest tutorial, coneixerem el rellotge en temps real (RTC) i com Arduino & L’IC DS1307 de rellotge en temps real s’uneix com a dispositiu de sincronització. El rellotge en temps real (RTC) s’utilitza per controlar el temps i mantenir un calendari. Per utilitzar un RTC, w
Rellotge basat en Arduino mitjançant el mòdul Rellotge en temps real (RTC) DS1307 i 0,96: 5 passos
Rellotge basat en Arduino mitjançant el mòdul DS1307 de rellotge en temps real (RTC) i 0,96: Hola, nois en aquest tutorial, veurem com fer un rellotge de treball mitjançant un mòdul de rellotge en temps real DS1307 & Pantalles OLED, així que llegirem l’hora del mòdul de rellotge DS1307. I imprimiu-lo a la pantalla OLED
Fer un rellotge amb M5stick C mitjançant Arduino IDE - Rellotge RTC en temps real amb M5stack M5stick-C: 4 passos
Fer un rellotge amb M5stick C mitjançant Arduino IDE | Rellotge en temps real RTC amb M5stack M5stick-C: Hola, nois en aquest instructable, aprendrem a fer un rellotge amb la placa de desenvolupament m5stick-C de m5stack mitjançant Arduino IDE. Així, m5stick mostrarà data, hora i amp; setmana del mes a la pantalla
Com fer un rellotge en temps real amb la pantalla Arduino i TFT - Arduino Mega RTC amb pantalla TFT de 3,5 polzades: 4 passos
Com fer un rellotge en temps real amb pantalla Arduino i TFT | Arduino Mega RTC amb pantalla TFT de 3,5 polzades: visiteu el meu canal de Youtube. Introducció: - En aquest post vaig a fer "Rellotge en temps real" amb LCD TFT tàctil de 3,5 polzades, Arduino Mega Mòdul RTC 2560 i DS3231 … Abans de començar … comproveu el vídeo del meu canal de YouTube … Nota: - Si utilitzeu Arduin