Pada tutorial sebelumnya, kami telah membuat jam RTC menggunakan DS3231 dan ESP32. Untuk meminimalkan kebutuhan perangkat keras kami akan membuat jam Internet tanpa menggunakan modul RTC. Ini lebih akurat dibandingkan dengan jam RTC. ESP32 adalah modul Wi-Fi dan dapat dengan mudah dihubungkan ke internet sehingga kita akan menggunakan NTP (Network Time Protocol) dan UDP (User Datagram Protocol) untuk mengambil Waktu dari internet menggunakan Wi-Fi. Jam Internet ini bisa sangat berguna saat membangun Proyek IoT.
Apa itu NTP ??
Network Time Protocol (NTP) adalah protokol jaringan yang digunakan untuk sinkronisasi waktu antara sistem dan jaringan data. Kerangka NTP bergantung pada server Waktu Internet. NTP memiliki algoritme untuk menyesuaikan waktu hari secara tepat. Server NTP memiliki perangkat lunak yang mengirimkan waktu jam ke komputer klien menggunakan UDPport 123. Jadi di sini, dalam proyek ini, kami mendapatkan waktu dari server NTP menggunakan ESP32 dan menampilkannya di layar OLED.
Bahan yang Dibutuhkan:
- ESP32
- 128 * 64 layar OLED
- Papan tempat memotong roti
- Kabel pria-wanita
Diagram Sirkuit:
Di sini, kami menggunakan mode SPI untuk menghubungkan Modul layar OLED 128 × 64 (SSD1306) kami ke ESP32. Jadi, akan menggunakan 7 pin. Koneksi dengan ESP32 diberikan sebagai:
- Pin CS (Chip pilih) OLED -> PIN D5 ESP32
- Pin DC OLED -> PIN D4 ESP32
- PIN RES dari OLED -> PIN D2 ESP32
- Pin SDA OLED -> PIN D23 yaitu MOSI dari ESP32
- Pin SCK dari OLED -> PIN D18 yaitu SCK dari ESP32
- Vdd OLED -> Vcc ESP32
- GND dari OLED -> GND dari ESP32
Anda membutuhkan file papan untuk ESP32 Anda. Check-in board manager menu drop-down Arduino IDE untuk kit dev ESP32. Jika tidak ada ikuti langkah-langkah yang diberikan pada tautan di bawah ini:
circuitdigest.com/microcontroller-projects/getting-started-with-esp32-with-arduino-ide
Anda juga dapat menggunakan ESP12 untuk proyek ini, pelajari di sini untuk menggunakan ESP12.
Kami akan menggunakan Arduino IDE untuk menulis program kami seperti yang dijelaskan di artikel di atas.
Penjelasan Kode:
Kode lengkap untuk Jam Internet ESP32 diberikan di akhir artikel. Di sini kami menjelaskan beberapa bagian penting dari kode.
Kami membutuhkan beberapa perpustakaan untuk digunakan dalam kode kami yang dapat diunduh dari tautan di bawah ini:
1. Adafruit_SSD1306:
2. SPI:
3. Adafruit_GFX:
4. NTPClient:
5.WiFiUdp:
Jadi kami telah memasukkan semua pustaka dan variabel yang ditentukan untuk memasukkan nama dan kata sandi Wi-Fi.
#include
Di sini pustaka NTPClient.h digunakan untuk terhubung dengan server waktu. Butuh waktu dari server NTP dan menjaganya tetap sinkron. Dan perpustakaan Hhre WiFiUdp.h digunakan untuk mengirim dan menerima pesan UDP. UDP adalah protokol yang mengirim dan menerima pesan singkat dari sistem kami ke server NTP.
Jadi untuk mendapatkan waktu dari Internet, kita harus mendefinisikan tiga variabel dalam program kita untuk NTP.
NTP_OFFSET yang merupakan zona waktu negara Anda, misalnya untuk India adalah +5: 30 jam. Jadi 19800 dalam hitungan detik.
NTP_INTERVAL yaitu interval waktu yang diambil oleh NTP untuk memperbarui waktu. Ini 60-64 detik.
NTP_ADDRESS adalah server NTP negara Anda. Untuk India, Anda dapat menggunakan “ in.pool.ntp.org ”.
#define NTP_OFFSET 19800 // Dalam hitungan detik #tentukan NTP_INTERVAL 60 * 1000 // Dalam milidetik #define NTP_ADDRESS "1.asia.pool.ntp.org" WiFiUDP ntpUDP; NTPClient timeClient (ntpUDP, NTP_ADDRESS, NTP_OFFSET, NTP_INTERVAL);
Dalam Fungsi pengaturan , inisialisasi pengaturan Wi-Fi untuk terhubung dengan internet.
void setup () { display.begin (); Serial.begin (9600); Serial.println (); Serial.println (); Serial.print ("Menghubungkan ke"); Serial.println (ssid); WiFi.begin (ssid, kata sandi); while (WiFi.status ()! = WL_CONNECTED) { delay (500); Serial.print ("."); } Serial.println (""); Serial.println ("WiFi terhubung."); Serial.println ("alamat IP:"); Serial.println (WiFi.localIP ()); timeClient.begin ();
Kemudian inisialisasi fungsi tampilan untuk menunjukkan waktu di OLED.
display.begin (SSD1306_SWITCHCAPVCC);
Pada fungsi loop, kita telah menggunakan timeClient.update (), fungsi ini mengambil waktu update dari NTP dalam bentuk string dan menyimpannya dalam variabel formattedTime . Kemudian tampilkan di OLED menggunakan fungsi display.println () .
void loop () { timeClient.update (); String formattedTime = timeClient.getFormattedTime (); display.clearDisplay (); display.setTextSize (2); // setel parameter ini sesuai kebutuhan Anda.. display.setCursor (0, 0); display.println (formattedTime);
Program lengkap diberikan di bawah ini. Sekarang akhirnya program ESP32 dengan Arduino IDE dan Jam Internet Anda siap untuk menunjukkan waktu.