สารบัญ:
- ขั้นตอนที่ 1: สิ่งที่คุณต้องการ
- ขั้นตอนที่ 2: การเชื่อมต่อ
- ขั้นตอนที่ 3: ดาวน์โหลดไลบรารี
- ขั้นตอนที่ 4: NTP.คืออะไร
- ขั้นตอนที่ 5: ส่วนการเข้ารหัส
- ขั้นตอนที่ 6: รับวันที่ & เวลา
วีดีโอ: นาฬิกาอินเทอร์เน็ต: แสดงวันที่และเวลาด้วย OLED โดยใช้ ESP8266 NodeMCU พร้อมโปรโตคอล NTP: 6 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:04
สวัสดีทุกคนในคำแนะนำนี้ เราจะสร้างนาฬิกาอินเทอร์เน็ตซึ่งจะได้รับเวลาจากอินเทอร์เน็ต ดังนั้นโครงการนี้จึงไม่ต้องการ RTC ใด ๆ เพื่อทำงาน เพียงเชื่อมต่ออินเทอร์เน็ตที่ใช้งานได้
และสำหรับโครงการนี้ คุณต้องมี esp8266 ซึ่งจะมี wifi เพื่อเข้าถึงอินเทอร์เน็ตและหน้าจอแสดงเวลาบนนั้น และ esp8266 จะดึงเวลาจากอินเทอร์เน็ตโดยใช้โปรโตคอล NTP ntp หมายถึงโปรโตคอลเวลาเครือข่าย ดังนั้นโดยทั่วไปจะมีเซิร์ฟเวอร์ ntp บนเว็บที่ใช้ในการซิงโครไนซ์นาฬิกาคอมพิวเตอร์และเราจะใช้เซิร์ฟเวอร์เหล่านั้นเพื่อรับเวลาในโครงการของเรา
ขั้นตอนที่ 1: สิ่งที่คุณต้องการ
สำหรับโครงการนี้ คุณจะต้องมีสิ่งต่อไปนี้:
Esp8266/nodemcu
โอลด์ ssd1306 0.96"
สายจัมเปอร์
เขียงหั่นขนม
สาย USB
ขั้นตอนที่ 2: การเชื่อมต่อ
จอแสดงผล OLED แบบ 4 พินนี้สื่อสารกับโมดูล ESP8266 โดยใช้โปรโตคอล I2C ด้านล่างนี้คือแผนภาพวงจรและตารางการเชื่อมต่อเพื่อเชื่อมต่อหมุด OLED I2C กับ NodeMCU เพื่อแสดงเวลาอินเทอร์เน็ต
ขั้นตอนที่ 3: ดาวน์โหลดไลบรารี
ตรวจสอบให้แน่ใจว่าคุณได้ดาวน์โหลดไลบรารี SD1306 ใน Arduino ide ของคุณตามที่แสดงในภาพ และตรวจสอบให้แน่ใจว่าคุณเป็นไลบรารี Adafruit GFX ด้วยเช่นกัน หากไม่ได้ติดตั้งไลบรารีทั้งสองนี้
ใน Arduino IDE ของคุณ ให้ไปที่ตัวจัดการ Libraries และค้นหา NTP และเพียงดาวน์โหลดไลบรารีไคลเอนต์ NTP เมื่อฉันดาวน์โหลด โปรดดูรูปภาพสำหรับความช่วยเหลือเพิ่มเติม
ขั้นตอนที่ 4: NTP.คืออะไร
NTP เป็นหนึ่งในเครือข่ายอินเทอร์เน็ตโปรโตคอล (IP) ที่เก่าแก่ที่สุดสำหรับการซิงโครไนซ์นาฬิการะหว่างเครือข่ายคอมพิวเตอร์ ออกแบบโดย David L. Mills แห่ง University of Delaware ในปี 1981 โปรโตคอลนี้สามารถใช้เพื่อซิงโครไนซ์เครือข่ายจำนวนมากกับ Coordinated Universal Time (UTC) ภายในไม่กี่มิลลิวินาที UTC เป็นมาตรฐานเวลาหลักที่โลกควบคุมนาฬิกาและเวลา UTC จะไม่เปลี่ยนแปลงและแตกต่างกันไปตามสถานที่ทางภูมิศาสตร์ที่ต่างกัน NTP ใช้ UTC เป็นเวลาอ้างอิงและให้เวลาที่ถูกต้องและตรงกันทางอินเทอร์เน็ต
NTP ทำงานบนโมเดลไคลเอนต์-เซิร์ฟเวอร์แบบลำดับชั้น รุ่นท็อปมีนาฬิกาอ้างอิงที่เรียกว่า “stratum0” เช่น นาฬิกาอะตอม, คลื่นวิทยุ, GPS, GSM ซึ่งรับเวลาจากดาวเทียม เซิร์ฟเวอร์ที่ได้รับเวลาจาก stratum0 เรียกว่า "stratum1" และเซิร์ฟเวอร์ที่ได้รับเวลาจาก stratum1 จะเรียกว่า "stratum2" เป็นต้น สิ่งนี้ดำเนินต่อไปและความแม่นยำของเวลาลดลงหลังจากแต่ละด่าน NTP จะเลือกแหล่งเวลาที่ดีที่สุดจากหลายแหล่งโดยอัตโนมัติเพื่อซิงโครไนซ์ ซึ่งทำให้โปรโตคอลสามารถทนต่อข้อผิดพลาดได้ ในโครงการนี้ เราได้รับเวลาจากเซิร์ฟเวอร์ NTP โดยใช้ ESP8266 NodeMCU และแสดงบนจอแสดงผล OLED นาฬิกาอินเทอร์เน็ตชนิดเดียวกันนี้สร้างขึ้นโดยใช้ ESP32 ในบทช่วยสอนก่อนหน้า
ขั้นตอนที่ 5: ส่วนการเข้ารหัส
หากต้องการขอวันที่และเวลา ให้เริ่มต้นไคลเอนต์เวลาด้วยที่อยู่ของเซิร์ฟเวอร์ NTP เพื่อความแม่นยำที่ดียิ่งขึ้น ให้เลือกที่อยู่ของเซิร์ฟเวอร์ NTP ซึ่งอยู่ใกล้กับพื้นที่ทางภูมิศาสตร์ของคุณ ที่นี่เราใช้ “pool.ntp.org” ซึ่งให้บริการเซิร์ฟเวอร์จากทั่วโลก หากคุณต้องการเลือกเซิร์ฟเวอร์จากเอเชีย คุณสามารถใช้ “asia.pool.ntp.org” timeClient ยังใช้เวลาชดเชย UTC ในหน่วยมิลลิวินาทีของเขตเวลาของคุณ ตัวอย่างเช่น ออฟเซ็ต UTC สำหรับอินเดียคือ +5:30 ดังนั้นเราจึงแปลงออฟเซ็ตนี้เป็นมิลลิวินาที ซึ่งเท่ากับ 5*60*60+30*60 = 19800
พื้นที่. ออฟเซ็ตเวลา UTC (ชั่วโมงและนาที) ออฟเซ็ตเวลา UTC (วินาที)
อินเดีย +5:30 น. 19800
ลอนดอน 0:00. 0
นิวยอร์ก -5:00 -18000
โปรดคัดลอกรหัสต่อไปนี้ & ป้อน wifi & รหัสผ่านของคุณในรหัส & ป้อนเวลาชดเชยในรหัส จากนั้นอัปโหลดไปยังบอร์ด esp8266 ของคุณ:
#include "NTPClient.h"#include "ESP8266WiFi.h" // ให้รูทีน Wi-Fi เฉพาะของ ESP8266 ที่เราเรียกเพื่อเชื่อมต่อกับเครือข่าย #include "WiFiUdp.h" // จัดการการส่งและรับแพ็คเกจ UDP
#include "SPI.h" // SPI สำหรับเชื่อมต่อ OLED กับ NodeMCu
#รวม "Adafruit_GFX.h"
#รวม "Adafruit_SSD1306.h"
#define SCREEN_WIDTH 128 // ความกว้างของจอแสดงผล OLED ในหน่วยพิกเซล
#define SCREEN_HEIGHT 64 // ความสูงของจอแสดงผล OLED ในหน่วยพิกเซล
#define OLED_RESET -1
จอแสดงผล Adafruit_SSD1306 (SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
constchar *ssid = "yourwifissid";
const char *password = "yourwifipass";
WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP, "pool.ntp.org", 19800, 60000);
สตริง arr_days={"วันอาทิตย์", "วันจันทร์", "วันอังคาร", "วันพุธ", "วันพฤหัสบดี", "วันศุกร์", "วันเสาร์"};
สตริง date_time; // คุณสามารถระบุพูลเซิร์ฟเวอร์เวลาและออฟเซ็ตได้ (ในหน่วยวินาที สามารถเปลี่ยนได้ในภายหลังด้วย setTimeOffset()) นอกจากนี้ คุณสามารถระบุ // ช่วงการอัปเดต (ในหน่วยมิลลิวินาที สามารถเปลี่ยนได้โดยใช้ setUpdateInterval())
การตั้งค่าเป็นโมฆะ ()
{
Serial.begin(115200);
WiFi.begin(ssid, รหัสผ่าน);
ในขณะที่ (WiFi.status() != WL_CONNECTED)
{
ล่าช้า (500);
Serial.print (".");
}
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C))
{
Serial.println(F("การจัดสรร SSD1306 ล้มเหลว"));
สำหรับ(;;); //อย่าไปต่อ วนลูปตลอดไป
}
display.clearDisplay();
display.setTextSize(2); // วาดข้อความมาตราส่วน 2X
display.setTextColor(สีขาว);
display.setCursor(5, 2);
display.println("ยินดีต้อนรับ");
display.println("instructables");
display.println("โครงการ");
display.display();
ล่าช้า (3000);
timeClient.begin();
}
วงเป็นโมฆะ ()
{
timeClient.update();
display.clearDisplay();
Serial.println(timeClient.getFormattedTime());
display.setTextSize(2); // วาดข้อความมาตราส่วน 2X
display.setTextColor(สีน้ำเงิน);
display.setCursor(0, 2);
int hh = timeClient.getHours();
int มม. = timeClient.getMinutes();
int ss = timeClient.getSeconds();
ถ้า(hh>12)
{
hh=hh-12;
display.print(hh);
display.print(":");
display.print(mm);
display.print(":");
display.print(ss);
display.println("PM");
}
อื่น
{
display.print(hh);
display.print(":");
display.print(mm);
display.print(":");
display.print(ss);
display.println("น");
}
วัน int = timeClient.getDay();
display.println("'"+arr_days[วัน]+"'");
date_time = timeClient.getFormattedDate();
int index_date = date_time.indexOf ("T");
วันที่สตริง = date_time.substring(0, index_date);
Serial.println (วันที่);
display.println (วันที่);
display.display();
// แสดงข้อความเริ่มต้น }
ขั้นตอนที่ 6: รับวันที่ & เวลา
หากคุณเชื่อมต่อทุกอย่างถูกต้องและอัปโหลดโค้ดอย่างถูกต้องด้วย คุณจะเห็นนาฬิกา ntp ของคุณทำงานบนจอแสดงผล oled เป็นของฉันในการทำงานในจอแสดงผล oled โปรดดูภาพสำหรับการส่งออก
แนะนำ:
หาเวลาจากอินเทอร์เน็ตโดยใช้ ESP8266 - โครงการนาฬิกา NTP ด้วย ESP8266 Nodemcu: 5 ขั้นตอน
หาเวลาจากอินเทอร์เน็ตโดยใช้ ESP8266 | โครงการนาฬิกา NTP ด้วย ESP8266 Nodemcu: ในบทช่วยสอนนี้ เราจะมาดูวิธีหาเวลาโดยใช้ ESP8266/nodemcu กับ Arduino IDE การหาเวลามีประโยชน์อย่างยิ่งในการบันทึกข้อมูลเพื่อประทับเวลาการอ่านของคุณ หากโปรเจ็กต์ ESP8266 ของคุณมีการเข้าถึงอินเทอร์เน็ต คุณสามารถใช้เวลาโดยใช้ Network T
Neopixel Ws2812 Rainbow LED เรืองแสงพร้อม M5stick-C - เรียกใช้ Rainbow บน Neopixel Ws2812 โดยใช้ M5stack M5stick C โดยใช้ Arduino IDE: 5 ขั้นตอน
Neopixel Ws2812 Rainbow LED เรืองแสงพร้อม M5stick-C | เรียกใช้ Rainbow บน Neopixel Ws2812 โดยใช้ M5stack M5stick C การใช้ Arduino IDE: สวัสดีทุกคนในคำแนะนำนี้ เราจะเรียนรู้วิธีใช้ neopixel ws2812 LED หรือแถบนำหรือเมทริกซ์นำหรือวงแหวน LED พร้อมบอร์ดพัฒนา m5stack m5stick-C พร้อม Arduino IDE และเราจะทำ ลายรุ้งกับมัน
การควบคุมวิทยุ RF 433MHZ โดยใช้ HT12D HT12E - การสร้างรีโมทคอนโทรล Rf โดยใช้ HT12E & HT12D ด้วย 433mhz: 5 ขั้นตอน
การควบคุมวิทยุ RF 433MHZ โดยใช้ HT12D HT12E | การสร้างการควบคุมระยะไกล Rf โดยใช้ HT12E & HT12D ด้วย 433mhz: ในคำแนะนำนี้ฉันจะแสดงวิธีสร้างรีโมทคอนโทรล RADIO โดยใช้โมดูลตัวรับส่งสัญญาณ 433mhz พร้อมการเข้ารหัส HT12E & IC ถอดรหัส HT12D ในคำแนะนำนี้ คุณจะสามารถส่งและรับข้อมูลโดยใช้ส่วนประกอบราคาถูกมาก เช่น HT
ESP8266 NODEMCU BLYNK IOT บทช่วยสอน - Esp8266 IOT โดยใช้ Blunk และ Arduino IDE - การควบคุมไฟ LED ผ่านอินเทอร์เน็ต: 6 ขั้นตอน
ESP8266 NODEMCU BLYNK IOT บทช่วยสอน | Esp8266 IOT โดยใช้ Blunk และ Arduino IDE | การควบคุม LEDs ผ่านอินเทอร์เน็ต: สวัสดีทุกคนในคำแนะนำนี้ เราจะเรียนรู้วิธีใช้ IOT กับ ESP8266 หรือ Nodemcu ของเรา เราจะใช้แอป blynk สำหรับสิ่งนั้น ดังนั้นเราจะใช้ esp8266/nodemcu ของเราเพื่อควบคุมไฟ LED ผ่านอินเทอร์เน็ต ดังนั้นแอป Blynk จะเชื่อมต่อกับ esp8266 หรือ Nodemcu ของเรา
จอแสดงผล ESP32 และ OLED: นาฬิกาอินเทอร์เน็ต - DHT22: 10 ขั้นตอน (พร้อมรูปภาพ)
จอแสดงผล ESP32 และ OLED: นาฬิกาอินเทอร์เน็ต - DHT22: คำแนะนำนี้กำลังแข่งขัน o การแข่งขัน: "GIFs Challenge 2017" หากคุณชอบโปรดให้คะแนนโดยคลิกที่แบนเนอร์ด้านบน ขอบคุณมาก!;-)บทช่วยสอนนี้เป็นความต่อเนื่องของการเดินทางเพื่อเรียนรู้เพิ่มเติมเกี่ยวกับอุปกรณ์ IoT ที่ยอดเยี่ยมนี้