תוכן עניינים:

אל תבזבז את הזמן: השתמש ב- NTP !: 8 שלבים
אל תבזבז את הזמן: השתמש ב- NTP !: 8 שלבים

וִידֵאוֹ: אל תבזבז את הזמן: השתמש ב- NTP !: 8 שלבים

וִידֵאוֹ: אל תבזבז את הזמן: השתמש ב- NTP !: 8 שלבים
וִידֵאוֹ: תפסיק לדחות דברים - אל תבזבז לעצמך את הזמן 2024, נוֹבֶמבֶּר
Anonim
Image
Image

הפוך את הזמן שלך לספור! זהו נושא שנדון בתדירות גבוהה בקרב המנויים שלי, ומאיזו סיבה? בשל העובדה הפשוטה והחיונית שכאשר אתה מבצע נתוני לוגים ולכל מה שקשור לאוטומציה, אתה צריך את הזמן הנכון! וישנן מספר דרכים למדידת זמן: שעון עם סוללה, RTC (שעון בזמן אמת), בין היתר. אבל זה שאני רוצה להראות לך היום (המודיע תאריך, יום בשבוע ושעה) הוא ה- NTP (Network Time Protocol), שהוא מקוון. בסרטון זה, אנו נאסוף את המידע על התאריך והשעה באופן מקוון ונציג את המידע בתצוגה.

שלב 1: הפגנה

הַרכָּבָה
הַרכָּבָה

שלב 2: הרכבה

שלב 3: הרכבה - שולחן

הרכבה - שולחן
הרכבה - שולחן

שלב 4: ספריית GFX של Adafruit

ספריית GFX של Adafruit
ספריית GFX של Adafruit

ב- IDE של Arduino, עבור אל סקיצה-> כלול ספרייה-> נהל ספריות …

התקן את ספריית AdFruit GFX

שלב 5: ספריית Adafruit ST7735

ספריית Adafruit ST7735
ספריית Adafruit ST7735

ב- IDE של Arduino, עבור אל סקיצה-> כלול ספרייה-> נהל ספריות …

התקן את Adafruit ST7735

שלב 6: ספריית NTPClient

ספריית NTPClient
ספריית NTPClient

עבור אל https://github.com/taranais/NTPClient והורד את ספריית NTPClient ששונתה על ידי taranais.

פתח את המקבץ והכנס את התיקייה ל- 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 com os dados do dia e hora struct תאריך {int dayOfWeek; יום int; חודש int; שנה int; שעות int; דקות int; int שניות; }; // Socket UDP que a lib utiliza for a recuperar dados sobre o 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);

להכין

הגדרת חלל () {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 vamos passar nenhum param, // prioridade NULL, // Não precisamos de referência para a tarefa 0); // Numero do core}

SetupNTP

הגדרת voidNTP () {// הרשמה ללקוח NTP ntpClient.begin (); // עדכון Espera pelo primeiro מקוון Serial.println ("מחכה לעדכון ראשון"); while (! ntpClient.update ()) {Serial.print ("."); ntpClient.forceUpdate (); עיכוב (500); } Serial.println (); Serial.println ("העדכון הראשון הושלם"); }

משימה WifiConnection

// Tarefa que verifica se a conexão caiu e tenta reconectarvoid wifiConnectionTask (void* param) {while (true) {// Se a WiFi não estect conectada if (WiFi.status ()! = WL_CONNECTED) {// Manda conectar connectWiFi (); } // Delay de 100 ticks 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 ()); }

תצוגת Setup

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 cursor no começo 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 (); // הגדר מחדש את הסמן 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 () {// שחזור הנתונים שלנו וההוראות של הלקוח 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

מוּמלָץ: