Table des matières:

Ne perdez pas votre temps : utilisez NTP ! : 8 étapes
Ne perdez pas votre temps : utilisez NTP ! : 8 étapes

Vidéo: Ne perdez pas votre temps : utilisez NTP ! : 8 étapes

Vidéo: Ne perdez pas votre temps : utilisez NTP ! : 8 étapes
Vidéo: Maître de votre temps, maître de votre vie. Brian Tracy. Livre audio 2024, Novembre
Anonim
Image
Image

Faites que votre temps compte ! C'est un sujet fréquemment discuté parmi mes abonnés, et pour quelle raison ? Du fait simple et indispensable que lorsque vous faites un datalogger, et pour tout ce qui concerne l'automatisation, vous avez besoin de la bonne heure ! Et il existe plusieurs façons de mesurer le temps: horloge avec batterie, RTC (Real Time Clock), entre autres. Mais celui que je veux vous montrer aujourd'hui (qui informe la date, le jour de la semaine et l'heure) est le NTP (Network Time Protocol), qui est en ligne. Dans cette vidéo, nous allons récupérer les informations de date et d'heure en ligne et afficher les informations à l'écran.

Étape 1: Démonstration

Assemblée
Assemblée

Étape 2: Assemblage

Étape 3: Assemblage - Tableau

Assemblage - Table
Assemblage - Table

Étape 4: Bibliothèque Adafruit GFX

Bibliothèque GFX Adafruit
Bibliothèque GFX Adafruit

Dans l'IDE Arduino, allez dans Sketch->Inclure la bibliothèque->Gérer les bibliothèques…

Installer la bibliothèque Adafruit GFX

Étape 5: Bibliothèque Adafruit ST7735

Bibliothèque Adafruit ST7735
Bibliothèque Adafruit ST7735

Dans l'IDE Arduino, allez dans Sketch->Inclure la bibliothèque->Gérer les bibliothèques…

Installer Adafruit ST7735

Étape 6: bibliothèque client NTPC

Bibliothèque client NTPC
Bibliothèque client NTPC

Accédez à https://github.com/taranais/NTPClient et téléchargez la bibliothèque NTPClient modifiée par taranais.

Décompressez et placez le dossier dans C:\Users\Documents\Arduino\libraries

Étape 7: ESP32_NTP.ino

Comprend et définit

#include #include //Biblioteca NTPClient modificada #include //Socket UDP #include //Afficher #include //Afficher #include //Les pinos affichent #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; jour int; mois entier; int année; heures entières; minutes entières; int secondes; }; //Socket UDP que une bibliothèque utilise pour récupérer les données sobre ou horário 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 = {"Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi"}; //Objeto responsável pelo display Adafruit_ST7735 display = Adafruit_ST7735(DISPLAY_CS, DISPLAY_DC, DISPLAY_MOSI, DISPLAY_CLK, DISPLAY_RST);

Installer

void setup(){ Serial.begin(115200); setupAffichage(); connecterWiFi(); 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 pasar, //Nome da tarefa 10000, //Tamanho da memória disponível (em WORDs), //prioridade NULL, //Não precisamos de referência para a tarefa 0); //Número do core }

ConfigurationNTP

void setupNTP(){ //Inicialisation du client NTP ntpClient.begin(); //Espera pelo primeiro mise à jour en ligne Serial.println("En attente de la première mise à jour"); while(!ntpClient.update()) { Serial.print("."); ntpClient.forceUpdate(); retard (500); } Serial.println(); Serial.println("Première mise à jour terminée"); }

WifiConnexionTâche

//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(); } //Délai de 100 ticks vTaskDelay(100); } }

Connectez-vous au Wi-Fi

void connectWiFi(){ Serial.println("Connexion"); //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("."); retard (500); } Serial.println(); Serial.print("Connecté à "); Serial.println(WiFi. SSID()); }

ConfigurationAffichage

void setupDisplay(){ display.initR(INITR_BLACKTAB); //Inicializa o display display.setRotation(3); // Rotation display.setTextSize(2); //Tamanho do texto display.fillScreen(ST77XX_BLACK); //Preenche com a cor preta display.setCursor(0, 0); //Coloca o curseur aucun começo display.setTextColor(ST77XX_WHITE, ST77XX_BLACK); //Texto branco com fundo preto display.setTextWrap(false); //Não pula linha automaticamente }

Boucle

void loop(){ //Recupera os dados sobre a data and horário Date date = getDate(); //Réinitialiser le curseur 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); retard (100); }

Avoir un rendez-vous

Date getDate(){ //Récupérer les données et l'horário usando du 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 o domingo date.dayOfWeek = ntpClient.getDay(); date de retour; }

Étape 8: Fichiers

Télécharger les fichiers

INO

PDF

Conseillé: