Πίνακας περιεχομένων:

Μην σπαταλάτε το χρόνο σας: Χρησιμοποιήστε NTP!: 8 βήματα
Μην σπαταλάτε το χρόνο σας: Χρησιμοποιήστε NTP!: 8 βήματα

Βίντεο: Μην σπαταλάτε το χρόνο σας: Χρησιμοποιήστε NTP!: 8 βήματα

Βίντεο: Μην σπαταλάτε το χρόνο σας: Χρησιμοποιήστε NTP!: 8 βήματα
Βίντεο: Σπαταλούμε το χρόνο μας σε ανούσιες γνωριμίες; 2024, Νοέμβριος
Anonim
Image
Image

Κάνε τον χρόνο σου να μετράει! Αυτό είναι ένα θέμα που συζητείται συχνά μεταξύ των συνδρομητών μου και για ποιο λόγο; Λόγω του απλού και απαραίτητου γεγονότος ότι όταν φτιάχνετε έναν καταγραφικό δεδομένων και για οτιδήποτε περιλαμβάνει αυτοματοποίηση, χρειάζεστε τον σωστό χρόνο! Και υπάρχουν διάφοροι τρόποι μέτρησης του χρόνου: ρολόι με μπαταρία, RTC (Ρολόι πραγματικού χρόνου), μεταξύ άλλων. Αλλά αυτό που θέλω να σας δείξω σήμερα (το οποίο ενημερώνει την ημερομηνία, την εβδομάδα και την ώρα) είναι το NTP (Network Time Protocol), το οποίο είναι online. Σε αυτό το βίντεο, θα ανακτήσουμε τις πληροφορίες ημερομηνίας και ώρας στο διαδίκτυο και θα εμφανίσουμε τις πληροφορίες στην οθόνη.

Βήμα 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 και κάντε λήψη της τροποποιημένης με 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 Ημερομηνία {int dayOfWeek; int ημέρα? int μήνα? int έτος? int ώρες? int λεπτά? int δευτερόλεπτα? }; // Υποδοχή UDP που χρησιμοποιεί μια υπηρεσία για την ανάκτηση του αρχείου σας μέσω WiFiUDP udp; // Objeto responsável for 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 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 no core 0 xTaskCreatePinnedToCore (wifiConnectionTask, // Função que será executiveada "wifiConnectionTask", // Nome da tarefa 10000, // Tamanho da memória disponível (em WORDs) NULam parametre, N2l, // 2, // prioridade NULL, // Não precisamos de referência para a tarefa 0); // Número do core}

SetupNTP

void setupNTP () {// Inicializa ή client NTP ntpClient.begin (); // Espera pelo primeiro update online 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 (); } // 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 ()); }

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 cursor no 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 (); // Reseta o cursor 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

Ημερομηνία getDate () {// Recupera os dados de data and horário usando or client or 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: Αρχεία

Κατεβάστε τα αρχεία

ΕΓΩ ΔΕΝ

PDF

Συνιστάται: