เลเซอร์พอยน์เตอร์ตัวนี้ เราสามารถควบคุมให้มันชี้ไปทางไหนก็ได้ ด้วยจอยสติ๊กง่ายๆ กับเซอร์โวมอเตอร์ 2 ตัว
โปรเจกต์นี้คล้ายๆ กับที่พี่เคยทำไว้ก่อนหน้านี้ ที่ควบคุมเลเซอร์พอยน์เตอร์ผ่านบลูทูธด้วยแอปในมือถือ
โครงสร้างหลักๆ ก็คือ มีเซอร์โวมอเตอร์ตัวนึงติดตั้งอยู่บนฐาน แล้วเราก็เอาเซอร์โวตัวที่สอง (ที่มีเลเซอร์พอยน์เตอร์ติดอยู่) ไปวางบนตัวแรกอีกที เซอร์โวที่ฐานจะทำหน้าที่หมุนเลเซอร์ในแนวราบ (แนวนอน) ส่วนอีกตัวจะทำหน้าที่ก้ม-เงยในแนวดิ่ง
จอยสติ๊กมันมีปุ่มกดในตัวด้วยนะ เวลากดจอยสติ๊กลงไปมันจะทำงาน พิน SW จะส่งสถานะของปุ่มกดมาให้เรา เอาไว้ใช้เปิด/ปิดเลเซอร์ ส่วนพิน VRx กับ VRy จะส่งค่าพิกัด X กับ Y มาให้ อีก 2 พินที่เหลือคือสำหรับไฟเลี้ยงกับกราวด์

ลงลึกกันหน่อย (Technical Deep-Dive)
- การตรวจจับอนาล็อกสองแกน (VRx/VRy):
- โมดูลจอยสติ๊กข้างในมีโพเทนชิโอมิเตอร์ 2 ตัว ทำหน้าที่เป็นตัวแบ่งแรงดัน พอน้องขยับจอย แรงดันที่พินกลางจะเปลี่ยนไประหว่าง 0V ถึง 5V
- ADC 10-bit ของ Arduino จะอ่านค่าเหล่านี้เป็นตัวเลข 0-1023 ค่าประมาณ 512 แปลว่าจอยอยู่ตำแหน่งกลางพักผ่อนแล้วจ้า
- การปรับความเร็วแบบสัดส่วน (The "Sensitivity" Logic):
- การเคลื่อนไหวของจอยสติ๊กถูกโปรแกรมให้ ไวต่อการขยับ ด้วย นั่นหมายความว่า ยิ่งน้องดันจอยออกจากจุดกลางมากเท่าไหร่ เซอร์โวจะหมุนเร็วขึ้นเท่านั้น ช่วยให้เราปรับแต่งละเอียดเพื่อเล็งเลเซอร์ไปยังเป้าหมายได้แม่นยำขึ้น
- ไม่เหมือนกับการแมปแบบพื้นฐาน (ที่ตำแหน่งจอย 1:1 ตรงกับมุมเซอร์โว) โปรเจกต์นี้ใช้ Rate-Based Control
- อัลกอริทึม: โค้ดจะคำนวณ "Error" (ว่าจอยห่างจากจุดกลาง 512 เท่าไหร่) ยิ่ง Error มาก ค่าตัวแปรที่ใช้เพิ่มมุมให้เซอร์โวก็จะเพิ่มขึ้นเร็วขึ้น ทำให้เราทำ "การปรับแต่งละเอียด" ได้ตรงกลาง (เล็งแบบพิกเซลต่อพิกเซล) และ "กวาดสายตาอย่างรวดเร็ว" ได้เมื่อดันจอยไปสุดขอบ
- โครงสร้างแบบฮับเซอร์โว (2-DOF):
- The Gimbal: เซอร์โว "Pan" ติดตั้งอยู่บนฐาน ให้การหมุนในแนวนอน เซอร์โว "Tilt" ติดตั้งอยู่บนแขนของตัว Pan โดยตรง ให้การเคลื่อนไหวในแนวตั้ง สร้างระบบที่มีอิสระ 2 องศา (2-DOF)
- ขีดจำกัดทางกล: เพื่อป้องกันไม่ให้เซอร์โว SG90 มาตรฐานติดขัดหรือเฟืองพลาสติกเสียหาย เฟิร์มแวร์จะมีการกำหนด ข้อจำกัดในซอฟต์แวร์ (แมปมุมการทำงานให้อยู่ระหว่าง 10°-170°) เพื่อให้แน่ใจว่าเลเซอร์จะไม่ชนกับโครงสร้างของตัวเอง
- ลอจิกการสลับเปิดปิดแบบดิจิทัล (SW):
- ปุ่มกดภายในจอยสติ๊กจะต่อกับอินพุตดิจิทัลบน Arduino เฟิร์มแวร์ใช้ตัวแปร "Toggle State" ในการจำสถานะ กดจอยสติ๊กหนึ่งครั้ง เลเซอร์จะเปลี่ยนจาก OFF เป็น ON กดอีกครั้งก็จะเปลี่ยนกลับมา ใช้เทคนิค Digital Debouncing ด้วยเพื่อป้องกันไม่ให้เลเซอร์กระพริบบ่อยๆ
วิศวกรรมและความน่าเชื่อถือของระบบ
- กฎเหล็กเรื่องแหล่งจ่ายไฟภายนอก: เรื่องสำคัญที่ห้ามมองข้ามคือ ต้องใช้แหล่งจ่ายไฟแยก สำหรับจ่ายไฟให้เซอร์โว ห้ามใช้ไฟ 5V จาก Arduino โดยเด็ดขาด! ตอนแรกพี่ลองใช้ไฟจาก Arduino จ่ายให้เซอร์โว มันตอบสนองช้าและกระตุกมาก พอเปลี่ยนมาใช้อะแดปเตอร์ 5V แยกต่างหาก เซอร์โวก็ทำงานลื่นปรื๊ดเลย
- โปรเจคนี้เน้นย้ำ "กับดัก" คลาสสิกในวงการหุ่นยนต์ Arduino เซอร์โวเป็นโหลดแบบอินดักทีฟที่กินกระแสสูง ถ้าดึงไฟตรงจากขา 5V ของ Arduino อาจทำให้เรกูเลเตอร์บนบอร์ดร้อนจัดหรือไมโครคอนโทรลเลอร์รีเซ็ตเพราะไฟตก (Brownout) ได้ ผู้เขียนเข้าใจถูกต้องแล้วว่าต้องใช้ แหล่งจ่ายไฟ 5V ภายนอก สำหรับเซอร์โว โดยยังต้องต่อ กราวด์ (GND) ร่วมกัน กับ Arduino เพื่อรักษาความเสถียรของสัญญาณควบคุม
- การปรับเทียบและโซนตาย: จอยสติ๊กอนาล็อกมันไม่เคยสมบูรณ์แบบหรอกน้อง มักจะ "ลอย" หรือมีสัญญาณรบกวนเล็กน้อยตรงตำแหน่งกลางเสมอ โค้ดจึงใช้เทคนิค "โซนตาย" (Dead-Zone) เป็นบัฟเฟอร์ (เช่น $\pm 20$ จากจุดศูนย์กลาง) ทำให้เลเซอร์อยู่นิ่งๆ แม้ว่าจอยสติ๊กจะไม่สมบูรณ์แบบ
- ความปลอดภัยของเลเซอร์: ระบบนี้ใช้ไดโอดเลเซอร์คลาส IIIa ความยาวคลื่น 655nm แม้จะปลอดภัยสำหรับการยิงไปที่พื้นผิว แต่ต้องระวัง ห้ามยิงไปที่กระจกหรือดวงตาโดยเด็ดขาด! ฮาร์ดแวร์ถูกออกแบบให้กินไฟต่ำ เลเซอร์จึงสามารถขับตรงจากขาดิจิตอลของ Arduino ได้เลย (แต่ต้องมีตัวต้านทาน (Resistor) อนุกรม ไม่ว่าจะเป็นตัวในหรือตัวนอกก็ได้ เพื่อจำกัดกระแสไม่เกิน 20-30mA)
- ขยายความสามารถได้: ตรรกะแบบโมดูลาร์ของโปรเจคนี้ทำให้เราสามารถเปลี่ยนจากเลเซอร์ไปเป็นกล้องน้ำหนักเบา หรือเซ็นเซอร์อัลตราโซนิกได้สบายๆ แปลงเจ้าแท่นป้อมปืนธรรมดาๆ ให้กลายเป็นระบบเรดาร์สแกนเคลื่อนที่ได้เลยจ้า