ปัญหาหนึ่งของผู้เขียน คือไม่มีนาฬิกาที่เที่ยงตรงจริง ๆ เพื่อใช้อ้างอิงในการทำตามนัดหมายต่าง ๆ เช่น เวลา 16:00 (4 โมงเย็น) เจ้าที่ของร้านจะต้องออกไปส่งของให้ตรงเวลา ที่ต้องเป็นเวลานี้พอดีเพราะไปรษณีย์จะปิดตอน 4 โมงครึ่ง จึงต้องไปให้ทันเวลาก่อนปิด และไปก่อน 4 โมงเย็นไม่ได้ เพราะจะต้องรอลูกค้าบางรายที่สั่งซื้อมาจำนวนน้อย จะได้จัดส่งให้ทันในวันนั้นเลย เพื่อให้ลูกค้าได้รับสินค้าเร็วที่สุด ฉนั้น เวลาที่เที่ยงตรงจึงเป็นสิ่งที่สำคัญมาก ๆ สำหรับผู้เขียนด้วยเหตุผลเรื่องต้องไปส่งของให้ตรงเวลานั่นเอง
นาฬิกาที่ตรง จะต้องนับเวลาแบบเที่ยงตรงได้ด้วยตนเอง รวมทั้งปรับเวลาให้ตรงกับเวลาสากลได้อัตโนมัติ การปรับเวลาให้ตรงได้อัตโนมัติมี 2 ทางเลือกดังนี้
ระบบ GPS เป็นระบบนำร่องที่อาศัยเวลาเป็นหลักในการทำงาน หากเวลาที่เครื่องรับกับเครื่องส่งเพี้ยนไปเล็กน้อย จะทำให้ได้พิกัดที่ผิดไปหลายกิโลเมตรเลยทีเดียว ทุก ๆ ครั้งที่ GPS จะทำงานจึงมีระบบปรับจูนเวลาให้ตัวเองมีเวลาที่เดินตรงอยู่เสมอ ทำให้เราสามารถนำค่าเวลาที่ได้จาก GPS มาใช้งานได้ โดยมั่นใจได้ว่า เวลาที่ได้มานั้นเที่ยงตรงจริง ๆ
แต่ข้อเสียของ GPS คือ ต้องใช้เวลาซักครู่หนึ่งเพื่อให้พร้อมสำหรับการแสดงค่าเวลา เพราะ GPS จำเป็นต้องติดต่อกับดาวเทียมอย่างน้อย 4 ดวงจึงจะให้ผลการทำงานที่ถูกต้องได้ กว่าจะได้ค่าเวลาบางครั้งอาจจะใช้เวลา 1 - 2 นาที รวมทั้ง GPS จำเป็นต้องใช้งานในที่โล่ง จึงจะสามารถรับสัญญาณจากดาวเทียมได้
NTP (Network Time Protocol) เป็นโปรโตคอลที่ใช้ปรับค่าเวลาในคอมพิวเตอร์ให้เที่ยงตรงอยู่เสมอ พื้นฐานของโปรโตคอล NTP คือโปรโตคอล UDP ซึ่งโมดูลที่เกี่ยวข้องกับอินเตอร์เน็ตสามารถใช้โปรโตคอลนี้ได้อยู่แล้ว เมื่อทำการเชื่อมต่ออินเตอร์เน็ตได้แล้ว จะสามารถดึงค่าเวลามาได้ทันทีโดยใช้เวลาเพียงเสี้ยววินาทีเท่านั้น เมื่อความเร็วอินเตอร์เน็ตต่ำเพียงไรก็สามารถดึงค่าเวลามาได้โดยไม่มีอาการหน่วงแต่อย่างใด
แต่เนื่องจาก NTP เป็นเวลาที่ได้มาจากเซิร์ฟเวอร์ปลางทางที่เราเข้าไปขอเวลามา บางเซิร์ฟเวอร์ที่ไม่มีการดูแลปรับปรุงอยู่เสมอจะส่งค่าเวลาที่ผิดมาให้ ดังนั้นการใช้งานเวลาจาก NTP จึงควรเลือกเซิร์ฟเวอร์ที่เชื่อถือได้เพื่อให้ได้เวลาที่ถูกต้องมาด้วย ทั้งนี้ท่านสามารถเข้าไปดูรายชื่อของเซิร์ฟเวอร์ NTP ที่เชื่อถือได้ ได้ที่ลิงค์ รายชื่อ NTP Server ในไทย
ด้วยเหตุผลที่ว่า GPS เวลาที่ได้เที่ยงตรงเวลา NTP จริง แต่ด้วยราคาของโมดูล GPS และด้วยเวลาที่สามารถคลาดเคลื่อนได้บ้าง (เพราะดูแค่หลักนาทีเท่านั้น) ทำให้การดึงเวลามาจาก NTP เป็นตัวเลือกที่ประหยัดงบประมาณ รวมทั้งได้ค่าเวลาที่ค่อนข้างถูกต้องมากที่สุด ผู้เขียนจึงเลือกใช้เวลาจาก NTP มาเป็นตัวอ้างอิง
เมื่อเลือกได้แล้วว่าจะดึงเวลามาจากที่ใด จึงสามารถเลือกไมโครคอนโทรลเลอร์ที่ใช้งานได้อย่างง่ายดาย ในตัวเลือกของอุปกรณ์ที่สามารถเชื่อมต่ออินเตอร์เน็ตได้ ตัว WeMos D1 mini Lite ราคาถูก และมีขนาดเล็กที่สุดแล้ว ผู้เขียนจึงเลือก WeMos D1 mini Lite มาใช้
ปัญหาต่อมาคืออุปกรณ์แสดงผล โดยปกติแล้วการแสดงผลที่เกี่ยวข้องกับตัวเลขมักเลือก 7 Segment มาใช้ แต่เนื่องจากร้าน IOXhop ไม่มี 7 Segment ขนาดใหญ่เลย ผู้เขียนจึงเลือกใช้ Dot Matrix แทน โดยเลือกโมดูลขนาด 8x8 จำนวน 4 ตัวมาต่อกัน รวมได้ขนาด 32x8 แต่เพื่อความสะดวกของผู้อ่าน โมดูล Dot Matrix ขนาด 32x8 มีจำหน่ายอยู่แล้ว ผู้อ่านสามารถเลือกซื้อมาใช้งานได้เลย เพียงแต่ผู้เขียนมีโมดูลขนาด 8x8 ไว้ใช้งานอยู่แล้ว จึงออกแรงนำมาต่อกันเพื่อประหยักต้นทุนซักหน่อย
สรุปแล้ว อุปกรณ์ที่ใช้มีดังนี้
หลังจากเตรียมอุปกรณ์ครบแล้ว ให้ต่อวงจรดังนี้
จะเห็นว่าการต่อวงจรจะต่อแบบ SPI โดยหากดูจาก WeMos D1 mini pinout จะพบว่าขา D5 เป็นขา SCK ของ SPI นั่นเอง เมื่อพิจารณาว่าต่อแบบ SPI แล้ว สามารถสรุปเรื่องการต่อวงจรมาเป็นตารางได้ดังนี้
WeMos D1 mini Lite | Dot Matrix (MAX7219) |
5V | VCC |
GND | GND |
D7 (MISO) | DIN |
D8 (SS) | CS |
D5 (SCK) | SCK |
กรณีมีบอร์ด NodeMCU อยู่ ให้ต่อตามนี้
NodeMCU | Dot Matrix (MAX7219) |
VIN | VCC |
GND | GND |
D6 (MISO) | DIN |
D8 (SS) | CS |
D5 (SCK) | SCK |
เตรียมโปรแกรม Arduino ให้พร้อมก่อน โดยหากยังไม่ติดตั้งบอร์ด ESP8266 เพิ่ม ให้อ่านวิธีติดตั้งได้ที่ เริ่มต้นพัฒนาเฟิร์มแวร์ EPS8266 ด้วย Arduino IDE แล้วติดตั้งไลบรารี่ LEDMatrixDriver เพิ่ม โดยทำตามขั้นตอนดังนี้
เปิดโปรแกรม Arduino ขึ้นมา จากนั้นกดไปที่เมนู Sketch > Include Library แล้วเลือก Manage Libraries...
หน้าต่าง Library Manager จะแสดงขึ้นมา ให้พิมพ์คำว่า LEDMatrixDriver คลิกเลือกของ Bartosz แล้วกดปุ่ม Install
เมื่อเสร็จแล้ว จะขึ้นคำว่า INSTALLED (ดังรูป)
ปิดหน้าต่าง Library Manager ไปได้เลย
เข้าไปที่ ioxhop/32x8-Dot-Matrix-Clock จากนั้นกดปุ่ม Clone or download แล้วกด Download ZIP
คลายไฟล์ที่ดาวน์โหลดไว้ที่ใดที่หนึ่ง แล้วใช้โปรแกรม Arduino เปิด Sketch นี้ขึ้นมา โดยเลือกไฟล์ Clock_ESP8266.ino
แก้ชื่อ WiFi และรหัสผ่านของ WiFi ที่ต้องการเชื่อมต่อ ในบรรทัดที่ 6 และ 7
เลือกบอร์ด เลือกพอร์ตให้ถูกต้อง แล้วอัพโหลดได้เลย
ผลที่ได้คือ ตัว WeMos D1 mini Lite จะใช้เวลาซักครู่ในการเชื่อมต่อ WiFi จากนั้นค่าเวลาจะแสดงขึ้น Dot Matrix แล้ว
นำมาปรับปรุงใหม่ โดยยึด WeMos D1 mini Lite ยึดกับ Dot Matrix ด้วยเทปกาว 2 หน้า แล้วบัดกรีเชื่อม WeMos D1 mini Lite เข้ากับ Dot Matrix ด้วยสายวายแลป
ได้นาฬิกาดิจิตอลขนาดเล็ก เหมาะนำไปใช้งานได้แล้ว
บทความนี้เน้นนำโค้ดมาอัพโหลดเพื่อให้ใช้งานได้ และเป็นการแสดงเวลาเท่านั้น นาฬิกาเจ๋ง ๆ ที่ขายในราคาสูงมีฟีเจอร์มากกว่านี้มาก เช่น แสดงจำนวน Like ของเพจ แสดงข้อความที่ยังไม่ได้อ่านในแชทของเพจ แสดงอุณหภูมิปัจจุบัน และอื่น ๆ ซึ่งท่านผู้อ่านสามารถนำไปพัฒนาต่อได้ โดยคำแนะนำของผู้เขียนคือ ต้องออกแบบฟ้อนเพิ่ม เพราะโค้ดมีเฉพาะฟ้อนตัวเลขเท่านั้น
ในบทความหน้าจะมาเล่าเกี่ยวกับอะไร ฝากติดตามด้วยนะครับ สำหรับบทความนี้ มีเท่านี้ครับ
~ สวัสดีครับ ~