İçindekiler:
- 1. Adım: Gösteri
- 2. Adım: Montaj
- Adım 3: Montaj - Tablo
- Adım 4: Adafruit GFX Kitaplığı
- Adım 5: Adafruit ST7735 Kitaplığı
- Adım 6: NTPClient Kitaplığı
- 7. Adım: ESP32_NTP.ino
- 8. Adım: Dosyalar
Video: Vakit Kaybetmeyin: NTP Kullanın!: 8 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:19
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
2. Adım: Montaj
Adım 3: Montaj - Tablo
Adım 4: 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ığı
Arduino IDE'de Sketch->Include Library->Manage Libraries… seçeneğine gidin.
Adafruit ST7735'i yükleyin
Adım 6: NTPClient 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
Önerilen:
Bir DIY Sonoff Akıllı Anahtarı Yapın Android Uygulamasını Kullanın: 11 Adım
Kendin Yap Sonoff Akıllı Anahtarı Yap Android Uygulamasını Kullan: Sonoff Nedir? Sonoff, ITEAD tarafından geliştirilen Akıllı Ev için bir akıllı anahtar cihaz serisidir. Bu hattaki en esnek ve ucuz cihazlardan biri Sonoff Basic ve Sonoff mini'dir. Bunlar, harika bir çip olan ESP8266/E'yi temel alan Wi-Fi özellikli anahtarlardır
Magicbit'inizde [Magicblocks] Basmalı Düğmeleri Kullanın: 5 Adım
Magicbit'inizde [Magicblocks] Basmalı Düğmeleri Kullanın: Bu eğitim size Magicblock'ları kullanarak Magicbit'inizdeki Basmalı Düğmeleri kullanmayı öğretecektir. ESP32 tabanlı bu projede geliştirme kartı olarak magicbit kullanıyoruz. Bu nedenle bu projede herhangi bir ESP32 geliştirme kartı kullanılabilir
Magicbit [Magicblocks] ile Toprak Nemi Sensörünü Kullanın: 5 Adım
Magicbit [Magicblocks] ile Toprak Nemi Sensörünü Kullanın: Bu eğitim size Magicblocks kullanarak Magicbit'inizle Toprak Nemi Sensörünü kullanmayı öğretecektir. ESP32 tabanlı bu projede geliştirme kartı olarak magicbit kullanıyoruz. Bu nedenle bu projede herhangi bir ESP32 geliştirme kartı kullanılabilir
Magicbit [Magicblocks] ile Pano Widget'larını Kullanın: 5 Adım
Magicbit [Magicblocks] ile Pano Widget'larını Kullanın: Bu eğitim size Magicbit'inizle Magicblocks Pano Widget'larını kullanmayı öğretecektir. ESP32 tabanlı bu projede geliştirme kartı olarak magicbit kullanıyoruz. Bu nedenle bu projede herhangi bir ESP32 geliştirme kartı kullanılabilir
Magicbit [Magicblocks] ile Ultrasonik Sensör Kullanın: 5 Adım
Magicbit [Magicblocks] ile Ultrasonik Sensör Kullanın: Bu eğitim size Magicblocks kullanarak Magicbit'inizle Ultrasonik Sensörü kullanmayı öğretecektir. ESP32 tabanlı bu projede geliştirme kartı olarak magicbit kullanıyoruz. Bu nedenle bu projede herhangi bir ESP32 geliştirme kartı kullanılabilir