ชื่อโปรเจกต์: นาฬิกาปลุกที่เชื่อมต่อ IoT Cloud
นาฬิกาปลุกวิทยุเครื่องนี้มีเสียงที่ยอดเยี่ยมเมื่อเทียบกับขนาดของมัน และยังทำงานเป็น Bluetooth speaker ได้อีกด้วย อย่างไรก็ตาม มีปัญหาบางประการที่มาพร้อมกับมัน:
- แสงสว่างของนาฬิกาสว่างเกินไปที่จะวางไว้ใกล้กับที่คุณนอนหลับ (จำไว้ว่ามันคือ alarm clock) ไม่มีสวิตช์หรือความเป็นไปได้ที่จะหรี่ไฟได้เลย
- นาฬิกาไม่ได้ถูกควบคุมด้วยคลื่นวิทยุ คุณต้องตั้งค่าด้วยตนเอง
- เวลาปลุกถูกตั้งค่าในรอบ 12 ชั่วโมง หากคุณตั้งไว้ที่ 6 am มันก็จะดังขึ้นที่ 6 pm ด้วยเช่นกัน นอกจากนี้ ผมยังไม่สามารถตั้งเวลาได้อย่างแม่นยำมากนัก เนื่องจากการตั้งค่านาฬิกาด้วยตนเอง
- นาฬิกา (และ alarm) ทำงานด้วย battery ในขณะที่ส่วนที่เหลือของวิทยุทำงานจาก wall adapter
และนั่นคือสิ่งที่รีวิวส่วนใหญ่พูดถึงเช่นกัน ในกรณีของผม ผมยังพบปัญหาที่ alarm ดังขึ้นกลางดึกอีกด้วย

แนวคิดของผมประกอบด้วยการปรับปรุงพื้นฐานสามประการ:
- รับเวลาที่แม่นยำ
- ตั้งค่านาฬิกาให้ถูกต้อง
- ตั้งเวลา alarm ที่แม่นยำและทำให้อุปกรณ์เตือน (ในกรณีนี้คือวิทยุ) ดังขึ้นตามเวลานั้น
สำหรับการตั้งค่านาฬิกา analog ผมได้เรียนรู้ว่าความยากคือการรู้ว่าเข็มนาฬิกาแสดงเวลาใด วิธีหนึ่งในการแก้ปัญหานี้เมื่อตั้งค่านาฬิกาหลังการ restart คือการหาตำแหน่งอ้างอิง เช่น 12:00 แล้วนับจำนวนขั้นต่อไป
เพื่อตั้งเวลา alarm ที่แม่นยำ ผมตัดสินใจใช้ปุ่ม snooze ของวิทยุและ display ที่ซ่อนอยู่หลังหน้าปัดนาฬิกา
ความพยายามครั้งแรกของผมคือการใช้กลไกนาฬิกาเดิมและเพิ่ม "backpack" ที่มี Arduino Nano, Micro OLED และ DCF 77 receiver เพื่อรับเวลาที่แม่นยำ น่าเสียดายที่การรับสัญญาณ DCF ไม่เพียงพอเมื่อนำส่วนประกอบทั้งหมดใส่เข้าไปในโครงเครื่องพร้อมกับสายไฟทั้งหมดจากวิทยุที่อยู่รอบๆ นอกจากนี้ ผมไม่สามารถตรวจจับตำแหน่งอ้างอิงของเข็มนาฬิกาได้โดยใช้ alarm ของกลไกเดิม ดังที่กล่าวไว้ข้างต้น alarm ที่ดังในเวลาที่ต่างกันนั้นเป็นส่วนหนึ่งของปัญหาตั้งแต่แรก

สำหรับโปรเจกต์ที่อยู่ภายในอาคารเสมอ แต่โดยเฉพาะอย่างยิ่งหลังจาก Arduino IoT Cloud Public Beta ได้รับการประกาศในเดือนกุมภาพันธ์ 2019 ผมจึงตัดสินใจที่จะรวม WiFi connectivity เพื่อรับเวลาที่แม่นยำ
สิ่งที่เหลือให้แก้ไขคือการหาตำแหน่งอ้างอิงของเข็มนาฬิกา การทดลองหลายครั้งด้วย hall sensors/magnetometers และ magnet บนเข็มนาฬิกานั้นใช้ได้แต่ไม่สามารถให้ผลลัพธ์ที่ตรงตามความคาดหวังของผมในด้านความแม่นยำและการทำซ้ำได้ โชคดีที่ผมได้รับตัวอย่างของ clock stepper motor ที่มี optoelectronic coupler integrated สำหรับการตรวจจับตำแหน่งอ้างอิงหลังจากติดต่อผู้ผลิตโดยตรง
ในที่สุด หลังจาก Arduino Nano 33 IoT ได้รับการประกาศในเดือนพฤษภาคม 2019 ผมก็เปลี่ยน MKR WiFi 1010 ใน prototype ของผมด้วย Nano ที่มี form factor ที่เล็กกว่า
เวลา alarm (ชั่วโมงและนาที) สามารถตั้งค่าได้โดยใช้ปุ่ม snooze หรือผ่าน dashboard ตามที่กล่าวอ้างใน pitch

นี่เป็นโปรเจกต์งานอดิเรกแรกของผมที่มีชิ้นส่วนที่พิมพ์ 3D-printed และเป็น custom PCB ชิ้นแรกของผม ในฐานะที่เป็นมือใหม่ในการออกแบบ PCB ฟีเจอร์ PCB ที่ใช้งานง่ายของ Fritzing มีประโยชน์มาก
รายละเอียดทางเทคนิคเพิ่มเติม
สถาปัตยกรรมระบบ
หัวใจสำคัญของนาฬิกาอัจฉริยะนี้คือ Arduino Nano 33 IoT ซึ่งใช้ประโยชน์จากโมดูล NINA-W102 (ESP32-based) สำหรับ WiFi connectivity สิ่งนี้ช่วยให้อุปกรณ์สามารถ sync กับ NTP (Network Time Protocol) servers ทำให้มั่นใจว่านาฬิกาจะแม่นยำเสมอโดยไม่ต้องปรับด้วยตนเอง
การรวมระบบ Electromechanical
แตกต่างจากนาฬิกาทั่วไปที่ใช้กลไก quartz แบบแกว่งอย่างง่าย โปรเจกต์นี้ใช้ clock stepper motor ที่เชี่ยวชาญ
- Stepper Control: ขับเคลื่อนโดย TB6612FNG Dual Motor Driver ซึ่งช่วยให้การเคลื่อนที่ของเข็มนาฬิกาเป็นไปอย่างแม่นยำและเป็นขั้นๆ
- Reference Detection: optoelectronic coupler ที่รวมมาด้วยทำหน้าที่เป็น home sensor ในระหว่างการ startup นาฬิกาจะหมุนจนกระทั่งลำแสงถูกขัดขวางโดยแท็บทางกายภาพบน gear ซึ่งจะกำหนดตำแหน่งอ้างอิง "Zero" (เช่น 12:00:00)
คุณสมบัติ IoT Cloud
ผ่าน Arduino IoT Cloud ผู้ใช้สามารถ:
- Set Alarms: อัปเดต alarm variables ผ่าน web หรือ mobile dashboard
- Sync Settings: ปรับ GMT offsets และ daylight savings settings แบบ over the air
- Display Interface: Micro OLED มี display ที่ซ่อนอยู่แบบ discrete สำหรับแสดงเวลา alarm ที่กำหนดค่าไว้หรือสถานะการเชื่อมต่อ ซึ่งช่วยปรับปรุง user interface ให้ดีขึ้นกว่าการออกแบบ analog-only แบบเดิม