Съдържание:

Не губете времето си: Използвайте NTP!: 8 стъпки
Не губете времето си: Използвайте NTP!: 8 стъпки

Видео: Не губете времето си: Използвайте NTP!: 8 стъпки

Видео: Не губете времето си: Използвайте NTP!: 8 стъпки
Видео: Active Directory Essentials: Navigating the Object Database for IT Pros 2024, Ноември
Anonim
Image
Image

Направете вашето време да се брои! Това е често обсъждана тема сред абонатите ми и по каква причина? Поради простия и незаменим факт, че когато правите регистратор на данни и за всичко, свързано с автоматизация, имате нужда от правилното време! И има няколко начина за измерване на времето: часовник с батерия, RTC (часовник в реално време), между другото. Но този, който искам да ви покажа днес (който информира дата, ден от седмицата и час) е NTP (Network Time Protocol), който е онлайн. В това видео ще извлечем информацията за датата и часа онлайн и ще покажем информацията на дисплея.

Стъпка 1: Демонстрация

Монтаж
Монтаж

Стъпка 2: Монтаж

Стъпка 3: Сглобяване - Таблица

Сглобяване - маса
Сглобяване - маса

Стъпка 4: Библиотека на Adafruit GFX

Библиотека Adafruit GFX
Библиотека Adafruit GFX

В IDE на Arduino отидете на Sketch-> Include Library-> Manage Libraries …

Инсталирайте библиотеката Adafruit GFX

Стъпка 5: Библиотека Adafruit ST7735

Библиотека Adafruit ST7735
Библиотека Adafruit ST7735

В IDE на Arduino отидете на Sketch-> Include Library-> Manage Libraries …

Инсталирайте Adafruit ST7735

Стъпка 6: Библиотека NTPClient

Библиотека NTPClient
Библиотека NTPClient

Отидете на https://github.com/taranais/NTPClient и изтеглете модифицираната от taranais библиотека NTPClient.

Разархивирайте и поставете папката в библиотеките C: / Users / Documents / Arduino

Стъпка 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 #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 ден; int месец; int година; int часове; int минути; int секунди; }; // Socket UDP que a lib utilization para recuperar dados sobre or horário WiFiUDP udp; // Отговор на обекта от рекуператорите, които са на хоризонт NTPClient ntpClient (udp, // socket udp "0.br.pool.ntp.org", // URL адресът за сървър 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 = {"неделя", "понеделник", "вторник", "сряда", "четвъртък", "петък", "събота"}; // Objeto responsável pelo display Adafruit_ST7735 display = Adafruit_ST7735 (DISPLAY_CS, DISPLAY_DC, DISPLAY_MOSI, DISPLAY_CLK, DISPLAY_RST);

Настройвам

void setup () {Serial.begin (115200); setupDisplay (); connectWiFi (); setupNTP (); // Cria uma nova tarefa без ядро 0 xTaskCreatePinnedToCore (wifiConnectionTask, // Função que será executada "wifiConnectionTask", // Номе да tarefa 10000, // Tamanho da memória disponível (em WORDs) NULL, // Não vamos paramos, // приоритет NULL, // Não precisamos de referência para a tarefa 0); // Numero do core}

Настройка на NTP

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 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 (); } // Забавяне на 100 отметки vTaskDelay (100); }}

ConnectWiFi

void connectWiFi () {Serial.println ("Свързване"); // 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 ("."); забавяне (500); } Serial.println (); Serial.print ("Свързан с"); Serial.println (WiFi. SSID ()); }

SetupDisplay

void setupDisplay () {display.initR (INITR_BLACKTAB); // Начало на дисплея display.setRotation (3); // Rotaciona display.setTextSize (2); // Tamanho do texto display.fillScreen (ST77XX_BLACK); // Preenche com a cor preta display.setCursor (0, 0); // Coloca или курсорът няма começo display.setTextColor (ST77XX_WHITE, ST77XX_BLACK); // Texto branco com fundo preto display.setTextWrap (false); // Não pula linha automaticamente}

Цикъл

void loop () {// Recupera os dados sobre a data e horário Date date = getDate (); // Рестартиране или показване на курсора.setCursor (0, 0); // Exibe os dados без дисплей 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); забавяне (100); }

GetDate

Дата getDate () {// Рекуперация на данни за данни и използване на клиентски 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 (); дата на връщане; }

Стъпка 8: Файлове

Изтеглете файловете

АЗ НЕ

PDF

Препоръчано: