Table des matières:
2025 Auteur: John Day | [email protected]. Dernière modifié: 2025-01-13 06:57
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
Étape 2: Assemblage
Étape 3: Assemblage - Tableau
Étape 4: Bibliothèque Adafruit GFX
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
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
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