Saat membangun proyek IoT yang bergantung pada waktu, Anda ingin proyek tersebut menunjukkan waktu yang tepat tanpa memerlukan penyesuaian manual. Tampaknya ini akan mudah dilakukan dengan ESP32 karena memiliki nirkabel bawaan dan dapat terhubung ke Internet.

Namun, meskipun ada banyak contoh online yang menunjukkan cara mengkonfigurasi ESP32 untuk terhubung ke Internet dan menyinkronkan waktu dengan waktu. server, kebanyakan dari mereka mengharuskan Anda untuk menyesuaikan waktu musim panas secara manual dua kali setahun, yang tampaknya cukup konyol untuk perangkat elektronik abad ke-21. perangkat.

Di sini kami akan memberi Anda solusi yang memungkinkan ESP32 menunjukkan waktu yang tepat, untuk tempat mana pun di dunia, sepanjang tahun. Tapi pertama-tama, mari kita lihat contoh SimpleTime di Arduino IDE dan lihat apa fungsinya dan bagaimana kita bisa memperbaikinya.

Contoh SimpleTime

Jika Anda menggunakan Arduino IDE dengan ESP32, Anda akan menemukan bahwa ia memiliki contoh yang disebut Waktu Sederhana yang terlihat seperti ini:

instagram viewer

Anda dapat mengakses contoh ini dengan mengonfigurasi Arduino IDE untuk menggunakan papan ESP32, dari Peralatan menu, seperti dengan memilih Modul Pengembang ESP32. Setelah Anda melakukannya, Anda dapat mengakses contoh SimpleTime dari Peralatan menu di bawah Contoh,ESP32,Waktu, dan Waktu Sederhana.

Orang mungkin mengharapkan contoh resmi ini untuk menunjukkan cara terbaik dalam melakukan sesuatu, tetapi ada satu masalah besar dalam contoh ini. Untuk mengonfigurasi zona waktu dan waktu musim panas, Anda harus mengubah dua baris berikut:

const panjang gmtOffset_sec = 3600;
const int daylightOffset_sec = 3600;

Mengatur zona waktu menggunakan gmtOffset_sec tidak nyaman karena Anda harus menemukan offset GMT untuk lokasi khusus Anda. Anda dapat melakukannya dengan berkonsultasi dengan Situs web Greenwich Mean Time. Untungnya, Anda hanya perlu melakukan ini sekali. Itu siang hariOffset_sec menghadirkan masalah yang lebih besar, karena Anda perlu menyesuaikannya dua kali setahun. Ini mungkin mengharuskan Anda untuk menghapus proyek Anda dan menghubungkannya ke Arduino IDE dua kali setahun, sehingga sepenuhnya tidak sesuai untuk proyek IoT yang ingin Anda atur dan lupakan.

Mencari Pendekatan yang Lebih Baik

Jadi, apa cara yang lebih baik untuk mengonfigurasi zona waktu dan waktu musim panas? Untuk menjawab pertanyaan ini, lihatlah bagaimana PC Windows Anda menangani situasi ini:

Perhatikan bagaimana alih-alih harus memberikan offset waktu dari GMT, kami memberi tahu Windows tentang zona waktu dan lokasi kami—dalam kasus kami Waktu Pegunungan (AS & Kanada)—dan kemudian centang kotak Secara otomatis menyesuaikan jam untuk Waktu Musim Panas. Sejak saat itu, Windows menanganinya secara otomatis untuk kami sepanjang tahun. Kenyamanan seperti inilah yang kami inginkan dari ESP32 kami.

Terkait: Cara Menyesuaikan Jam Baki Sistem di Windows

Membuat Database Lokasi untuk ESP32

Melakukan hal yang sama pada ESP32 membutuhkan kerja keras. kami mulai dengan posting blog yang menjelaskan cara mengatur zona waktu menggunakan variabel lingkungan TZ. Untuk lokasi kami, itu terjadi MST7MDT, M3.2.0,M11.1.0, Menurut Ini tabel zona waktu. Meskipun ini memecahkan masalah karena harus secara manual menyesuaikan waktu musim panas, kami ingin prosesnya menjadi lebih sederhana, tanpa perlu mencari rangkaian angka dan huruf masing-masing lokasi.

Kami mengonversi data dari situs web menjadi database yang dapat Anda gunakan langsung dari dalam sketsa Arduino Anda. Mengikuti Link ini untuk langsung mengunduh file zip dengan sketsa Arduino.

Basis data itu sendiri disimpan dalam file zona_waktu.h. Menggunakan database, kode untuk SimpleTime terlihat seperti ini:

Kami telah menyoroti modifikasi pada contoh SimpleTime dengan warna kuning. Baris ini akan memungkinkan sketsa untuk menggunakan database:

#sertakan "time_zones.h"

Baris ini mengonfigurasi lokasi Anda:

const char* lokasi = "Amerika/Denver";

Ada 461 kemungkinan lokasi. Anda dapat menemukan lokasi yang tersedia dengan melihat di zona_waktu.h file, atau dengan melihat daftar zona waktu di situs ini.

Terakhir, baris berikut memberitahu ESP32 untuk menyinkronkan waktu dengan server Internet menggunakan Network Time Protocol (NTP):

configTimeWithTz (getTzByLocation (lokasi), ntpServer);

Server waktu Internet tertentu dapat dikonfigurasi menggunakan baris berikut, meskipun defaultnya akan berfungsi dengan baik untuk Anda:

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

Anda juga ingin memastikan untuk menambahkan informasi untuk titik akses nirkabel Anda pada dua baris berikut:

const char* ssid = "YOUR_SSID";
const char* kata sandi = "YOUR_PASS";

Mengganti ANDA_SSID dengan nama jaringan nirkabel Anda dan ANDA_PASS dengan kata sandi yang digunakan untuk menghubungkannya.

Terkait: Cara Mengonfigurasi Router Nirkabel Dengan Aman Sebagai Titik Akses Publik

Menyelesaikan

Setelah Anda menyelesaikan langkah-langkah konfigurasi, unggah sketsa ke ESP32 dan itu akan menggunakan waktu yang benar sepanjang tahun tanpa intervensi apa pun!

Meskipun kode ini memberi Anda titik awal yang baik, ada cara yang lebih ramah pengguna untuk mencapai hal yang sama. Misalnya, Anda mungkin ingin mengizinkan pengguna untuk mengonfigurasi semuanya dari halaman web daripada menyelesaikannya pada waktu kompilasi. Melakukannya sedikit lebih banyak pekerjaan, karena Anda perlu melakukan hal-hal berikut dalam sketsa Arduino Anda:

  1. Konfigurasikan ESP32 sebagai titik akses nirkabel untuk konfigurasi awal
  2. Luncurkan server web untuk menampilkan halaman konfigurasi kepada pengguna
  3. Buat formulir HTML untuk memungkinkan pengguna memasukkan informasi jaringan nirkabel dan memilih lokasi mereka
  4. Buat kode untuk memproses pilihan pengguna dan simpan di memori non-volatil
  5. Di papan power-on:
    • Baca konfigurasi dari memori non-volatile
    • Hubungkan ke jaringan nirkabel dan sinkronkan waktu

Sebuah proyek yang menunjukkan langkah-langkah ini adalah Jam Dali ESP32. Proyek inilah yang membuat kami menemukan cara yang lebih baik untuk melakukan sinkronisasi waktu pada ESP32.

Kredit Gambar: Marcio Teixeira/Flickr

Lihat Kode sumber untuk Jam Dali ESP32 untuk melihat cara menampilkan halaman konfigurasi web berfitur lengkap. Halaman konfigurasi menampilkan menu tarik-turun untuk memungkinkan pengguna memilih lokasi dan zona waktu mereka dan juga memungkinkan pengguna untuk mengatur waktu secara manual menggunakan widget waktu dan kalender, untuk yang tidak terhubung alternatif!

Sinkronisasi Waktu Jaringan Berbasis Lokasi di ESP32

Anda sekarang memiliki semua informasi yang Anda butuhkan untuk dapat secara otomatis mengatur jam ESP32 Anda ke waktu yang tepat, dan juga menyesuaikannya untuk waktu musim panas. Ini sempurna untuk proyek IoT yang tidak ingin Anda sesuaikan secara manual.

7 Proyek Menarik yang Menggunakan ESP32 untuk Menghasilkan Video Komposit

Jika Anda mencari proyek menarik dengan ESP32, Anda berada di tempat yang tepat.

Baca Selanjutnya

MembagikanMenciakSurel
Topik-topik terkait
  • buatan sendiri
  • ESP32
  • Internet untuk segala
Tentang Penulis
Marcio Teixeira (4 Artikel Diterbitkan)

Saya seorang pembuat dengan minat khusus pada perangkat lunak sumber terbuka, elektronik, pencetakan 3D, grafik komputer, dan komputasi retro.

More From Marcio Teixeira

Berlangganan newsletter kami

Bergabunglah dengan buletin kami untuk kiat teknologi, ulasan, ebook gratis, dan penawaran eksklusif!

Klik di sini untuk berlangganan