Isi kandungan:

Jam Internet: Tarikh dan Masa Paparan Dengan OLED Menggunakan ESP8266 NodeMCU Dengan Protokol NTP: 6 Langkah
Jam Internet: Tarikh dan Masa Paparan Dengan OLED Menggunakan ESP8266 NodeMCU Dengan Protokol NTP: 6 Langkah

Video: Jam Internet: Tarikh dan Masa Paparan Dengan OLED Menggunakan ESP8266 NodeMCU Dengan Protokol NTP: 6 Langkah

Video: Jam Internet: Tarikh dan Masa Paparan Dengan OLED Menggunakan ESP8266 NodeMCU Dengan Protokol NTP: 6 Langkah
Video: Extract GPS location in Arduino with Ublox Neo-6 and Neo 7m GPS modules 2024, Julai
Anonim
Jam Internet: Paparkan Tarikh dan Masa Dengan OLED Menggunakan ESP8266 NodeMCU Dengan Protokol NTP
Jam Internet: Paparkan Tarikh dan Masa Dengan OLED Menggunakan ESP8266 NodeMCU Dengan Protokol NTP

Hai kawan-kawan dalam instruksional ini kita akan membina jam internet yang akan mendapat masa dari internet sehingga projek ini tidak memerlukan RTC untuk dijalankan, ia hanya memerlukan sambungan internet yang berfungsi

Dan untuk projek ini, anda memerlukan esp8266 yang akan mempunyai wifi untuk mendapatkan akses internet dan paparan untuk memaparkan waktu di dalamnya dan esp8266 akan mengambil masa dari internet menggunakan protokol NTP, ntp bermaksud protokol masa rangkaian, jadi pada dasarnya terdapat pelayan ntp di web yang digunakan untuk menyegerakkan jam komputer dan kami akan menggunakan pelayan tersebut untuk mendapatkan masa dalam projek kami.

Langkah 1: Perkara yang Anda Perlu

Perkara yang Anda Perlu
Perkara yang Anda Perlu
Perkara yang Anda Perlu
Perkara yang Anda Perlu
Perkara yang Anda Perlu
Perkara yang Anda Perlu

untuk projek ini, anda memerlukan perkara berikut:

Esp8266 / nodemcu

Oled ssd1306 0.96"

Wayar pelompat

Papan roti

Wayar USB

Langkah 2: Sambungan

Sambungan
Sambungan

Paparan OLED 4-pin ini berkomunikasi dengan modul ESP8266 menggunakan protokol I2C, di bawah adalah rajah litar dan jadual sambungan untuk menyambungkan pin OLED I2C dengan NodeMCU untuk memaparkan waktu Internet.

Langkah 3: Muat turun Perpustakaan

Muat turun Perpustakaan
Muat turun Perpustakaan
Muat turun Perpustakaan
Muat turun Perpustakaan

Pastikan anda memuat turun perpustakaan SD1306 dalam idea Arduino Anda seperti yang ditunjukkan dalam gambar dan pastikan anda juga Adafruit GFX library, jika tidak kemudian pasangkan kedua perpustakaan ini.

Dalam IDE Arduino anda, pergi ke pengurus Perpustakaan dan cari NTP dan muat turun pustaka pelanggan NTP seperti yang saya muat turun, rujuk gambar untuk bantuan lebih lanjut.

Langkah 4: Apa itu NTP

Apa itu NTP
Apa itu NTP

NTP adalah salah satu protokol Internet rangkaian tertua (IP) untuk menyegerakkan jam antara rangkaian komputer. Ia dirancang oleh David L. Mills dari University of Delaware pada tahun 1981. Protokol ini dapat digunakan untuk menyegerakkan banyak rangkaian ke Waktu Universal Terpadu (UTC) dalam beberapa milisaat. UTC adalah standard waktu utama di mana dunia mengatur jam dan waktu. UTC tidak berubah dan berbeza untuk lokasi geografi yang berbeza. NTP menggunakan UTC sebagai rujukan waktu dan memberikan masa yang tepat dan segerak di Internet.

NTP berfungsi pada model pelayan pelanggan hierarki. Model teratas mempunyai jam rujukan yang dikenal sebagai "stratum0" seperti jam atom, gelombang radio, GPS, GSM yang menerima masa dari satelit. Pelayan yang menerima masa dari stratum0 disebut sebagai "stratum1" dan pelayan yang menerima masa dari stratum1 disebut "stratum2" dan sebagainya. Ini berterusan dan ketepatan masa terus menurun selepas setiap peringkat. NTP secara automatik memilih yang terbaik dari beberapa sumber masa yang ada untuk diselaraskan yang menjadikannya protokol yang boleh bertolak ansur. Jadi di sini dalam projek ini, kami mendapat masa dari pelayan NTP menggunakan ESP8266 NodeMCU dan menunjukkannya pada paparan OLED. Jam Internet yang serupa ini dibina dengan menggunakan ESP32 dalam tutorial sebelumnya.

Langkah 5: Bahagian Pengekodan

Bahagian Pengekodan
Bahagian Pengekodan

Untuk meminta tarikh dan waktu, mulakan pelanggan waktu dengan alamat pelayan NTP. Untuk ketepatan yang lebih baik, pilih alamat pelayan NTP yang berdekatan dengan kawasan geografi anda. Di sini kita menggunakan "pool.ntp.org" yang memberikan pelayan dari seluruh dunia. Sekiranya anda ingin memilih pelayan dari Asia, anda boleh menggunakan "asia.pool.ntp.org". timeClient juga mengambil pengimbangan masa UTC dalam milisaat zon waktu anda. Contohnya, pengimbangan UTC untuk India ialah +5: 30 jadi kami menukar offset ini dalam milisaat yang sama dengan 5 * 60 * 60 + 30 * 60 = 19800.

Kawasan. Pengimbangan masa UTC (jam dan minit). Pengimbangan masa UTC (saat)

INDIA +5: 30 19800

LONDON 0:00. 0

NEW YORK -5: 00 -18000

Sila salin kod berikut & masukkan wifi & kata laluan anda dalam kod & Masukkan pengimbangan waktu dalam kod kemudian muat naik ke papan esp8266 anda.:

#include "NTPClient.h" #include "ESP8266WiFi.h" // menyediakan rutin Wi-Fi khusus ESP8266 yang kami panggil untuk menyambung ke rangkaian #masuk "WiFiUdp.h" // menangani pengiriman dan penerimaan pakej UDP

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

#sertakan "Adafruit_GFX.h"

#sertakan "Adafruit_SSD1306.h"

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

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

#tentukan OLED_RESET -1

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

constchar * ssid = "yourwifissid";

const char * kata laluan = "yourwifipass";

WiFiUDP ntpUDP;

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

String arr_days = {"Ahad", "Isnin", "Selasa", "Rabu", "Khamis", "Jumaat", "Sabtu"};

Date_time rentetan; // Anda boleh menentukan kumpulan pelayan masa dan offset (dalam beberapa saat, boleh // diubah kemudian dengan setTimeOffset ()). Anda juga boleh menentukan // selang kemas kini (dalam milisaat, boleh diubah menggunakan setUpdateInterval ()).

persediaan tidak sah ()

{

Serial.begin (115200);

WiFi.begin (ssid, kata laluan);

semasa (WiFi.status ()! = WL_CONNECTED)

{

kelewatan (500);

Cetakan bersiri (".");

}

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

{

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

untuk (;;); // Jangan teruskan, gelung selamanya

}

display.clearDisplay ();

display.setTextSize (2); // Lukis teks berskala 2X

display.setTextColor (PUTIH);

display.setCursor (5, 2);

display.println ("SELAMAT DATANG");

display.println ("instruksional");

display.println ("Projek");

paparan.display ();

kelewatan (3000);

timeClient.begin ();

}

gelung kosong ()

{

timeClient.update ();

display.clearDisplay ();

Serial.println (timeClient.getFormattedTime ());

display.setTextSize (2); // Lukis teks berskala 2X

display.setTextColor (BIRU);

display.setCursor (0, 2);

int hh = timeClient.getHours ();

int mm = timeClient.getMinutes ();

int ss = timeClient.getSeconds ();

jika (jam> 12)

{

hh = hh-12;

display.print (hh);

display.print (":");

paparan.cetakan (mm);

display.print (":");

display.print (ss);

display.println ("PM");

}

yang lain

{

display.print (hh);

display.print (":");

paparan.cetakan (mm);

display.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");

Tali rentetan = date_time.substring (0, index_date);

Serial.println (tarikh);

display.println (tarikh);

paparan.display ();

// Tunjukkan teks awal}

Langkah 6: Mendapatkan Tarikh & Masa

Mendapatkan Tarikh & Masa
Mendapatkan Tarikh & Masa

jika anda menyambungkan semuanya dengan betul dan Memuat naik kod dengan betul juga, anda akan dapat melihat jam ntp anda berjalan pada paparan oled sebagai milik saya dalam berjalan di paparan oled. Sila rujuk gambar untuk output.

Disyorkan: