Kellaajast sõltuva IoT-projekti koostamisel soovite, et see näitaks õiget aega ilma käsitsi reguleerimist vajamata. Näib, et ESP32-ga oleks seda lihtne teha, kuna sellel on sisseehitatud traadita side ja see saab Interneti-ühenduse luua.
Siiski on palju veebipõhiseid näiteid, mis näitavad, kuidas konfigureerida ESP32 Interneti-ühenduse loomiseks ja kellaaja sünkroonimiseks ajaga. serveris, enamik neist nõuavad suveaja käsitsi reguleerimist kaks korda aastas, mis tundub iga 21. sajandi elektroonika jaoks üsna naeruväärne. seade.
Siin tutvustame teile lahendust, mis võimaldab ESP32-l aastaringselt näidata õiget aega mis tahes kohas maailmas. Kuid kõigepealt vaatame SimpleTime'i näidet Arduino IDE-s ja vaatame, mida see teeb ja kuidas saaksime seda paremaks muuta.
SimpleTime näide
Kui kasutate Arduino IDE-d koos ESP32-ga, leiate, et sellel on näide nimega Lihtne aeg see näeb välja selline:
Sellele näitele pääsete juurde, konfigureerides Arduino IDE ESP32 plaadi kasutamiseks Tööriistad menüüst, näiteks valides
ESP32 arendusmoodul. Kui olete seda teinud, pääsete SimpleTime'i näitele juurde lehelt Tööriistad menüü all Näited,ESP32,aeg, ja Lihtne aeg.Võib eeldada, et see ametlik näide näitab asjade parimat toimimisviisi, kuid selles näites on üks suur probleem. Ajavööndi ja suveaja konfigureerimiseks peate muutma kahte järgmist rida:
const pikk gmtOffset_sec = 3600;
const int daylightOffset_sec = 3600;
Ajavööndi määramine kasutades gmtOffset_sec on ebamugav, kuna peate leidma oma asukoha GMT nihke. Seda saate teha konsulteerides Greenwichi aja veebisait. Õnneks peate seda tegema ainult üks kord. The päevavalgusOffset_sec kujutab endast siiski suuremat probleemi, kuna peate seda kaks korda aastas kohandama. See võib nõuda teie projekti mahavõtmist ja selle ühendamist Arduino IDE-ga kaks korda aastas, muutes selle täiesti sobimatuks asjade Interneti-projekti jaoks, mida soovite seadistada ja unustada.
Otsin paremat lähenemist
Mis oleks siis parem viis ajavööndi ja suveaja seadistamiseks? Sellele küsimusele vastamiseks vaadake, kuidas teie Windowsi arvuti olukorraga tegeleb.
Pange tähele, kuidas selle asemel, et anda talle ajalisi nihkeid GMT-st, ütleme Windowsile, mis on meie ajavöönd ja asukoht – meie puhul Mägi aeg (USA ja Kanada)-ja seejärel märkige ruut Reguleerige kella automaatselt suveajale. Sellest hetkest alates haldab Windows seda meie eest aastaringselt automaatselt. Just sellist mugavust me oma ESP32-lt tahame.
Seotud: Süsteemisalve kella kohandamine Windowsis
Asukohaandmebaasi loomine ESP32 jaoks
Sama asja tegemine ESP32-ga nõuab jalatööd. alustasime a-ga ajaveebi postitus mis kirjeldas ajavööndi seadistamist keskkonnamuutuja TZ abil. Meie asukoha kohta juhtus nii MST7MDT, M3.2.0, M11.1.0, selle järgi ajavööndi tabel. Kuigi see lahendas probleemi, mis tuleneb suveaja käsitsi reguleerimisest, tahtsime protsess oleks lihtsam, ilma et oleks vaja otsida iga jaoks numbrite ja tähtede jada asukoht.
Teisendasime veebisaidilt saadud andmed andmebaasiks, mida saate kasutada otse oma Arduino visanditest. Jälgi see link ZIP-faili otse allalaadimiseks koos Arduino visandiga.
Andmebaas ise salvestatakse faili time_zone.h. Andmebaasi kasutades näeb SimpleTime'i kood välja järgmine:
Oleme SimpleTime'i näite muudatused esile tõstnud kollase värviga. See rida võimaldab visandil kasutada andmebaasi:
#include "time_zones.h"
See rida konfigureerib teie asukoha:
const char* asukoht = "Ameerika/Denver";
Võimalikke asukohti on 461. Saadaolevad kohad leiate, kui vaatate time_zone.h faili või vaadates ajavööndi loendit sellel veebisaidil.
Lõpuks käsib järgmine rida ESP32-l sünkroonida kellaaeg Interneti-serveriga, kasutades võrguajaprotokolli (NTP):
configTimeWithTz (getTzByLocation (asukoht), ntpServer);
Konkreetset Interneti-ajaserverit saab konfigureerida järgmise rea abil, kuigi vaikeseade peaks teie jaoks hästi toimima:
const char* ntpServer = "pool.ntp.org";
Samuti soovite kindlasti lisada teabe oma traadita pääsupunkti kohta kahele järgmisele reale.
const char* ssid = "TEIE_SSID";
const char* parool = "TEIE_PASS";
Asenda TEIE_SSID oma traadita võrgu nimega ja TEIE_PASS sellega ühenduse loomiseks kasutatud parooliga.
Seotud: Traadita ruuteri avalikuks pöörduspunktiks turvalise konfigureerimise viisid
Lõpetamine
Kui olete seadistamise etapid lõpetanud, laadige eskiis ESP32-sse ja see kasutab õiget aega aastaringselt ilma sekkumiseta!
Kuigi see kood annab teile hea lähtepunkti, on sama asja saavutamiseks kasutajasõbralikumaid viise. Näiteks võiksite lubada kasutajal veebilehelt kõike konfigureerida, mitte lasta seda teha kompileerimise ajal. See on palju rohkem tööd, kuna peate oma Arduino visandis tegema järgmisi asju:
- Konfigureerige ESP32 traadita pääsupunktiks esialgseks konfigureerimiseks
- Käivitage veebiserver, et esitada kasutajale konfiguratsioonileht
- Looge HTML-vorm, mis võimaldab kasutajal sisestada traadita võrgu teavet ja valida oma asukoha
- Looge kood kasutaja valikute töötlemiseks ja salvestage see püsimällu
- Parda sisselülitamisel:
- Lugege konfiguratsiooni püsimälust
- Ühendage traadita võrguga ja sünkroonige kellaaeg
Projekt, mis näitab neid samme, on ESP32 Dali kell. Just see projekt ajendas meid leidma parema viisi aja sünkroonimiseks ESP32-s.
Tutvuge lähtekood ESP32 Dali kella jaoks, et näha, kuidas kuvada täisfunktsionaalne veebikonfiguratsioonileht. Konfiguratsioonilehel kuvatakse rippmenüü, mis võimaldab kasutajal valida oma asukoha ja ajavööndi ning Samuti võimaldab kasutajal aega käsitsi seadistada, kasutades kella- ja kalendrividinat, kui see pole ühendatud alternatiiv!
Asukohapõhine võrguaja sünkroonimine ESP32-l
Nüüd on teil kogu teave, mida vajate, et saaksite ESP32 kella automaatselt õigele ajale seada ja kohandada seda ka suveajale. See sobib suurepäraselt asjade Interneti-projektide jaoks, mida te ei soovi käsitsi kohandada.
Kui otsite ESP32-ga huvitavaid projekte, olete õiges kohas.
Loe edasi
- DIY
- ESP32
- Asjade Internet
![](/f/493f26bf67e91b53fb3a590aac5b80ce.jpg)
Olen tegija, kelle erihuvi on avatud lähtekoodiga tarkvara, elektroonika, 3D-printimine, arvutigraafika ja retroarvutus.
Liituge meie uudiskirjaga
Liituge meie uudiskirjaga tehniliste näpunäidete, arvustuste, tasuta e-raamatute ja eksklusiivsete pakkumiste saamiseks!
Tellimiseks klõpsake siin