Dalam tutorial sebelumnya, kami telah membuat jam RTC menggunakan DS3231 dan ESP32. Untuk mengurangkan keperluan perkakasan, kami akan membuat jam Internet tanpa menggunakan modul RTC. Ini lebih tepat jika dibandingkan dengan jam RTC. ESP32 adalah modul Wi-Fi dan dapat disambungkan dengan mudah ke internet sehingga kami akan menggunakan NTP (Network Time Protocol) dan UDP (User Datagram Protocol) untuk mengambil Masa dari internet menggunakan Wi-Fi. Jam Internet ini sangat berguna semasa membina Projek IoT.
Apa itu NTP ??
Network Time Protocol (NTP) adalah protokol rangkaian yang digunakan untuk penyegerakan waktu antara sistem dengan rangkaian data. Rangka kerja NTP bergantung pada pelayan Waktu Internet. NTP mempunyai algoritma untuk menyesuaikan waktu dengan tepat. Pelayan NTP mempunyai perisian yang mengirimkan waktu jam ke komputer klien menggunakan UDPport 123. Jadi di sini dalam projek ini, kami mendapat masa dari pelayan NTP menggunakan ESP32 dan menunjukkannya pada paparan OLED.
Bahan yang Diperlukan:
- ESP32
- Paparan OLED 128 * 64
- Papan roti
- Wayar lelaki-perempuan
Rajah Litar:
Di sini, kami menggunakan mod SPI untuk menghubungkan Modul paparan OLED 128 × 64 kami (SSD1306) ke ESP32. Jadi, ia akan menggunakan 7 pin. Sambungan dengan ESP32 diberikan sebagai:
- CS (pilih cip) OLED -> PIN D5 dari ESP32
- Pin DC OLED -> PIN D4 dari ESP32
- RES pin OLED -> PIN D2 dari ESP32
- Pin SDA OLED -> PIN D23 iaitu MOSI ESP32
- Pin SCK OLED -> PIN D18 iaitu SCK ESP32
- Vdd OLED -> Vcc ESP32
- GND OLED -> GND ESP32
Anda memerlukan fail papan untuk ESP32 anda. Menu lungsur pengurus daftar masuk Arduino IDE untuk kit dev ESP32. Sekiranya tidak ada, ikuti langkah-langkah yang diberikan dalam pautan di bawah:
circuitdigest.com/microcontroller-projects/getting-started-with-esp32-with-arduino-ide
Anda juga boleh menggunakan ESP12 untuk projek ini, belajar di sini untuk menggunakan ESP12.
Kami akan menggunakan Arduino IDE untuk menulis program kami seperti yang dijelaskan dalam artikel di atas.
Penjelasan Kod:
Kod lengkap untuk Jam Internet ESP32 diberikan pada akhir artikel. Di sini kami menerangkan beberapa bahagian penting kod.
Kami memerlukan beberapa perpustakaan untuk digunakan dalam kod kami yang boleh dimuat turun dari pautan di bawah:
1. Adafruit_SSD1306:
2. SPI:
3. Adafruit_GFX:
4. NTPClient:
5.WiFiUdp:
Oleh itu, kami telah memasukkan semua perpustakaan dan pemboleh ubah yang ditentukan untuk memasukkan nama dan kata laluan Wi-Fi.
#sertakan
Di sini perpustakaan NTPClient.h digunakan untuk berhubung dengan pelayan masa. Ia memerlukan masa dari pelayan NTP dan menyegerakkannya. Perpustakaan Hhre WiFiUdp.h digunakan untuk menghantar dan menerima mesej UDP. UDP adalah protokol yang menghantar dan menerima pesanan ringkas dari sistem kami ke pelayan NTP.
Oleh itu, untuk mendapatkan masa dari Internet, kita harus menentukan tiga pemboleh ubah dalam program kita untuk NTP.
NTP_OFFSET yang merupakan zon waktu negara anda iaitu untuk India ialah +5: 30 jam. Jadi ia adalah 19800 dalam beberapa saat.
NTP_INTERVAL iaitu selang masa yang diambil oleh NTP untuk mengemas kini masa. Ia adalah 60-64 saat.
NTP_ADDRESS adalah pelayan NTP negara anda. Untuk India anda boleh menggunakan “ in.pool.ntp.org ”.
#define NTP_OFFSET 19800 // Dalam saat #define NTP_INTERVAL 60 * 1000 // Dalam milidetik #tentukan NTP_ADDRESS "1.asia.pool.ntp.org" WiFiUDP ntpUDP; NTPClient timeClient (ntpUDP, NTP_ADDRESS, NTP_OFFSET, NTP_INTERVAL);
Dalam persediaan Fungsi, initialise tetapan Wi-Fi untuk berhubung dengan internet.
batal persediaan () { display.begin (); Serial.begin (9600); Bersiri.println (); Bersiri.println (); Serial.print ("Menyambung ke"); Serial.println (ssid); WiFi.begin (ssid, kata laluan); sementara (WiFi.status ()! = WL_CONNECTED) { kelewatan (500); Cetakan bersiri ("."); } Serial.println (""); Serial.println ("WiFi disambungkan."); Serial.println ("Alamat IP:"); Serial.println (WiFi.localIP ()); timeClient.begin ();
Kemudian mulakan fungsi paparan untuk menunjukkan masa di OLED.
display.begin (SSD1306_SWITCHCAPVCC);
Dalam fungsi gelung, kami telah menggunakan timeClient.update (), fungsi ini mengambil masa yang dikemas kini dari NTP dalam bentuk rentetan dan menyimpannya dalam pemboleh ubah formattedTime . Kemudian paparkan pada OLED menggunakan fungsi display.println () .
gelung kosong () { timeClient.update (); Rentetan formattedTime = timeClient.getFormattedTime (); display.clearDisplay (); display.setTextSize (2); // tetapkan parameter ini mengikut keperluan anda.. display.setCursor (0, 0); display.println (formattedTime);
Program penuh diberikan di bawah. Sekarang akhirnya program ESP32 dengan Arduino IDE dan Jam Internet anda sudah siap untuk menunjukkan waktu.