Агуулгын хүснэгт:

Цагаа дэмий үрэх хэрэггүй: NTP ашиглана уу: 8 алхам
Цагаа дэмий үрэх хэрэггүй: NTP ашиглана уу: 8 алхам

Видео: Цагаа дэмий үрэх хэрэггүй: NTP ашиглана уу: 8 алхам

Видео: Цагаа дэмий үрэх хэрэггүй: NTP ашиглана уу: 8 алхам
Видео: ЗАКРИЧАЛ – ПОТЕРЯЛ ₽200.000 / ТРЭШКЭШ: Тишина 2024, Арваннэгдүгээр
Anonim
Image
Image

Цагаа тоолоорой! Энэ бол миний захиалагчдын дунд байнга яригддаг сэдэв бөгөөд ямар шалтгаанаар? Өгөгдөл бүртгэгч хийх, автоматжуулалттай холбоотой бүх зүйлд танд зөв цаг хэрэгтэй гэсэн энгийн бөгөөд зайлшгүй шаардлагатай баримтаас шалтгаалан! Цаг хэмжих хэд хэдэн арга байдаг: зайтай цаг, RTC (Real Time Clock) болон бусад. Гэхдээ өнөөдөр би танд үзүүлэхийг хүсч байгаа зүйл бол (он сар өдөр, долоо хоногийн өдөр, цагийг мэдээлдэг) бол сүлжээнд байгаа NTP (Network Time Protocol) юм. Энэ видеон дээр бид онлайнаар огноо, цагийн мэдээллийг авч, мэдээллийг дэлгэц дээр харуулах болно.

Алхам 1: Жагсаал

Чуулган
Чуулган

Алхам 2: угсрах

Алхам 3: Ассемблей - Хүснэгт

Ассемблей - Хүснэгт
Ассемблей - Хүснэгт

Алхам 4: Adafruit GFX номын сан

Adafruit GFX номын сан
Adafruit GFX номын сан

Arduino IDE дээр Sketch-> Номын санг оруулах-> Номын санг удирдах хэсэгт очно уу.

Adafruit GFX номын санг суулгана уу

Алхам 5: Adafruit ST7735 номын сан

Adafruit ST7735 номын сан
Adafruit ST7735 номын сан

Arduino IDE дээр Sketch-> Номын санг оруулах-> Номын санг удирдах хэсэгт очно уу.

Adafruit ST7735 -ийг суулгана уу

Алхам 6: NTPClient номын сан

NTPClient номын сан
NTPClient номын сан

Https://github.com/taranais/NTPClient руу орж taranais өөрчилсөн NTPClient номын санг татаж авна уу.

Фолдерыг задалж C: / Users / Documents / Arduino / library -д оруулна уу

Алхам 7: ESP32_NTP.ino

Оруулдаг ба тодорхойлдог

#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 #DISPLAY_MOSI 14 -ийг тодорхойлох // SDA #тодорхойлох DISPLAY_CLK 27 // SCK #тодорхойлох DISPLAY_RST 0 // Fuso Horário, no caso horário de verão de brãília int timeZone = -2; // Struct com os dados do dia e hora struct Огноо {int dayOfWeek; int өдөр; int сар; int жил; int цаг; int минут; int секунд; }; // Socket UDP програм нь WiFiUDP програмыг ашиглах боломжтой болно; // NTPClient ntpClient (udp, // socket udp "0.br.pool.ntp.org", // URL нь NTP цагийн бүсийн үйлчлүүлэгч*3600, // Хязгаарлагдмал цагийн хуваарьтай холбоотой). 60000); // Intervalo entre verificações online // Nomes dos dias da semana char* dayOfWeekNames = {"Ням гараг", "Даваа гариг", "Мягмар", "Лхагва", "Пүрэв", "Баасан", "Бямба гариг"}; // Objeto Respável pelo дэлгэц Adafruit_ST7735 дэлгэц = Adafruit_ST7735 (DISPLAY_CS, DISPLAY_DC, DISPLAY_MOSI, DISPLAY_CLK, DISPLAY_RST);

Тохируулах

void setup () {Serial.begin (115200); setupDisplay (); холбохWiFi (); NNTP тохиргоо (); // Cria uma nova tarefa no core 0 xTaskCreatePinnedToCore (wifiConnectionTask, // "wifiConnectionTask", // Nome da tarefa 10000, // Tamanho da memória disponível (em WORDs) NULL paramet, // não v2, // Prioridade NULL, // Não precisamos de referência para a tarefa 0); // Número do core}

NNT тохируулах

void setupNTP () {// Хэрэглэгчийн NTP ntpClient.begin (); // Espera pelo primeiro онлайн шинэчлэлт Serial.println ("Эхний шинэчлэлтийг хүлээж байна"); while (! ntpClient.update ()) {Serial.print ("."); ntpClient.forceUpdate (); саатал (500); } Serial.println (); Serial.println ("Эхний шинэчлэлт дууссан"); }

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 хачигыг хойшлуулах vTaskDelay (100); }}

Wi -Fi холбоно уу

хүчингүй connectWiFi () {Serial.println ("Холбогдож байна"); // WiFi WiFi.begin ("SSID", "12345678"); // Espera enquanto não estiver conectado while (WiFi.status ()! = WL_CONNECTED) {Serial.print ("."); саатал (500); } Serial.println (); Serial.print ("Холбогдсон"); Serial.println (WiFi. SSID ()); }

Дэлгэцийг тохируулах

void setupDisplay () {display.initR (INITR_BLACKTAB); // Invisioniza o display display.setRotation (3); // Rotaciona display.setTextSize (2); // Тамано текст бичих дэлгэц.fillScreen (ST77XX_BLACK); // Preenche com a pret preta display.setCursor (0, 0); // Coloca o cursor no cameo display.setTextColor (ST77XX_WHITE, ST77XX_BLACK); // Texto branco com fundo preto display.setTextWrap (худал); // Não pula linha automaticamente}

Гогцоо

void loop () {// Recupera os dados sobre a data e horário Огноо огноо = getDate (); // Reseta o cursor display.setCursor (0, 0); // Exibe os dados display display байхгүй.printf (" %s / n / n %s / n / n %02d/ %02d/ %d / n / n %02d: %02d: %02d", WiFi. SSID ().c_str (), dayOfWeekNames [огноо. өдөрOfWeek], огноо. өдөр, огноо.сард, огноо.жил, огноо.цаг, огноо.минут, огноо.секунд); саатал (100); }

GetDate

Огноо getDate () {// Хэрэглэгчийн NTP char* strDate = (char*) ntpClient.getFormattedDate (). C_str (); // Passa os dados da string para a struct Огноо огноо; 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 (); буцах огноо; }

Алхам 8: Файлууд

Файлуудыг татаж авах

INO

PDF

Зөвлөмж болгож буй: