Daftar Isi:

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

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

Video: Jangan Buang Waktu Anda: Gunakan NTP!: 8 Langkah
Video: Efektif Mengatur Waktu: Ini Caranya 2024, November
Anonim
Image
Image

Hitung waktu Anda! Ini adalah topik yang sering dibahas di antara pelanggan saya, dan untuk alasan apa? Karena fakta sederhana dan tak tergantikan bahwa ketika Anda membuat datalogger, dan untuk semua yang melibatkan otomatisasi, Anda memerlukan waktu yang tepat! Dan ada beberapa cara untuk mengukur waktu: jam dengan baterai, RTC (Real Time Clock), antara lain. Tapi yang ingin saya tunjukkan hari ini (yang menginformasikan tanggal, hari dalam seminggu, dan waktu) adalah NTP (Network Time Protocol), yang sedang online. Dalam video ini, kami akan mengambil informasi tanggal dan waktu secara online, dan menampilkan informasi di layar.

Langkah 1: Demonstrasi

perakitan
perakitan

Langkah 2: Perakitan

Langkah 3: Perakitan - Tabel

Perakitan - Meja
Perakitan - Meja

Langkah 4: Adafruit GFX Library

Perpustakaan Adafruit GFX
Perpustakaan Adafruit GFX

Di Arduino IDE, buka Sketch->Include Library->Manage Libraries …

Instal Perpustakaan Adafruit GFX

Langkah 5: Perpustakaan Adafruit ST7735

Perpustakaan Adafruit ST7735
Perpustakaan Adafruit ST7735

Di Arduino IDE, buka Sketch->Include Library->Manage Libraries…

Instal Adafruit ST7735

Langkah 6: Perpustakaan NTPClient

Perpustakaan NTPClient
Perpustakaan NTPClient

Buka https://github.com/taranais/NTPClient dan unduh pustaka NTPClient yang dimodifikasi taranais.

Buka zip dan letakkan folder di C:\Users\Documents\Arduino\libraries

Langkah 7: ESP32_NTP.ino

Termasuk dan mendefinisikan

#include #include //Biblioteca NTPClient modificada #include //Socket UDP #include //Display #include //Display #include //Pino 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, tanpa batas waktu int timeZone = -2; //Struct com os dados do dia e hora struct Tanggal{ int dayOfWeek; hari int; int bulan; int tahun; int jam; int menit; int detik; }; //Socket UDP untuk 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); //Interval entre verificações online //Nomes dos dias da semana char* dayOfWeekNames = {"Minggu", "Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu"}; //Objeto respon pelo tampilan Adafruit_ST7735 display = Adafruit_ST7735(DISPLAY_CS, DISPLAY_DC, DISPLAY_MOSI, DISPLAY_CLK, DISPLAY_RST);

Mempersiapkan

void setup(){ Serial.begin(115200); setupTampilan(); sambungkan WiFi(); setupNTP(); //Cria uma nova tarefa no core 0 xTaskCreatePinnedToCore(wifiConnectionTask, //Função que será executada "wifiConnectionTask", //Nome da tarefa 10000, //Tamanho da memoria disponível (em WORDs) NULL, //Não vamos passar 2, //prioridade NULL, //Não precisamos de referência para a tarefa 0); //Número lakukan inti }

SetupNTP

void setupNTP(){ //Inisialisasi klien NTP ntpClient.begin(); //Espera pelo primeiro update online Serial.println("Menunggu update pertama"); while(!ntpClient.update()) { Serial.print("."); ntpClient.forceUpdate(); penundaan (500); } Serial.println(); Serial.println("Pembaruan Pertama Selesai"); }

Tugas Koneksi Wifi

//Tarefa que verifica se a conexão caiu dan tenta reconectarvoid wifiConnectionTask(void* param) { while(true) { //Se a WiFi não está conectada if(WiFi.status() != WL_CONNECTED) { //Manda conectar connectWiFi(); } //Delay de 100 tick vTaskDelay(100); } }

Hubungkan WiFi

void connectWiFi(){ Serial.println("Menghubungkan"); //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("."); penundaan (500); } Serial.println(); Serial.print("Terhubung ke "); Serial.println(WiFi. SSID()); }

Tampilan Pengaturan

void setupDisplay(){ display.initR(INITR_BLACKTAB); //Inisialisasi tampilan display.setRotation(3); //Rotaciona display.setTextSize(2); //Tamanho melakukan texto display.fillScreen(ST77XX_BLACK); //Preenche com a cor preta display.setCursor(0, 0); //Coloca atau kursor tidak ada tampilan.setTextColor(ST77XX_WHITE, ST77XX_BLACK); //Texto branco com fundo preto display.setTextWrap(false); //No pula linha automaticamente }

Lingkaran

void loop(){ //Memulihkan data dan data terbaru Date date = getDate(); //Reset atau tampilan kursor.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); penundaan(100); }

DapatkanTanggal

Tanggal getDate(){ //Memulihkan data dan data terbaru dari klien NTP char* strDate = (char*)ntpClient.getFormattedDate().c_str(); //Passa os dados da string untuk struct Tanggal tanggal; sscanf(strTanggal, "%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(); tanggal pengembalian; }

Langkah 8: File

Unduh file

SAYA TIDAK

PDF

Direkomendasikan: