ชื่อโปรเจกต์: 32x8 LED Matrix NTP Clock with DS3231 RTC & ESP01
ฉันอยากเรียนรู้การสื่อสาร Arduino / RTC สำหรับโปรเจกต์อื่น เจอ Ratti3 LED Matrix แล้วคิดว่า 'ลองทำโปรเจกต์นี้ดูดีกว่า!'
โค้ดของ Ratti3 ไม่สามารถคอมไพล์ได้โดยใช้ไลบรารีที่ระบุใน IDE 1.8.13 ใช้พื้นที่โปรแกรม 32362 จาก 30720 ไบต์ (105%)
ไม่ย่อท้อ ถึงเวลาจริงจังกับการเรียนรู้ Arduino!!
เดิมทีตั้งใจแค่จะทำให้โค้ดทำงานได้ แต่หลังจากเรียนรู้ ลองผิดลองถูกมาหลายเดือน ก็สามารถเพิ่มฟีเจอร์บางอย่างเข้าไปได้
ID และรหัสผ่าน Wi-Fi ที่บ้านมีการเปลี่ยนแปลงเป็นประจำ การถอดนาฬิกาลงมา เปลี่ยน ID และรหัสผ่านในโค้ด อัปโหลด แล้วประกอบกลับเข้าไปใหม่คงจะน่ารำคาญมาก
จึงเกิดไอเดียที่ 1: คือการเก็บรายละเอียด Wi-Fi ไว้ใน EEPROM และทำให้สามารถเปลี่ยนแปลงได้ผ่านระบบเมนู
EEPROM - เป็นความคิดที่ดี แล้วถ้าใช้ EEPROM บนโมดูล DS3231 เพื่อให้สามารถพกพาไปใช้กับบอร์ดอื่นได้ล่ะ
นี่คือไอเดียที่ 2: ตรวจจับการมีอยู่ของ EEPROM 'ภายนอก' และใช้งานมัน ถ้าไม่พบ ก็ใช้ EEPROM 'บนชิป'
ไม่มี BH1750 หรือ BME280 แต่ DS3231 มีเซ็นเซอร์อุณหภูมิในตัว จึงเปลี่ยนโค้ดเพื่อแมปค่าที่อ่านได้จากเซ็นเซอร์ LDR กับความสว่าง และใช้เซ็นเซอร์อุณหภูมิภายในของ DS3231
ตอนนี้ส่วนใหญ่ใช้งานได้แล้ว และฉันคิดว่าสมควรที่จะเผยแพร่ใน project hub บั๊กส่วนใหญ่ได้รับการแก้ไขแล้ว แต่ก็ยังคงปรับแต่งอยู่
นี่คือการโพสต์โปรเจกต์ครั้งแรก หวังว่าจะกลับมาอัปเดตหน้านี้ได้เมื่อมีความคืบหน้า
โค้ดมีคอมเมนต์จำนวนมาก หวังว่าจะช่วยผู้อื่นที่กำลังเรียนรู้เช่นกัน
EXPANDED TECHNICAL DETAILS
High-Precision Hybrid Chronometry
โปรเจกต์นี้รวมการเก็บเวลาด้วยฮาร์ดแวร์ในเครื่องเข้ากับการซิงโครไนซ์กับเครือข่ายทั่วโลก เพื่อสร้างนาฬิกา LED matrix ที่มีความซ้ำซ้อนและแม่นยำอย่างสมบูรณ์แบบ
- ESP-01 NTP Handshake: โมดูล ESP-01 จะเชื่อมต่อกับ WiFi และดึงเวลาที่แม่นยำจากเซิร์ฟเวอร์ Network Time Protocol (NTP) วันละครั้ง
- I2C DS3231 Synchronization: ความแม่นยำที่ดึงมาจากอินเทอร์เน็ตจะถูก "บันทึก" ลงใน DS3231 RTC สิ่งนี้ช่วยให้มั่นใจว่านาฬิกาจะยังคงแม่นยำภายในไม่กี่วินาที แม้ว่า WiFi จะหยุดทำงานเป็นเวลาหลายสัปดาห์
Visualization
- MAX7219 Matrix Driver Hub: Arduino (แกนหลักในการจัดการ) จะควบคุมอาร์เรย์ MAX7219 LED matrix 4 โมดูล เฟิร์มแวร์มีอัลกอริทึม "Smooth Scrolling" สำหรับแสดงวันที่/อุณหภูมิ และฟอนต์ "Dot-Matrix" สำหรับแสดงเวลาที่มองเห็นได้ชัดเจน