Mục lục:

Đừng lãng phí thời gian của bạn: Sử dụng NTP!: 8 bước
Đừng lãng phí thời gian của bạn: Sử dụng NTP!: 8 bước

Video: Đừng lãng phí thời gian của bạn: Sử dụng NTP!: 8 bước

Video: Đừng lãng phí thời gian của bạn: Sử dụng NTP!: 8 bước
Video: Thời Gian Rảnh Sinh Ra Số Phận | Tri Kỷ Cảm Xúc Web5ngay 2024, Tháng mười một
Anonim
Image
Image

Làm cho thời gian của bạn có giá trị! Đây là một chủ đề được thảo luận thường xuyên giữa những người đăng ký của tôi, và vì lý do gì? Do một thực tế đơn giản và tất yếu là khi bạn tạo một datalogger và cho mọi thứ liên quan đến tự động hóa, bạn cần có thời gian chính xác! Và có một số cách để đo thời gian: đồng hồ có pin, RTC (Đồng hồ thời gian thực), trong số những cách khác. Nhưng cái mà tôi muốn cho bạn xem hôm nay (thông báo ngày, thứ trong tuần và giờ) là NTP (Network Time Protocol), trực tuyến. Trong video này, chúng tôi sẽ truy xuất thông tin ngày và giờ trực tuyến và hiển thị thông tin trên màn hình.

Bước 1: Trình diễn

cuộc họp
cuộc họp

Bước 2: Lắp ráp

Bước 3: Lắp ráp - Bảng

Bàn lắp ráp
Bàn lắp ráp

Bước 4: Thư viện Adafruit GFX

Thư viện GFX Adafruit
Thư viện GFX Adafruit

Trong Arduino IDE, đi tới Sketch-> Bao gồm Thư viện-> Quản lý Thư viện…

Cài đặt Thư viện GFX Adafruit

Bước 5: Thư viện Adafruit ST7735

Thư viện Adafruit ST7735
Thư viện Adafruit ST7735

Trong Arduino IDE, đi tới Sketch-> Bao gồm Thư viện-> Quản lý Thư viện…

Cài đặt Adafruit ST7735

Bước 6: Thư viện NTPClient

Thư viện NTPClient
Thư viện NTPClient

Truy cập https://github.com/taranais/NTPClient và tải xuống thư viện NTPClient đã được sửa đổi taranais.

Giải nén và đưa thư mục vào thư viện C: / Users / Documents / Arduino

Bước 7: ESP32_NTP.ino

Bao gồm và xác định

#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, không có 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 ngày; int tháng; int năm; int giờ; int phút; int giây; }; // Socket UDP que a lib useiza para recuperar dados sobre o horário WiFiUDP udp; // Objeto responseável bởi 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 trực tuyến // Nomes dos dias da semana char * dayOfWeekNames = {"Chủ nhật", "Thứ Hai", "Thứ Ba", "Thứ Tư", "Thứ Năm", "Thứ Sáu", "Thứ Bảy"}; // Objeto responseável pelo display Adafruit_ST7735 display = Adafruit_ST7735 (DISPLAY_CS, DISPLAY_DC, DISPLAY_MOSI, DISPLAY_CLK, DISPLAY_RST);

Cài đặt

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

SetupNTP

void setupNTP () {// Inicializa o client NTP ntpClient.begin (); // Cập nhật Espera pelo primeiro trực tuyến Serial.println ("Đang chờ bản cập nhật đầu tiên"); while (! ntpClient.update ()) {Serial.print ("."); ntpClient.forceUpdate (); chậm trễ (500); } Serial.println (); Serial.println ("Hoàn thành bản cập nhật đầu tiên"); }

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 (); } // Delay de 100 ve vTaskDelay (100); }}

ConnectWiFi

void connectWiFi () {Serial.println ("Đang kết nối"); // Troque pelo nome e senha da sua red WiFi WiFi.begin ("SSID", "12345678"); // Espera enquanto não estiver conectado while (WiFi.status ()! = WL_CONNECTED) {Serial.print ("."); chậm trễ (500); } Serial.println (); Serial.print ("Đã kết nối với"); 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 a cor preta display.setCursor (0, 0); // Coloca o con trỏ không começo display.setTextColor (ST77XX_WHITE, ST77XX_BLACK); // Texto cámco com fundo preto display.setTextWrap (false); // Não pula linha automaticamente}

Vòng

void loop () {// Recupera os dados sobre a data e horário Date date = getDate (); // Đặt lại con trỏ display.setCursor (0, 0); // Exibe os dados không có màn hình 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); chậm trễ (100); }

Hẹn gặp

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 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 (); ngày trở lại; }

Bước 8: Tập tin

Tải xuống các tệp

NS

PDF

Đề xuất: