กลับไปหน้ารวมไฟล์
samco-arduino-powered-ir-light-gunmouse-54cd84.md

SAMCO นี่คือปืนไลท์กัน (Light Gun) ของ Namco ที่แกะไส้ในออกแล้วเอา Arduino micro controller กับกล้องตรวจจับอินฟราเรด (IR positioning camera) ของ DF Robot ใส่เข้าไปแทน ทำงานเป็นเมาส์ HID บนจอทีวีหรือมอนิเตอร์ LCD (จอแบน) ได้เลยจ้า

Build Guide
Introduction & Mame in RetroPie setup
Accuracy & Tilt Correction Demo
PlayStation 1 & SEGA Saturn (RetroArch) Setup
PlayStation 2 (PCSX2) Setup
Test your Light Gun setup before uploading the final code

ลงลึกกันแบบช่างๆ

"SAMCO Precision IR Resolver" นี่คือการโมดิฟายฮาร์ดแวร์ระดับเทพ ที่อัพเกรดอุปกรณ์เกมตู้โบราณให้มาใช้ในยุคดิจิทัลได้อย่างเนียนๆ วิธีก็คือ เอาตัวปืนแสง PS1 Namco Light Gun ตัวจริงมาคว้านไส้ในออก แล้วใส่ Arduino Micro (ATMega32U4) พร้อมกับ กล้องตรวจจับตำแหน่งอินฟราเรด (DF Robot IR Positioning Camera) เข้าไปแทนที่ ผลลัพธ์คือได้ เมาส์ USB-HID ตัวหนึ่งที่ใช้งานกับจอ LCD และ LED แบบแบนสมัยใหม่ได้เลย ซึ่งปืนแสง CRT แบบเก่าทำไม่ได้แน่นอน โปรเจกต์นี้ถือเป็นคลาสเรียนขั้นสูงในเรื่อง การติดตามด้วยคอมพิวเตอร์วิทัศน์ (Computer Vision Tracking), การเลียนแบบ HID descriptor และ การแมปพิกัดด้วยตรีโกณมิติ (Trigonometric Coordinate Mapping)

  • การตรวจจับตำแหน่งด้วยอินฟราเรด & คอมพิวเตอร์วิทัศน์:
    • ตรรกะการติดตาม: ต่างจากปืนแสงรุ่นเก่าที่ต้องพึ่งพาลำอิเล็กตรอนสแกนของจอ CRT, SAMCO ใช้กล้องตรวจจับอินฟราเรดที่ติดตั้งในลำกล้องปืน กล้องนี้จะติดตามจุดสัญญาณอินฟราเรดที่ชัดเจนได้สูงสุด 4 จุด ซึ่งถูกปล่อยออกมาจากแถบ LED ที่วางอยู่บนจอ
    • การแปลงเชิงเรขาคณิต: เฟิร์มแวร์บน Arduino จะคำนวณจุดศูนย์ถ่วงระหว่างจุด IR ที่ตรวจจับได้ จากนั้นใช้วิธี Bilinear Interpolation หรือการปรับสเกลด้วยตรีโกณมิติแบบง่ายๆ เพื่อแปลงพิกัดดิบจากเซ็นเซอร์กล้อง (1024x768) ให้เป็นพิกัดเมาส์มาตรฐานบนหน้าจอ ($X, Y$)
  • การเลียนแบบ USB-HID (ATMega32U4):
    • Native USB Stack: เลือกใช้ Arduino Micro เพราะมีโปรเซสเซอร์ 32U4 ที่มาพร้อมกับการสื่อสาร USB ในตัว ทำให้ปืนสามารถระบุตัวตนต่อ Windows, Linux หรือ RetroPie ได้ว่าเป็นเมาส์มาตรฐานตัวหนึ่ง
    • Zero-Lag Polling: เนื่องจากปืนทำตัวเป็นอุปกรณ์ HID โดยตรง จึงไม่มีปัญหาเลทจาก "v-sync" หรือโอเวอร์เฮดจากการแปลคำสั่งด้วยซอฟต์แวร์ ปืนจะรายงานตำแหน่งของมันด้วยอัตราการโพลสูงสุดของ USB ทำให้ได้ความรู้สึกการติดตามที่ฉับไว "แบบหนึ่งต่อหนึ่ง" ซึ่งจำเป็นสำหรับเกมตู้แนวแข่งแบบ Time Crisis หรือ Point Blank
  • การชดเชยมุมเอียง & พารัลแลกซ์:
    • อัลกอริทึมขั้นสูง: การย้ายชุดอิเล็กทรอนิกส์มาใส่ในตัวปืนอาจทำให้เกิดความคลาดเคลื่อนจากพารัลแลกซ์ได้ถ้าผู้ใช้ยืนยิงในมุมเอียง โค้ด "SAMCO Core" จึงมี โมดูลชดเชยมุมเอียง (Tilt Correction Module) ที่ใช้ระยะห่างสัมพัทธ์ระหว่างจุด IR มาช่วยชดเชยการวางตัวของปืน ทำให้เคอร์เซอร์ยังคง "เล็งตรงเป้า" แม้จะยิงแบบสะเอว
  • การออกแบบ PCB & การเดินสัญญาณ:
    • SAMCO PCB แบบคัสตอม: เพื่อความน่าเชื่อถือสูงและการประกอบที่สะอาดตา โปรเจกต์นี้ใช้ PCB ที่ออกแบบเองโดยเฉพาะ ซึ่งทำหน้าที่จัดการการจ่ายไฟให้กล้อง IR และรับสัญญาณอินพุตจากไกปืน/ปุ่มต่างๆ ของตัวเปลือกปืน Namco เดิม สิ่งนี้ช่วยกำจัดปัญหาสายไฟพันกันยุ่งเหยิงเหมือนรังหนูที่มักพบในงานโมดิฟายปืนแสง DIY

วิศวกรรมและการใช้งาน

  • วิศวกรรมด้านการปล่อย IR: โปรเจกต์ใช้ หลอดปล่อย IR มุมแคบ 15° โดยเฉพาะ ลำแสงแคบแบบนี้ทำให้ความเข้มแสงยังสูงแม้อยู่ในระยะไกล ทำให้สามารถใช้ปืนจากอีกฝั่งห้องนั่งเล่นได้ ตัวต้านทาน (Resistor) 100 โอห์มช่วยให้ LED ทำงานได้เต็มประสิทธิภาพโดยไม่เกินขีดจำกัดทางความร้อน
  • การตั้งค่าซอฟต์แวร์ (RetroArch/MAME): คู่มือมีไกด์การอินทิเกรตแบบลึกสำหรับ RetroPie และ PCSX2 อธิบายวิธีแมปอินพุต "Light Gun" ในการตั้งค่าแกนกลางของเอมูเลเตอร์ ซึ่งจะแปลงการคลิกเมาส์จาก Arduino ให้เป็นพัลส์สัญญาณเฉพาะของเครื่องเกมคอนโซล
  • การปรับช่วงไดนามิกให้เหมาะสม: มี "4-LED Sketch" พิเศษสำหรับจอขนาดใหญ่หรือห้องขนาดเล็ก โดยการเพิ่มจำนวนจุดอ้างอิง Arduino จะสามารถคำนวณหาตำแหน่งของตัวเองได้แม่นยำขึ้นเมื่อผู้ใช้ยืนใกล้จอมากๆ ช่วยป้องกันปัญหา "จุดบอด" ที่พบบ่อยในระบบที่ใช้ LED แค่ 2 ดวง
  • คุณภาพการประกอบระดับมืออาชีพ: ตั้งแต่การเจาะตำแหน่งติดตั้งกล้องในลำกล้องอย่างแม่นยำ ไปจนถึงการใช้ ฟลักซ์บัดกรี (Solder Flux) สำหรับการบัดกรีที่แข็งแรงมั่นคง โปรเจกต์ SAMCO เน้นความสวยงามที่ไม่ทำลายของเดิม ยังคงความรู้สึกสัมผัสของฮาร์ดแวร์ยุค 90 ไว้ได้ ขณะที่ให้ประสิทธิภาพระดับศตวรรษที่ 21

พัฒนาต่อได้อีก: เพิ่มสเก็ตช์สำหรับ 4 LED เพื่อลดระยะการทำงานที่จำเป็น

Explanation of 4 LED sketch
โค้ดอัพเดทใหม่มาแล้ววว!

คู่มือประกอบ GunCon2 (จัดไปวัยรุ่น)

มี PCB แบบใหม่ให้เลือกใช้แล้วนะจ๊ะน้อง!


ฟื้นตำนานตู้เกม: เชื่อมความทรงจำยุค 90s เข้ากับเทคโนโลยี Optical Positioning สุดล้ำ สู้งานนะน้อง!

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

apps:
  - "1x Arduino IDE"
author: "samco"
category: ""
components:
  - "2x Resistor 100 ohm"
  - "1x NEW SAMCO PCB's"
  - "1x Soldering iron (generic)"
  - "1x Adafruit ItsyBitsy M0"
  - "2x Infrared Emitter, 15 °"
  - "1x Gravity: IR Positioning Camera For Arduino"
  - "1x Arduino Micro"
  - "1x Drill / Driver, Cordless"
  - "1x Solder Flux, Soldering"
description: "มาดัดแปลงปืนไลท์กัน PS1 เก่าๆ ให้เทพขึ้นกัน! เปลี่ยนไส้ในเป็น Arduino ที่ซัพพอร์ต HID แล้วจะได้ทั้งปืนยิงจอและเมาส์กวนๆ ไปใช้เล่นเกมหรือทำงาน ตึงๆ วัยรุ่นจัดไป!"
difficulty: "Intermediate"
documentationLinks: []
downloadableFiles:
  - "https://github.com/samuelballantyne/IR-Light-Gun"
  - "https://github.com/samuelballantyne/IR-Light-Gun"
encryptedPayload: "U2FsdGVkX1/EX5N6KU5WhAAdl4VUi8OAaeLArfIqcU1BuBT+I5FG0QHISSiA+xhGhj3cAkIMZqZtM7VLVbZmg8hVWAj3dRDm/hSg8Jk0+NQ="
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/samco-arduino-powered-ir-light-gunmouse-54cd84_cover.jpg"
lang: "en"
likes: 5
passwordHash: "dafa1c2862ec4773c63a321b58e22749cbc2af54573f4503f88f9b5b09adf04f"
price: 1499
seoDescription: "Build a custom light gun/mouse using Arduino and a PS1 Namco light gun with HID support."
tags:
  - "arcade"
  - "emulator"
  - "light gun"
  - "retropie"
  - "games"
title: "SAMCO Light Gun อัพเกรดด้วย Arduino งานง่ายแต่หล่อ!"
tools: []
videoLinks:
  - "https://www.youtube.com/embed/cwhUe22ZhzE"
  - "https://www.youtube.com/embed/ygBHzShNIPg"
  - "https://www.youtube.com/embed/1g8y9xYrDiE"
  - "https://www.youtube.com/embed/UqWgm9CAP7U"
  - "https://www.youtube.com/embed/FDNjJug52EA"
  - "https://www.youtube.com/embed/Mzek1c2WMb0"
  - "https://www.youtube.com/embed/JJPcwmTc5X0"
  - "https://www.youtube.com/embed/xPWTQeqoiII"
  - "https://www.youtube.com/embed/k_JsqBy0rr4"
  - "https://www.youtube.com/embed/LizXdsRqRpE"
views: 15653