İçindekiler:

Vakit Kaybetmeyin: NTP Kullanın!: 8 Adım
Vakit Kaybetmeyin: NTP Kullanın!: 8 Adım

Video: Vakit Kaybetmeyin: NTP Kullanın!: 8 Adım

Video: Vakit Kaybetmeyin: NTP Kullanın!: 8 Adım
Video: Голубая стрела (1958) фильм 2024, Kasım
Anonim
Image
Image

Zaman sayın! Bu, abonelerim arasında sıkça tartışılan bir konu ve neden? Bir datalogger yaptığınızda ve otomasyonla ilgili her şey için doğru zamana ihtiyacınız olduğu basit ve vazgeçilmez gerçeği nedeniyle! Ve zamanı ölçmenin birkaç yolu vardır: diğerleri arasında pilli saat, RTC (Gerçek Zamanlı Saat). Ama bugün size göstermek istediğim (tarihi, haftanın gününü ve saati bildirir) çevrimiçi olan NTP'dir (Ağ Zaman Protokolü). Bu videoda, çevrimiçi olarak tarih ve saat bilgilerini alacağız ve bilgileri ekranda göstereceğiz.

1. Adım: Gösteri

toplantı
toplantı

2. Adım: Montaj

Adım 3: Montaj - Tablo

Montaj - Masa
Montaj - Masa

Adım 4: Adafruit GFX Kitaplığı

Adafruit GFX Kitaplığı
Adafruit GFX Kitaplığı

Arduino IDE'de Sketch->Include Library->Manage Libraries… seçeneğine gidin.

Adafruit GFX Kütüphanesini Kurun

Adım 5: Adafruit ST7735 Kitaplığı

Adafruit ST7735 Kütüphane
Adafruit ST7735 Kütüphane

Arduino IDE'de Sketch->Include Library->Manage Libraries… seçeneğine gidin.

Adafruit ST7735'i yükleyin

Adım 6: NTPClient Kitaplığı

NTPCİstemci Kitaplığı
NTPCİstemci Kitaplığı

github.com/taranais/NTPClient adresine gidin ve taranais ile değiştirilmiş NTPClient kitaplığını indirin.

Açın ve klasörü C:\Users\Documents\Arduino\libraries içine yerleştirin

7. Adım: ESP32_NTP.ino

İçerir ve tanımlar

#include #include //Biblioteca NTPClient modificada #include //Soket UDP #include //Görüntüle #include //Görüntüle #include //Pino'ları görüntüle #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, Brezilya'daki Caso horário de verão de Brasília yok int timeZone = -2; //Yapı com os dados dia e hora struct Date{ int dayOfWeek; int gün; int ay; int yıl; int saat; int dakika; int saniye; }; //Soket UDP'si, WiFiUDP udp'nin yeniden yapılandırılmasından bağımsız olarak kullanılabilir; //GMT 0'ın geri alınmasına yönelik yanıtlar NTPClient ntpClient(udp, //socket udp "0.br.pool.ntp.org", //URL sunucu hizmeti NTP timeZone*3600, //GMT 0 60000); //Çevrimiçi veri girişleri //Nomes dos dias da semana char* dayOfWeekNames = {"Pazar", "Pazartesi", "Salı", "Çarşamba", "Perşembe", "Cuma", "Cumartesi"}; //Yanıt verme pelo gösterimi Adafruit_ST7735 gösterimi = Adafruit_ST7735(DISPLAY_CS, DISPLAY_DC, DISPLAY_MOSI, DISPLAY_CLK, DISPLAY_RST);

Kurmak

geçersiz kurulum(){ Serial.begin(115200); setupDisplay(); bağlanWiFi(); setupNTP(); //Cria uma nova tarefa çekirdek yok 0 xTaskCreatePinnedToCore(wifiConnectionTask, //Função que será executada "wifiConnectionTask", //Tarefa 10000 Nome, //Tamanho ve memória disponível (em WORD'ler) NULL, //Nhum parame pass 2, //prioridade NULL, //Não precisamos de referência para a tarefa 0); //Número do core }

KurulumNTP

void setupNTP(){ //Inicializa o istemci NTP ntpClient.begin(); //Espera pelo primeiro çevrimiçi güncelleme Serial.println("İlk güncelleme bekleniyor"); while(!ntpClient.update()) { Serial.print("."); ntpClient.forceUpdate(); gecikme(500); } Seri.println(); Serial.println("İlk Güncelleme Tamamlandı"); }

WifiBağlantıGörevi

//Bir ağ bağlantısı için veri doğrulaması yapın wifiConnectionTask(void* parametresi) { while(true) { //WiFi não está conectada if(WiFi.status() != WL_CONNECTED) { //Manda conectar connectWiFi(); } //100 tik gecikmesi vTaskDelay(100); } }

BağlanWiFi

void connectWiFi(){ Serial.println("Bağlanıyor"); //Troque pelo nome ve WiFi WiFi.begin("SSID", "12345678"); //Espera enquanto não estiver conectado while(WiFi.status() != WL_CONNECTED) { Serial.print("."); gecikme(500); } Seri.println(); Serial.print("Bağlandı"); Seri.println(WiFi. SSID()); }

KurulumEkran

geçersiz setupDisplay(){ display.initR(INITR_BLACKTAB); //Inicializa o display.setRotation(3); //Rotaciona display.setTextSize(2); //Tamanho, texto display.fillScreen(ST77XX_BLACK); //Önceden göster.setCursor(0, 0); //Coloca veya imleç começo yok display.setTextColor(ST77XX_WHITE, ST77XX_BLACK); //Texto branco com fundo preto display.setTextWrap(false); //Nao pula linha otomatikleştirme }

Döngü

void loop(){ // Verileri ayık bir şekilde düzeltin Tarih tarih = getDate(); //Sıfırla o imleç ekranı.setCursor(0, 0); //Exibe os dados ekran yok display.printf(" %s \n\n %s \n\n %02d/%02d/%d\n\n %02d:%02d:%02d", WiFi. SSID().c_str(), dayOfWeekNames[date.dayOfWeek], tarih.gün, tarih.ay, tarih.yıl, tarih.saat, tarih.dakika, tarih.saniye); gecikme(100); }

GetDate

Date getDate(){ //İstemci için veri kurtarma işletimi NTP char* strDate = (char*)ntpClient.getFormattedDate().c_str(); // Bir struct Tarih tarihi için bir dizgeyi de geçmiştir; sscanf(strDate, "%d-%d-%dT%d:%d:%dZ", &tarih.yıl, &tarih.ay, &tarih.gün, &tarih.saat, &tarih.dakika, &tarih.saniye); // 0 ve 6 arasındaki semana verileri, gönderme 0 o domingo date.dayOfWeek = ntpClient.getDay(); dönüş tarihi; }

8. Adım: Dosyalar

Dosyaları indirin

BEN HAYIR

PDF

Önerilen: