Оглавление:

Не тратьте зря время: используйте NTP !: 8 шагов
Не тратьте зря время: используйте NTP !: 8 шагов

Видео: Не тратьте зря время: используйте NTP !: 8 шагов

Видео: Не тратьте зря время: используйте NTP !: 8 шагов
Видео: Lesprom-IT. Методические особенности ведения учета на предприятиях ЦБП 2024, Ноябрь
Anonim
Image
Image

Сделайте ваше время на счету! Эта тема часто обсуждается среди моих подписчиков, и по какой причине? Благодаря тому простому и обязательному факту, что при создании регистратора данных и для всего, что связано с автоматизацией, вам нужно точное время! И есть несколько способов измерения времени: часы с батареей, RTC (часы реального времени) и другие. Но тот, который я хочу показать вам сегодня (который сообщает дату, день недели и время), - это NTP (сетевой протокол времени), который находится в сети. В этом видео мы извлекаем информацию о дате и времени в Интернете и отображаем ее на дисплее.

Шаг 1: демонстрация

сборка
сборка

Шаг 2: Сборка

Шаг 3: Сборка - стол

Сборка - Стол
Сборка - Стол

Шаг 4: библиотека Adafruit GFX

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

В среде Arduino IDE перейдите в Sketch-> Include Library-> Manage Libraries…

Установить библиотеку Adafruit GFX

Шаг 5: библиотека Adafruit ST7735

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

В среде Arduino IDE перейдите в Sketch-> Include Library-> Manage Libraries…

Установите Adafruit ST7735

Шаг 6: библиотека NTPClient

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

Перейдите на https://github.com/taranais/NTPClient и загрузите библиотеку NTPClient, модифицированную таранаисом.

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

Шаг 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 Date {int dayOfWeek; int день; int месяц; int год; int часы; int минут; int секунды; }; // Сокет UDP, который используется для восстановления данных и синхронизации WiFiUDP udp; // Objeto Response por recuperar dados sobre horário 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); // Интервал между проверками в Интернете // Номиналы до семаны char * dayOfWeekNames = {«Воскресенье», «Понедельник», «Вторник», «Среда», «Четверг», «Пятница», «Суббота»}; // Задайте ответ на экран дисплея 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 no core 0 xTaskCreatePinnedToCore (wifiConnectionTask, // Função que será executada "wifiConnectionTask", // Nome da tarefa 10000, // Tamanho da memória disponível (em WORDs) NULL, // Não vamumos passar nen, // Prioridade NULL, // Отсутствует указание ссылки для тарифа 0); // Número do core}

НастройкаNTP

void setupNTP () {// Инициализация клиента NTP ntpClient.begin (); // Espera pelo primeiro обновить онлайн Serial.println ("Ожидание первого обновления"); в то время как (! 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) {// Если Wi-Fi не подключен, if (WiFi.status ()! = WL_CONNECTED) {// Подключить подключение к Wi-Fi (); } // Задержка на 100 тиков vTaskDelay (100); }}

ПодключитьWiFi

void connectWiFi () {Serial.println ("Подключение"); // Выполнить поиск по Wi-Fi 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 display.setRotation (3); // Ротация display.setTextSize (2); // Таманхо делать текст display.fillScreen (ST77XX_BLACK); // Начнем с правильного отображения display.setCursor (0, 0); // Цвет курсора отсутствует display.setTextColor (ST77XX_WHITE, ST77XX_BLACK); // Текстовый переводчик com fundo preto display.setTextWrap (false); // Não pula linha automaticamente}

Петля

void loop () {// Восстановить данные и время записи Date date = getDate (); // Сброс курсора display.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); задержка (100); }

GetDate

Date 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); // Отслеживание от 0 до 6, отправка 0 или возврат даты.dayOfWeek = ntpClient.getDay (); Дата возврата; }

Шаг 8: файлы

Скачайте файлы

Я НЕТ

PDF

Рекомендуемые: