Skip to content

Prajuab Riabroy's Blog

Survey Application – GNSS – UAV – Programing – Python – Dart&Flutter – Rust

Menu
  • Home
  • About Us
  • Survey Application
    • Surveyor Pocket Tools
    • Traverse Pro
    • XSection Plot
    • Geoid Height Pro
    • Spot Fire
    • โปรแกรมงานสำรวจสำหรับเครื่องคิดเลข Casio fx-5800P
    • โปรแกรมงานสำรวจสำหรับเครื่องคิดเลข Casio fx-9860G II SD
  • Download
  • Privacy Policy
Menu

การเขียนโปรแกรมต่อ GPS ด้วยคอมโพเน็นต์ OpenGPSX (ภาค 2)

Posted on 24/09/2010

คอมโพเน็นต์ OpenGPSX

  • Concept ของ component คือผู้พัฒนาโปรแกรมทั่วๆไปสามารถนำ component ของผมไปใช้งานได้ง่าย ใช้เวลาน้อย โดยไม่ต้องมีความรู้เรื่อง GPS มาก ผมเขียนคอมโพเน็นต์ตัวนี้ขึ้นมาเพราะผมใช้ GPS บ่อย ตั้งแต่เครื่องมือถือทั่วๆไปเช่น Garmin หรือบน Pocket PC ก็เคยใช้ จนกระทั่งเครื่อง GPS ระดับ Precise เช่น Trimble, Leica ที่มีสนนราคาเรือนล้านบาท ใช้งานใน mode เช่น
    • Differential GPS (DGPS) ตั้งแต่ตั้ง Reference Station เอง จนถึงเช่าสัญญาณ DGPS จาก Omnistar หรือ Landstar
    • RTK (Real Time Kinematic) ที่ติดตั้ง Reference Station ประกอบกับอุปกรณ์ Radio Modem เพื่่อส่งสัญญาณ Correction ไปยังเครื่อง Rover ทำให้รับสัญญาณได้ละเอียดกว่าระบบ DGPS
    • Static หรือ Fast Static ใช้มากเพื่อขยายหมุดจากหมุด GPS ที่ทราบค่าพิกัดแล้วโดยการตั้งเครื่องรับ GPS ที่หมุด GPS แล้วนำเครื่อง GPS อีกเครื่องไปตั้งที่หมุดใหม่ ทำการรังวัดเก็บข้อมูล แล้วนำข้อมูลทั้งสองเครื่องไปคำนวณผ่านโปรแกรมต่างๆเช่น TGO,  LGO หรือโปรแกรมอื่นๆของผู้ผลิต GPS
  • ก็เลยมีแรงบันดาลใจว่าน่าจะทำ component สำหรับ Lazarus ซักตัวหนึ่งที่สามารถ decode ประโยคต่างๆของ  NMEA ได้ และนำข้อมูลเหล่านี้ไปแสดงผลเช่นวาดสัญลักษณ์ GPS บนท้องฟ้า แสดงความแรงของสัญญาณ GPS ตลอดจนวาดลูกศรแสดงเป้าหมายของ Waypoint ในการ programming ก็ไม่ถือว่าเป็นเรื่องยากหนักหนาสาหัส แต่ติดขัดคือผมมีงานประจำ และงานโปรแกรมมิ่งเป็นงานอดิเรก จึงมีเวลาค่อนข้างน้อย แต่ผมก็พยายามจนสามารถออกรุ่นแรกได้คือรุ่น 0.3 ซึ่งความรู้สึกของผมน่าจะพอใช้งานได้

ความสามารถของ Component “OpenGPSX”

  • สำหรับ Features ของคอมโพเน็นต์ผมจะเรียงไปตาม Class หลักๆ ดังนี้ครับ
  • TGPSPortConnected เอาไว้ตั้งค่าการเชื่อมต่อกับเครื่อง GPS เช่นตั้งค่าการเชื่อมต่อกับ Serial Port เช่นตั้งค่า Com port, Baud rate, Parity, Data bit และ Stop bit เมื่อทำการเชื่อมต่อแล้ว class นี้สามารถดักจับข้อมูล NMEA ที่ผ่านทาง port ก่อนจะกระจายสตริงของ NMEA ผ่านทาง Event
แสดงการตั้งค่า Serial Port
  • TNMEADecode เป็น class ที่อ่านค่า NMEA ที่เครื่อง GPS ส่งมาให้ผ่าน TGPSPortConnected แล้ว decode รหัสของ NMEA ตามชนิดของ sentence เช่น $GPGSA, $GPGSV, $GPRMC, $GPGGA, $GPVTG, $GPGLL, $GPWPL, $GPRTE หรือของ Garmin บางส่วน
  • TGPSSkyPlot เป็น class ที่วาดรูปสัญลักษณ์ของ GPS บนท้องฟ้า เมื่อได้รับการแปล NMEA จากรูปประโยค $GPGSV
