วันนี้เราจะมาเริ่มต้นก้าวแรกสู่ความฝันในการสร้าง เรืออัตโนมัติ (autonomous vessel) ที่เราสามารถควบคุมผ่าน Aquabots Client กันดีกว่า สิ่งที่ต้องใช้ในวันนี้ก็มีแค่ Arduino Uno กับ Ethernet Shield เท่านั้นเอง อย่าลืมนะว่า Ethernet Shield มีหลายเวอร์ชั่นมากๆ เลย ต้องเลือกไลบรารี่ให้ถูกกับตัวที่ใช้ด้วย! จะใช้บอร์ดอื่นอย่าง MEGA (ที่พวกพี่ใช้กันปกติ) ก็ได้นะ แต่สำหรับบทเรียนนี้เรามาเริ่มที่ UNO กันก่อน

ในรูปด้านบนจะมี Grove Base Shield ติดอยู่ระหว่างกลางด้วย แต่สำหรับโปรเจคนี้เราไม่ต้องใช้มันก็ได้จ้า
โค้ดที่เตรียมไว้ให้จะช่วยให้เรือของน้องสามารถลงทะเบียนกับ Aquabots REST Client ได้ ซอฟต์แวร์ของ Arduino นั้นตรงไปตรงมา แต่เพราะเราใช้วิธีแบบโมดูลาร์ (modular approach) เลยต้องใช้คลาส C++ แยกส่วนต่างๆ ที่เราจะสร้างออกจากกัน การเรียกหลักจะอยู่ในลูปของ Vessels แบบนี้:
long id = registration.registerVessel( "AquaBoat", "AquaPassphrase", 51.0, 4.2 );
ถ้าน้องเปลี่ยน 'AquaBoat' เป็นชื่อเรือของน้อง และตั้งรหัสลับส่วนตัวแทน 'AquaPassphrase' เรือของน้องก็จะส่งคำขอไปยัง Aquabots Client เพื่อขอ ID แล้วล่ะ
รายละเอียดเทคนิคเพิ่มเติม
Industrial ROV Telemetry Bridge
"Day 1" นี้เราจะโฟกัสที่การสร้างช่องทางการสื่อสารที่เสถียรระหว่าง Aquabot (หุ่นยนต์ดำน้ำ) ที่ใช้ Arduino กับซอฟต์แวร์ควบคุมหลัก Aquabots Client
- Client-Server Serial Handshake: Arduino จะสร้างการเชื่อมต่อพอร์ตอนุกรมความเร็วสูงกับไคลเอนต์บน PC เฟิร์มแวร์ใช้โครงสร้างแพ็กเก็ตที่ตรวจสอบด้วย checksum เพื่อให้คำสั่งมอเตอร์และข้อมูลเซนเซอร์ส่งไปอย่างปลอดภัย ไม่มีข้อมูลเสีย
- Real-Time ROV Status Mirroring: Arduino จะอ่านค่าแรงดันแบตเตอรี่และข้อมูลเซนเซอร์รั่วไหล แล้วส่งไปแสดงผลบนแดชบอร์ดของ Aquabots Client ทันที ด้วยความหน่วงน้อยกว่า 50ms
การโต้ตอบ
- Handshake Verification Protocol: ในคู่มือจะอธิบายลำดับสัญญาณ "Ready" และ "Acknowledge" ที่จำเป็นต้องใช้เพื่อเริ่มต้นการทำงานของ ROV ก่อนที่จะปล่อยมันลงน้ำครั้งแรก
แต่น้องก็ต้องลงทะเบียนตัวเองและเรือใน Client ด้วยนะ:

ถ้ากดลิงก์ 'login' ที่มุมซ้ายบนของไคลเอนต์ จะมีกล่องข้อความโผล่มาให้ใส่ชื่อผู้ใช้กับรหัสผ่าน ถ้ากดปุ่ม 'register' ก็จะมีกล่องข้อความให้กรอกชื่อผู้ใช้และรหัสผ่านเหมือนกัน ลิงก์ 'Register' จะขยายกล่องข้อความออกและขอข้อมูลเพิ่มเติมนิดหน่อย
ถ้าลงทะเบียนตัวเองและล็อกอินสำเร็จแล้ว ลิงก์ 'login' จะเปลี่ยนเป็นปุ่มเมนู ที่มีตัวเลือกให้ 'Register Vessel' แทน

กดตัวเลือกนี้แล้วจะมีกล่องข้อความโผล่มาพร้อมกับตารางสองอัน ถ้ากดปุ่ม '+' ของตารางบนสุด จะมีกล่องให้กรอกชื่อเรือและรหัสผ่านเรือ สองค่านี้ต้องตรงกับชื่อและรหัสผ่านที่ใส่ในโค้ด Arduino พอดีนะ หลังจากนั้นเรือก็จะถูกเพิ่มเข้าไปในตาราง
ถ้าทำถูกต้องทุกขั้นตอน หลอดไฟสีฟ้าในคอลัมน์ 'Active' จะเปลี่ยนเป็นสีส้มทันทีที่ Arduino เชื่อมต่อกับ Aquabots client สำเร็จ ยินดีด้วย! น้องเพิ่งลงทะเบียนเรือสำเร็จแล้ว!
ในโปรเจคถัดไป เราจะมาดูรายละเอียดการตั้งค่าเรือและเปิดใช้งาน GPS Unit กัน! สู้งานนะน้อง!