มีดาวเทียม GPS จำนวนมากรอบโลกซึ่งใช้เพื่อระบุตำแหน่งที่แน่นอนของสถานที่ใด ๆ นอกจากพิกัดตำแหน่ง (ละติจูดและลองจิจูด) แล้วยังให้ข้อมูลอื่น ๆ เช่นเวลาวันที่ความสูงมุมติดตามทิศทางเป็นต้นเราได้เรียนรู้การอ่านข้อมูล GPS นี้จากดาวเทียมโดยใช้ Arduino แล้ว ดังนั้นเราจะสร้างนาฬิกา GPS โดยใช้ข้อมูล 'เวลาและวันที่' จากดาวเทียม GPS นาฬิกาที่อัปเดต GPSมีความแม่นยำมากและให้ข้อมูลแบบเรียลไทม์ด้วยความแม่นยำเพียงมิลลิวินาที
ส่วนประกอบ:
- Arduino Uno
- โมดูล GPS
- 16x2 LCD
- การเชื่อมต่อสายไฟ
- แหล่งจ่ายไฟ
คำอธิบายการทำงาน:
โมดูล GPSส่งข้อมูลในรูปแบบ NMEA ดูผลลัพธ์ของข้อมูล GPS ในภาพด้านล่าง รูปแบบ NMEA ประกอบด้วยหลายประโยคซึ่งเราต้องการหนึ่งประโยคเพื่อแยกวันที่และเวลา ประโยคนี้เริ่มต้นจาก$ GPRMCและมีพิกัดเวลาและข้อมูลที่เป็นประโยชน์อื่น ๆ นี้$ GPRMCจะเรียกข้อมูลแนะนำขั้นต่ำเฉพาะ GPS / ขนส่งและความยาวของสายนี้เป็นเรื่องเกี่ยวกับ 70 ตัวอักษร ก่อนหน้านี้เราได้แยกสตริง$ GPGGAในระบบติดตามยานพาหนะเพื่อค้นหาพิกัดละติจูดและลองจิจูด นี่คือเอาต์พุต GPS:
และสตริง $ GPRMCส่วนใหญ่ประกอบด้วยความเร็วเวลาวันที่และตำแหน่ง
$ GPRMC, 123519.000, A, 7791.0381, N, 06727.4434, E, 022.4,084.4,230394,003.1, W * 6 A $ GPRMC, HHMMSS.SSS, A, ละติจูด, N, ลองจิจูด, E, ความเร็ว, มุม, วันที่, MV, W, CMD
ตัวระบุ |
คำอธิบาย |
RMC |
ประโยคขั้นต่ำที่แนะนำ C |
HHMMSS.SSS |
เวลาเป็นชั่วโมงนาทีวินาทีและรูปแบบมิลลิวินาที |
ก |
สถานะ // A = active และ V = void |
ละติจูด |
ละติจูด 49 องศา 16.45 น. ภาคเหนือ |
น |
ทิศทาง N = เหนือ, S = ใต้ |
ลองจิจูด |
ลองจิจูด (พิกัด) |
จ |
ทิศทาง E = ตะวันออก, W = ตะวันตก |
ความเร็ว |
ความเร็วเป็นนอต |
มุม |
มุมติดตามเป็นองศา |
วันที่ |
DATE ใน UTC |
MV |
การแปรผันของแม่เหล็ก |
ว |
ทิศทางของรูปแบบ E / W |
CMD (* 6A) |
ข้อมูล Checksum |
เราสามารถแยกเวลาและวันที่ออกจากสตริง $ GPRMC โดยการนับเครื่องหมายจุลภาคในสตริง ด้วยความช่วยเหลือของ Arduino และการเขียนโปรแกรมเราจะค้นหาสตริง $ GPRMC และจัดเก็บไว้ในอาร์เรย์จากนั้นจะพบเวลา (รูปแบบ 24 ชั่วโมง) หลังจากลูกน้ำหนึ่งลูกและวันที่สามารถพบได้หลังเครื่องหมายจุลภาคเก้าตัว เวลาและวันที่จะถูกบันทึกเพิ่มเติมในสตริง
ดาวเทียม GPS แสดงเวลาและวันที่ในเวลาสากลเชิงพิกัด (UTC) ดังนั้นเราจึงจำเป็นต้องแปลงตามนั้น ในการแปลงตามเวลาของอินเดียเราได้เพิ่มเวลา UTC เป็นเวลา 5:30 น. เนื่องจากเวลาของอินเดียจะเร็วกว่า UTC / GMT 5 ชั่วโมงครึ่ง
แผนภูมิวงจรรวม:
การเชื่อมต่อวงจรของนาฬิกา Arduino GPSนั้นง่ายมาก Arduino ใช้เพื่อควบคุมกระบวนการทั้งหมดรับข้อมูล GPS จากดาวเทียมผ่านโมดูล GPS แยกวันที่และเวลาจากสตริง $ GPRMC และแสดงบน LCD
หมุดข้อมูล D4, D5, D6, D7 ของ LCD 16x2 เชื่อมต่อกับหมายเลขพิน 5, 4, 3, 2 ของ Arduino และพินคำสั่ง RS และ EN ของ LCD เชื่อมต่อกับพิน 7 และ 6 ของ Arduino ตามลำดับ ตัวรับสัญญาณ GPS ขา Tx เชื่อมต่อกับ Rx พิน 10 ของ Arduino Ground PIN ของ Arduino และ GPS เชื่อมต่อกัน ที่นี่เราใช้โมดูล GPS SKG13BL ซึ่งทำงานที่อัตราการส่งข้อมูล 9800 bps Arduino ยังได้รับการกำหนดค่าที่อัตราการส่งข้อมูล 9800 bps โดยใช้ฟังก์ชัน “ Serial.begin (9800)”
คำอธิบายการเขียนโปรแกรม:
ในส่วนการเขียนโปรแกรมก่อนอื่นเรารวมไลบรารีและกำหนดพินสำหรับการสื่อสารแบบอนุกรมของ LCD และซอฟต์แวร์ กำหนดตัวแปรบางตัวด้วยอาร์เรย์สำหรับจัดเก็บข้อมูล ด้วยการใช้ Software Serial Library ที่นี่เราอนุญาตให้มีการสื่อสารแบบอนุกรมบนพิน 10 และ 11 และทำให้เป็น Rx และ Tx ตามลำดับ โดยค่าเริ่มต้น Pin 0 และ 1 ของ Arduino จะใช้สำหรับการสื่อสารแบบอนุกรม แต่ด้วยการใช้ไลบรารี SoftwareSerial เราสามารถอนุญาตการสื่อสารแบบอนุกรมบนพินดิจิทัลอื่น ๆ ของ Arduino
# รวม
หลังจากนั้นเราได้เริ่มต้นการสื่อสารแบบอนุกรมและ LCD ในฟังก์ชัน การตั้งค่า และแสดงข้อความต้อนรับบน LCD
จากนั้นเราได้แยกเวลาและวันที่ออกจากสตริงที่ได้รับ
ในขณะที่ (x
จากนั้นแปลงเวลาและวันที่เป็นทศนิยมและแก้ไขเป็นเวลาอินเดีย (UTC +5: 30)
int UTC_hourDec = UTC_hour.toInt (); int UTC_minutDec = UTC_minut.toInt (); int วินาที = UTC_second.toInt (); int วันที่ = UTC_date.toInt (); int เดือน = UTC_month.toInt ();……………
และในที่สุดเวลาและวันที่ก็แสดงบน LCD โดยใช้ฟังก์ชัน lcd.print ตรวจสอบรหัสทั้งหมดด้านล่าง