GPS Skyplot Viewer
  • TGPSSignalStrength แสดงความแรงของสัญญาณของ GPS เมื่อได้รับการแปล NMEA จากประโยค $GPGSV เช่นเดียวกัน
GpS signal strength (แสดงในแนวราบ)
GPS signal strength (แสดงในแนวตั้ง)
  • TGPSTarget เป็นตัวบอกทิศทางจุดเป้าหมาย (Waypoint) ที่ต้องการจะไป โดยคอมโพเน็นต์จะคำนวณจากค่าพิกัดจุดเป้าหมายและค่าพิกัดปัจจุบันจาก GPS
แสดงทิศทางและระยะทางของจุดเป้าหมาย
  • ส่วนการ Implement ตัว Event จาก TNMEADecode สามารถแยกไปตามชนิดของประโยคของ NMEA ดังตัวอย่างรูปดัานล่างได้ง่ายๆ
แสดงการนำ NMEA ที่แปลแล้วมาใช้แสดงข้อมูลของ GPS

ไฟล์และส่วนประกอบของคอมโพเน็นต์

  • ส่วนใหญ่จะเขียนเองเกือบทั้งหมดยกเว้น การเชื่อมต่อกับ Serial port ผมดึงไฟล์จากคอมโพเน็นต์ “SdpoSerial” ซึ่งในคอมโพเน็นต์นี้พัฒนาต่อจาก Synaser โดยการเขียน class ขึ้นมา wrap “Synaser” ให้ใช้งานได้ง่าย ผมดัดแปลงโค้ดบ้างเล็กน้อยให้เหมาะสมกับการใช้งาน GPS ซึ่งไฟล์ที่นำมาใช้มีสองไฟล์คือ sdposerial.pas กับ synaser.pas
  • อื่นๆก็เขียนเองเกือบหมดรวมทั้ง class ที่ใช้คำนวณหาระยะทางและทิศทางบน Ellipsoid ถ้ายังไม่ลืมก็คือใช้อัลกอริที่มของ Vincenty ซึ่งผมได้แก้ bug ใน unit นี้ด้วย
ไฟล์และส่วนประกอบของคอมโพเน็นต์ OpenGPSX
  • ตอนหน้าผมจะลงลิงค์ให้ดาวน์โหลดคอมโพเน็นต์ OpenGPSX ซึ่งเราจะเริ่มเขียนโปรแกรมทดสอบเพื่อนำคอมโพเน็นต์นี้มาใช้กัน ติดตามตอนต่อไปได้ครับ

Related

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

October 2026
M T W T F S S
 1234
567891011
12131415161718
19202122232425
262728293031  
« Sep    

Blog Stats

There was an issue retrieving stats. Please try again later.

Recent Posts

  • เร็วแรงทะลุนรกกับ POCUT (POint Cloud UTils)
  • อัพเดทแอพ “SurveyStar LDP Thailand” เพื่อรับกับยกร่างมาตรฐาน “TH-LDP”
  • ออกแอพใหม่ SurveyStar Traverse Pro สืบสานงานคำนวณวงรอบ ตอนที่ 2
  • ออกแอพใหม่ SurveyStar Traverse Pro สืบสานงานคำนวณวงรอบ ตอนที่ 1
  • โปรแกรมอรรถประโยชน์ Pocut (POint Cloud Utils)
  • โปรแกรมแปลงไฟล์แคดข้ามระบบพิกัด (Drawing Transformer)
  • มาตรฐานระบบพิกัดแผนที่แบบแอลดีพีของประเทศไทยสำหรับงานวิศวกรรมและการก่อสร้าง (Thailand Low Distortion Map Coordinate System for Engineering and Construction)
  • ประสบการณ์ใช้งาน Kimi K3 Code เขมือบแบบสยอง
  • สร้างแพลตฟอร์มดู Point Cloud บนเว็บด้วย Potree + CesiumJS — เรื่องเล่าจากสนามบินอู่ตะเภา
  • เมื่อวิศวกรสำรวจคำนวณเรื่องน้ำ – วิเคราะห์ระบบระบายน้ำบริเวณ RESA
  • แนะนำหนังสือ “จีออเดซี” ที่ยอดเยี่ยมของดร.พุทธิพล
  • ESPrtk ทำให้ ESP32 ใช้ไม่ได้? วิธีกู้คืน
  • กรณีศึกษา – คืนชีพ SDL30 ปี 2000 ด้วย ESP32 และแอพทำเอง SDL30 Collector
  • DIY RTK Base Station (survey-grade) รุ่น V3.21 ด้วย Raspberry Pi 2B + UM980 เมื่อคุณปู่กลับมาเป็นฮีโร่ ตอนที่ 4
  • รีวิวกูปรี (CoPre2) โปรแกรมประมวลผลไลดาร์จากค่าย CHCNav
  • DIY RTK Base Station (survey-grade) รุ่น V3.2 ด้วย Orange Pi 3 Zero + UM980 ตอนที่ 3
  • DIY RTK Base Station (survey-grade) รุ่น V3 ด้วย Orange Pi 3 Zero + UM980 ตอนที่ 2
  • เส้นทางและไทม์ไลน์ของใบรับรองความรู้ความชำนาญในการประกอบอาชีพวิศวกรรม(สำรวจ)ระดับวิศวกรวิชาชีพ
  • มัดแหนมรวมสามโปรแกรมไปใช้บนสโตร์ Snap ฝั่งลีนุกซ์
  • ปัดฝุ่น Traverse Pro เพิ่มรายละเอียดรายการคำนวณใหม่แบบแนวนอน (Landscape) และธีมมืด
  • DIY RTK Base Station (Survey-Grade) ด้วยชิป UM980 และบอร์ด ESP32 ตอนที่ 1
  • สร้าง NTRIP Caster ด้วย BNC บนคลาวด์แบบ DIY สำหรับ RTK Base Station ใช้ CHCNav P5
  • จับ AI มาไตรกรีฬา สร้างตัวติดตั้ง Snap สำหรับ Surveyor Pocket Tools กับประเด็นแฝงเร้นความเป็นส่วนตัวของผู้ใช้
  • ทดสอบรีด QGIS แบบโหดสัสด้วยชุดข้อมูล Open Building V3 โพลีกอน 74 ล้านหลัง
  • เมื่อ AI เป็นพิษชักจูงผู้ใช้ด้วยข้อมูลผิดๆ

