ชื่อโปรเจกต์: เล่นเกมไดโนเสาร์ด้วย Arduino และ Python3 ฉบับเด็กช่างเท่ๆ
รายละเอียดโปรเจกต์:
เชื่อดิว่าพวกเอ็งเกือบทุกคนต้องเคยเล่นเกมไดโนเสาร์ของ Google เวลาเน็ตตัดกันมาบ้างแหละ แต่ถ้าใครยังไม่เคยเล่นก็ไม่ต้องนอยด์ไป เพราะวันนี้เราจะมาเล่นกันแบบไม่ธรรมดา ไม่ต้องมานั่งกดปุ่มให้เมื่อยนิ้ว แต่เราจะใช้ "ท่าทางมือ" ในการสั่งกระโดดแทน! โปรเจกต์นี้เราจะใช้ [Sensor](https://s.shopee.co.th/7VBG2rX65j) [LDR](https://s.shopee.co.th/1BHCUqb0Tt) (Photo Resistor) ส่งค่าไปหาบอร์ด [Arduino](https://s.shopee.co.th/7fUgFAWSki) แล้วให้ Arduino ยิงข้อมูลต่อไปที่ Python3 จากนั้นเราจะใช้ Library สุดเทพอย่าง `pyautogui` มาสั่งกดปุ่มลูกศร "ขึ้น" ให้เราอัตโนมัติ จัดไปวัยรุ่น! :)
ทำไมพี่ถึงอยากทำโปรเจกต์นี้?
เรื่องของเรื่องคือพี่เพิ่งไปดูคลิปใน YouTube มา เป็นโปรเจกต์ใช้ท่าทางมือคุมคอมพิวเตอร์ด้วย Arduino แล้วแบบ เห้ย! มันหล่อเท่มากว่ะ แต่อยากทำบ้างติดที่ตอนนี้พี่ไม่มี Sensor Ultrasonic ในมือนี่ดิ พี่เลยลองมานั่งแกะดูว่ามันทำงานยังไง? แล้วก็ปิ๊งไอเดียว่า "ใช้แค่ LDR (Photo Resistor) ก็ทำได้นี่หว่า" เลยตัดสินใจเอามาคุมปุ่มลูกศรขึ้นเพื่อเล่นเกมไดโนเสาร์ซะเลย ที่สำคัญคือน้องๆ มือใหม่ก็ทำตามได้ไม่ยาก ช่วยอัปเวลความอยากรู้อยากเห็นได้ดีนักแล
ลองดูคลิปที่พี่ไปดูมาข้างล่างนี้ดิ
เอาล่ะ มาเริ่มลุยกันเลยดีกว่า:
ของที่ต้องใช้ (เตรียมให้ครบนะน้อง):
- บอร์ด Arduino UNO 1 ตัว
- Breadboard
- Photo Resistor หรือที่เรียกกันว่า LDR
- Resistor 10k ohm
- สาย Jumper
แค่นี้แหละ จบปิ๊ง
Schematic (วงจรการต่อ):
ข้อมูลเกี่ยวกับ Python3:
ทีนี้ เพื่อให้โปรเจกต์นี้ทำงานได้ น้องต้องลง Python3 ในเครื่องก่อนนะ ใครที่ยังลงไม่เป็นหรืออยากรู้วิธีการเชื่อมต่อระหว่าง Python3 กับ Arduino พี่แนะนำให้ลองไปหาข้อมูลเพิ่มเติมเรื่องการติดตั้งดู จะได้เข้าใจพื้นฐานเวลาใช้งานร่วมกับบอร์ด Arduino ของเรามากขึ้น :)
ลองเช็คข้อมูลเรื่อง "Python3 and Arduino Communication" ดูนะน้อง
ขั้นตอนสุดท้าย: ลง Library pyautogui:
เราต้องมี Library ที่ชื่อว่า `pyautogui` มาเป็นตัวช่วยในการสั่งงานกดปุ่ม "ลูกศรขึ้น" แทนมือเรา
หลังจากที่น้องลง Python3 เสร็จแล้ว ให้ทำตามขั้นตอนนี้:
ul >cd C:\\Python37
- จากนั้นพิมพ์คำสั่งอัปเกรด pip ตามนี้
python -m pip install --upgrade pip
- และนี่คือคำสั่งสุดท้ายที่ต้องพิมพ์
pip install pyautogui
วิดีโอสาธิต (Demonstration Video)

รายละเอียดทางเทคนิคเพิ่มเติม (เจาะลึกแบบวิศวะ)
Physical-to-Digital Interfacing
โปรเจกต์นี้คือการสร้างวิธีเล่นเกม "Chrome Dino" สุดคลาสสิกด้วยการสื่อสาร Serial ความเร็วสูงและการทำงานแบบ Automation
- Python Automation Bridge: เราจะรัน Script Python บน PC โดยใช้ Library
PyAutoGUIคอยเฝ้าดู Pixel บนหน้าจอ พอเจอ "กระบองเพชร" โผล่มา Python จะส่งตัวอักษร (เช่น 'J') ผ่าน Serial link ไปที่ Arduino - Hardware Triggering: (โหมดทางเลือก) หรือจะเอา Sensor LDR ไปแปะหน้าจอตรงจุดที่กระบองเพชรวิ่งผ่านก็ได้ พอ LDR ตรวจเจอการเปลี่ยนแปลงแสง บอร์ด Arduino จะจำลองตัวเองเป็น Keyboard (ถ้าใช้บอร์ดพวก ATmega32U4) หรือส่งคำสั่งกลับไปที่ Python เพื่อสั่งให้ตัวละครกระโดดทันที หล่อเท่เลยงานนี้
Precision Timing (จังหวะต้องเป๊ะ!)
- Low-Latency Loop: Code ตัวนี้ถูกปรับแต่งมาอย่างดีเพื่อให้เวลาตั้งแต่ "ตรวจจับจนถึงสั่งการ" (Detection to Action) ต่ำกว่า 10ms เพื่อให้เจ้าไดโนเสาร์กระโดดได้เป๊ะเวอร์ แม้เกมจะวิ่งเร็วแค่ไหนก็ตาม สู้งานนะน้อง!