الحصول على تسليم مجانا على جميع الطلبات أكثر من 20 جنيه!

باستخدام وحدة 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. راسبيري باي (أي طراز يدعم 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 (التسلسلية).

الاتصالات

NEO-6M دبوس دبابيس Raspberry Pi
VCC 3.3V (الدبوس 1)
أرضي الأرضي (الدبوس 6)
TXD RXD (الدبوس 10، GPIO15)
RXD TXD (دبوس 8، GPIO14)

ملاحظة: تأكد من الـ NEO-6M يعمل بجهد 3.3V أو 5V كما هو محدد بواسطة وحدتك. تحقق من ورقة البيانات الخاصة بالوحدة.


الخطوة 2: تفعيل UART على Raspberry Pi

  1. افتح أداة تهيئة Raspberry Pi:
    sudo raspi-config
    
  2. انتقل إلى خيارات الواجهة > المنفذ التسلسلي:
    • اختر "No" عندما يُسأل إن كنت تريد قشرة تسجيل الدخول عبر الواجهة التسلسلية.
    • حدِّد "Yes" لتمكين عتاد المنفذ التسلسلي.
  3. أعد تشغيل Raspberry 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. الوسم الجغرافي: سجّل بيانات الموقع للصور أو الأحداث الأخرى.
  3. مزامنة الوقت: استخدم بيانات GPS للحصول على ضبط وقت عالي الدقة.
  4. أجهزة إنترنت الأشياء: تمكين الأتمتة المستندة إلى الموقع.

استكشاف الأخطاء وإصلاحها

  1. لا توجد بيانات GPS في Minicom:

    • تحقّق من التوصيلات (وصلات TXD وRXD).
    • تأكد من تزويد وحدة GPS بالطاقة بشكل صحيح.
    • ضع الوحدة في منطقة مفتوحة لتحسين استقبال الأقمار الصناعية.
  2. برنامج Python النصي لا يعمل:

    • تحقّق من أن الـ serial0 الواجهة مفعّلة وقابلة للوصول.
    • تأكد من أن مكتبات Python (pyserial, pynmea2) تم تثبيت.
  3. اكتساب بطيء للقمر الصناعي:

    • امنح وحدة GPS وقتًا لالتقاط الإشارات، خصوصًا عند استخدامها لأول مرة.
    • استخدم هوائيًا خارجيًا إذا لزم الأمر.

الخلاصة

الـ وحدة GPS NEO-6M هو أداة متعددة الاستخدامات ودقيقة لإضافة وظيفة تحديد الموقع الجغرافي إلى مشاريع Raspberry Pi الخاصة بك. باتباع هذا الدليل، يمكنك إعداد وحدة GPS والبدء في التقاط بيانات الموقع لمجموعة متنوعة من التطبيقات. جرّب دمج وحدة GPS في مشاريع الملاحة أو التتبع أو إنترنت الأشياء للاستفادة الكاملة من قدراتها!

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.

اترك تعليقًا