Daftar Isi:

Jam Internet: Menampilkan Tanggal dan Waktu Dengan OLED Menggunakan ESP8266 NodeMCU Dengan Protokol NTP: 6 Langkah
Jam Internet: Menampilkan Tanggal dan Waktu Dengan OLED Menggunakan ESP8266 NodeMCU Dengan Protokol NTP: 6 Langkah

Video: Jam Internet: Menampilkan Tanggal dan Waktu Dengan OLED Menggunakan ESP8266 NodeMCU Dengan Protokol NTP: 6 Langkah

Video: Jam Internet: Menampilkan Tanggal dan Waktu Dengan OLED Menggunakan ESP8266 NodeMCU Dengan Protokol NTP: 6 Langkah
Video: Belajar Bikin JAM DIGITAL Tanpa RTC, Tapi Menggunakan Network Time Protocol (NTP Server) - ESP8266 2024, Juli
Anonim
Jam Internet: Menampilkan Tanggal dan Waktu Dengan OLED Menggunakan ESP8266 NodeMCU Dengan Protokol NTP
Jam Internet: Menampilkan Tanggal dan Waktu Dengan OLED Menggunakan ESP8266 NodeMCU Dengan Protokol NTP

Hai teman-teman dalam instruksi ini kami akan membangun jam internet yang akan mendapatkan waktu dari internet sehingga proyek ini tidak memerlukan RTC untuk dijalankan, itu hanya membutuhkan koneksi internet yang berfungsi

Dan untuk proyek ini Anda memerlukan esp8266 yang akan memiliki wifi untuk mendapatkan akses internet dan tampilan untuk menampilkan waktu di dalamnya dan esp8266 akan mengambil waktu dari internet menggunakan protokol NTP, ntp adalah singkatan dari protokol waktu jaringan, jadi pada dasarnya ada server ntp di web yang digunakan untuk menyinkronkan jam komputer dan kami akan menggunakan server tersebut untuk mendapatkan waktu dalam proyek kami.

Langkah 1: Hal-hal yang Anda Butuhkan

Hal yang Anda Butuhkan
Hal yang Anda Butuhkan
Hal yang Anda Butuhkan
Hal yang Anda Butuhkan
Hal yang Anda Butuhkan
Hal yang Anda Butuhkan

untuk proyek ini Anda akan membutuhkan hal-hal berikut:

Esp8266/nodemcu

ssd1306 lama 0.96"

Kabel jumper

Papan tempat memotong roti

Kabel USB

Langkah 2: Koneksi

Koneksi
Koneksi

Layar OLED 4-pin ini berkomunikasi dengan modul ESP8266 menggunakan protokol I2C, di bawah ini adalah diagram rangkaian dan tabel koneksi untuk menghubungkan pin OLED I2C dengan NodeMCU untuk menampilkan waktu Internet.

Langkah 3: Unduh Perpustakaan

Unduh Perpustakaan
Unduh Perpustakaan
Unduh Perpustakaan
Unduh Perpustakaan

Pastikan Anda mengunduh pustaka SD1306 di ide Arduino Anda seperti yang ditunjukkan pada gambar dan pastikan Anda juga memiliki pustaka Adafruit GFX, jika tidak maka instal kedua pustaka ini.

Di Arduino IDE Anda, buka pengelola Perpustakaan dan cari NTP dan cukup unduh pustaka klien NTP seperti yang saya unduh, lihat gambar untuk bantuan lebih lanjut.

Langkah 4: Apa itu NTP

Apa itu NTP?
Apa itu NTP?

NTP adalah salah satu Internet Protocol (IP) jaringan tertua untuk sinkronisasi jam antar jaringan komputer. Ini dirancang oleh David L. Mills dari University of Delaware pada tahun 1981. Protokol ini dapat digunakan untuk menyinkronkan banyak jaringan ke Coordinated Universal Time (UTC) dalam beberapa milidetik. UTC adalah standar waktu utama di mana dunia mengatur jam dan waktu. UTC tidak berubah dan bervariasi untuk lokasi geografis yang berbeda. NTP menggunakan UTC sebagai referensi waktu dan menyediakan waktu yang akurat dan tersinkronisasi di Internet.

NTP bekerja pada model client-server hierarkis. Model teratas memiliki jam referensi yang dikenal sebagai "stratum0" seperti jam atom, gelombang radio, GPS, GSM yang menerima waktu dari satelit. Server yang menerima waktu dari stratum0 disebut sebagai “stratum1” dan server yang menerima waktu dari stratum1 disebut “stratum2” dan seterusnya. Ini terus berlanjut dan akurasi waktu terus berkurang setelah setiap tahap. NTP secara otomatis memilih yang terbaik dari beberapa sumber waktu yang tersedia untuk disinkronkan yang menjadikannya protokol yang dapat toleran terhadap kesalahan. Jadi di sini, di proyek ini, kami mendapatkan waktu dari server NTP menggunakan ESP8266 NodeMCU dan menampilkannya di layar OLED. Jenis jam Internet yang sama ini dibuat dengan menggunakan ESP32 pada tutorial sebelumnya.

Langkah 5: Bagian Pengkodean

Bagian Pengkodean
Bagian Pengkodean

Untuk meminta tanggal dan waktu, inisialisasi klien waktu dengan alamat server NTP. Untuk akurasi yang lebih baik, pilih alamat server NTP yang dekat dengan wilayah geografis Anda. Di sini kami menggunakan "pool.ntp.org" yang memberikan server dari seluruh dunia. Jika Anda ingin memilih server dari Asia, Anda dapat menggunakan "asia.pool.ntp.org". timeClient juga mengambil offset waktu UTC dalam milidetik dari zona waktu Anda. Misalnya, offset UTC untuk India adalah +5:30 jadi kami mengonversi offset ini dalam milidetik yang sama dengan 5*60*60+30*60 = 1800.

Daerah. Offset waktu UTC (jam dan menit). Offset waktu UTC (detik)

INDIA +5:30 1800

LONDON 0:00. 0

NEW YORK -5:00 -18000

Silakan salin kode berikut & masukkan wifi & kata sandi Anda di kode & Masukkan offset waktu di kode lalu unggah ke papan esp8266 Anda.:

#include "NTPClient.h"#include "ESP8266WiFi.h" // menyediakan rutin Wi-Fi spesifik ESP8266 yang kami panggil untuk terhubung ke jaringan #include "WiFiUdp.h" //menangani pengiriman dan penerimaan paket UDP

#include "SPI.h" // SPI untuk menghubungkan OLED dengan NodeMCu

#sertakan "Adafruit_GFX.h"

#sertakan "Adafruit_SSD1306.h"

#define SCREEN_WIDTH 128 // Lebar tampilan OLED, dalam piksel

#define SCREEN_HEIGHT 64 // Tinggi tampilan OLED, dalam piksel

#define OLED_RESET -1

Tampilan Adafruit_SSD1306(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

constchar *ssid = "wifissid Anda";

const char *password = "password wifi anda";

WiFiUDP ntpUDP;

NTPClient timeClient(ntpUDP, "pool.ntp.org", 19800, 60000);

String arr_days={"Minggu", "Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu"};

String tanggal_waktu; // Anda dapat menentukan kumpulan server waktu dan offset (dalam detik, dapat // diubah nanti dengan setTimeOffset()). Selain itu, Anda dapat menentukan interval // pembaruan (dalam milidetik, dapat diubah menggunakan setUpdateInterval()).

batalkan pengaturan()

{

Serial.begin(115200);

WiFi.begin(ssid, kata sandi);

sementara (WiFi.status() != WL_CONNECTED)

{

penundaan (500);

Serial.print(".");

}

if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C))

{

Serial.println(F("Alokasi SSD1306 gagal"));

untuk(;;); // Jangan lanjutkan, loop selamanya

}

tampilan.clearDisplay();

display.setTextSize(2); // Menggambar teks skala 2X

display.setTextColor(PUTIH);

display.setCursor(5, 2);

display.println("SELAMAT DATANG DI");

display.println(" dapat diinstruksikan");

display.println("Proyek");

tampilan.tampilan();

penundaan(3000);

waktuKlien.mulai();

}

lingkaran kosong()

{

timeClient.update();

tampilan.clearDisplay();

Serial.println(timeClient.getFormattedTime());

display.setTextSize(2); // Menggambar teks skala 2X

display.setTextColor(BIRU);

display.setCursor(0, 2);

int jj = timeClient.getHours();

int mm = timeClient.getMinutes();

int ss = timeClient.getSeconds();

jika (jj>12)

{

hh=j-12;

display.print(hh);

tampilan.print(":");

display.print(mm);

tampilan.print(":");

display.print(ss);

display.println("PM");

}

lain

{

display.print(hh);

tampilan.print(":");

display.print(mm);

tampilan.print(":");

display.print(ss);

display.println("AM");

}

int hari = timeClient.getDay();

display.println("'"+arr_days[hari]+"'");

date_time = timeClient.getFormattedDate();

int index_date = date_time.indexOf("T");

String tanggal = date_time.substring(0, index_date);

Serial.println(tanggal);

tampilan.println(tanggal);

tampilan.tampilan();

// Menampilkan teks awal }

Langkah 6: Mendapatkan Tanggal & Waktu

Mendapatkan Tanggal & Waktu
Mendapatkan Tanggal & Waktu

jika Anda menghubungkan semuanya dengan benar dan Mengunggah kode dengan benar juga maka Anda akan dapat melihat jam ntp Anda berjalan di layar oled seperti milik saya yang berjalan di layar oled. Silakan lihat gambar untuk output.

Direkomendasikan: