Sommario:

Non perdere tempo: usa NTP!: 8 passaggi
Non perdere tempo: usa NTP!: 8 passaggi

Video: Non perdere tempo: usa NTP!: 8 passaggi

Video: Non perdere tempo: usa NTP!: 8 passaggi
Video: Questi criminali non sanno che il vecchio è un pericoloso veterano della guerra 2024, Novembre
Anonim
Image
Image

Fai contare il tuo tempo! Questo è un argomento discusso spesso tra i miei abbonati e per quale motivo? Per il semplice e indispensabile fatto che quando si realizza un datalogger, e per tutto ciò che riguarda l'automazione, serve l'ora giusta! E ci sono diversi modi per misurare il tempo: orologio con batteria, RTC (Real Time Clock), tra gli altri. Ma quello che voglio mostrarti oggi (che informa la data, il giorno della settimana e l'ora) è l'NTP (Network Time Protocol), che è online. In questo video, recupereremo le informazioni su data e ora online e mostreremo le informazioni sul display.

Passaggio 1: dimostrazione

Assemblea
Assemblea

Passaggio 2: assemblaggio

Fase 3: Assemblaggio - Tavolo

Assemblaggio - Tavolo
Assemblaggio - Tavolo

Passaggio 4: libreria Adafruit GFX

Libreria Adafruit GFX
Libreria Adafruit GFX

Nell'IDE di Arduino, vai su Schizzo-> Includi libreria-> Gestisci librerie …

Installa la libreria Adafruit GFX

Passaggio 5: libreria Adafruit ST7735

Libreria Adafruit ST7735
Libreria Adafruit ST7735

Nell'IDE di Arduino, vai su Schizzo-> Includi libreria-> Gestisci librerie …

Installa Adafruit ST7735

Passaggio 6: libreria client NTPC

Libreria client NTPC
Libreria client NTPC

Vai su https://github.com/taranais/NTPClient e scarica la libreria NTPClient modificata da taranais.

Decomprimi e metti la cartella in C:\Users\Documents\Arduino\libraries

Passaggio 7: ESP32_NTP.ino

Include e definisce

#include #include //Biblioteca NTPClient modificada #include //Socket UDP #include //Display #include //Display #include //Pino visualizza #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 case horário de verião de Brasília int timeZone = -2; //Struct com os dados do dia e hora struct Date{ int dayOfWeek; int giorno; int mese; int anno; int ore; int minuti; int secondi; }; //Socket UDP que a lib utiliza para recuperar dados sobre o 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 = {"Sunday", "Monday", "Martedì", "Mercoledì", "Giovedì", "Venerdì", "Sabato"}; //Objeto responsável pelo display Adafruit_ST7735 display = Adafruit_ST7735(DISPLAY_CS, DISPLAY_DC, DISPLAY_MOSI, DISPLAY_CLK, DISPLAY_RST);

Impostare

void setup(){ Serial.begin(115200); setupDisplay(); connettiWiFi(); 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 passar nenh parametro, //prioridade NULL, //Não precisamos de referência para a tarefa 0); //Numero fare core }

ConfigurazioneNTP

void setupNTP(){ //Inizializzazione del client NTP ntpClient.begin(); //Espera pelo primeiro update online Serial.println("In attesa del primo aggiornamento"); while(!ntpClient.update()) { Serial.print("."); ntpClient.forceUpdate(); ritardo (500); } Serial.println(); Serial.println("Primo aggiornamento completato"); }

WifiConnessioneAttività

//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(); } //Ritardo di 100 tick vTaskDelay(100); } }

ConnettiWiFi

void connectWiFi(){ Serial.println("Connessione"); //Troque nome e senha da sua rede WiFi WiFi.begin("SSID", "12345678"); //Espera enquanto não estater conectado while(WiFi.status() != WL_CONNECTED) { Serial.print("."); ritardo (500); } Serial.println(); Serial.print("Connesso a"); Serial.println(WiFi. SSID()); }

ConfigurazioneDisplay

void setupDisplay(){ display.initR(INITR_BLACKTAB); //Inizializzazione del display display.setRotation(3); //Rotazione display.setTextSize(2); //Tamanho fai testo display.fillScreen(ST77XX_BLACK); //Preenche com a cor preta display.setCursor(0, 0); //Coloca o cursore non come display.setTextColor(ST77XX_WHITE, ST77XX_BLACK); //Texto branco com fundo preto display.setTextWrap(false); //Não pula linha automaticamente }

Ciclo continuo

void loop(){ //Recupera tutti i dati dopo i dati e l'orario Date date = getDate(); //Reimposta il cursore display.setCursor(0, 0); //Mostra dati senza 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); ritardo(100); }

Ottieni data

Date getDate(){ //Recupera i dati e l'orario usando il 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 settimana da 0 a 6, invia 0 o domingo date.dayOfWeek = ntpClient.getDay(); data di ritorno; }

Passaggio 8: file

Scarica i file

IO NO

PDF

Consigliato: