กลับไปหน้ารวมไฟล์
laser-guidance-using-joystick-8e8aac.md

เลเซอร์พอยน์เตอร์ตัวนี้ เราสามารถควบคุมให้มันชี้ไปทางไหนก็ได้ ด้วยจอยสติ๊กง่ายๆ กับเซอร์โวมอเตอร์ 2 ตัว

โปรเจกต์นี้คล้ายๆ กับที่พี่เคยทำไว้ก่อนหน้านี้ ที่ควบคุมเลเซอร์พอยน์เตอร์ผ่านบลูทูธด้วยแอปในมือถือ

โครงสร้างหลักๆ ก็คือ มีเซอร์โวมอเตอร์ตัวนึงติดตั้งอยู่บนฐาน แล้วเราก็เอาเซอร์โวตัวที่สอง (ที่มีเลเซอร์พอยน์เตอร์ติดอยู่) ไปวางบนตัวแรกอีกที เซอร์โวที่ฐานจะทำหน้าที่หมุนเลเซอร์ในแนวราบ (แนวนอน) ส่วนอีกตัวจะทำหน้าที่ก้ม-เงยในแนวดิ่ง

จอยสติ๊กมันมีปุ่มกดในตัวด้วยนะ เวลากดจอยสติ๊กลงไปมันจะทำงาน พิน SW จะส่งสถานะของปุ่มกดมาให้เรา เอาไว้ใช้เปิด/ปิดเลเซอร์ ส่วนพิน VRx กับ VRy จะส่งค่าพิกัด X กับ Y มาให้ อีก 2 พินที่เหลือคือสำหรับไฟเลี้ยงกับกราวด์

Joystick Module

ลงลึกกันหน่อย (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)
  • ขยายความสามารถได้: ตรรกะแบบโมดูลาร์ของโปรเจคนี้ทำให้เราสามารถเปลี่ยนจากเลเซอร์ไปเป็นกล้องน้ำหนักเบา หรือเซ็นเซอร์อัลตราโซนิกได้สบายๆ แปลงเจ้าแท่นป้อมปืนธรรมดาๆ ให้กลายเป็นระบบเรดาร์สแกนเคลื่อนที่ได้เลยจ้า

ข้อมูล Frontmatter ดั้งเดิม

apps:
  - "1x Arduino IDE"
author: "shubhamsantosh99"
category: "Motors & Robotics"
components:
  - "2x SG90 Micro-servo motor"
  - "1x Arduino UNO"
  - "1x Laser Diode (655 nm Red)"
  - "1x 2-Axis Joystick Module"
  - "1x Breadboard & Jumper Wires"
  - "1x External 5V 1A DC Power Adapter"
description: "ควบคุมเลเซอร์พอยน์เตอร์แบบเทพๆ เหมือนจับปืน ด้วยจอยสติกตึงๆ วัยรุ่นจัดไป!"
difficulty: "Easy"
documentationLinks: []
downloadableFiles: []
encryptedPayload: "U2FsdGVkX18G573PRIQRVt0H+wNh1wtMEDKcibIJ+8DytqC7pVqGBWTuq6IqIUpGmX1tjM3p10Pnyu+Lj+DkxotnZPUZ9APEZcZvUvXyCdU="
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/laser-guidance-using-joystick-8e8aac_cover.gif"
lang: "en"
likes: 21
passwordHash: "13e16d4a6312cd08bf0bc71aad35528af0480fe13333739283f329f254e51a77"
price: 1120
seoDescription: "Control a Laser pointer like a gun using a Joystick with this simple Arduino project."
tags:
  - "pan-tilt"
  - "targeting-system"
  - "servo-control"
  - "joystick"
  - "2-dof"
title: "เล็งเลเซอร์ด้วยจอยติก งานง่ายแต่หล่อ!"
tools: []
videoLinks:
  - "https://www.youtube.com/embed/xAYP2Ew7VB4"
views: 14600