Kazalo:

Ne zapravljajte časa: uporabite NTP!: 8 korakov
Ne zapravljajte časa: uporabite NTP!: 8 korakov

Video: Ne zapravljajte časa: uporabite NTP!: 8 korakov

Video: Ne zapravljajte časa: uporabite NTP!: 8 korakov
Video: ВЫ ЗАБУДЕТЕ про ЧЕБУРЕКИ! НЕ УСТАЮ ИХ Готовить! Быстрые ЛЕПЕШКИ в Духовке! Готовим Дома 2024, November
Anonim
Image
Image

Naj se vaš čas šteje! To je tema, o kateri moji naročniki pogosto razpravljajo, in iz katerega razloga? Zaradi preprostega in nepogrešljivega dejstva, da pri izdelavi zapisovalnika podatkov in za vse, kar vključuje avtomatizacijo, potrebujete pravilen čas! Obstaja več načinov za merjenje časa: ura z baterijo, RTC (ura realnega časa), med drugim. Toda tisti, ki vam ga želim pokazati danes (ki obvešča datum, dan v tednu in čas), je NTP (Network Time Protocol), ki je na spletu. V tem videoposnetku bomo na spletu pridobili podatke o datumu in času ter podatke prikazali na zaslonu.

1. korak: demonstracija

Montaža
Montaža

2. korak: Montaža

3. korak: Montaža - miza

Montaža - miza
Montaža - miza

4. korak: Knjižnica Adafruit GFX

Knjižnica Adafruit GFX
Knjižnica Adafruit GFX

V Arduino IDE pojdite na Sketch-> Include Library-> Manage Libraries …

Namestite knjižnico Adafruit GFX

5. korak: Knjižnica Adafruit ST7735

Knjižnica Adafruit ST7735
Knjižnica Adafruit ST7735

V Arduino IDE pojdite na Sketch-> Include Library-> Manage Libraries …

Namestite Adafruit ST7735

6. korak: Knjižnica NTPClient

Knjižnica NTPClient
Knjižnica NTPClient

Pojdite na https://github.com/taranais/NTPClient in prenesite knjižnico NTPClient, spremenjeno s taranaisom.

Razpakirajte in mapo postavite v knjižnice C: / Users / Documents / Arduino

7. korak: ESP32_NTP.ino

Vključuje in opredeljuje

#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; // Struct com os dados do dia e hora struct Date {int dayOfWeek; int dan; int mesec; int leto; int ure; int minute; int sekunde; }; // Socket UDP que a lib utilization para recuperar dados sobre or horário WiFiUDP udp; // Objekt odziven na recuperar dados sobre horário NTPClient ntpClient (udp, // vtičnica udp "0.br.pool.ntp.org", // URL za strežnik 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 = {"nedelja", "ponedeljek", "torek", "sreda", "četrtek", "petek", "sobota"}; // Objeto responvel pelo display Adafruit_ST7735 display = Adafruit_ST7735 (DISPLAY_CS, DISPLAY_DC, DISPLAY_MOSI, DISPLAY_CLK, DISPLAY_RST);

Nastaviti

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

NastavitevNTP

void setupNTP () {// Inicializacijo odjemalca NTP ntpClient.begin (); // posodobitev Espera pelo primeiro na spletu Serial.println ("Čakanje na prvo posodobitev"); while (! ntpClient.update ()) {Serial.print ("."); ntpClient.forceUpdate (); zamuda (500); } Serial.println (); Serial.println ("Prva posodobitev dokončana"); }

WifiConnectionTask

// Tarefa que verifica is 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 (); } // Zamuda za 100 klopov vTaskDelay (100); }}

ConnectWiFi

void connectWiFi () {Serial.println ("Povezovanje"); // 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 ("."); zamuda (500); } Serial.println (); Serial.print ("Povezano z"); Serial.println (WiFi. SSID ()); }

SetupDisplay

void setupDisplay () {display.initR (INITR_BLACKTAB); // Inicializa o zaslonu display.setRotation (3); // Rotaciona display.setTextSize (2); // Tamanho do texto display.fillScreen (ST77XX_BLACK); // Preenche com a cor preta display.setCursor (0, 0); // Coloca o kurzorju brez prihajajočega prikaza.setTextColor (ST77XX_WHITE, ST77XX_BLACK); // Texto branco com fundo preto display.setTextWrap (false); // Não pula linha automaticamente}

Zanka

void loop () {// Recupera os dados sobre a data e horário Date date = getDate (); // Ponastavi prikaz kurzorja.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); zamuda (100); }

GetDate

Datum getDate () {// Recupera os dados de data and horário usando o NTP char* strDate = (char*) ntpClient.getFormattedDate (). C_str (); // Passa os dados da string para a struct Date date; 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 (); datum vračila; }

8. korak: Datoteke

Prenesite datoteke

JAZ NE

PDF

Priporočena: