Spisu treści:

Nie marnuj czasu: użyj NTP!: 8 kroków
Nie marnuj czasu: użyj NTP!: 8 kroków

Wideo: Nie marnuj czasu: użyj NTP!: 8 kroków

Wideo: Nie marnuj czasu: użyj NTP!: 8 kroków
Wideo: AFTER PARTY - Nie daj życiu się (Official Video) 2024, Listopad
Anonim
Image
Image

Niech Twój czas się liczy! To temat często poruszany wśród moich subskrybentów i z jakiego powodu? Ze względu na prosty i nieodzowny fakt, że kiedy robisz rejestrator danych i na wszystko, co wiąże się z automatyzacją, potrzebujesz odpowiedniego czasu! A sposobów mierzenia czasu jest kilka: zegar z baterią, RTC (zegar czasu rzeczywistego), m.in. Ale ten, który chcę wam dzisiaj pokazać (który informuje o dacie, dniu tygodnia i godzinie), to NTP (Network Time Protocol), który jest dostępny online. W tym filmie pobierzemy informacje o dacie i godzinie online i pokażemy je na wyświetlaczu.

Krok 1: Demonstracja

montaż
montaż

Krok 2: Montaż

Krok 3: Montaż - Stół

Montaż - Stół
Montaż - Stół

Krok 4: Biblioteka Adafruit GFX

Biblioteka Adafruit GFX
Biblioteka Adafruit GFX

W Arduino IDE przejdź do Sketch->Include Library->Manage Libraries…

Zainstaluj bibliotekę Adafruit GFX

Krok 5: Biblioteka Adafruit ST7735

Biblioteka Adafruit ST7735
Biblioteka Adafruit ST7735

W Arduino IDE przejdź do Sketch->Include Library->Manage Libraries…

Zainstaluj Adafruit ST7735

Krok 6: Biblioteka NTPClient

Biblioteka klienta NTPC
Biblioteka klienta NTPC

Przejdź do https://github.com/taranais/NTPClient i pobierz zmodyfikowaną taranais bibliotekę NTPClient.

Rozpakuj i umieść folder w C:\Users\Documents\Arduino\libraries

Krok 7: ESP32_NTP.ino

Zawiera i definiuje

#include #include //Biblioteca NTPClient modificada #include //Socket UDP #include //Wyświetlanie #include //Wyświetlanie #include //Piny wyświetlają #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, brak zdarzenia losowego w Brasília int timeZone = -2; //Struct com os dados do dia e hora struct Date{ int dayOfWeek; dzień wewnętrzny; miesiąc mies.; międzynarodowy rok; międzynarodowe godziny; międzynarodowe minuty; int sekund; }; //Socket UDP służy do korzystania z biblioteki do odzyskiwania danych w sieci lub na całym świecie WiFiUDP udp; //Obiekt odpowiada na potrzeby odzyskiwania danych na całym świecie NTPClient ntpClient(udp, //socket udp "0.br.pool.ntp.org", //URL serwera NTP timeZone*3600, //Usuń położenie w dowolnym miejscu w GMT 0 60000); //Odstęp czasu na weryfikację online //Nomes dos dias da semana char* dayOfWeekNames = {"Niedziela", "Poniedziałek", "Wtorek", "Środa", "Czwartek", "Piątek", "Sobota"}; //Objeto responsável pelo display Adafruit_ST7735 display = Adafruit_ST7735 (DISPLAY_CS, DISPLAY_DC, DISPLAY_MOSI, DISPLAY_CLK, DISPLAY_RST);

Ustawiać

void setup(){ Serial.begin(115200); konfiguracjaWyświetlacz(); połączWiFi(); konfiguracjaNTP(); //Cria uma nova tarefa bez rdzenia 0 xTaskCreatePinnedToCore(wifiConnectionTask, //Função que sera executada "wifiConnectionTask", //Nome tarefa 10000, //Tamanho for memória disponível (w WORDs) NULL, //Nul 2 vas, //prioridade NULL, //Não precisamos de referência para a tarefa 0); //Número do rdzenia }

KonfiguracjaNTP

void setupNTP(){ //Inicjalizacja klienta NTP ntpClient.begin(); //Espera pelo primeiro aktualizacja online Serial.println("Oczekiwanie na pierwszą aktualizację"); while(!ntpClient.update()) { Serial.print("."); ntpClient.forceUpdate(); opóźnienie (500); } Serial.println(); Serial.println("Pierwsza aktualizacja zakończona"); }

Zadanie połączenia Wi-Fi

//Tarefa que verifica se a conexão caiu e tenta reconectarvoid wifiConnectionTask(void* param) { while(true) { //Se a Wi-Fi nie jest połączone if(WiFi.status() != WL_CONNECTED) { //Połącz połączenie WiFi(); } //Opóźnienie 100 taktów vTaskDelay(100); } }

PołączWiFi

void connectWiFi(){ Serial.println("Łączenie"); //Należy podać nazwę i przywrócić Wi-Fi WiFi.begin("SSID", "12345678"); //Espera enquanto não estiver conectado while(WiFi.status() != WL_CONNECTED) { Serial.print("."); opóźnienie (500); } Serial.println(); Serial.print("Połączony z"); Serial.println(WiFi. SSID()); }

Ekran konfiguracji

void setupDisplay(){ display.initR(INITR_BLACKTAB); //Zainicjuj wyświetlanie display.setRotation(3); //Obrót display.setTextSize(2); //Tamanho robi texto display.fillScreen(ST77XX_BLACK); //Preenche com a cor preta display.setCursor(0, 0); //Coloca o kursor nie começo display.setTextColor(ST77XX_WHITE, ST77XX_BLACK); //Branco tekstowe z podstawowymi informacjami display.setTextWrap(false); //Não pula linha automatamente }

Pętla

void loop(){ //Recupera os dados sobre a data and horário Date date = getDate(); //Resetuj wyświetlanie kursora.setCursor(0, 0); //Exibe os dados brak wyświetlacza display.printf(" %s \n\n %s \n\n %02d/%02d/%d\n\n %02d:%02d:%02d", WiFi. SSID().c_str(), DayOfWeekNames[data.dayOfWeek], date.day, date.month, date.year, date.hours, date.minutes, date.seconds); opóźnienie (100); }

Pobierz datę

Data getDate(){ //Odzyskaj dane i dane na poziomie klienta NTP char* strDate = (char*)ntpClient.getFormattedDate().c_str(); //Passa os dados da string para a struct Data data; 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(); Data powrotu; }

Krok 8: Pliki

Pobierz pliki

JA NIE

PDF

Zalecana: