หน้าแรก
วิธีการสั่งซื้อสินค้า
แจ้งชำระเงิน
บทความ
เว็บบอร์ด
เกี่ยวกับเรา
ติดต่อเรา
หน้าแรก
>
บทความ
>
[Project] มาทำนาฬิกาเดินตรงตลอ…
ค้นหาบทความที่นี่
บทความทั้งหมด
[Project] มาทำนาฬิกาเดินตรงตลอดเวลาด้วย ESP8266 กันเถอะ
5 ปีที่ผ่านมา
โดย
เจ้าของร้าน
Publish : 14 Febuary 2020
หลังจากเรามี
บทความชุด ESP8266
ซึ่งเป็นการแนะนำการใช้งานเบื้องต้น ในครั้งนี้เราจะมาใช้เจ้า ESP8266 มาทำประโยชน์โดยการทำนาฬิกาตรงเป๊ะกันครับ
ในการทำนาฬิกาตรงเป๊ะนี้ เราจะไม่ใช้แค่ตรงเพราะโมดูล RTC ของเรา เพราะถึงแม้เราจะใช้ RTC แบบดี ๆ ความคลาดเคลื่อนน้อย แต่เมื่อเวลาผ่านไป ความคลาดเคลื่อนเหล่านั้นมันค่อย ๆ สะสมไปเรื่อย ๆ หากเราไม่ได้ปรับตั้งใหม่ อาจคลาดเคลื่อนเป็นนาทีหรือหลายนาทีเลยก็ได้ ฉะนั้นเราจึงจะใช้การเทียบเวลาผ่านทางอินเตอร์เน็ต โดยใช้ NTP : Network Time Protocol ที่คิดค้นโดย David L. Mills แห่ง University of Delaware ในปี 1985
สาเหตุเริ่มต้นที่ต้องมี NTP เนื่องจากคอมพิวเตอร์ในเครือข่ายแต่ละเครื่องย่อมมีเวลาต่างกันไป ยิ่งเครือข่ายใหญ่มากมีคอมพิวเตอร์เป็นร้อยเครื่องก็ยิ่งไปกันใหญ่ บางเครื่องช้า 2 นาที บางเครื่องเร็ว 8 วินาที ปัญหาตรงนี้อาจทำให้การส่งข้อมูลสื่อสารกันในเครือข่ายเกิดความผิดพลาด NTP จึงเข้ามาช่วย synchronize ให้เวลาของทุกเครื่องตรงกันหมด เที่ยงตรงถึงระดับมิลลิวินาที ซึ่งความคลาดเคลื่อนที่เกิดขึ้นนั้นจะมีเพียง latency* ของเครือข่ายเท่านั้น ซึ่งจะมีความคลาดเคลื่อนไม่เกิน 10ms บนระบบอินเตอร์เน็ต และ 1ms บน local network
การส่งข้อมูล NTP จึงเป็นการส่งแบบ server-client หรือ peer-to-peer เป็นจุดต่อจุดโดยตรง เครืองลูกข่ายร้อยเครื่อง แต่ละเครื่องก็จะรับจากเซิฟเวอร์โดยตรงไม่ผ่านเครื่องอื่น และรับส่ง timestamps ผ่าน UDP (User Datagram Protocol) Port 123 เพราะฉะนั้น เจ้า ESP8266 ของเราจึงเชื่อมต่ออินเตอร์เน็ตไปขอเวลาจาก NTP Server ที่ไหนซักที่บนโลกนั่นเอง
ESP8266 กับ NTP
เข้าสู่โปรเจคกันเลยครับ เรื่องอุปกรณ์นั้นจะใช้ ESP8266 ตัวไหนก็ได้ มีให้เลือกใช้มากมายหลายหลาก แต่ในบทความนี้ผู้เขียนจะใช้ NodeMCU ในการเขียนเป็นตัวอย่าง และใช้ Library ที่ชื่อว่า NTPClient และ WiFiUdp หากจำไม่ผิดทั้งสองตัวนี้จะติดมาตั้งแต่ที่เราติดตั้ง ESP8266 เข้ากับตัว ArduinoIDE ของเรา หากท่านใดยังไม่มีก็เลือกคลิกได้เลยครับ
บทความที่เกี่ยวข้อง :
การเพิ่มบอร์ดต่างๆลงใน Arduino IDE
การเพิ่ม Library ใน Arduino IDE
ดาวน์โหลด :
NTPClient
||
mirror1
(1) ESP8266 ขอเวลาจาก NTP Server
เริ่มจากพื้นฐานที่สุดครับ คือการเอา timestamps จากเซิฟเวอร์มาแสดงบน Serial monitor ให้ได้ก่อน เพราะเราต้องการเวลาเราจึงต้องขอข้อมูลเวลามาให้ได้นั่นเอง ในตัวอย่างนี้ผู้เขียนจะใช้ NTP Server ที่
https://www.ntppool.org/
นะครับ ซึ่งที่เว็บนี้ก็จะมีเซิฟเวอร์ย่อยให้เลือกอีก แต่ผู้เขียนจะขอเลือกใช้อันใหญ่เลยที่ pool.ntp.org (รายชื่อเซิฟเวอร์ต่าง ๆ รวมถึงเซิฟเวอร์ในไทยผู้เขียนจะหามาแทรกไว้ด้านล่างสุดของหน้านี้เลยจ้า)
ถ้าไม่มีอะไรผิดพลาด เปิด Serial monitor ขึ้นมา ต่ออินเตอร์เน็ตได้ จะมีเวลาขึ้นมาที่หน้าจอเราทุก ๆ 1 วินาที
(2) เพิ่มเติมด้วยการแสดงผลออกทางหน้าจอ
แน่นอนหล่ะครับว่านาฬิกา มันคงไม่มีใครมานั่งเปิดจอคอมเพื่อดู Serial monitor ตลอดเวลา ฉะนั้นเราจึงต้องแสดงผลออกไปทางจอต่าง ๆ เช่น จอ LCD จอ Dot-Matrix หรือ 7-Segment
ใครอยากดัดแปลงเป็นแบบอื่น ๆ อย่างแสดงผลกับ Dot-Matrix หรือสร้าง 7-Segment ขนาดใหญ่ ๆ ขึ้นมาเพื่อแสดงเวลาให้เห็นทั้งหอประชุมก็แล้วแต่ความสร้างสรรค์และดัดแปลงโค้ดในส่วนของการแสดงผลกันเลยครับ
(3) Backup เวลาด้วย Real Time Clock Module
แล้วถ้าหากเน็ตล่ม หรือไฟดับ Router ไม่ปล่อย WiFi มาให้เจ้า ESP8266 ของเราหล่ะ? เวลาของเราก็จะเอ๋อไปเลย แต่ถ้าเรามี RTC คอยหนุนอยู่ หากไม่มี WiFi ให้ update NTP เราก็มีแผนสองคือไปดึงเวลาจาก RTC มาแสดงแทนนั่นเอง
(4) เปลี่ยน delay เป็น sleep เพื่อประหยัดพลังงาน
แน่นอนว่าเมื่อเราทำนาฬิกา ก็คงต้องใส่ถ่านกัน หากเราเขียนโค้ด delay เจ้า ESP8266 ก็จะตื่นตัวตลอดเวลา ใช้งานได้ไม่นานก็ต้องเปลี่ยนถ่านใหม่ การเปลี่ยน delay เป็น sleep สั่งให้มันหลับก็จะประหยัดพลังงานไปเยอะ ทำให้แบตเตอรี่ของเราใช้งานได้นานมากขึ้น หรือแม้แต่หากเราเสียบอแดปเตอร์จากไฟบ้านก็จะทำให้กินไฟน้อยลง ถึงแม้มันแค่นิด ๆ หน่อย ๆ แต่เราเสียบไว้ตลอดเวลามันก็สะสมไปเรื่อย ๆ คิดดูแล้วก็ประหยัดไปได้มากโขเลยนะครับ
จะเห็นว่าเมื่อเรา Deep Sleep แล้ว จะต้องมีโค้ดในการเชื่อมต่อ WiFi ในตอนเริ่ม loop เนื่องจากการ Deep Sleep นั้นจะปิดการทำงานทั้งหมดรวมถึงโมเด็มด้วย บอร์ดจึงตัดการเชื่อมต่อกับอินเตอร์เน็ตไป เมื่อตื่นขึ้นมาจึงต้องทำการเริ่มเชื่อมต่อใหม่นั่นเอง และอย่าลืมว่าต้องต่อขา RST และ D0 ของบอร์ดเข้าหากันด้วยนะครับ ไม่เช่นนั้นบอร์ดเราหลับเพลินแน่นอน
*Latency คือ เวลาแฝงที่เกิดขึ้นระหว่างการเดินทางของข้อมูลจากจุดหนึ่งไปยังอีกจุดหนึ่ง ซึ่งค่า latency ของเครือข่ายจะวัดกันเป็นหน่วยมิลลิวินาที(ms.) ถ้าให้เห็นภาพคือเพื่อนทำงานอยู่โต๊ะข้าง ๆ ห่างกัน 3 เมตรยืมปากกาเรา เราโยนปากกาให้เพื่อนแค่พริบตาก็ได้รับก็ดูเหมือนจะส่งปุ๊บได้ปั๊บ แต่จริง ๆ แล้วเราเสียเวลาไปนิดนึงตอนที่ปากกามันลอยอยู่ในอากาศนั่นเอง
NTP Server :
https://www.ntppool.org/
เว็บของประเทศไทย - รายชื่อที่อยู่ใน th.pool.ntp.org
ntp.ku.ac.th
fw.eng.ku.ac.th
ilm.live.rmutt.ac.th
time.uni.net.th
itoml.live.rmutt.ac.th
เว็บของประเทศไทย - รายชื่อที่ไม่ได้อยู่ใน th.pool.ntp.org
delta.cpe.ku.ac.th
time.navy.mi.th
clock.nectec.or.th
time1.nimt.or.th
time2.nimt.or.th
time3.nimt.or.th
อ้างอิง :
NTP คืออะไร :
https://saixiii.com/what-is-ntp/
[สืบค้น 30 ตุลาคม 2562]
Latency คืออะไร? :
https://www.quickserv.co.th/knowledge-base/solutions/Latency คืออะไร/?
[สืบค้น 30 ตุลาคม 2562]
ESP8266
,
ntp
,
ntp clock
,
clock
,
project
,
Arduino
,
นาฬิกา
Share
Share :
COPY
Privacy Policy
|
Cookie Policy
|
Copyright © 2025
fitrox.lnwshop.com
All rights reserved.
ตะกร้า
(
0
)
▲
▼
รายการสั่งซื้อของฉัน
เข้าสู่ระบบด้วย
เข้าสู่ระบบ
สมัครสมาชิก
ยังไม่มีบัญชีเทพ
สร้างบัญชีใหม่
ไม่มีค่าใช้จ่าย
สมัครสมาชิก (ฟรี)
รายการสั่งซื้อของฉัน
ข้อมูลร้านค้านี้
Fitrox Electronics
ไฟทร็อก อิเล็กทรอนิกส์ จำหน่ายอุปกรณ์อิเล็กทรอนิกส์ บอร์ดไมโครคอนโทรลเลอร์ และอุปกรณ์สำหรับโปรเจคต่างๆ อ.เมือง จ.เชียงใหม่ (หลัง มช.)
เบอร์โทร :
0897245633
อีเมล :
fitrox.electronics@gmail.com
ส่งข้อความติดต่อร้าน
เกี่ยวกับร้านค้านี้
ค้นหาสินค้าในร้านนี้
ค้นหา
หรือค้นหาอย่างละเอียด
ค้นหาสินค้า
สินค้าที่ดูล่าสุด
{{pdata.name}}
ดูสินค้าทั้งหมดในร้าน
สินค้าที่ดูล่าสุด
บันทึกเป็นร้านโปรด
Join เป็นสมาชิกร้าน
แชร์หน้านี้
แชร์หน้านี้
↑
TOP
เลื่อนขึ้นบนสุด
คุณมีสินค้า
0
ชิ้นในตะกร้า
สั่งซื้อทันที
สินค้าในตะกร้า ({{total_num}} รายการ)
ขออภัย ขณะนี้ยังไม่มีสินค้าในตะกร้า
ราคาสินค้าทั้งหมด
฿ {{price_format(total_price)}}
- ฿ {{price_format(discount.price)}}
ราคาสินค้าทั้งหมด
{{total_quantity}} ชิ้น
฿ {{price_format(after_product_price)}}
ราคาไม่รวมค่าจัดส่ง
ดูสินค้าในตะกร้า
เริ่มการสั่งซื้อ
➜
เลือกซื้อสินค้าเพิ่ม
พูดคุย-สอบถาม
อีเมล fitrox.electronics@gmail.com
โทร 0897245633
channel/UCnHfpCdqN1RkzAfEH_lRLvw?
1924052434588436
Add @zpq2828r