วันพฤหัสบดีที่ 4 ธันวาคม พ.ศ. 2557

การออกเเเบบ Protocol สำหรับการใช้งาน Portable Ground Station Part III

ในคราวที่เเล้วได้พูดถึงเรื่องการจัดการกับ PAYLOAD ดังนั้นวันนี้จึงจะมาอธิบายต่อนะครับ .....  เนื่องจาก MAVLINK protocol มีกลุ่มของข้อมูลอยู่เรียกว่า data stream (http://mavlink-gateway.blogspot.com/2014/11/mavlink-mavdatastream-from-board.html) ซึ่ง data stream นั้นจะจัดการข้อมูลให้อยู๋ในรูปเเบบของกลุ่มมากขึ้นไปอีกทำให้ถ้าเรา grouping data ดีๆนั้นจะทำให้ protocol ของเรานั้นมีประสิธิภาพสูงขึ้นมาจากคราวที่เเล้วภาพด้านล้างคือรูปเเบบของ Protocol ที่ใช้ในปัจจุบัน


 
 โดยที่ 
  • STX : Start byte use constant as 0XFE (same as Mavlink protocol)
  • CDM : command byte that Mavlink gateway tell us (Like a #)
  • PAYLOAD : DATA  
โดยที่หลังจากเราทำการ Grouping massage เเล้วเราจะได้ได้ PAYLOAD ทั้งหมดที่ใช้งานหน้าตาดังรูปด้านล้าง
จากรูปเป็นการเเสดงถึง PAYLOAD เทียบกับค่า CMD ต่างๆดังนั้นจากออกเเบบ Protocol ลักษณะนี้จึงคิดว่าง่ายเเละเหมาะสมการการใช้งานร่วมกับ MAVLINK GATEWAY ที่สุดครับ :D 

วันอังคารที่ 25 พฤศจิกายน พ.ศ. 2557

การออกเเเบบ Protocol สำหรับการใช้งาน Portable Ground Station Part II




จากคราวก่อนที่ได้พูดถึงการออกเเบบ Protocol ไปเเละทดลองใช้งานดูทำให้ผู้เขียนพบปัญหาที่เกิดขึ้นจากการออกเเบบ Protocol ตามด้านบน คือ
  • Overhead ยังคงเยอะอยู่ หากสังเกตุดูให้ดีมา Overhead อยู่ถึง 2 Byte ต่อการส่งข้อมูลหนึ่งตัว
  • ข้อมูลของ Mavlink มีลักษณะเป็นกลุ่มข้อมูลเเต่ Protocol ที่ออกเเบบมานั้นเอื่อสำหรับการส่งข้อมูลเพียงทีละข้อมูลเท่านั้น จึงทำให้ Protocol เเบบนี้ไม่เหมาะเเก่การนำมาใช้งานจริง

ตัวอย่างรูปเเบบของ MAVlink protocol

กลุ่มข้อมูล GPS_RAW_INT 


กลุ่มข้อมูล System Status 

กลุ่มข้อมูล IMU 

จากกลุ่มข้อมูลข้างต้นถ้าเราสังเกตุดูให้ดีจะเห็นได้ว่าข้อมูลนั้นอยู่รวมกันเป็นกลุ่ม นั้นจึงทำให้ผู้เขียนได้ลองออกเเบบ Protocol ใหม่ เพื่อให้รองรับการส่งข้อมูลมาเป็นกลุ่มเเละเสีย Overhead น้อยที่สุดได้ได้ Protocol ออกมาใหม่ดังนี้ 





โดยที่ 
  • STX : Start byte use constant as 0XFE (same as Mavlink protocol)
  • CDM : command byte that Mavlink gateway tell us (Like a #)
  • PAYLOAD : DATA  

เเละในบทความถัดไปจะจำเสนอเรื่องของ Protocol ว่าในเเต่ละ Payload นั้นมีอะไรบ้างเเละทำไมถึงต้องออกเเบบให้ Payload มีลักษณะดังนี้ครับ 











วันเสาร์ที่ 15 พฤศจิกายน พ.ศ. 2557

การออกเเเบบ Protocol สำหรับการใช้งาน Portable Ground Station Part I

          เนื่องจากโปรเจ็คที่ผู้เขียนกำลังทำอยู่นั้นจำเป็นต้องไปเชื่อมต่อกับ MAVlink Gateway (http://mavlink-gateway.blogspot.com/ ) เพื่อนำค่ามาเเสดงผลดังนั้นจึงต้องมีการออกเเบบ Protocol เพื่อการสื่อสารกับระหว่าง MAVlink MCU เเละ Protable Ground Station MCU โดยที่หลักการออกเเบบ Protocol ของผู้เขียนนั้นจะคำนึงถึงสิ่งต่างๆต่อไปนี้

  • หลีกเลี่ยงความยุ่งยาก
  • ออกเเบบให้ผู้รับเเละผู้ส่งเข้าใจกันง่าย 
  • ประสิทธิภาพของ Protocol 
  • การใช้งานจริง
ดังนั้นเพื่อให้การใช้ออกเเบบ Protocol เป็นไปดังข้อมูลที่ต้องการข้างบนผู้เขียนจึงได้ออกเเบบ Protocol ให้เป็น Binary Protocol เพื่อลด Overhead ของการส่งข้อมูลเเละออกเเบบ Protocol มาดังนี้


โดยที่ 
MSG TYPE is message type of protocol have 4 type  are 
  • Receive Status from MAVLINK Gateway 
  • Receive Parameter form MAVLINK Gateway
  • Send Parameter to MAVLINK Gateway 
  • Send Command to MAVLINK Gateway 

We separate ID into two part 
  • First is Status there has approximately    200 value 
  • Second is Parameter has approximately  300 value 

There are 5 type of parameter that send from MAVLINK Gateway
  • Float_32 
  • INT_32
  • INT_16 
  • Int_8
  • CHAR 16 BYTE  (Use in parameter only)

MSG has 4 type of length depend on type of protocol 
  • Integer  8 – bit
  • Integer  16 –bit
  • Integer , float 32 –bit
  • Char 16 byte  

จึงได้ออกมาเป็น Protocol ที่กว่ามาข้างต้นเเต่ทว่า Protocol ที่ออกเเบบมาข้างต้นนั้นยังมีปัญหาอยู่ศซึ่งจะเเสดงถึงปัญหาเเละวิธีเเก้ใน Blog ต่อไปครับ :D 

วันอาทิตย์ที่ 19 ตุลาคม พ.ศ. 2557

การเปรียบเทียบประสิทธิภาพของ Arduino Mega เเละ Arduino DUE เพื่อนำมาใช้เป็น MCU สำหรับ Ground Station

         

            เนื่องจากผู้เขียนต้องการทำ DIY Portable Ground Station เป็นของตนเองดังนั้นการเลือกใช้งาน MCU สำหรับการประมวลผลนั้นจึงสำคัญมากในตอนเเรกผู้เขียนนั้นได้ทำการเลือก MCU ตัวเเรกนั้นคือ Arduino Mega 2560 มาเลือกใช้งานเพราะว่า มีขาการใช้งาน I/O PIN จำนวนมากเพียงพอต่อการใช้งาน (การใช้งานได้เเต่การเชื่อมต่อจอที่เป็น 8 bit parallel เเละมีปุ่มกดหรือ joy stick อีกจำนวนหนึ่ง) มี Clock speed 16 MHz ซึ่งถือว่ามีความเร็วอยู่ในเกณ์ดีถ้าเทียบกับ Arduino Uno ซึ่งมีความเร็วเพียง 8 MHz เเละภาษาที่ใช้ในการเขียนถือว่าง่ายถ้าเทียบกับ MCU ตัวอื่นอย่างเช่น Cortex Series  



รูปตัวอย่างของ Arduino Mega 2560
เเละหลักจากที่ผู้เขียนได้เลือก MCU สำหรับการประมวลผลเเล้วผู้เขียนได้ทำการเลือกจอเพื่อใช้ในการเเสดงผลค่าต่างๆ โดยได้เลือกใช้จอ 3.5 inch 3.5" TFT LCD Shield  สำหรับการเเสดงผลเเละได้เกิดปัญหาขึ้นเนื่องจากว่าประสิทธิภาพของ MCU ไม่เพียงพอต่อการเเสดงผลเนื่องจาก Clock Speed ช้าเกินไปจึงได้ทำการคิดเพื่อหาวิธีเพิ่มประสิทธิภาพของ MCU นั้นคือการหา MCU ใหม่โดยที่ไปเจออีกหนึ่งตัวของ Arduino ที่มีขา I/O เท่ากับ Arduino Mega เเต่ได้ประสิทธิภาพสูงกว่าถึงเกือบสามเท่านั้นคือ Arduino DUE

              Arduino DUE คือ Arduino ที่เป็น MCU  base on Cortex -M3 ซึ่งเป็น 32-bit ARM MCU เเต่ถูกออกเเบบมาให้ทำงานได้คล้ายกับ (หรือเหมือน)กับ Arduino Mega นั้นเอง 



รูปตัวอย่างของ Arduino DUE

เนื่องจากหน้าตาคล้ายกันมากเเต่ประสิธิภาพของ Arduino DUE เหนือกว่าอย่างเห็นได้ชัดจากตาลางด้านล่าง 


เเละในการใช้งานจริงนั้นถือว่า Arduino DUE นั้นยังคงให้ผลลัพธ์อย่างเป็นที่น่าพอใจจากคลิปด่านล้างต่อไปนี้



จากลิงค์ข้างต้นเป็นลิงค์เเสดงถึงความสามารถของ Arduino ทั้งคู่โดยที่ใช้ Library UTFT  ในการทดลอง

เเละบทความนี้สรุปได้ว่าผู้เขียนนั้นจะเลือกใช้ Arduino Due ในการทำ MCU  ของ protable Ground station  นั้นเองครับ ;) 


reference
http://arduino.cc/en/Main/arduinoBoardMega2560
http://arduino.cc/en/Main/ArduinoBoardDue







วันเสาร์ที่ 6 กันยายน พ.ศ. 2557

Ground Station for Multirotor คืออะไร ???



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

http://i.imgur.com/knqwrjR.jpg
รูปตัวอย่างของ Multirotor หรือ Drone 




ตัวอย่างภาพถ่ายมุมสูงที่ได้จาก Multirotor 

                เเละในการใช้งาน Multirotor นั้นบางครั้งที่ตัวลำนั้นไปไกลจากระยะสายตาคนหรือว่าเราต้องการทราบถึงสถานะต่างๆของตัวอุปกรณ์ อาทิเช่น ความสูงของการบิน , เวลาที่ใช้ในการบิน , ความเร็วของตัวลำ , สถานะของ GPS  นั้นทำให้ Multirotor นั้นสูง Feed back กลับไปมาผู้ใช้งานเเละจะถูกนำไปเเสดงผลบนสิ่งที่เรียกว่า Ground Station  

                Ground Station นั้นมีหลากหลายประเภทที่นิยมในการใช้งานโดยที่นิยมใช้จะเป็น Software PC Ground Station อาทิเช่น APM Planner  โดยที่ Software ตัวนี้จะทำหน้าที่เชื่อมต่อระหว่าง Software กับตัว Multirotor เพื่อทำการเเสดงผลค่าสถานะต่างๆที่อยู่บน Multirotor ผ่าน Wireless datalink 

ตัวอย่าง Interface ของ APM Planner 

เเต่เนื่องจากการต้องนำ PC หรือ Labtop ออกไปที่ outdoor เพื่อทำการใช้งานนั้นยุ่งยากเเละไม่สะดวก จึงได้มีหลายๆคนทำ DIY Ground Station ขึ้นมาเพื่อตอบสนองความสะดวกสบายของตนเองอาทิเช่น น้ำหนักเบา ราคาถูก เเละเเสดงผลค่าได้ครบตามความต้องการของตัวเองดังนั้น blog นี้จะเสนอวิธีการทำ DIY portable Ground station เป็นทางเลือกให้เเก่ผู้อ่านได้นำไปปรับใช้เเละทำความเข้าใจดูนะครับ :)


รูปตัวอย่างของ DIY Ground Station 




reference photo :
http://diydrones.com/profiles/blogs/ground-control-station-how-to-diy?xg_source=activity
http://www.soliforum.com/topic/1222/rc-planeshelicopterscarsmulticopters-anyone/
http://planner.ardupilot.com/wp-content/uploads/sites/5/2014/04/MP-FD-Screen.jpg