การใช้โมดูล GPS Neo-6M กับ Raspberry Pi

Using the NEO-6M GPS Module with the Raspberry Pi

โมดูล GPS Neo-6M เป็นตัวเลือกยอดนิยมสำหรับการเพิ่มฟังก์ชั่น GPS ให้กับโครงการ Raspberry Pi มันให้ข้อมูลตำแหน่งความสูงและเวลาที่แม่นยำทำให้เหมาะสำหรับการนำทางการจัดตำแหน่งทางภูมิศาสตร์และแอปพลิเคชันการซิงโครไนซ์เวลา คู่มือนี้จะนำคุณผ่านการตั้งค่าและใช้โมดูล GPS Neo-6M กับ Raspberry Pi


สิ่งที่คุณต้องการ

  1. Raspberry Pi (รุ่นใด ๆ ที่มีการสนับสนุน GPIO เช่น PI 3, PI 4)
  2. โมดูล GPS Neo-6M
  3. เครื่องหั่นขนมปังและสายจัมเปอร์
  4. คอมพิวเตอร์ที่มีการเข้าถึง SSH ไปยัง Raspberry Pi หรือแป้นพิมพ์และจอภาพที่เชื่อมต่อ
  5. Python ติดตั้งบน Raspberry Pi

ขั้นตอนที่ 1: เดินสาย Neo-6m ไปยัง Raspberry Pi

Neo-6M สื่อสารกับ Raspberry Pi โดยใช้อินเตอร์เฟส UART (อนุกรม)

การเชื่อมต่อ

PIN Neo-6M Raspberry Pi Pin
VCC 3.3V (พิน 1)
gnd พื้นดิน (พิน 6)
TXD RXD (PIN 10, GPIO15)
RXD txd (พิน 8, gpio14)

บันทึก: ตรวจสอบให้แน่ใจว่า Neo-6M ใช้พลังงาน 3.3V หรือ 5V ตามที่ระบุไว้ในโมดูลของคุณ ตรวจสอบแผ่นข้อมูลของโมดูล


ขั้นตอนที่ 2: เปิดใช้งาน UART บน Raspberry Pi

  1. เปิดเครื่องมือกำหนดค่า Raspberry Pi:
    sudo raspi-config
    
  2. นำทางไปยัง ตัวเลือกอินเตอร์เฟส> พอร์ตอนุกรม:
    • เลือก "ไม่" เมื่อถูกถามว่าคุณต้องการเชลล์เข้าสู่ระบบผ่านอินเทอร์เฟซอนุกรมหรือไม่
    • เลือก "ใช่" เพื่อเปิดใช้งานฮาร์ดแวร์พอร์ตอนุกรม
  3. รีบูตราสเบอร์รี่ pi:
    sudo reboot
    

ขั้นตอนที่ 3: ติดตั้งเครื่องมือและไลบรารีที่จำเป็น

  1. อัปเดต Raspberry Pi ของคุณ:
    sudo apt update && sudo apt upgrade -y
    
  2. ติดตั้ง minicom สำหรับการทดสอบโมดูล GPS:
    sudo apt install -y minicom
    
  3. ติดตั้งไลบรารี Python สำหรับการสื่อสารแบบอนุกรมและการแยกวิเคราะห์ GPS:
    pip install pyserial pynmea2
    

ขั้นตอนที่ 4: ทดสอบโมดูล GPS

  1. เปิด minicom เพื่อตรวจสอบว่าโมดูล GPS กำลังส่งข้อมูลหรือไม่:
    sudo minicom -b 9600 -o -D /dev/serial0
    
  2. คุณควรเห็นข้อมูล GPS ในรูปแบบ NMEA (เช่น $GPGGA, $GPRMC- ถ้าไม่:
    • ตรวจสอบสายไฟของคุณ
    • ตรวจสอบให้แน่ใจว่าโมดูลมีมุมมองที่ชัดเจนของท้องฟ้าเพื่อรับสัญญาณดาวเทียม
  3. การออก minicom โดยการกด Ctrl+A, แล้ว Zและเลือก X.

ขั้นตอนที่ 5: อ่านข้อมูล GPS โดยใช้ Python

สคริปต์ Python ต่อไปนี้อ่านและแยกวิเคราะห์ข้อมูล GPS จากโมดูล Neo-6M

ตัวอย่างรหัส Python

import serial
import pynmea2

def read_gps():
    # Open serial connection to GPS module
    gps_serial = serial.Serial("/dev/serial0", baudrate=9600, timeout=1)

    while True:
        try:
            line = gps_serial.readline().decode("ascii", errors="replace")
            if line.startswith("$GPGGA"):
                msg = pynmea2.parse(line)
                print(f"Latitude: {msg.latitude}, Longitude: {msg.longitude}")
                print(f"Altitude: {msg.altitude} {msg.altitude_units}")
        except pynmea2.ParseError as e:
            print(f"Parse error: {e}")
        except KeyboardInterrupt:
            print("Exiting...")
            break

if __name__ == "__main__":
    read_gps()

ขั้นตอนที่ 6: แอปพลิเคชันของโมดูล GPS Neo-6M

  1. ระบบนำทาง: สร้างตัวติดตาม GPS สำหรับยานพาหนะหรือโดรน
  2. geotagging: บันทึกข้อมูลตำแหน่งสำหรับภาพถ่ายหรือกิจกรรมอื่น ๆ
  3. การซิงโครไนซ์เวลา: ใช้ข้อมูล GPS สำหรับการจับเวลาที่แม่นยำสูง
  4. อุปกรณ์ IoT: เปิดใช้งานระบบอัตโนมัติตามตำแหน่ง

การแก้ไขปัญหา

  1. ไม่มีข้อมูล GPS ใน Minicom:

    • ตรวจสอบการเดินสาย (การเชื่อมต่อ TXD และ RXD)
    • ตรวจสอบให้แน่ใจว่าโมดูล GPS ใช้พลังงานอย่างถูกต้อง
    • วางโมดูลในพื้นที่เปิดเพื่อรับสัญญาณดาวเทียมที่ดีขึ้น
  2. Python Script ไม่ทำงาน:

    • ตรวจสอบว่า serial0 อินเทอร์เฟซเปิดใช้งานและเข้าถึงได้
    • ตรวจสอบให้แน่ใจว่าไลบรารี Python (pyserial, pynmea2) ถูกติดตั้ง
  3. การซื้อดาวเทียมช้า:

    • อนุญาตให้ใช้เวลาโมดูล GPS เพื่อรับสัญญาณโดยเฉพาะอย่างยิ่งในการใช้งานครั้งแรก
    • ใช้เสาอากาศภายนอกหากจำเป็น

บทสรุป

โมดูล GPS Neo-6M เป็นเครื่องมือที่หลากหลายและแม่นยำสำหรับการเพิ่มฟังก์ชั่นการจัดตำแหน่งทางภูมิศาสตร์ให้กับโครงการ Raspberry Pi ของคุณ โดยทำตามคำแนะนำนี้คุณสามารถตั้งค่าโมดูล GPS และเริ่มการจับข้อมูลตำแหน่งสำหรับแอปพลิเคชันที่หลากหลาย ทดลองกับการรวมโมดูล GPS เข้ากับการนำทางการติดตามหรือโครงการ IoT เพื่อใช้ประโยชน์อย่างเต็มที่!

แสดงความคิดเห็น

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.