Subscribe to Blog via Email

Enter your email address to subscribe to this blog and receive notifications of new posts by email.

Join 122 other subscribers

Archives

  • October 2026
  • September 2026
  • August 2026
  • July 2026
  • May 2026
  • April 2026
  • March 2026
  • January 2026
  • December 2025
  • November 2025
  • September 2025
  • August 2025
  • July 2025
  • June 2025
  • May 2025
  • January 2025
  • December 2024
  • November 2024
  • October 2024
  • September 2024
  • July 2024
  • May 2024
  • April 2024
  • January 2024
  • November 2023
  • October 2023
  • September 2023
  • July 2023
  • June 2023
  • May 2023
  • March 2023
  • February 2023
  • January 2023
  • November 2022
  • October 2022
  • September 2022
  • July 2022
  • May 2022
  • December 2021
  • October 2021
  • September 2021
  • August 2021
  • May 2021
  • February 2021
  • January 2021
  • December 2020
  • November 2020
  • October 2020
  • September 2020
  • July 2020
  • June 2020
  • May 2020
  • April 2020
  • March 2020
  • February 2020
  • January 2020
  • December 2019
  • November 2019
  • September 2019
  • August 2019
  • July 2019
  • May 2019
  • April 2019
  • March 2019
  • February 2019
  • January 2019
  • November 2018
  • October 2018
  • September 2018
  • August 2018
  • July 2018
  • June 2018
  • May 2018
  • April 2018
  • March 2018
  • January 2018
  • November 2017
  • July 2017
  • June 2017
  • May 2017
  • April 2017
  • March 2017
  • February 2017
  • January 2017
  • December 2016
  • November 2016
  • October 2016
  • August 2016
  • November 2015
  • March 2015
  • August 2014
  • March 2014
  • January 2014
  • December 2013
  • February 2012
  • January 2012
  • November 2011
  • October 2011
  • August 2011
  • April 2011
  • February 2011
  • December 2010
  • November 2010
  • October 2010
  • September 2010
  • June 2010
  • April 2010
  • March 2010
  • January 2010
  • December 2009
  • November 2009
  • October 2009
  • September 2009
  • August 2009

Recent Comments

  • priabroy on ออกแอพใหม่ SurveyStar Traverse Pro สืบสานงานคำนวณวงรอบ ตอนที่ 1
  • Konexana Yomleuangsa on ออกแอพใหม่ SurveyStar Traverse Pro สืบสานงานคำนวณวงรอบ ตอนที่ 1
  • เฟือง เถา on DIY RTK Base Station (survey-grade) รุ่น V3.21 ด้วย Raspberry Pi 2B + UM980 เมื่อคุณปู่กลับมาเป็นฮีโร่ ตอนที่ 4
  • priabroy on DIY RTK Base Station (survey-grade) รุ่น V3.21 ด้วย Raspberry Pi 2B + UM980 เมื่อคุณปู่กลับมาเป็นฮีโร่ ตอนที่ 4
  • ตรันฟองนาม on DIY RTK Base Station (survey-grade) รุ่น V3.21 ด้วย Raspberry Pi 2B + UM980 เมื่อคุณปู่กลับมาเป็นฮีโร่ ตอนที่ 4
©2026 Prajuab Riabroy's Blog | Design: Newspaperly WordPress Theme