สารบัญ:

อย่าเสียเวลา: ใช้ NTP!: 8 ขั้นตอน
อย่าเสียเวลา: ใช้ NTP!: 8 ขั้นตอน

วีดีโอ: อย่าเสียเวลา: ใช้ NTP!: 8 ขั้นตอน

วีดีโอ: อย่าเสียเวลา: ใช้ NTP!: 8 ขั้นตอน
วีดีโอ: ปัญหาเวลาไม่ตรง Windows 10 ด้วย Net Time (NTP) 2024, กรกฎาคม
Anonim
Image
Image

ทำให้เวลาของคุณมีค่า! นี่เป็นหัวข้อที่มีการพูดคุยกันบ่อยในหมู่สมาชิกของฉัน และด้วยเหตุผลอะไร? เนื่องจากข้อเท็จจริงที่เรียบง่ายและขาดไม่ได้ที่ว่าเมื่อคุณสร้างดาต้าล็อกเกอร์ และสำหรับทุกอย่างที่เกี่ยวข้องกับระบบอัตโนมัติ คุณต้องใช้เวลาที่ถูกต้อง! และมีหลายวิธีในการวัดเวลา: นาฬิกาพร้อมแบตเตอรี่, RTC (Real Time Clock) เป็นต้น แต่สิ่งที่ฉันต้องการแสดงให้คุณเห็นในวันนี้ (ซึ่งแจ้งวันที่ วันในสัปดาห์ และเวลา) คือ NTP (Network Time Protocol) ซึ่งออนไลน์อยู่ ในวิดีโอนี้ เราจะเรียกข้อมูลวันที่และเวลาทางออนไลน์ และแสดงข้อมูลบนหน้าจอ

ขั้นตอนที่ 1: การสาธิต

การประกอบ
การประกอบ

ขั้นตอนที่ 2: การประกอบ

ขั้นตอนที่ 3: การประกอบ - Table

การประกอบ - ตาราง
การประกอบ - ตาราง

ขั้นตอนที่ 4: ห้องสมุด Adafruit GFX

ห้องสมุด Adafruit GFX
ห้องสมุด Adafruit GFX

ใน Arduino IDE ให้ไปที่ Sketch->Include Library->Manage Libraries …

ติดตั้ง Adafruit GFX Library

ขั้นตอนที่ 5: ห้องสมุด Adafruit ST7735

ห้องสมุดอดาฟรุต ST7735
ห้องสมุดอดาฟรุต ST7735

ใน Arduino IDE ให้ไปที่ Sketch->Include Library->Manage Libraries …

ติดตั้ง Adafruit ST7735

ขั้นตอนที่ 6: ห้องสมุด NTPClient

ห้องสมุด NTPClient
ห้องสมุด NTPClient

ไปที่ https://github.com/taranais/NTPClient และดาวน์โหลด taranais-modified NTPClient library

เปิดเครื่องรูดและใส่โฟลเดอร์ใน C:\Users\Documents\Arduino\libraries

ขั้นตอนที่ 7: ESP32_NTP.ino

รวมและกำหนด

#include #include //Biblioteca NTPClient modificada #include //Socket UDP #include //Display #include //Display #include // Pinos ทำ 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 ไม่มี caso horário de verão de Brasília int timeZone = -2; //โครงสร้าง com os dados ทำ dia e hora struct วันที่ { int dayOfWeek; วัน int; เดือน int; ปี int; ชั่วโมง int; int นาที; int วินาที; }; //Socket UDP เรียกใช้ lib utiliza para recuperar dados sobre o horário WiFiUDP udp; //Objeto responsável 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); //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);

ติดตั้ง

การตั้งค่าเป็นโมฆะ () { Serial.begin (115200); setupDisplay(); เชื่อมต่อ WiFi(); ตั้งค่าNTP(); //Cria uma nova tarefa ไม่มีคอร์ 0 xTaskCreatePinnedToCore(wifiConnectionTask, //Função que será executada "wifiConnectionTask", //Nome da tarefa 10000, //Tamanho da memória disponível (em WORDs) NULL, //Nãon vamos passar, //prioridade NULL, //Não precisamos de referência สำหรับ tarefa 0); //ตัวเลขหลัก }

ตั้งค่าNTP

ถือเป็นโมฆะ setupNTP(){ //Inicializa o client 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); } }

เชื่อมต่อ WiFi

เป็นโมฆะ 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 () { display.initR (INITR_BLACKTAB); //Inicializa o แสดง display.setRotation(3); //Rotaciona display.setTextSize(2); //Tamanho ทำ texto display.fillScreen(ST77XX_BLACK); //Preenche com และ preta display.setCursor(0, 0); //Coloca o เคอร์เซอร์ไม่มี começo display.setTextColor(ST77XX_WHITE, ST77XX_BLACK); // Texto branco com fundo preto display.setTextWrap (เท็จ); //หนาว ปูลา ลินฮา ออโตเมติค }

ห่วง

วงเป็นโมฆะ () { //Recupera os dados sobre a data e horário Date date = getDate (); //รีเซ็ตเคอร์เซอร์หรือ display.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(){ //Recupera os dados de data e horário usando o client NTP char* strDate = (char*)ntpClient.getFormattedDate().c_str(); //Passa os dados da string สำหรับ 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 จาก 0 a 6, sendo 0 o domingo date.dayOfWeek = ntpClient.getDay(); วันที่กลับ; }

ขั้นตอนที่ 8: ไฟล์

ดาวน์โหลดไฟล์

ฉันไม่

ไฟล์ PDF

แนะนำ: