Inhaltsverzeichnis:

Verschwenden Sie keine Zeit: Verwenden Sie NTP! - Gunook
Verschwenden Sie keine Zeit: Verwenden Sie NTP! - Gunook

Video: Verschwenden Sie keine Zeit: Verwenden Sie NTP! - Gunook

Video: Verschwenden Sie keine Zeit: Verwenden Sie NTP! - Gunook
Video: SDP - Zeit verschwenden 2024, November
Anonim
Image
Image

Lassen Sie Ihre Zeit zählen! Dies ist ein häufig diskutiertes Thema unter meinen Abonnenten, und aus welchem Grund? Aufgrund der einfachen und unverzichtbaren Tatsache, dass Sie bei der Herstellung eines Datenloggers und für alles, was mit Automatisierung zu tun hat, die richtige Zeit benötigen! Und es gibt mehrere Möglichkeiten, die Zeit zu messen: Uhr mit Batterie, RTC (Real Time Clock) unter anderem. Aber das, was ich Ihnen heute zeigen möchte (das Datum, Wochentag und Uhrzeit informiert) ist das NTP (Network Time Protocol), das online ist. In diesem Video rufen wir die Datums- und Uhrzeitinformationen online ab und zeigen die Informationen auf dem Display an.

Schritt 1: Demonstration

Montage
Montage

Schritt 2: Montage

Schritt 3: Montage - Tisch

Montagetisch
Montagetisch

Schritt 4: Adafruit GFX-Bibliothek

Adafruit GFX-Bibliothek
Adafruit GFX-Bibliothek

Gehen Sie in der Arduino IDE zu Sketch->Include Library->Manage Libraries …

Installieren Sie die Adafruit GFX-Bibliothek

Schritt 5: Adafruit ST7735 Bibliothek

Adafruit ST7735 Bibliothek
Adafruit ST7735 Bibliothek

Gehen Sie in der Arduino IDE zu Sketch->Include Library->Manage Libraries …

Installieren Sie Adafruit ST7735

Schritt 6: NTPClient-Bibliothek

NTPClient-Bibliothek
NTPClient-Bibliothek

Gehen Sie zu https://github.com/taranais/NTPClient und laden Sie die von Taranais modifizierte NTPClient-Bibliothek herunter.

Entpacken Sie den Ordner und legen Sie ihn in C:\Users\Documents\Arduino\libraries. ab

Schritt 7: ESP32_NTP.ino

Beinhaltet und definiert

#include #include //Biblioteca NTPClient modificada #include //Socket UDP #include //Anzeige #include //Anzeige #include //Pinos werden angezeigt #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, kein 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 Tag; int Monat; int Jahr; int Stunden; int Minuten; int Sekunden; }; //Socket UDP que a lib utiliza para recuperar dados sobre or horário WiFiUDP udp; //Responsável por recuperar dados sobre horário NTPClient ntpClient(udp, //socket udp "0.br.pool.ntp.org", //URL des Servers 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 = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"}; // Objeto responsável Pelo display Adafruit_ST7735 display = Adafruit_ST7735(DISPLAY_CS, DISPLAY_DC, DISPLAY_MOSI, DISPLAY_CLK, DISPLAY_RST);

Aufstellen

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 vamos 2 pass.ar nenhum, //prioridade NULL, //Não precisamos de referência para a tarefa 0); //Número do core }

EinrichtungNTP

Void setupNTP () {//Inicializa o Client NTP ntpClient.begin (); // Espera pelo primeiro Online-Update Serial.println ("Warten auf das erste Update"); while(!ntpClient.update()) {Serial.print("."); ntpClient.forceUpdate(); Verzögerung (500); } Serial.println(); Serial.println ("Erstes Update abgeschlossen"); }

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(); } // Verzögerung von 100 Ticks vTaskDelay (100); } }

WLAN verbinden

Void connectWiFi () {Serial.println ("Verbinden"); //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 ("."); Verzögerung (500); } Serial.println(); Serial.print ("Verbunden mit"); Serial.println (WiFi. SSID()); }

SetupAnzeige

Void setupDisplay () {display.initR (INITR_BLACKTAB); //Inicialize o display display.setRotation(3); //Rotaciona display.setTextSize(2); //Tamanho tun texto display.fillScreen (ST77XX_BLACK); // Preenche com a cor preta display.setCursor (0, 0); //Coloca o Cursor kein Começo display.setTextColor(ST77XX_WHITE, ST77XX_BLACK); //Texto branco com fundo preto display.setTextWrap(false); //Não pula linha automaticamente }

Schleife

Void Schleife () {//Recupera os dados sobre a data and horário Date date = getDate (); // Zurücksetzen des Cursors display.setCursor (0, 0); //Exibe os dados keine Anzeige 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); Verzögerung (100); }

Verabredung bekommen

Date getDate(){ //Wiederholen von Daten und Horário Usando 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 or domingo date.dayOfWeek = ntpClient.getDay(); Rückflugdatum; }

Schritt 8: Dateien

Laden Sie die Dateien herunter

INO

PDF

Empfohlen: