Inhoudsopgave:

Verspil geen tijd: gebruik NTP!: 8 stappen
Verspil geen tijd: gebruik NTP!: 8 stappen

Video: Verspil geen tijd: gebruik NTP!: 8 stappen

Video: Verspil geen tijd: gebruik NTP!: 8 stappen
Video: Terugblik Climate Campus Connects #05 - 2021 2024, November
Anonim
Image
Image

Laat je tijd tellen! Dit is een veelbesproken onderwerp onder mijn abonnees, en om welke reden? Vanwege het simpele en onmisbare feit dat wanneer je een datalogger maakt, en voor alles wat met automatisering te maken heeft, je de juiste tijd nodig hebt! En er zijn verschillende manieren om tijd te meten: klok met batterij, RTC (Real Time Clock), onder andere. Maar degene die ik je vandaag wil laten zien (die datum, dag van de week en tijd aangeeft) is het NTP (Network Time Protocol), dat online is. In deze video halen we de datum- en tijdinformatie online op en tonen de informatie op het display.

Stap 1: Demonstratie

samenkomst
samenkomst

Stap 2: Montage

Stap 3: Montage - Tafel

Montage - Tafel
Montage - Tafel

Stap 4: Adafruit GFX-bibliotheek

Adafruit GFX-bibliotheek
Adafruit GFX-bibliotheek

Ga in de Arduino IDE naar Sketch->Bibliotheek opnemen->Bibliotheken beheren …

Installeer de Adafruit GFX-bibliotheek

Stap 5: Adafruit ST7735-bibliotheek

Adafruit ST7735 Bibliotheek
Adafruit ST7735 Bibliotheek

Ga in de Arduino IDE naar Sketch->Bibliotheek opnemen->Bibliotheken beheren …

Installeer Adafruit ST7735

Stap 6: NTPClient-bibliotheek

NTPClient-bibliotheek
NTPClient-bibliotheek

Ga naar https://github.com/taranais/NTPClient en download de taranais-gemodificeerde NTPClient-bibliotheek.

Unzip en plaats de map in C:\Users\Documents\Arduino\libraries

Stap 7: ESP32_NTP.ino

Omvat en definieer

#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 Date {int dayOfWeek; int dag; int maand; int jaar; int. uren; int minuten; int seconden; }; //Socket UDP kan worden gebruikt om te herstellen van de laatste tijd WiFiUDP udp; //Objeto responsável por 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 = {"zondag", "maandag", "dinsdag", "woensdag", "donderdag", "vrijdag", "zaterdag"}; //Objeto responsavel pelo display Adafruit_ST7735 display = Adafruit_ST7735 (DISPLAY_CS, DISPLAY_DC, DISPLAY_MOSI, DISPLAY_CLK, DISPLAY_RST);

Opstelling

void setup(){ Serial.begin(115200); setupDisplay(); verbindWiFi(); 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, //No neen hum va mos, //prioridade NULL, //No precisamos de referência para a tarefa 0); //Numero do core}

NTP instellen

void setupNTP(){ //Inicializa o client NTP ntpClient.begin(); // Espera pelo primeiro update online Serial.println ("Wachten op eerste update"); while(!ntpClient.update()) { Serial.print("."); ntpClient.forceUpdate(); vertraging (500); } Serieel.println(); Serial.println("Eerste update voltooid"); }

WifiVerbindingTaak

// Verificatie van een verbinding met wifiConnectionTask (void * param) { while (true) { // Zoek een wifi-verbinding als (WiFi.status ()! = WL_CONNECTED) { // Manda sluit wifi (); } //Delay de 100 ticks vTaskDelay(100); } }

VerbindWiFi

void connectWiFi(){ Serial.println("Verbinden"); //Troque pelo nome en senha da sua rede WiFi WiFi.begin ("SSID", "12345678"); //Espera enquanto não estiver conectado while(WiFi.status()!= WL_CONNECTED) {Serial.print("."); vertraging (500); } Serieel.println(); Serial.print("Verbonden met "); Seriële.println(WiFi. SSID()); }

InstellingenDisplay

void setupDisplay(){ display.initR(INITR_BLACKTAB); // Beginnen om display.setRotation (3) weer te geven; // Rotaciona display.setTextSize (2); //Tamanho do texto display.fillScreen (ST77XX_BLACK); //Preenche com a cor preta display.setCursor (0, 0); // Coloca of cursor geen começo display.setTextColor (ST77XX_WHITE, ST77XX_BLACK); //Texto branco com fundo preto display.setTextWrap (false); //No pula linha automaticamente}

Lus

void loop () { // Recupera os dados sobre a data e horário Date date = getDate (); // Reset de cursorweergave.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); vertraging (100); }

Krijg datum

Datum getDate(){ //Recuperatie van data en gebruik van de client NTP char* strDate = (char*)ntpClient.getFormattedDate().c_str(); // Passa os dados da string para a struct Datum datum; sscanf(strDate, "%d-%d-%dT%d:%d:%dZ", &datum.jaar, &datum.maand, &datum.dag, &datum.uren, &datum.minuten, &datum.seconden); //Dia da semana de 0 a 6, sendo 0 of domingo date.dayOfWeek = ntpClient.getDay(); retourdatum; }

Stap 8: Bestanden

Download de bestanden

INO

PDF

Aanbevolen: