Tartalomjegyzék:

Ne vesztegesse az idejét: használja az NTP -t !: 8 lépés
Ne vesztegesse az idejét: használja az NTP -t !: 8 lépés

Videó: Ne vesztegesse az idejét: használja az NTP -t !: 8 lépés

Videó: Ne vesztegesse az idejét: használja az NTP -t !: 8 lépés
Videó: Бесшумное zigbee реле в подрозетник без нулевой линии, особенности монтажа, установка конденсатора 2024, November
Anonim
Image
Image

Számolja ki az idejét! Ez az előfizetőim körében gyakran vitatott téma, és miért? Annak az egyszerű és nélkülözhetetlen ténynek köszönhetően, hogy amikor adatgyűjtőt készít, és minden, ami automatizálással jár, a megfelelő időre van szüksége! Az idő mérésére pedig többféle módszer létezik: óra akkumulátorral, RTC (valós idejű óra), többek között. De amit ma meg akarok mutatni (amely tájékoztatja a dátumot, a hét napját és az időt), az az NTP (Network Time Protocol), amely online. Ebben a videóban lekérjük a dátumot és az időt az interneten, és megjelenítjük az információkat a kijelzőn.

1. lépés: Demonstráció

Összeszerelés
Összeszerelés

2. lépés: Összeszerelés

3. lépés: Összeszerelés - táblázat

Összeszerelés - táblázat
Összeszerelés - táblázat

4. lépés: Adafruit GFX könyvtár

Adafruit GFX könyvtár
Adafruit GFX könyvtár

Az Arduino IDE-ben lépjen a Vázlat-> Könyvtár bevonása-> Könyvtárak kezelése…

Telepítse az Adafruit GFX könyvtárat

5. lépés: Adafruit ST7735 könyvtár

Adafruit ST7735 könyvtár
Adafruit ST7735 könyvtár

Az Arduino IDE-ben lépjen a Vázlat-> Könyvtár bevonása-> Könyvtárak kezelése menüpontba …

Telepítse az Adafruit ST7735 -öt

6. lépés: NTPClient Library

NTPClient könyvtár
NTPClient könyvtár

Nyissa meg a https://github.com/taranais/NTPClient oldalt, és töltse le a taranais által módosított NTPClient könyvtárat.

Csomagolja ki és helyezze a mappát a C: / Users / Documents / Arduino / könyvtárakba

7. lépés: ESP32_NTP.ino

Tartalmazza és határozza meg

#include #include // Biblioteca NTPClient modificada #include // Socket UDP #include // Display #include // Display #include // Pinos do display #define DISPLAY_DC 12 // A0 #define DISPLAY_CS 13 // CS #define DISPLAY_MOSI 14 // SDA #define DISPLAY_CLK 27 // SCK #define DISPLAY_RST 0 // Fuso Horário, no caso horário de verão de Brasília int timeZone = -2; // Struktúra com os dados do dia e hora szerkezet Dátum {int dayOfWeek; int nap; int hónap; int év; int óra; int perc; int másodperc; }; // Socket UDP que a lib utiliza para recuperar dados sobre o horário WiFiUDP udp; // Objeto vastus at recuperar dados sobre horário NTPClient ntpClient (udp, // socket udp "0.br.pool.ntp.org", // URL do servwer NTP timeZone*3600, // Deslocamento do horário em relacão ao GMT 0 60000); // Intervalo entre verificações online // Nomes dos dias da semana char* dayOfWeekNames = {"vasárnap", "hétfő", "kedd", "szerda", "csütörtök", "péntek", "szombat"}; // Objeto responseável pelo display Adafruit_ST7735 display = Adafruit_ST7735 (DISPLAY_CS, DISPLAY_DC, DISPLAY_MOSI, DISPLAY_CLK, DISPLAY_RST);

Beállít

void setup () {Serial.begin (115200); setupDisplay (); connectWiFi (); setupNTP (); // Cria uma nova tarefa no core 0 xTaskCreatePinnedToCore (wifiConnectionTask, // Função que será executab "wifiConnectionTask", // Nome da tarefa 10000, // Tamanho da memória disponível (em WORDs) NULL, // Não vamos pass, // prioridade NULL, // Não precisamos de referência para a tarefa 0); // Número do core}

SetupNTP

void setupNTP () {// Inicializa vagy kliens NTP ntpClient.begin (); // Espera pelo primeiro update online Serial.println ("Várakozás az első frissítésre"); while (! ntpClient.update ()) {Serial.print ("."); ntpClient.forceUpdate (); késleltetés (500); } Sorozat.println (); Serial.println ("Az első frissítés befejeződött"); }

WifiConnectionTask

// Tarefa que verifica se a conexão caiu e tenta reconectarvoid wifiConnectionTask (void* param) {while (true) {// Se a WiFi não está conectada if (WiFi.status ()! = WL_CONNECTED) {// Manda conectar connectWiFi (); } // 100 kullancs késleltetése vTaskDelay (100); }}

ConnectWiFi

void connectWiFi () {Serial.println ("Csatlakozás"); // Troque pelo nome e senha da sua rede WiFi WiFi.begin ("SSID", "12345678"); // Espera enquanto não estiver conectado while (WiFi.status ()! = WL_CONNECTED) {Serial.print ("."); késleltetés (500); } Sorozat.println (); Serial.print ("Csatlakoztatva"); Serial.println (WiFi. SSID ()); }

SetupDisplay

void setupDisplay () {display.initR (INITR_BLACKTAB); // Inicializa o display display.setRotation (3); // Rotaciona display.setTextSize (2); // Tamanho do texto display.fillScreen (ST77XX_BLACK); // Preenche com pre cor display. SetCursor (0, 0); // Coloca vagy kurzor nem jön display.setTextColor (ST77XX_WHITE, ST77XX_BLACK); // Texto branco com fundo preto display.setTextWrap (false); // Não pula linha automaticamente}

Hurok

void loop () {// Recupera os dados sobre a data e horário Dátum dátuma = getDate (); // A kurzor megjelenítésének visszaállítása.setCursor (0, 0); // Exibe os dados no display display.printf (" %s / n / n %s / n / n %02d/ %02d/ %d / n / n %02d: %02d: %02d", WiFi. SSID ().c_str (), dayOfWeekNames [date.dayOfWeek], date.day, date.month, date.year, date.hours, date.minutes, date.seconds); késleltetés (100); }

GetDate

Date getDate () {// Recupera os dados de data e horário usando o client NTP char* strDate = (char*) ntpClient.getFormattedDate (). C_str (); // Passa os dados da string para a structure Dátum dátum; sscanf (strDate, "%d-%d-%dT%d:%d:%dZ", & date.year, & date.month, & date.day, & date.hours, & date.minutes, & date.seconds); // Dia da semana de 0 a 6, sendo 0 o domingo date.dayOfWeek = ntpClient.getDay (); visszatérítési dátum; }

8. lépés: Fájlok

Töltse le a fájlokat

ÉN NEM

PDF

Ajánlott: