Günün saatine bağlı bir IoT projesi oluştururken, manuel ayarlamalara gerek kalmadan doğru zamanı göstermesini istersiniz. Yerleşik kablosuz özelliği olduğundan ve İnternet'e bağlanabildiğinden, ESP32 ile bunu başarmak kolay olacak gibi görünüyor.

Ancak, ESP32'nin İnternet'e bağlanacak ve saati bir saatle senkronize edecek şekilde nasıl yapılandırılacağını gösteren birçok çevrimiçi örnek varken sunucu, çoğu, yılda iki kez manuel olarak gün ışığından yararlanma saatini ayarlamanızı gerektirir; bu, herhangi bir 21. yüzyıl elektronik cihazı için oldukça saçma görünüyor. cihaz.

Burada size, ESP32'nin yıl boyunca dünyanın herhangi bir yeri için doğru zamanı göstermesini sağlayacak bir çözüm sunacağız. Ama önce, Arduino IDE'deki SimpleTime örneğine bir göz atalım ve ne yaptığını ve onu nasıl geliştirebileceğimizi görelim.

SimpleTime Örneği

Arduino IDE'yi ESP32 ile kullanırsanız, adında bir örneği olduğunu göreceksiniz. BasitZaman şuna benziyor:

Bu örneğe, Arduino IDE'yi bir ESP32 kartı kullanacak şekilde yapılandırarak erişebilirsiniz.

instagram viewer
Araçlar menüsünü seçmek gibi ESP32 Geliştirme Modülü. Bunu yaptıktan sonra SimpleTime örneğine şuradan erişebilirsiniz: Araçlar altındaki menü Örnekler,ESP32,Zaman, ve Basit Zaman.

Bu resmi örneğin, işleri yapmanın en iyi yolunu göstermesi beklenebilir, ancak bu örnekte çok büyük bir sorun var. Saat dilimini ve yaz saati uygulamasını yapılandırmak için aşağıdaki iki satırı değiştirmeniz gerekir:

const uzun gmtOffset_sec = 3600;
const int daylightOffset_sec = 3600;

kullanarak saat dilimini ayarlama gmtOffset_sec uygun değildir, çünkü belirli konumunuz için GMT ofsetini bulmanız gerekir. Bunu şuraya danışarak yapabilirsiniz: Greenwich Ortalama Saati web sitesi. Neyse ki, bunu yalnızca bir kez yapmanız gerekir. bu daylightOffset_sec ancak daha büyük bir sorun teşkil eder, çünkü bunu yılda iki kez ayarlamanız gerekir. Bu, projenizi kaldırmanızı ve yılda iki kez Arduino IDE'ye bağlamanızı gerektirebilir, bu da kurmak ve unutmak istediğiniz bir IoT projesi için tamamen uygunsuz hale getirir.

Daha İyi Bir Yaklaşım Arıyoruz

Peki saat dilimini ve yaz saati uygulamasını yapılandırmanın daha iyi bir yolu ne olabilir? Bu soruyu yanıtlamak için Windows PC'nizin durumu nasıl ele aldığından başka bir yere bakmayın:

GMT'den zaman farkları vermek yerine Windows'a saat dilimimizin ve konumumuzu nasıl söylediğimize dikkat edin - bizim durumumuzda Dağ Saati (ABD ve Kanada)—ve ardından onay kutusunu işaretleyin Yaz Saati Uygulaması için saati otomatik olarak ayarlayın. O andan itibaren, Windows bunu bizim için yıl boyunca otomatik olarak halleder. ESP32'mizden istediğimiz kolaylık bu.

İlişkili: Windows'ta Sistem Tepsisi Saati Nasıl Özelleştirilir

ESP32 için Konum Veritabanı Oluşturma

Aynı şeyi ESP32'de yapmak biraz ayak işi gerektirir. bir ile başladık Blog yazısı bu, TZ ortam değişkenini kullanarak saat diliminin nasıl ayarlanacağını açıklıyordu. Konumumuz için, oldu MST7MDT, M3.2.0,M11.1.0, buna göre saat dilimi tablosu. Bu, gün ışığından yararlanma saatini manuel olarak ayarlamak zorunda kalma sorununu çözse de, biz istedik. her biri için bir sayı ve harf dizisi aramaya gerek kalmadan süreç daha basit olacak yer.

Web sitesindeki verileri doğrudan Arduino eskizlerinizden kullanabileceğiniz bir veritabanına dönüştürdük. Takip et bu bağlantı Arduino taslağı ile bir zip dosyasını doğrudan indirmek için.

Veritabanının kendisi dosyada saklanır zaman_bölgesi.h. Veritabanını kullanarak SimpleTime kodu şöyle görünür:

SimpleTime örneğinde yapılan değişiklikleri sarı renkle vurguladık. Bu satır, çizimin veritabanını kullanmasına izin verecektir:

#include "time_zones.h"

Bu satır konumunuzu yapılandırır:

const char* konum = "Amerika/Denver";

461 olası konum var. Şuraya bir göz atarak müsait yerleri bulabilirsiniz. zaman_bölgesi.h dosyasına veya saat dilimi listesine bakarak bu web sitesi.

Son olarak, aşağıdaki satır ESP32'ye zamanı Ağ Zaman Protokolü'nü (NTP) kullanarak bir İnternet sunucusuyla senkronize etmesini söyler:

configTimeWithTz (getTzByLocation (konum), ntpServer);

Belirli İnternet zaman sunucusu, aşağıdaki satır kullanılarak yapılandırılabilir, ancak varsayılanın sizin için iyi çalışması gerekir:

const char* ntpServer = "pool.ntp.org";

Ayrıca kablosuz erişim noktanızın bilgilerini aşağıdaki iki satıra eklediğinizden emin olmak istersiniz:

const char* ssid = "SİZİN_SSID'İNİZ";
const char* şifre = "YOUR_PASS";

Yer değiştirmek SİZİN_SSID kablosuz ağınızın adı ve YOUR_PASS bağlanmak için kullanılan şifre ile.

İlişkili: Bir Kablosuz Yönlendiriciyi Genel Erişim Noktası Olarak Güvenli Bir Şekilde Yapılandırmanın Yolları

Bitirmek

Konfigürasyon adımlarını tamamladıktan sonra, taslağı ESP32'ye yükleyin ve herhangi bir müdahale olmaksızın yıl boyunca doğru zamanı kullanacaktır!

Bu kod size iyi bir başlangıç ​​noktası sağlasa da, aynı şeyi başarmanın daha kullanıcı dostu yolları vardır. Örneğin, kullanıcının her şeyi derleme zamanında yapmak yerine bir web sayfasından yapılandırmasına izin vermek isteyebilirsiniz. Arduino taslağınızda aşağıdakileri yapmanız gerekeceğinden, bunu yapmak biraz daha fazla iştir:

  1. İlk yapılandırma için ESP32'yi kablosuz erişim noktası olarak yapılandırın
  2. Kullanıcıya bir yapılandırma sayfası sunmak için bir web sunucusu başlatın
  3. Kullanıcının kablosuz ağ bilgilerini girmesine ve konumlarını seçmesine izin vermek için bir HTML formu oluşturun
  4. Kullanıcının seçimlerini işlemek için kodu oluşturun ve kalıcı bellekte saklayın
  5. Anakart açıldığında:
    • Kalıcı bellekten yapılandırmayı okuyun
    • Kablosuz ağa bağlanın ve saati senkronize edin

Bu adımları gösteren bir proje, ESP32 Dali Saat. ESP32'de zaman senkronizasyonu yapmanın daha iyi bir yolunu bulmamızı sağlayan bu projeydi.

İmaj Kredisi: Marcio Teixeira/Flickr

Kontrol et kaynak kodu ESP32 Dali Clock için tam özellikli bir web yapılandırma sayfasının nasıl gösterileceğini görmek için. Yapılandırma sayfası, kullanıcının konumunu ve saat dilimini seçmesine ve ayrıca, kullanıcının bağlı olmayan bir saat ve takvim widget'ı kullanarak saati manuel olarak ayarlamasına da olanak tanır. alternatif!

ESP32'de Konum Tabanlı Ağ Zaman Senkronizasyonu

Artık ESP32'nizin saatini otomatik olarak doğru zamana ayarlamak ve aynı zamanda yaz saati uygulamasına göre ayarlamak için ihtiyacınız olan tüm bilgilere sahipsiniz. Bu, manuel olarak ayarlamak istemediğiniz IoT projeleri için mükemmeldir.

Bileşik Video Oluşturmak için ESP32 Kullanan 7 İlginç Proje

ESP32 ile ilginç projeler arıyorsanız doğru yerdesiniz.

Sonrakini Oku

PaylaşCıvıldamakE-posta
İlgili konular
  • kendin yap
  • ESP32
  • Nesnelerin interneti
Yazar hakkında
Marcio Teixeira (4 Makale Yayınlandı)

Açık kaynaklı yazılım, elektronik, 3D baskı, bilgisayar grafikleri ve retro hesaplamaya özel ilgi duyan bir yapımcıyım.

Marcio Teixeira'dan Daha Fazla

Haber bültenimize abone ol

Teknik ipuçları, incelemeler, ücretsiz e-kitaplar ve özel fırsatlar için bültenimize katılın!

Abone olmak için buraya tıklayın