Sadržaj:

Ne gubite vrijeme: Koristite NTP!: 8 koraka
Ne gubite vrijeme: Koristite NTP!: 8 koraka

Video: Ne gubite vrijeme: Koristite NTP!: 8 koraka

Video: Ne gubite vrijeme: Koristite NTP!: 8 koraka
Video: Полное руководство по Google Forms - универсальный инструмент для опросов и сбора данных онлайн! 2024, Studeni
Anonim
Image
Image

Neka se vaše vrijeme računa! Ovo je tema o kojoj se moji pretplatnici često raspravljaju, i iz kojeg razloga? Zbog jednostavne i neophodne činjenice da kada napravite datalogger i za sve što uključuje automatizaciju, trebate točno vrijeme! Postoji nekoliko načina mjerenja vremena: sat s baterijom, RTC (sat u stvarnom vremenu), među ostalima. Ali onaj koji vam želim pokazati danas (koji informira datum, dan u tjednu i vrijeme) je NTP (Network Time Protocol), koji je na mreži. U ovom ćemo videozapisu dohvatiti podatke o datumu i vremenu na mreži i prikazati podatke na zaslonu.

Korak 1: Demonstracija

Skupština
Skupština

Korak 2: Montaža

Korak 3: Montaža - Tablica

Montaža - Tablica
Montaža - Tablica

Korak 4: Adafruit GFX knjižnica

Knjižnica Adafruit GFX
Knjižnica Adafruit GFX

U Arduino IDE idite na Sketch-> Include Library-> Manage Libraries …

Instalirajte Adafruit GFX knjižnicu

Korak 5: Knjižnica Adafruit ST7735

Knjižnica Adafruit ST7735
Knjižnica Adafruit ST7735

U Arduino IDE idite na Sketch-> Include Library-> Manage Libraries …

Instalirajte Adafruit ST7735

Korak 6: NTPClient knjižnica

Knjižnica NTPClient
Knjižnica NTPClient

Idite na https://github.com/taranais/NTPClient i preuzmite biblioteku NTPClient modificiranu taranaisom.

Raspakirajte i stavite mapu u C: / Users / Documents / Arduino / libraries

Korak 7: ESP32_NTP.ino

Uključuje i definira

#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 dan; int mjesec; int godina; int sati; int minute; int sekunde; }; // Socket UDP que a lib utilization para recuperar dados sobre or horário WiFiUDP udp; // Objektivno odgovaranje na oporavak podataka o sobre horário NTPClient ntpClient (udp, // socket udp "0.br.pool.ntp.org", // URL na poslužitelju 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 = {"nedjelja", "ponedjeljak", "utorak", "srijeda", "četvrtak", "petak", "subota"}; // Objeto responvel pelo display Adafruit_ST7735 display = Adafruit_ST7735 (DISPLAY_CS, DISPLAY_DC, DISPLAY_MOSI, DISPLAY_CLK, DISPLAY_RST);

Postaviti

void setup () {Serial.begin (115200); setupDisplay (); connectWiFi (); setupNTP (); // Cria uma nova tarefa bez jezgre 0 xTaskCreatePinnedToCore (wifiConnectionTask, // Função que será executada "wifiConnectionTask", // Ime da tarefa 10000, // Tamanho da memória disponível (em WORDs) NULL, // Não vamos pass, // prioritet NULL, // Não precisamos de referência para a tarefa 0); // Número do core}

PostavljanjeNTP

void setupNTP () {// Inicializiranje klijentskog NTP ntpClient.begin (); // Espera pelo primeiro ažuriranje na mreži Serial.println ("Čekanje na prvo ažuriranje"); while (! ntpClient.update ()) {Serial.print ("."); ntpClient.forceUpdate (); kašnjenje (500); } Serial.println (); Serial.println ("Prvo ažuriranje dovršeno"); }

WifiConnectionTask

// Tarefa que verifica is 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 (); } // Odgoda od 100 oznaka vTaskDelay (100); }}

ConnectWiFi

void connectWiFi () {Serial.println ("Povezivanje"); // 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 ("."); kašnjenje (500); } Serial.println (); Serial.print ("Povezano s"); Serial.println (WiFi. SSID ()); }

SetupDisplay

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

Petlja

void loop () {// Recupera os dados sobre a data e horário Date date = getDate (); // Ponovno postavljanje prikaza pokazivača.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); kašnjenje (100); }

GetDate

Datum getDate () {// Recupera os dados de data and horário usando o 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 (); Datum povratka; }

Korak 8: Datoteke

Preuzmite datoteke

INO

PDF

Preporučeni: