ชื่อโปรเจกต์: Project Arva (คอนเซปต์หุ่นยนต์กู้ภัยอัตโนมัติ)
ที่มาของโปรเจกต์
โปรเจกต์นี้พี่ได้แรงบันดาลใจมาจากเหตุการณ์ระเบิดครั้งใหญ่ที่เบรุตเมื่อไม่กี่เดือนก่อนครับน้อง หลังจากที่พี่นั่งดูข่าวความเสียหายในทีวี พี่ก็มานั่งคิดกับตัวเองว่า เราจะช่วยป้องกันไม่ให้เรื่องแบบนี้เกิดขึ้นอีกได้ยังไง หรือถ้ามันเกิดขึ้นแล้ว เราจะช่วยคนที่ติดอยู่ข้างใน หรือระงับเหตุไม่ให้มันลามได้ยังไงบ้าง และนั่นแหละคือจุดเริ่มต้นที่พี่ปั้นเจ้า ARVA ตัวนี้ขึ้นมา
เป้าหมาย (The Objective):
ARVA เป็นหนึ่งในซีรีส์หุ่นยนต์กู้ภัยที่พี่กำลังพัฒนาอยู่ ภารกิจของน้องหนูตัวนี้คือการเข้าไปมอนิเตอร์ในพื้นที่ที่เรารู้จัก หรือลุยเข้าไปในพื้นที่เสี่ยงที่เราไม่คุ้นเคย เพื่อส่งข้อมูลพวก Temperature, Humidity และค่า Gas ที่ตรวจจับได้ กลับมาให้เราดูผ่าน App บน Android แถมพี่กะว่าจะติด Camera ไว้ด้านหน้าเพื่อยิง Video สดๆ กลับมาให้คนคุมดูด้วย หล่อเท่เลยงานนี้
บันทึกการสร้าง (The Story):
พอเป้าหมายชัดแล้ว สิ่งแรกที่พี่ทำคือวางแผนว่าจะพิชิตมันยังไง พี่อยู่ที่ประเทศไนจีเรีย บอกเลยว่าหาอะไหล่ยากฉิบ... ใจจริงพี่อยากจะออกแบบ Chassis หุ่นยนต์เองแล้วสั่ง 3D Print มากๆ แต่แถวนี้ไม่มีเครื่องให้ใช้เลยว่ะน้อง เลยไม่มีทางเลือก ต้องสั่งออนไลน์เอาสถานเดียว
การสั่งของออนไลน์นี่บอกเลยว่าเสียทั้งเวลาเสียทั้งตังค์ พี่นี่เข็ดเลย รอบแรกที่สั่ง Chassis มา แม้ในรายละเอียดจะบอกว่ามี Motor Driver กับ Motor Shield เฉพาะตัวมาให้ พี่ก็คิดว่าน่าจะเอาอยู่แหละเพราะเขามี CD คู่มือมาให้ด้วย พี่เลือกชุดนี้เพราะของแถมมันเยอะแถมราคาถูกสุดละ เชื่อไหมพี่ต้องรอตั้งเดือนนึงกว่าของจะมาถึง พอของมาปุ๊บพี่ก็ลุยประกอบทันที สิ่งแรกที่เจอคือ สกรูหายจ้า! แต่พี่ซะอย่าง ไม่ใช่ปัญหา พี่ใช้ไม้กวาดเหลามาทำเป็นสลักยึดแทน (ตอนนั้นแถวบ้านเคอร์ฟิว ออกไปซื้อสกรูไม่ได้ว่ะน้อง) พอประกอบเสร็จ พี่จะลอง Motor Driver กับ [Sensor](https://s.shopee.co.th/7VBG2rX65j) Shield เลยกะจะเปิด CD ดูคู่มือสักหน่อย... เรียบร้อยครับน้อง ไฟล์เป็นภาษาจีนล้วน! พี่อ่านไม่ออกสักตัว ในรายละเอียดสินค้าก็ไม่เห็นบอก พี่ไม่อยากคืนของนะเพราะรอนานมาก แต่พอไปค้นเน็ตแล้วไม่มีข้อมูล Shield ตัวนี้เลย พี่เลยจำใจส่งคืน แล้วสั่งชุดใหม่ที่หาข้อมูลได้ง่ายกว่าเดิมแทน แม้มันจะแพงกว่าเดิมก็ต้องยอม
รออีกเดือนนึง ชุดใหม่ก็มาถึง ของน้อยกว่าชุดแรกอีกทั้งที่แพงกว่า แถมสกรูก็ยังมาไม่ครบเหมือนเดิม! พี่เริ่มคิดแล้วว่า หรือเขาจงใจให้มาไม่ครบวะ? ใครเจอแบบพี่คอมเมนต์บอกหน่อยนะ พอลองเทส Motor ปรากฏว่า Motor Driver เจ๊งอีก! รอบนี้พี่ไม่ทน ส่งคืนแม่มเลย จนสุดท้ายพี่ไปเจอพี่ชายใจดีคนหนึ่งขายของ [Arduino](https://s.shopee.co.th/7fUgFAWSki) แม้ของจะไม่เยอะแต่เขาก็มีของที่จำเป็นต้องใช้ และใช่ครับน้อง... สกรูก็ไม่ครบเหมือนเดิม! สงสัยมันเป็นอาถรรพ์
พอได้ของมาครบ ทุกอย่างก็น่าจะฉลุย... ใช่ไหม? พี่ตกม้าตายตอนเอา Battery 9V กับ AA มาต่อ Motor Driver แล้วมันไม่หมุนว่ะน้อง หรือหมุนแป๊บเดียวก็วอด พี่เลยไปรีเสิร์ชมาใหม่จนเจอว่าแบต Li-ion นี่แหละของจริง! พี่เลยไปแกะแบต Li-ion จากลำโพงเก่า 2 ตัวมาเทส ผลคือวิ่งปรื๋อเลย ปัญหาคือแบต AA กับ 9V มันจ่าย Current ไม่พอเลี้ยง Motor ทั้ง 4 ตัวนั่นเอง ส่วนที่ใส่แบตเหรอ? พี่ทำเองดิครับ สั่งออนไลน์มันแพง 😅
(พวกแกคงขำเทปกาวกับหนังยางที่พี่ใช้ใช่ไหมล่ะ 🤣🤣 นี่แหละสภาพของคนไม่ได้ออกแบบ Chassis เอง ต้องพึ่งกาว เทปกาว กับกระดาษลังล้วนๆ 🤣🤣)
ขั้นตอนต่อไปคือพี่ลองทำหุ่นบังคับผ่าน IR แบบง่ายๆ เพื่อเทส Motor กับ Motor Driver ซึ่งก็ผ่านฉลุย ทีนี้ต้องเลือก Sensor สำหรับระบบหลบหลีกอัตโนมัติ (Autonomy) ระหว่าง Ultrasonic Sensor กับ IR Sensor ตอนแรกพี่ใช้ Ultrasonic Sensor แต่ปัญหาเพียบเลยน้อง ทั้งเรื่องมุมที่หุ่นวิ่งไปแล้วชน หรือมันตรวจจับพวกเนื้อผ้าไม่ค่อยได้ และที่หนักสุดคือพอเข้าใกล้ผนังแล้วมันนิ่งค้างไปเลย พี่เลยไปรื้อโปรเจกต์ทำใหม่ ปัญหาเรื่องมุมนี่เป็นเพราะ Ultrasonic Sensor มันจะเพี้ยน (False readings) ถ้าวัตถุอยู่ใกล้กว่า 3-4 cm ส่วนเรื่องผ้าคือมันไม่สะท้อนคลื่นกลับมานั่นเอง ระหว่างเทสอยู่ หุ่นเจ้ากรรมดันพุ่งชนจน [Servo](https://s.shopee.co.th/7fUgFAWSki) ตัวเดียวที่พี่มีพังยับ! พี่เลยตัดสินใจย้ายค่ายมาใช้ IR Sensor แทน ซึ่งสุดท้ายพี่ชอบมากกว่านะ เพราะมันทนมือทนเท้ากว่าเยอะ (แหงล่ะ ก็พี่ทำที่ยึด Ultrasonic ด้วยกระดาษลังกับเทปกาวนี่นา 😪)
พอเปลี่ยนมาใช้ IR ทุกอย่างดีขึ้นมาก แต่ดันเจออาการใหม่คือ Arduino มันชอบ Reset ตัวเองเวลาเจอผนัง วิธีแก้ก็ง่ายๆ เลยน้อง คือเพิ่มแบตเป็น 3 ก้อน เพราะอาการ Microcontroller Reset ตัวเอง ส่วนใหญ่เกิดจาก Current ไม่พอ ส่วนอีกปัญหาที่ทำให้พี่เสียเวลาโคตรๆ คือหุ่นมันชอบค้างเวลาเจอผนัง พี่หาแทบตายสุดท้ายหน้าแตกครับน้อง เพราะพี่เรียก Function ผิด! แทนที่จะพิมพ์ `backMov();` ดันพิมพ์แค่ `backMov;` (ลืมวงเล็บชีวิตเปลี่ยน) พี่ล่ะอยากให้ IDE มันแจ้ง Warning หน่อย ไม่ใช่ปล่อยให้ Compile ผ่านจนพี่ต้องมานั่งงมอยู่นาน 😭😭 แต่มันก็สอนให้พี่เช็ก Code ทีละบรรทัดให้ละเอียดขึ้นแหละ (ขำตัวเองที่เขียน Code ใหม่ให้ง่ายขึ้น แต่ยังผิดที่เดิมซ้ำสอง)
หลังจากแก้บั๊กหมด พี่ก็ลองเทสจริง รอบนี้พี่ไม่ติด Camera (จริงๆ คือสมาร์ทโฟนแม่พี่เอง 😅) เพราะกลัวมันหล่นพัง พอเทสจนมั่นใจพี่ก็ปรับ Code กับ App อีกนิด เพิ่ม Slider ไว้คุม Speed แล้วก็ปุ่มบังคับเองเวลาหุ่นติดหล่ม หรืออยากจะบังคับไปทางที่ต้องการ แค่นี้เจ้าหุ่นคอนเซปต์ของพี่ก็เสร็จสมบูรณ์!

อาจจะใช้เวลาทำนานหน่อย มีหัวร้อนบ้าง แต่พอทำสำเร็จพี่ก็โครตภูมิใจเลยว่ะ
แผนในอนาคต:
- กะว่าจะเก็บตังค์ซื้อ [Raspberry Pi](https://s.shopee.co.th/6pvZFdZdRf) มาใช้ทำ ML (Machine Learning) ให้มันฉลาดกว่านี้
- อยากเปลี่ยน Chassis ใหม่ กะว่าจะไปหาที่สั่ง 3D Print ให้ได้
- อยากลองใช้พวกแว่น AR หรือ VR มาคุมหุ่นดู น่าจะเท่ไม่หยอก
- จะเปลี่ยนจาก Bluetooth Module เป็น WiFi Module แทน จะได้คุมได้ไกลๆ หรือไม่ก็จัด LoRa หรือ HC 12 ไปเลย
ถ้าใครมีคำถามหรือไอเดียเจ๋งๆ ที่จะทำให้มันเทพขึ้น คอมเมนต์บอกพี่ได้เลยนะน้อง ขอบใจมาก 🙂
รายละเอียดทางเทคนิคเพิ่มเติม
สถาปัตยกรรมหุ่นยนต์เพื่อมนุษยธรรม
Project Arva คือต้นแบบยานพาหนะอัตโนมัติที่ออกแบบมาเพื่อช่วยเหลือผู้ประสบภัยในพื้นที่ที่มนุษย์เข้าถึงยาก
- MIT App Inventor Gateway: คุมหุ่นผ่าน App บน Android ที่เขียนเอง มีหน้า "Map View" ให้เราปักหมุด GPS Waypoints ให้หุ่นวิ่งไปตรวจสอบได้
- Path-Finding Logic Hub: ตัว Arduino จะทำหน้าที่ประมวลผลข้อมูลจาก "Compass" (เข็มทิศ) ร่วมกับ Ultrasonic distance sensors เพื่อหลบหลีกเศษซากปรักหักพัง โดยที่ยังรักษาทิศทางไปยังพิกัดเป้าหมายได้อยู่
การโต้ตอบ
- Voice-to-Robot Handshake: (ฟีเจอร์) ตัว App มือถือสามารถสั่งงานด้วยเสียงได้ด้วยนะน้อง เช่น เราตะโกนว่า "Search Sector A" หุ่นก็จะเริ่มวิ่งสำรวจแบบ Zig-zag ตามที่โปรแกรมไว้ทันที จัดไปวัยรุ่น!