Electronic, Arduino ,Python ,Robotic
Posts tagged gps
ทดสอบ Arduino GPS บนถนนจริง
Mar 13th
หลังจากหายไปนาน ทิ้งโปรเจคเอาไว้มากมายไม่ได้เอามาขึ้นเวป หรือที่ขึ้นไว้ก้อยังไม่เสร็จสมบูรณ์สักอัน ผมรู้สึกว่าได้ทดลองโปรเจค กับไอเดียเยอะขึ้นนะครับ แต่ไม่รู้สึกว่างานที่ดองไว้ มันจะลดลงเลย กลับเป็นว่าเพิ่มขึ้นไปอีก (จะได้อะไรเป็นชิ้นเป็นอันไหมนิ)
หลังจากบ่นไปแล้ว ตามประสาทคนยังหนุ่มยังแน่น ดูกันต่อ จากรอบที่แล้ว ดึงข้อมูลจาก GPS แล้วตอนนี้เป็นขั้นตอนทดสอบกันบ้างครับ ผมก้อได้ปรับปรุง Arduino GPS จากรอบที่แล้ว ให้มีขนาดเล็กลง เปลี่ยนแบต กับ จัดการเส้นไฟ ให้ดูรก น้อยลงครับ มันอาจจะหล่อสู้ เครื่องติดรถไม่ได้นะ แต่สาวเห็นกริ๊ดแน่นอนครับ :-D (กริ๊ด อะไร เห็นก้อคงรู้นะ)
หน้าตาดูเหมือนจะเปลี่ยนไปทางที่ดูดีขึ้น (จริงป่าวนิ) ส่วนของโปรแกรมเลยต้องปรับปรุงนิดหน่อย โดยรอบนี้ผมเพิ่มวันที่กับเวลาเข้าไปอีก ตอนนี้ เราก้อได้ นาฬิกาอะตอม จอสี เวลาเที่ยงตรงสูง สามารถจูนเวลาเองได้จากดาวเทียม ว่ากันไปนั้นเลย เรียกได้ว่า จะทำอะไรก้อว่าดีไปสักหมด เข้าขั้นหลงตัวเองมากๆ
วันที่ กับ เวลาที่เพิ่มเข้าไป จริง ผมอยากรู้ว่ามันตรงกับเวลาไทย แค่ไหน เผื่อโปรเจคหน้าจะทำนาฬิกา ให้มันจูนเอง จาก GPS สักเลย ซึ่งจากหน้าจอ LCD เห็นจะเป็นเวลาไทย บวกไปอีก 7 ชั่วโมงครับ
สำหรับ source code ก้อเข้าไป โหลดที่นี้เลยครับ tinygps-src
ตอนนี้ทุกคนได้เห็นแล้วว่า GPS ตัวนี้ นอกจากจะบอกตำแหน่งได้แล้ว ยังบอกเวลาได้อีกด้วย แล้วฟังก์ชั่นบอกตำแหน่งมันทำงานได้จริงหรือป่าวนิ เดี่ยวจะเหมือนมือถือจากจีน ดูทีวี ก้อได้ ฟังเพลงก้อได้ แต่โทร ไม่ค่อยได้ยิน กรรมจริงๆ
ความจริง gps อันนี้จะทำงานดี ไม่ดี ไม่เกียวกับโปรแกรมที่ผมทำแล้ว มันอยู่ที่ โมดูล GPS ผมเลยทดลองเอาข้อมูลดิบๆ ตอนนี้ใช้วิธีโบราณนิดหน่อย จดลงสมุดเอง ยังไม่ได้ให้มันทดลอง เก็บค่าบน sd-card แบบว่า ถ้าค่ามันห่วยมากๆจะได้ เลิกไปเลยโปรเจคนี้ ยิ่งดองไว้หลายงานอยู่
การเดินทางครั้งนี้ ผมเริ่มต้นจด บริเวณสนามหลวงนะครับ นั่งรถเมล์สาย ปอ 60 กลับบ้าน จดไปเรื่อยถึง พันธ์ทิพย์ เลิกจด กลัวสาวๆ่ กับ คนผ่านไ ป ผ่านมา ซ๊อคกับ GPS รุ่นนี้ ทั้งสายไฟเอย มีจด มีวางแผนอีก มันช่างดูน่ากลัวจริงๆ

ข้อมูลเลยจดมาแค่นี้ คลิกที่นี้ เรียกดูเส้นทางจาก google map
จุดที่เห็นบนแผนที่ จะเป็นเส้นทางที่รถเมล์วิ่งผ่านครับ สังเกตว่ามันวิ่งข้ามเลนด้วย เป็นข้อมูลผิคพลาดจาก GPS ครับ ซึ่งก้อน่าจะยอมรับได้
View Larger Map
เอาล่ะครับ ไหนก้อนานจะมา สักที่ เสริมสร้างความรู้นิดๆ หน่อยๆ จะเล่น GPS กันทั้งที่ มาเข้าใจกันต่อว่า ใช้งานกันได้อย่างไง สำหรับอุปกรณ์พวก GPS Module จะส่งข้อมูลผ่าน พอร์ท อนุกรม (Serial port) มันจะส่งมาเป็นข้อความๆๆ ดังรูปแบบข้างล่าง ซึ่งเราต้องไปเขียนโปรแกรม ตีความ เองว่า แต่ล่ะ คอมม่า มันคืออะไรบ้าง
โดย รูปแบบค่าที่ส่งมา เริ่มต้น $GP……
$GPGSA,A,1,22,18,09,,,,,,,,,,,,*1E
$GPGSV,3,1,12,18,45,016,23,09,44,043,30,22,27,330,28,21,77,179,21*7B
$GPGSV,3,2,12,24,38,149,25,14,36,83,17,06,21,215,25,30,20,154,21*74$GPGGA,114008.804,1339.7094,N,10028.2090,E,0,03,,27.4,M,-27.4,M,,0000*6F
จะเห็นคำสั่งหลักมีสามอันได้แก่
$GPGSA – GPS DOP and Active Satellites
$GPGSV – GPS Satellites in View ค่าส่วนนี้จะบอก ระดับความแรงของสัญญาณ ดาวเทียม กับตำแหน่งดาวเทียมที่เจอตอนนี้
$GPGGA – Global Positioning System Fix Data หรือ ค่าตำแหน่งพิกัดที่อ่านได้ ซึ่งในส่วนนี้จะระบุ ตำแหน่ง lat กับ long และ เวลา UTC
บรรทัดที่น่าจะเข้าง่ายสุดน่าจะเป็น $GPGGA มันเป็นข้อมูลที่เข้าจะเอาไปใช้งานได้เลย อีกสองอัน ข้อมูลเกี่ยวกับสัญญาณของดาวเทียมที่ GPS ใช้งานอยู่ น่าจะใช้ตรวจสอบสัญญาณที่ได้มาน่าเชื่อถือแค่ไหนครับ
เอาล่ะครับ สำหรับตอนนี้คงจบแค่นี้ก่อน เดี่ยวจะรีบทำให้มี บันทึกข้อมูลได้ จะได้ เอาไปติดตัวกันได้สักที่
ลิงค์ข้อมูลอ้างอิง สำหรับ NMBA
http://home.mira.net/~gnb/gps/nmea.html
เริ่มต้นสร้าง ระบบจีพีเอส GPS หน้าจอสีกับอาดูอี้โน่
Mar 3rd
กลับมาช่วงโปรเจคสิ้นคิดกับอาดูอี้โน่ตัวต่อไป ตัวนี้ผมได้ดองไว้มานาน จนได้ที่แล้ว ผมได้ซื้อ gps จากบ้านหม้อ มา 3 ตัว กะจะทำอุปกรณ์ติดตามแฟนสาว มันจะเป็นเครื่องมือหาแฟน หรือ ติดตามแฟน ก้อแน่นิ โดยโปรเจคนี้ผมได้เอาบอร์ดอาดูอี้โน่ (arduino) มาใช้อีกเหมือนเดิม
ความเป็นมาของระบบนำร่อง
GPS ได้รับการพัฒนามายาวนาน จนทำให้ราคาของ gps ราคาถูกมาก ตอนนี้ของจากจีนเข้ามา ยิ่งถูกกันไปอีก แต่ความเป็นมาของเทคโนโลยีนี้ก้อน่าสนใจนะครับ
ระบบ GPS เริ่มต้นจากการใช้ คลื่นวิทยุ เพื่อใช้อ้างอิง โดยอาศัยการหาตำแหน่ง จากการวัดเวลาการเดินทางของคลื่นในอากาศแล้วมาคำนวณหาระยะห่างจากสถานี(เป็นเสาส่งสัญญาณภาคพื้นดินนะครับ) เป็นจุดกำเนิดคลื่นอีกที จากจุดกำเนิดนี้ ได้พัฒนาต่อมา
วิธีการหาระยะทางจากคลื่นในระบบแรก ระบบ Loran จะใช้คลื่นอย่างน้อย 2 ความถี่ที่ถ่ายทอดมาจากสองสถานี ตำแหน่งที่เราอยู่จะเป็นจุดตัดของคลื่นทั้งสอง และต่อมาได้พัฒนามาถ่ายทอดคลื่นในย่านวิทยุ VLF 4 ความถี่ (10.2, 11.05, 11-1/3 และ 13.6 KHz) แล้วอาศัยความต่างเฟสของคลื่นที่รับได้มาคำนวณหาตำแหน่ง ซึ่งมีความถูกต้องราวๆ 2 – 4 ไมล์ทะเล

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

รู้จัก GPS กันก่อน
ระบบระบุตำแหน่งจากดาวเทียม เริ่มต้นจากกระทรวงกลาโหมสหรัฐอเมริกา ใช้ในการทหาร ได้ดำเนินโครงการ Global Positioning System หรือ “GPS” ขึ้น ระบบ GPS จะใช้ดาวเทียมจำนวนทั้งหมด 24 ดวง โคจรอยู่ในระดับสูงที่พ้นจากคลื่นวิทยุรบกวนของโลก และวิธีการที่สามารถให้ความถูกต้องเพียงพอที่จะใช้ชี้บอกตำแหน่งได้ทุกแห่งบนโลกตลอดเวลา 24 ชั่วโมงจากการนำมาใช้งานจริง จะให้ความถูกต้องสูง โดยที่ความคลาดเคลื่อนมาตรฐานของตำแหน่งทางราบต่ำกว่า 50 เมตร แ ละยังสามารถวัดได้ละเอียดมากขึ้น เมือใช้งานร่้วมกับระบบอื่น และด้วยการพัฒนาทางด้านอุปกรณ์คอมพิวเตอร์ ทำให้สามารถผลิตเครื่องรับ GPS ที่มีขนาดลดลง และมีราคาถูกกว่า
ขอบคุณ เนื้อหา GPS จาก http://www.marinerthai.com/comms/view.php?No=6102004
หลักการทำงานของ GPS ว่ามันหาตำแหน่งได้อย่างไง หลัีกการจะพัฒนามาจากระบบเดิม แต่จะค้นหาความถี่จากดาวเทียมบนท้องฟ้า เพื่อคำนวณหาตำแหน่งอ้างอิงกับดาวเทียม ที่อยู่บนท้องฟ้า ซึ่งในระบบจะใช้อย่างน้อย 3-4 ดวง โปรเจคนี้เป็น โปรเจคต่อเนื่องจากรอบแรกที่ต่อ gps เข้า notebook เ พื่อใช้ในการ แสดงผล http://www.ayarafun.com/2008/07/test-gps-modules/
การใช้งาน GPS เอาไปทำอะไรกันบ้าง โดยรูปแบบการใช้งานจะมีอยู่ด้วยกัน 3 รูปแบบ
1. ระบบระบุตำแหน่ง (Position) แสดงพิกัดทางภูมิศาสตร์แบบละติดจูดและลองติจูด อาจจะมีระบบบันทึกด้วย ส่วนมากใช้ในการสำรวจ การทหาร
2. ระบบนำทาง (Navigation) อันนี้เห็นบ่อยๆ GPS ที่ติดในรถ จะมีแผนที่ติดมาด้วย และจะมีระบบนำทาง บอกทางให้ เหมือน มีคนบอกทาง (Navigation) นี้ล่ะครับ
3. ระบบติดตาม (Tracking) อันนี้ น่าจะเป็นระบบที่หลายๆคนฝันกันมานานแล้ว เอาไว้ติดตาม รู้ทุกการเคลื่อนไหว ระบบนี้ยังไม่ค่อยเห็นกันมาก คงเพราะว่าระบบยังไม่เอื้ออำนวยนะครับ (ต้องมีอุปกรณ์ GPS ที่ส่งข้อมูลไปยัง ตัวแม่ได้)
ส่วนระบบ GPS ที่พวกเราทำใส่ใน ไมโครคอนโทรลเลอร์ได้ น่าจะเป็นระบบระบุตำแหน่ง กับ ระบบติดตาม ในระบบนำทาง แบบมี map คงจะทำไม่ไหว ข้อมูล map มากเกินไป นะครับ เอาล่ะครับมาทดลองทำ เป็นระบบระบุตำแหน่งนะครับ จะบอกพิกัด ละติดจูดและลองติจู แบบง่ายๆก่อน
Arduino กับ GPS
เทคโนโลยีทาง GPS ไม่ได้ใช้ยากเหมือนแต่ก่อน ระบบ GPS ได้ถูกบรรจุลงในโมดูล ที่ออกแบบการรับส่งข้อมูล ออกมาในรูปแบบ Serial เราสามารถเอาตัวไมโครคอนโทรลเลอร์ ต่อรับคำสั่งจาก โมดูล GPS ได้ด้วยไม่ต้องมีวงจรเพิ่มเติมเลย (กรรม หลงนึกว่า ยากมาตั้งนาน)
ในโปรเจคนี้ ผมเลือกใช้ arduino เป็นส่วนควบคุมหลัก ต่อกับ โมดูล GPS ผ่าน serial โดยหน้าที่ผมเพียงแค่ decode ค่าส่งออกมา ไม่ต้องไปทำสมการคำนวณเองครับ (รอดตายๆ) แต่บอร์ดของ arduino จะมี hardware serial อยู่ช่องเดียว ซึ่งปกติ ผมเอาไว้ใช้ debug ถ้าเอาไปใช้ คงจะทำงานลำบาก
ผมจึงออกแบบ การต่ออุปกรณ์ใหม่ โดยใช้ส่วนประกอบต่อไปนี้นะครับ
- GPS จะใช้ software Serial ที่จะกล่าวต่อไป
- Color LCD 6610 จะต่อผ่าน SPI อันนี้ Libaray สามารถดูจากโปรเจคเก่าในเวปได้ครับ
Software serial คือส่วนโปรแกรมจำลองการทำงานของ Serial โดยใช้ ขาสัญญาณอื่น ซึ่งจะทำให้ ตัว arduino มีช่อง serial พร้อมอีก libary ของ software serial มีกัน 3 ตัว ได้แก่
- ตัวแรกที่ติดมากับ arduino เลย จะทำงานแบบ pulling คือ จะรอจนกว่าจะมีข้อมูลมาจนทำงานเสร็จ จึงไปทำงานต่อได้
- AFSoftwareSerial เอานี้ของ ladyada ผู้โด่งดัง ได้แก้ ปัญหาข้างตัน โดย ออกแบบโปรแกรมให้ืำทำงานแบบ interrupt driven คือไม่ต้องรอรับค่าแล้ว ทำงานอย่างอื่นได้เลย แต่มันก้อไม่ค่อยพอครับ บางคนอย่างได้ serial มากกว่านั้นอีก
- SoftwareSerial3 พัฒนาต่อจาก ladyada ครับ จากที่ใช้ interrupt ซึ่งมีแค่สองช่อง สำหรับ mega168 เขา เปลี่ยนมาใช้ pin-change interrupt เป็น function ใหม่ๆในตระกุล mega168 เราจะใช้ขา interrupt ได้มากกว่าเดิม จึงทำให้ มี soft serial มากขึ้นไปอีก
ในรอบนี้ผมได้ใช้ newSoftwareSerial3 จะได้ลองด้วยว่า มีปัญหาไหม สนใจ download ได้จากที่นี้
http://sundial.org/arduino/?page_id=61
วิธีใช้แค่ copy ใส่ใน path /libary ของ arduino จากนั้นก้อใช้งานได้เลย ตัว class libaray นี้ ก้อใช้งาน เหมือน hardware Serial เดิมๆ ครับ
จากนั้นยังใช้ library gps อีกอันครับ เอาให้ไม่ต้องคิดอะไรเลย library อีกตัวชื่อว่า tiny gps (รอบนี้ยังไม่ได้ทำอะไรเองเลย แปะๆๆ อย่างเดียว)
http://www.sundial.org/arduino/?page_id=3
ตัวอย่างการทดสอบ
ผมก้อ ทดลองแบบง่ายๆ ครับ ได้ข้อมูลมา เอาออกจอ color lcd แสดงตำแหน่ง latitude, longitude เลยครับ
ทดลองทำ GPS แบบ USB ไว้ใช้เอง
Jul 15th
คงเป็นความฝัน ของใครหลายๆคน อยากได้ gps เนื่องด้วยราคามันแพง เหลือเกิน สมัยก่อน เอาแค่เล็กๆ บอกตำแหน่งได้ราคาเกือบหมื่นแล้ว ยิ่งมีจอสีบอกตำแหน่งได้ ราคาก้อฝันไปได้เลย
มาถึงตอนนี้ราคาก้อลงมามากแล้ว พอซื้อหากันได้ แต่ความต้องการของผมไม่เคยหยุดที่ไปซื้อ มาสัก ผมชอบออกแบบ function อะไร เป็นของตัวเอง อย่างเช่น อยากเอามาทำเป็นนาฬิกา sync เวลา ผ่านดาวเทียว atomic clock เลยนะครับ ฟังดูช่างหรูสักจริงๆ ,เอามาทำ datalog บันทึกตำแหน่ง latitude, longitude เอามาใส่ google map ดูเส้นทางที่เดินไป เอาไปประยุกต์ อุปกรณ์ติดตามแฟนสาวได้ (เผื่อไว้ก่อน) เมกะโปรเจค มันช่างเยอะเหลือเกิน แต่ติดอยู่ที่ หา module มาเล่นไม่ได้เลย เสียดายเงิน
