หุ่นยนต์บังคับไร้สายใช้ Arduino ควบคุมด้วย PS2 Wireless Controller


ผู้เขียน
อภิรักษ์ นามแถ่ง

งบประมาณ 1,100 บาท (ใช้โครงสร้างหุ่นยนต์ T.O.P.)

โครงงานนี้เป็นการนำเอา PS2 JoyStick แบบไร้สาย ใช้เป็นตัวควบคุมทิศทางการเคลื่อนที่ของตัวรถ รวมถึงสามารถควบคุมแกนด้านบนที่ติดตั้งกล้องแบบ IP Camera สำหรับหมุนซ้าย ขวา ขึ้น และ ลง

PS2 JoyStick ถูกดัดแปลงให้สามารถนำมาเชื่อมต่อกับ Arduino ให้นักพัฒนาได้นำมาประยุกต์ใช้กับงานควบคุมหรือสั่งงานรูปแบบต่างๆ สร้างความแปลกใหม่ได้พอสมควร เริ่มแรก JoyStick นี้ถูกออกแบบมาสำหรับใช้กับเครื่องเล่น PlayStation ที่ผลิตโดยโซนี่คอมพิวเตอร์เอ็นเตอร์เทนเมนท์ ซึ่งเป็นเครื่องเล่นเกมยอดนิยมมากยี่ห้อหนึ่ง เมื่อได้รับความนิยม อะไหล่หรืออุปกรณ์จึงสามารถหาซื้อได้ง่าย รวมถึงตัว JoyStick ด้วย และตัว JoyStick เองก็จะมีให้เลือกใช้งานทั้งแบบมีสายและแบบไร้สาย สำหรับรุ่นแบบมีสายสามารถเชื่อมต่อเข้ากับขาของ Arduino ได้โดยตรง แต่การใช้งานอาจจะไม่สะดวกเท่าที่ควร เนื่องจากการเชื่อมต่อระหว่าง JoyStick กับบอร์ดควบคุม Arduino จะมีสายระโยงระยางทำให้เกะกะพอสมควรหากนำมาใช้ในรูปแบบของรถบังคับตามความต้องการของโครงงานนี้ ดังนั้น ผู้เขียนจึงเลือกใช้ JoyStick ที่เป็นแบบไร้สาย แต่การเชื่อมต่อก็จะมีความยุ่งยาก รวมถึงราคาก็จะสูงกว่ากว่าแบบมีสายอยู่สักหน่อย แต่ก็ไม่มากเกินไป ซึ่งก็นับว่าคุ้มค่าเมื่อเทียบกับความสะดวกในการใช้งานและรูปแบบการควบคุมที่มีความทันสมัยมากกว่า

รูปที่ 1 ตำแหน่งขาของตัวรับ PS2

รูปที่ 2 อะแดปเตอร์แปลง PS2 ให้เป็นขาต่อแบบ SPI

PS2 wireless controller

PS2 wireless controller เป็นอุปกรณ์มาตรฐานสำหรับเครื่องเล่น PlayStation 2 และสามารถใช้งาน DualShock แบบที่เครื่องเล่น PlayStation ทำได้ มีปุ่มกดแบบอะนาลอกสิบสองปุ่ม (Χ, O, Π, Δ, L1, R1, L2, R2, ขึ้น, ลง, ซ้ายและขวา) ปุ่มดิจิตอล 5 ปุ่ม (L3, R3 Start, Select และโหมดอะนาลอก) และคันโยกควบคุมแบบอะนาลอกสองอัน ตัวควบคุมยังมีมอเตอร์การสั่นสะเทือนสองตัวที่อยู่ฝั่งซ้ายและขวา ซึ่งตัวที่อยู่ด้านซ้ายจะมีขนาดใหญ่และมีประสิทธิภาพมากกว่าด้านขวา ทางด้านแหล่งจ่ายจะใช้แบตเตอรี่ขนาด AAA จำนวนสองก้อน สื่อสารกับตัวควบคุมโดยใช้โปรโตคอล RF 2.4GHz ซึ่งตำแหน่งขาของ PS2 จะแสดงดังรูปที่ 1 หน้าที่ของแต่ละขาต่างๆ มีดังต่อไปนี้

  • DATA ขานี้ทำหน้าที่รับข้อมูล (DATA) จากตัวควบคุมมายัง PS2 มีลักษณะเป็นเอาต์พุตแบบ Open collector มีตัวต้านทานต่อพูลอัพ (Pull-up) ไว้ค่าอยู่ที่ 1 ถึง 10k ขึ้นไป
  • COMMAND ขานี้ทำหน้าที่ส่งข้อมูลจาก PS2 ไปยังตัวควบคุม
  • VIBRATION MOTOR POWER เป็นขาสำหรับจ่ายแรงดันให้กับมอเตอร์สั่นสะเทือน
  • GND ขากราวด์ของวงจร
  • VCC ขาแรงดันไฟบวกย่าน 3-5V
  • ATT ขานี้เหมือนขาอินเตอร์รัปต์ในไมโครคอนโทรลเลอร์ทั่วไป ในสภาวะปกติขานี้จะมีสภาวะเป็นลอจิกสูง ก่อนจะได้รับหรือส่งข้อมูลแต่ละไบต์ขานี้จะเป็นลอจิกต่ำ และจะกลับมาเป็นลอจิกสูงอีกครั้งเมื่อเสร็จขั้นตอนการรับหรือส่ง ในการทำงานขานี้จะพิจารณาว่าเป็น “Chip Select” หรือ “Slave Select” เพื่อใช้ควบคุมตำแหน่ง Address ที่แตกต่างกันบนบัสเดียวกัน
  • CLK ขาสัญญาณนาฬิกามีค่าเท่ากับ 500kHz ใช้สำหรับสื่อสารข้อมูลมาตรฐาน SPI
  • ไม่ได้เชื่อมต่อ
  • ACK เป็นขาตอบรับเมื่อ PS2 ได้รับสัญญาณจากตัวควบคุม โดยปกติขานี้จะมีสภาวะเป็นลอจิกสูง และจะเป็นลอจิกต่ำคาบเวลาประมาณ 12us หลังจากได้รับข้อมูลแต่ละไบต์ ขานี้เป็นเอาต์พุตแบบ Open collector ต้องใช้ตัวต้านทานพูลอัพ (1 ถึง 10k ขึ้นไป)

สัญญาณจาก PS2

PS2 wireless controller จะสื่อสารกับตัวควบคุมหรือ Arduino ของเราโดยใช้โปรโตคอลมาตรฐาน SPI ซึ่งการรับและส่งข้อมูลสามารถทำได้พร้อมกัน (full duplex) ผ่านการสื่อสารแบบอนุกรม มีสัญญาณนาฬิกา (SCK) เพื่อซิงโครไนซ์บิตข้อมูลให้กับขา DATA และ COMMAND นอกจากนี้ยังมีขา “Attention” (ATT) ซึ่งกำหนดให้กับ Slave หรือตัวควบคุมทราบว่าขณะนั้นมีคำสั่งถูกสั่งมาที่ขา COMMAND หรือตรวจสอบสภาวะว่า PS2 พร้อมรับข้อมูลส่งผ่านขา DATA หรือไม่ ยังมีขาสัญญาณที่ไม่เกี่ยวกับโปรโตคอล SPI แต่ก็เป็นส่วนหนึ่งที่ใช้ในการรับส่งข้อมูล คือ ขา “Acknowledge” (ขา ACK)

ขา CLK ปกติแล้วอยู่ในสภาวะลอจิกสูงจนกระทั่งมีการรับ-ส่งข้อมูล ขานี้จึงจะมีสภาวะเป็นลอจิกต่ำเพื่อเริ่มต้นสื่อสาร และเนื่องจากข้อมูลถูกส่งเป็นไบต์ ดังนั้นแต่ละไบต์ (8 บิต) จะเกิดสัญญาณนาฬิกาจำนวน 8 ลูก (ตามจำนวนบิต) ตามสภาวะที่มีการรับ-ส่งข้อมูล การอ่านข้อมูลจาก PS2 จะเกิดขึ้นหลังจากขอบขาลงของสัญญาณนาฬิกาหลังจากได้รับคำสั่งแต่ละคำสั่งจากตัวควบคุม ขณะเดียวกันตัวควบคุมจะตรวจสอบแรงดันที่ขา ACK ว่าเป็นลอจิกต่ำหรือไม่ ซึ่งคาบเวลาที่เป็นลอจิกต่ำอย่างน้อยจะต้องเท่ากับหนึ่งไซเกิล (สัญญาณนาฬิกา 1 ลูก) ถ้าในกรณีที่ตัวควบคุมไม่สามารถตรวจสอบสัญญาณที่ขา ACK จาก PS2 ได้ จะถือว่าไม่สามารถควบคุมได้

การใช้งานจริงผู้ใช้เลือกนำอะแดปเตอร์เพื่อแปลงตัวรับ PS2 จากปกติให้เป็นขาต่อแบบ SPI ออกแบบมาสำหรับเชื่อมต่อกับบอร์ด Arduino ซึ่งอะแดปเตอร์นี้สามารถใช้ได้ทั้งจอย PS2 แบบมีสายและแบบไร้สาย ตัวถังและตำแหน่งขาแสดงดังรูปที่ 2

L298 Motor Drive Module

L298 Motor Drive Module ไดร์สำหรับขับมอเตอร์ 2 ตัวแยกได้อย่างอิสละ สามารถหมุ่นไป/หมุ่นกลับ (แบบ H-Bridge) และควบคุมความเร็วรอบได้ สามารถจ่ายกระแสเอาต์พุตสูงสุดไม่เกิน 2 แอมป์/ข้าง สามารถรับแรงดันอินพุตสูงสุดถึง 35 โวลต์

รูปที่ 3 วงจรของ L298 Motor Drive Module

รูปที่ 4 รูปแบบของ PWM

รูปที่ 5 รูปบอร์ด L298 Motor Drive Module

วิธีการทำงาน

โมดูลนี้จะมีหัวใจหลัก คือ L298N H-Bridge การควบคุมมอเตอร์จะอาศัยหลักการ H-Bridge ซึ่งโมดูลนี้ใช้ในการควบคุมความเร็วและทิศทางของมอเตอร์ นอกจากจะควบคุมการทำงานกับมอเตอร์แล้วยังสามารถนำไปประยุกต์ใช้กับอุปกรณ์อื่นได้อีกด้วย เช่น นำไปควบคุมการหรี่ไฟในบ้าน (ต้องต่ออุปกรณ์อื่นร่วมด้วย) หรือสามารถนำไปหรี่ไฟกระแสตรง (DC) ได้โดยตรง (แต่แรงดันต้องอยู่ในย่านที่กำหนด คือ ไม่เกินแหล่งจ่ายที่รับได้ซึ่งก็คือ 35 โวลต์)

H-Bridge เป็นวงจรที่สามารถใช้ควบคุมกระแสได้ทั้งขั้วบวกและลบด้วยการควบคุม pulse width modulation (PWM) เป็นการควบคุมแบบ digital ที่มีการนำมาใช้กันมาก โดยส่วนมากเพื่อเป็นการประหยัดพลังงาน เพราะการใช้ PWM ทำให้เกิดการสูญเสียพลังงานน้อยมาก เมื่อความสูญเสียน้อยก็เป็นการประหยัดพลังงานไปในตัว

การควบคุมโมดูลทั้งความเร็วรอบและทิศทางการหมุน ถูกควบคุมโดยใช้ PWM โดยมีขาอินพุต ENA และ ENB เป็นตัวกำหนดการใช้งานเอาต์พุต A และ B ในส่วนของทิศทางการหมุนจะถูกควบคุมโดยการให้สัญญาณลอจิก High และ Low ที่ขาอินพุต EN1-EN2 สำหรับมอเตอร์ A หรือ EN3-EN4 สำหรับมอเตอร์ B

คุณสมบัติ

  • Dual H-Bridge Drive (สามารถขับเคลื่อนมอเตอร์ DC ได้ 2 ตัว)
  • ใช้ไอซี L298N
  • ระดับแรงดันลอจิก 5V
  • ช่วงแรงดันไฟฟ้าที่สามารถรับได้ 5V-35V
  • กระแสลอจิกไดร์ 0mA-36mA
  • กระแสไฟฟ้าสูงสุดสำหรับขับมอเตอร์ 2A (ต่อข้าง)
  • น้ำหนัก 30 กรัม
  • ขนาด: 43x43x27 มม.

รูปที่ 6 วงจรสมบูรณ์

หลักการทำงาน

รูปที่ 6 เป็นวงจรสมบูรณ์ของโครงงานนี้จะเห็นว่าอุปกรณ์มีอยู่เพียงไม่กี่ชิ้นหลักๆ ได้แก่ บอร์ดไดร์มอเตอร์ L298 Motor Drive Module, อะแดปเตอร์, คอนเน็กเตอร์ และหัวใจหลักของโครงงาน คือ บอร์ด Arduino UNO R3

Arduino UNO R3 จะเป็นตัวควบคุมการทำงานของวงจรทั้งหมด แบ่งออกเป็นเอาต์พุตและอินพุต ในส่วนของอินพุตจะเป็นการรับคำสั่งจาก PS2 wireless controller ซึ่งจะถูกส่งมาจาก JoyStick ผ่านอะแดปเตอร์ที่มีการสื่อสารแบบ SPI ที่มีสายสัญญาณ 3 เส้น บวกกับขา ATT อีก 1 ขา รวมเป็นทั้งหมด 4 ขา ข้อมูลที่รับมาจะเป็น Address ของแต่ละปุ่ม ซึ่งจะมีทั้งแบบอะนาลอกและดิจิตอลดังที่กล่าวไว้ข้างต้น หลังจากได้รับข้อมูลมาแล้ว Arduino จะประมวลผลและทำงานตามคำสั่งที่ได้รับมา ตัวอย่างเช่น หากส่งให้เดินหน้า เอาต์พุต IN1 กับ IN3 จะส่งค่า PWM ออกไป ส่วน IN2 และ IN4 จะมีสถานะลอจิก Low ทำให้มอเตอร์ทำงานได้หมุนไปข้างหน้า และในทางตรงกันข้ามการถอยหลังเอาต์พุต IN2 กับ IN4 จะส่งค่า PWM ออกไป ส่วน IN1 และ IN3 จะมีสถานะลอจิก Low ทำให้มอเตอร์ทำงานได้หมุนกลับไปอีกทาง

ในการเลี้ยวซ้ายหรือเลี้ยวขวาจะใช้หลักการให้มอเตอร์ทั้งสองตัวหมุนไปทางตรงกันข้ามกัน ยกตัวอย่างเช่น การเลี้ยวซ้ายเอาต์พุต IN1 กับ IN4 จะส่งค่า PWM ออกไป ส่วน IN2 และ IN3 จะมีสถานะลอจิก Low ทำให้มอเตอร์ซ้ายและขวาหมุนสวนทางกัน ทำให้รถหมุนไปทางซ้ายได้ ในทางตรงกันข้าม การเลี้ยวขวาเอาต์พุต IN2 กับ IN3 จะส่งค่า PWM ออกไป ส่วน IN1 และ IN4 จะมีสถานะลอจิก Low ทำให้รถหมุนไปทางขวาได้

อีก 4 สภาวะ คือ การเดินหน้าแล้วเลี้ยวซ้าย, การเดินหน้าเลี้ยวขวา, การถอยหลังเลี้ยวซ้ายและการถอยหลังเลี้ยวขวา จะกำหนดให้มอเตอร์ 1 ตัวทำงานและมอเตอร์อีกตัวหยุดทำงาน การเลี้ยวจะคล้ายๆ กับการเลี้ยวซ้ายและเลี้ยวขวาดังที่กล่าวไว้ข้างต้น แต่ลักษณะการเลี้ยวจะมีการเดินหน้าหรือถอยหลังไปด้วย ทำให้ตัวรถมีการเคลื่อนที่จากจุดเดิม แต่ถ้าเป็นการเลี้ยวอย่างที่กล่าวข้างต้นจะเลี้ยวเพียงอย่างเดียวไม่มีการเคลื่อนที่ ตำแหน่งของรถจะยังอยู่ที่เดิม แต่ตัวรถจะเปลี่ยนไปตามทิศทางการเลี้ยว

ส่วนสุดท้าย คือ การควบคุม Servo Motor (เซอร์โวมอเตอร์ 2 ตัว ตัวแรกจะอยู่ที่ฐานหมุนในแนวแกนนอน ทำหน้าที่หมุนไปทางซ้ายและขวา อีกตัวหนึ่งจะอยู่ด้านบนทำหน้าที่หมุนขึ้นและลง ในการใช้งานเครื่องต้นแบบจะนำไปหมุนตัวยึดโทรศัพท์ เพื่อสั่งให้ถ่ายภาพมุมกดและมุมหงายเพื่อเปลี่ยนมุมมองกล้อง หลักการทำงานของ RC Servo Motor คือ เมื่อจ่ายสัญญาณพัลส์เข้าให้กับ Servo Motor ส่วนวงจรควบคุม (Electronic Control System) ภายใน Servo จะทำการอ่านและประมวลผลค่าความกว้างของสัญญาณพัลส์ที่ส่งเข้ามาเพื่อแปลค่าเป็นตำแหน่งองศาที่ต้องการให้ Motor หมุนเคลื่อนที่ไปยังตำแหน่งนั้น แล้วส่งคำสั่งไปทำการควบคุมให้ Motor หมุนไปยังตำแหน่งที่ต้องการ โดยมี Position Sensor เป็นตัวเซ็นเซอร์คอยวัดค่ามุมที่ Motor กำลังหมุน เป็น Feedback กลับมาให้วงจรควบคุมเปรียบเทียบกับค่าอินพุตเพื่อควบคุมให้ได้ตำแหน่งที่ต้องการอย่างถูกต้องแม่นยำ

รูปที่ 7 ลายวงจรพิมพ์ขนาดเท่าแบบ

รูปที่ 8 ตำแหน่งการลงอุปกรณ์ที่ถูกต้อง

รูปที่ 9 การเตรียมคอนเน็กเตอร์สำหรับเชื่อมต่อโมดูล L298

การประกอบ

รูปที่ 8 เป็นตำแหน่งการลงอุปกรณ์ของโครงงานนี้ จะสังเกตว่าลายวงจรนั้นก็มีเพียงด้านเดียวและการลงอุปกรณ์ก็ไม่ยุ่งยาก เนื่องจากอุปกรณ์มีน้อยชิ้นและส่วนมากเป็นโมดูล แต่ถึงแม้ว่าอุปกรณ์น้อยชิ้นและการลงอุปกรณ์ก็ไม่ยุ่งยาก แต่ถึงอย่างไรก็ตามการลงอุปกรณ์ก็ควรเริ่มจากตัวที่มีความสูงน้อยที่สุดก่อน อาทิเช่น ลวดจั๊มและคอนเน็กเตอร์ เป็นต้น จากนั้นจึงไล่เรียงตามลำดับความสูงจนกระทั่งครบทุกตัว

รูปที่ 9 เป็นการเตรียมคอนเน็กเตอร์ 4 ขาสำหรับเชื่อมต่อกับขา IN1-IN4 ของโมดูล L298 Motor Drive และอีก 2 ขาจะเป็นแหล่งจ่ายไฟ ส่วนนี้ให้นำขาอุปกรณ์ที่ไม่ได้ใช้แล้วมาใช้งาน เมื่อลงอุปกรณ์จนครบหมดแล้วให้ตรวจสอบแรงดันในวงจรทั้งหมดเสียก่อน โดยอ้างอิงกับรูปที่ 5 ซึ่งแหล่งจ่ายไฟสามารถใช้ได้ตามความเหมาะสม ซึ่งจะอ้างอิงกับแรงดันของมอเตอร์ที่ใช้งาน แต่ต้องไม่ควรเกิน 12V เพราะอาจจะทำให้เรกูเลเตอร์บนบอร์ด Nano เสียหายได้ ซึ่งโดยส่วนมากแล้วแรงดันมอเตอร์ของรถบังคับจะไม่เกิน 12V

รูปที่ 10 หุ่นยนต์ที่ประกอบขึ้นมาจาก T.O.P Full series

รูปที่ 11 เฟรมอะลูมิเนียมที่นำมาประกอบหุ่นยนต์

รูปที่ 12 หุ่นยนต์ Wi-Fi Robot ที่ประกอบเสร็จเป็นรูปเป็นร่าง

โครงสร้างหุ่นยนต์

ส่วนโครงสร้างของหุ่นยนต์ที่ถูกเลือกมาใช้ในโครงงานนี้ ผู้เขียนได้นำ ชุดหุ่นยนต์เพื่อการศึกษา T.O.P (Training course Of Professional) ชุดเรียนรู้หุ่นยนต์ขั้นสูง มาใช้งานเนื่องจากเป็นชุดคิตที่มีชิ้นส่วนประกอบแบบอะลูมิเนียม ถอดประกอบได้ง่าย และยังสามารถปรับปรุงดัดแปลงตามจินตนาการได้อย่างไม่จำกัดอีกด้วย โดยคุณผู้อ่านที่สนใจหุ่นยนต์รุ่นนี้ก็สามารถสอบถามข้อมูลได้แผนก STEM Education ของบริษัท ซีเอ็ดยูเคชั่น จำกัด (มหาชน) หรือที่ http://www.se-edstemeducation.com/ชุดหุ่นยนต์ขั้นสูง-top/

รูปที่ 13 Serial Monitor แสดงข้อมูลของ PS2 wireless controller

รูปที่ 14 Serial Monitor แสดงข้อมูลของปุ่มที่กด

การทดสอบ

ก่อนจะทดสอบให้ไปดาวน์โหลดไฟล์ซอร์สโค้ดที่ใช้ร่วมกับโครงงานนี้ที่เว็บไซต์ http://electronics.se-ed.com/download จากนั้นให้อัพโหลดลง UNO R3 ที่เป็นตัวควบคุมของเรา การทดสอบในขั้นตอนนี้ยังไม่ต้องเชื่อมต่อกับ DC มอเตอร์และ Servo Motor ก็ได้ เนื่องจากจะต้องทดสอบส่วนของการเชื่อมต่อกับ PS2 wireless controller และรับสัญญาณให้เรียบร้อยเสียก่อน

หลังจากที่อัพโหลดโปรแกรมเสร็จให้เปิด Serial Monitor เพื่อดูว่าการทำงานของเราถูกต้องหรือไม่ โดยเมื่อเริ่มทงาน Arduino จะตรวจสอบว่า PS2 wireless ของเราเป็นรุ่นไหน โครงงานของเราจะใช้ PS2 JoyStick playstation wireless สำหรับ Arduino รุ่นที่เป็น DualShock Controller ดังแสดงในรูปที่ 13 หากขึ้นแบบนี้ แสดงว่า Arduino ของเราสามารถเชื่อมต่อกับตัวรับ PS2 wireless ได้แล้ว ขั้นตอนต่อไปก็ให้เช็คว่าตัวส่งหรือ JoyStick ของเราจะสามารถส่งและรับได้ไหม โดยให้ทดสอบกดปุ่ม หากถูกต้องที่ Serial Monitor จะแสดงข้อความที่สอดคล้องกับการกดปุ่มดังแสดงในรูปที่ 14

รูปที่ 15 การเชื่อมต่อมอเตอร์ต่างๆ เข้ากับโครงงาน

หลังจากที่ทดสอบว่าตัวส่ง JoyStick สามารถส่งมาและ Arduino สามารถรับคำสั่งจากการปุ่มกดได้เรียบร้อยแล้ว ให้เชื่อมต่อ DC มอเตอร์, Servo Motor และแหล่งจ่ายไฟเข้ากับวงจรดังรูปที่ 15 เสร็จแล้วให้ทดสอบกดปุ่มเพื่อควบคุมทิศทางเดินหน้า ถอดหลัง เลี้ยวซ้าย เลี้ยวขวา โดยใช้ปุ่มและคันโยกควบคุมฝั่งซ้าย สังเกตุว่ามอเตอร์ด้านซ้ายและขวาจะต้องหมุนตามการกดปุ่ม ในขั้นตอนนี้หากมอเตอร์หมุนไปในทิศทางที่ไม่ถูกต้องให้สลับขั้วมอเตอร์ได้เลย จากนั้นให้ทดสอบสั่งงาน Servo Motor ตัวที่ 1 และ 2 โดยใช้ปุ่มควบคุมและคันโยกทางด้านขวา หากถูกต้อง Servo จะหมุนไปในทิศทางตามที่กดปุ่ม

รูปที่ 16 ไอคอนแอพพลิเคชัน IP Webcam

รายการอุปกรณ์

C1 – 220uF 16V อิเล็กทรอไลต์            … 1 ตัว
CON1 – เทอร์มินอลบล็อก 2 ขา            … 1 ตัว
CON2-CON4 – คอนเน็กเตอร์ 3 ขา        … 3 ตัว
CON5 – คอนเน็กเตอร์ 6 ขา                 … 1 ตัว
MOTOR1- โมดูล L298                       … 1 ตัว
UNO1- Arduino UNO R3                   … 1 ตัว
Motor1-Motor2 – DC Motor               … 2  ตัว
SERVO1- SERVO2 – Servo Motor       … 2 ตัว
PS2 – PS2 JoyStick wireless พร้อมอะแดปเตอร์  … 1 ชุด

หมายเหตุ ซอร์สโค้ดที่ใช้ร่วมกับโครงงานทั้งหมดสามารถดาวน์โหลดได้ที่เว็บไซต์ http://electronics.se-ed.com/download

แอพพลิเคชั่น IP Webcam

เนื่องจากโครงงานนี้ต้องดูภาพที่อยู่ด้านหน้ารถด้วย ดังนั้น จึงต้องมีอุปกรณ์ถ่ายภาพและเราต้องสามารถดูภาพแบบไร้สายได้ เพื่อให้สอดคล้องกับโครงงานของเราที่เป็นแบบไร้สาย เพื่อให้ง่ายและสะดวกต่อการใช้งาน ผู้ใช้เลือกติดตั้งแอพพลิเคชั่นบนโทรศัพท์แอนดรอยด์ ซึ่งมีหลายแอพที่สามารถทำงานแบบที่เราต้องการได้ หนึ่งในนั้น คือ แอพพลิเคชั่น IP Webcam (สามารถดาวน์โหลดได้ที่ https://play.google.com/store/apps/details?id=com.pas.webcam) ที่นิยมใช้งานมากเลยทีเดียว เนื่องจากแอพออกแบบมาให้มีครบทุกฟังก์ชัน ที่สามารถทำให้มือถือธรรมดากลายเป็นกล้องวงจรปิดได้อย่างมีประสิทธิภาพ อาทิเช่น Motion Detection และ Night Vision เป็นต้น อีกทั้งยังมีระบบคลาวด์รองรับให้สามารถเรียกดูผ่านเน็ตได้

การใช้งานแอพนี้ก็ง่ายมาก หลังจากติดตั้งเรียบร้อยแล้วก็พร้อมใช้งานทันทีโดยเราแทบจะไม่ต้องไปกำหนดค่าอะไรอีก เพราะค่าตั้งต้นของแอพนี้เซ็ตมาให้ดีแล้ว ที่สำคัญเป็นแอพที่ใช้งานฟรี การเรียกดูภาพผ่านกล้องทำได้ 2 วิธี อย่างแรก คือ ใช้งานในเครือข่ายเดียวกัน (แบบที่ใช้ในโครงงานนี้) ก็เปิดเว็บบราวเซอร์เข้าผ่านไอพีตรงๆ ได้เลย ตามด้วยเลขพอร์ต 8080 เช่น 192.168.0.104:8080 เป็นต้น อีกแบบหนึ่ง คือ เข้าผ่านระบบคลาวด์ ivideon.com อันนี้เอาไว้ใช้เวลาดูผ่านเน็ตจากนอกบ้าน จริงๆ แล้วแบบแรกก็สามารถเปิดดูผ่านเน็ตได้เช่นกัน โดยใช้วิธีการทำ Forward port บวกกับบริการ Dynamic DNS ที่เราเตอร์รองรับ แนะนำให้ใช้วิธีการ Forward port ดีกว่าการดูผ่าน ivideon.com เพราะแบบนี้จะค่อนข้างดีเลย์อยู่มาก

รูปที่ 17 หน้าต่างตั้งค่าของแอพพลิเคชั่น IP Webcam

รูปที่ 18 ภาพถ่ายที่ได้จากแอพพลิเคชัน IP Webcam

รูปที่ 19 ภาพที่แสดงผ่านเว็บบราวเซอร์

หลังจากที่ปิดแอพพลิเคชัน IP Webcam ขึ้นมาจะปรากฏส่วนการตั้งค่าต่างๆ ขึ้นมาดังรูปที่ 17 การใช้งานไม่ต้องตั้งค่าอะไรเลย (สามารถตั้งค่าได้หากท่านต้องการ โดยศึกษาเพิ่มได้จากข้อมูลแอพพลิเคชัน IP Webcam) ให้ท่านเลื่อนลงมาด้านล่างสุด แล้วเริ่มทำงานโดยกดที่ “Start server” จากนั้นที่หน้าจอโทรศัพท์จะแสดงภาพที่ถ่ายได้ พร้อมกับข้อมูล IP ที่เราต้องใช้เพื่อเชื่อมต่อเข้ามาจากอุปกรณ์อื่นๆ ดังรูปที่ 18 จะแสดง IP ที่ใช้สำหรับเปิดจากเว็บบราวเซอร์ คือ http://192.168.0.104:8080 ให้นำไอพีนี้ไปเปิดด้วยเว็บบราวเซอร์ดังแสดงในรูปที่ 19

เพียงเท่านี้ท่านก็จะสามารถควบคุมหุ่นยนต์พร้อมกับดูภาพที่อยู่เบื้องหน้าหุ่นยนต์แบบไร้สายได้ ซึ่งนี้เป็นเพียงไอเดียในการนำ PS2 wireless controller มาประยุกต์ใช้งาน ซึ่งท่านอาจจะนำไปใช้ในงานอื่นได้ อาทิเช่น ใช้สั่งงานรีเลย์หรือควบคุมอุปกรณ์อื่นๆ ได้ตามรูปแบบงานที่ต้องการได้เลย