Isi kandungan:

Jangan Buang Masa Anda: Gunakan NTP !: 8 Langkah
Jangan Buang Masa Anda: Gunakan NTP !: 8 Langkah

Video: Jangan Buang Masa Anda: Gunakan NTP !: 8 Langkah

Video: Jangan Buang Masa Anda: Gunakan NTP !: 8 Langkah
Video: Uncle Djink - Jangan Malas Malas (Official Music Video) 2024, Julai
Anonim
Image
Image

Buat masa anda dikira! Ini adalah topik yang sering dibincangkan di kalangan pelanggan saya, dan atas sebab apa? Oleh kerana fakta ringkas dan sangat diperlukan bahawa apabila anda membuat pengecat data, dan untuk semua perkara yang melibatkan automasi, anda memerlukan masa yang tepat! Dan ada beberapa cara untuk mengukur masa: jam dengan bateri, RTC (Jam Waktu Sebenar), antara lain. Tetapi yang saya ingin tunjukkan hari ini (yang memberitahu tarikh, hari dalam seminggu, dan waktu) adalah NTP (Network Time Protocol), yang berada dalam talian. Dalam video ini, kami akan mendapatkan maklumat tarikh dan masa dalam talian, dan menunjukkan maklumat di paparan.

Langkah 1: Demonstrasi

perhimpunan
perhimpunan

Langkah 2: Perhimpunan

Langkah 3: Perhimpunan - Jadual

Perhimpunan - Jadual
Perhimpunan - Jadual

Langkah 4: Adafruit GFX Library

Perpustakaan Adafruit GFX
Perpustakaan Adafruit GFX

Dalam Arduino IDE, pergi ke Sketsa-> Sertakan Perpustakaan-> Urus Perpustakaan…

Pasang Adafruit GFX Library

Langkah 5: Perpustakaan Adafruit ST7735

Perpustakaan Adafruit ST7735
Perpustakaan Adafruit ST7735

Dalam Arduino IDE, pergi ke Sketsa-> Sertakan Perpustakaan-> Urus Perpustakaan…

Pasang Adafruit ST7735

Langkah 6: Perpustakaan Pelanggan NTP

Perpustakaan Pelanggan NTP
Perpustakaan Pelanggan NTP

Pergi ke https://github.com/taranais/NTPClient dan muat turun perpustakaan NTPClient yang diubahsuai taranais.

Buka zip dan masukkan folder di perpustakaan C: / Users / Documents / Arduino

Langkah 7: ESP32_NTP.ino

Merangkumi dan menentukan

#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 #tentukan 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; // Struktur com os dados do dia e hora struct Tarikh {int dayOfWeek; int hari; int bulan; int tahun; jam int; minit int; sekejap int; }; // 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", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"}; // Paparkan paparan responsovel Adafruit_ST7735 display = Adafruit_ST7735 (DISPLAY_CS, DISPLAY_DC, DISPLAY_MOSI, DISPLAY_CLK, DISPLAY_RST);

Persediaan

persediaan tidak sah () {Serial.begin (115200); persediaanDisplay (); sambungWiFi (); persediaanNTP (); // 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 pass, // prioridade NULL, // Não precisamos de referência para a tarefa 0); // Número do core}

PersediaanNTP

batal setupNTP () {// Inicializa o client NTP ntpClient.begin (); // Kemas kini Espera pelo primeiro dalam talian Serial.println ("Menunggu kemas kini pertama"); sementara (! ntpClient.update ()) {Serial.print ("."); ntpClient.forceUpdate (); kelewatan (500); } Bersiri.println (); Serial.println ("Kemas kini Pertama Selesai"); }

Tugas WifiConnection

// Tarefa que verifica se conexão caiu e tenta reconectarvoid wifiConnectionTask (void * param) {while (true) {// Lihat WiFi não está conectada if (WiFi.status ()! = WL_CONNECTED) {// Manda konectarWiFi (); } // Delay de 100 ticks vTaskDelay (100); }}

Sambungkan Wi-Fi

batal connectWiFi () {Serial.println ("Menyambung"); // Troque pelo nome e senha da sua rede WiFi WiFi.begin ("SSID", "12345678"); // Espera enquanto não estiver conectado sambil (WiFi.status ()! = WL_CONNECTED) {Serial.print ("."); kelewatan (500); } Bersiri.println (); Serial.print ("Bersambung ke"); Serial.println (WiFi. SSID ()); }

PersediaanDisplay

batal setupDisplay () {display.initR (INITR_BLACKTAB); // Inicializa o display 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 kursor no começo display.setTextColor (ST77XX_WHITE, ST77XX_BLACK); // Texto branco com fundo preto display.setTextWrap (palsu); // Não pula linha automaticamente}

Gelung

gelung kosong () {// Recupera os dados sobre a data e horário Tarikh tarikh = getDate (); // Reset o kursor 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); kelewatan (100); }

Dapatkan Tarikh

Tarikh getDate () {// Recupera os dados de data e horário usando o client NTP char * strDate = (char *) ntpClient.getFormattedDate (). C_str (); // Passa os dados da string for a struct Tarikh tarikh; 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 (); tarikh pemulangan; }

Langkah 8: Fail

Muat turun fail

INO

PDF

Disyorkan: