เริ่มต้นสร้าง ระบบจีพีเอส GPS หน้าจอสีกับอาดูโน่

Posted by | March 3, 2009 | MyProject | One Comment

กลับมาช่วงโปรเจคสิ้นคิดกับอาดูอี้โน่ตัวต่อไป ตัวนี้ผมได้ดองไว้มานาน จนได้ที่แล้ว ผมได้ซื้อ 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 ว่ามันหาตำแหน่งได้อย่างไง หลัีกการจะพัฒนามาจากระบบเดิม แต่จะค้นหาความถี่จากดาวเทียมบนท้องฟ้า เพื่อคำนวณหาตำแหน่งอ้างอิงกับดาวเทียม ที่อยู่บนท้องฟ้า ซึ่งในระบบจะใช้อย่างน้อย 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 ตัว ได้แก่

  1. ตัวแรกที่ติดมากับ arduino เลย จะทำงานแบบ pulling คือ?จะรอจนกว่าจะมีข้อมูลมาจนทำงานเสร็จ จึงไปทำงานต่อได้
  2. AFSoftwareSerial เอานี้ของ ladyada ผู้โด่งดัง ได้แก้ ปัญหาข้างตัน โดย ออกแบบโปรแกรมให้ทำงานแบบ interrupt driven คือไม่ต้องรอรับค่าแล้ว ทำงานอย่างอื่นได้เลย แต่มันก้อไม่ค่อยพอครับ?บางคนอย่างได้ serial มากกว่านั้นอีก
  3. 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 เลยครับ

รูประบบ โดยรวม ไม่เน้นถ่ายรูปสวย ดูรกๆ เหมือนเดิม
  • บอร์ด arduino
  • จอ color lcd 6610 ดูวิธีใช้งานจากโปรเจคเก่าๆ
  • โมดุล gps จากร้านใต้บันได ในตำนาน
  • แบต 12 โวลต์ ก้อนยักษ์ (ถ้าแอบใส่แฟนสำเร็จ หนีไปไหนเป็นปี ยังรู้เลย)

รูปหน้าจอครับ (เส้นสีเหลือง จอมันจะเสียครับ แต่ยังใช้งานได้) ผมทดสอบแล้ว โดยเอาตัวเลขใส่เข้าไปใน google map ตอนนี้ผมจะอยู่ในบึงน้ำ ไม่ได้ใกล้ตึกเลย แต่ค่าที่อ่านได้จะนิ่ง ไม่ได้ กระโดด ไปมาๆ การอ่านค่าจะต้องหาร?(10^4) ถึงจะเป็นค่าองศาจริง
อันนี้ตัวอย่างตำแหน่งที่ได้ นะครับ ลงบ่อไปเลย http://maps.google.com/maps?f=q&source=s_q&hl=th&q=13.651300,+100.495000&jsv=145… บนหน้าจอของทางเราพยายามให้เห็นความเป็นไทยอยู่สูง ฮ่าๆ
เดี่ยวทำเมนู แล้ว save ตำแหน่งเข้า eeprom ภายในไว้ก่อนครับ ?file system fat เก็บไว้ก่อน
ลิงค์อื่นเกี่ยวกับ GPS ที่น่าสนใจ
ขอบคุณ เนื้อหา GPS จาก http://www.marinerthai.com/comms/view.php?No=6102004
ติดตามเพื่อนฝูงทุกฝีก้าวด้วย GPS Tracking >>http://www.smart-mobile.com/forum/viewtopic.php?t=122670
ข้อมูล GPS ทั่วไป >>http://www.resgat.net/index.php

About chang

ชื่อ “ช้าง” ส่วนมากเขาจะเรียกว่า “พี่ช้าง” แล้ว มีความสนใจทางเทคโนโลยีทางคอมพิวเตอร์ อิเล็กทรอนิกส์ และ หุ่นยนต์ เป็นทั้งนักคิด นักประดิษฐ์ ชอบทดลองเล่น จนเดี่ยวนี้รู้สึกว่าจะเล่นมากกว่ามืออาชีพไปสักแล้ว

  • M-I-K-E Electronic

    สุดยอดครับพี่ช้าง Just Say Arduino !!!!