___สุดสัปดาห์นี้มีของเล่นใหม่ที่วันนี้เพิ่งจะมีโอกาสได้แกะกล่องมาลองเล่น ของเล่นที่ว่าคือ GPS chipset ของ SIRFII ตัวนี้ขอยืมอาจารย์วีระพงศ์มาทดลองครับ ของตัวเองสั่งซื้อไปแล้วรอการจัดส่ง ผมซื้อ SIRFTIII ไปประมาณ 2800 บาทรวมกับ borad ที่มี SIM และ GPRS อีก 3000 ตั้งใจจะมาทำ navigation wireless GPS  โดยทดลองทำงานวิจัยเกี่ยวกับ moving object sensor ตอนนี้อยากทดลองเลยขอเล่นของพี่เค้าไปก่อน

___พื้นฐานที่จะทำ application หรือ Hack GPS ต้องรู้คือเรื่องของ GPS Protocal นั้นคือ NMEA ผมเคยสอนวิธีการอ่านและการ GET ค่า GPS DATA มาแล้วรอกลับไปอ่านใน Blog เดิมได้นะครับ วันนี้มาลองดูภาคปฏิบัติกัน

___STEP 1 : ต่อ GPS เข้ากับคอมพิวเตอร์ ผมใช้ USB Interface โชคดีที่พี่เค้ามี Serial 2 USB มาให้เลยทำบน notebook ได้

PIC090903003ชุดอุปกรณ์เชื่อมต่อครับ

41

____ทดลองรับข้อมูลง่ายด้วยโปรแกรม GPS Viewer หรือ GPSBabel เพื่อทดสอบการทำงานของ GPS หน้าตาของ NMEA ก็ประมาณนี้ครับ

$GPGGA,120557.916,5058.7456,N,00647.0515,E,2,06,1.7,108.5,M,47.6,M,1.5,0000*7A
$GPGSA,A,3,20,11,25,01,14,31,,,,,,,2.6,1.7,1.9*3B
$GPGSV,2,1,08,11,74,137,45,20,58,248,43,07,27,309,00,14,23,044,36*7A
$GPGSV,2,2,08,01,14,187,41,25,13,099,39,31,11,172,37,28,09,265,*71
$GPRMC,120557.916,A,5058.7456,N,00647.0515,E,0.00,82.33,220503,,*39
$GPGGA,120558.916,5058.7457,N,00647.0514,E,2,06,1.7,109.0,M,47.6,M,1.5,0000*71

_____ได้ ข้อมูลในรูป NMEA 0183 มาก็อุ่นใจได้แล้วครับ เพราะ GPS คุยกับ เครื่องคอมพิวเตอร์ได้แล้ว แต่ที่สำคัญต้องรู้ด้วยอยู่ พอร์ตคอมไหน อ่าน NMEA อาจจะงง เพราะมันเยอะ ผมเน้นข้อมูล แค่ 4 ตัวคือ X,Y,Z , TIME, GDOP เลือกชุด GPGGA อีกประการที่อยากเขียนไว้ คือ SIRFII ขึ้นไปสามารถ Burn ROM เพื่อ SETUP ค่าได้ผ่าน ATI Command โดยมี API ของ SIRF อยู่ เช่นการกำหนดค่า DOP ในการเลือกใช้ดาวเทียมมา slove หาพิกัด , การกำหนด ค่า epoc และ Baud Rate ลองเข้าไปดูได้ที่

http://www.usglobalsat.com/downloads/NMEA_commands.pdf

http://www.deanandara.com/Argonaut/Sensors/Gps/ConfiguringSirfStarIII.html

_____ทดลอง connect กับ GPS ด้วย Python ผ่าน USB ผมใช้ PySerial แต่ปรากฏว่าไม่ work ลองค้นดูพบว่ามันไม่รองรับตัว converter ที่ใช้ กำลังจะเปลี่ยนใหม่ไปใช้ PyUSB ตอนนี้เอาง่ายลองกับ serial ก่อน

_____มาถึงงานถนัดเขียนโปรแกรมไป parse ข้อมูลที่ต้องการจาก NEMA ง่ายมากเพราะเป็นการพาสค่าจาก string ธรรมดาผมใช้ python  หัวใจสำคัญอยู่แค่นี้เอง

line=”$GPGGA,120557.916,5058.7456,N,00647.0515,E,2,06,1.7,108.5,M,47.6,M,1.5,0000*7A”
line=line.split(“,”)

line=”$GPGGA,120557.916,5058.7456,N,00647.0515,E,2,06,1.7,108.5,M,47.6,M,1.5,0000*7A”

line_set=line.split(“,”)

พอได้ค่าพิกัดมาก็เอาไปแสดงบนแผนที่ก็จบกระบวนความแล้วครับ

อ่านบทความเกี่ยวข้อง

https://emap.wordpress.com/2009/02/09/nmea-sentence/

https://emap.wordpress.com/2009/02/07/bluetooth-gps-simulator/

https://emap.wordpress.com/2009/02/09/python-nmea/