- المكونات المطلوبة:
- وحدة GPS وعملها:
- تحضير Raspberry Pi للتواصل مع GPS:
- اتصالات لواجهة وحدة Raspberry Pi GPS:
- الاختبار قبل Python Script:
منحت إحدى أروع المنصات المضمنة مثل Arduino صانعي الأعمال و DIYers القدرة على الحصول على بيانات الموقع بسهولة باستخدام وحدة GPS وبالتالي بناء أشياء تعتمد على الموقع مع مقدار الطاقة المعبأة بواسطة Raspberry Pi ، سيكون من الرائع بالتأكيد إنشاء مشاريع قائمة على GPS مع نفس وحدات GPS الرخيصة وهذا هو محور هذا المنشور. اليوم في هذا المشروع سوف نقوم بواجهة وحدة GPS مع Raspberry Pi 3.
الهدف من هذا المشروع هو جمع بيانات الموقع (خطوط الطول والعرض) عبر UART من وحدة GPS وعرضها على شاشة LCD مقاس 16 × 2 ، لذلك إذا لم تكن معتادًا على طريقة عمل شاشة LCD مقاس 16 × 2 مع Raspberry Pi ، فهذا شيء آخر فرصة عظيمة للتعلم.
المكونات المطلوبة:
- Raspberry Pi 3
- وحدة GPS الجديدة بطول 6 أمتار الإصدار 2
- شاشة LCD مقاس 16 × 2
- مصدر الطاقة لـ Raspberry Pi
- كبل LAN لتوصيل pi بجهاز الكمبيوتر الخاص بك في وضع مقطوعة الرأس
- الكابلات اللوح والطائر
- المقاوم / مقياس الجهد على شاشة LCD
- بطاقة ذاكرة 8 أو 16 جيجا بايت تعمل بنظام Raspbian Jessie
بخلاف ذلك ، نحتاج إلى تثبيت مكتبة GPS Daemon (GPSD) ، ومكتبة Adafruit LCD مقاس 16 × 2 ، والتي نقوم بتثبيتها لاحقًا في هذا البرنامج التعليمي.
نحن هنا نستخدم Raspberry Pi 3 مع Raspbian Jessie OS. تمت مناقشة جميع متطلبات الأجهزة والبرامج الأساسية مسبقًا ، يمكنك البحث عنها في مقدمة Raspberry Pi.
وحدة GPS وعملها:
يشير نظام تحديد المواقع العالمي (GPS) إلى نظام تحديد المواقع العالمي ويستخدم لاكتشاف خطوط الطول والعرض لأي موقع على الأرض ، مع التوقيت العالمي المنسق (UTC) (تنسيق التوقيت العالمي). وحدة GPS هي المكون الرئيسي في مشروع نظام تتبع المركبات لدينا. يستقبل هذا الجهاز الإحداثيات من القمر الصناعي لكل ثانية مع الوقت والتاريخ.
ترسل وحدة GPS البيانات المتعلقة بتتبع الموقع في الوقت الفعلي ، وترسل الكثير من البيانات بتنسيق NMEA (انظر لقطة الشاشة أدناه). يتكون تنسيق NMEA من عدة جمل ، نحتاج فيها فقط إلى جملة واحدة. تبدأ هذه الجملة من $ GPGGA وتحتوي على الإحداثيات والوقت والمعلومات المفيدة الأخرى. يشار إلى GPGGA هذا إلى بيانات إصلاح نظام تحديد المواقع العالمي. تعرف على المزيد حول قراءة بيانات GPS وسلاسلها هنا.
يمكننا استخراج إحداثيات من سلسلة $ GPGGA عن طريق حساب الفواصل في السلسلة. لنفترض أنك عثرت على سلسلة $ GPGGA وقمت بتخزينها في مصفوفة ، فيمكن العثور على Latitude بعد فاصلتين ويمكن العثور على خط الطول بعد أربع فاصلات. يمكن الآن وضع خطوط الطول والعرض هذه في مصفوفات أخرى.
يوجد أدناه سلسلة GPGGA $ مع وصفها:
GPGGA بالدولار الأمريكي ، 104534.000،7791.0381 ، N ، 06727.4434 ، E ، 1،08،0.9،510.4 ، M ، 43.9 ، M ، * 47
GPGGA $ ، HHMMSS.SSS ، خطوط العرض ، N ، خطوط الطول ، E ، FQ ، NOS ، HDP ، الارتفاع ، M ، الارتفاع ، M ، بيانات المجموع الاختباري
المعرف |
وصف |
GPGGA دولار |
بيانات نظام تحديد المواقع العالمي |
HHMMSS.SSS |
الوقت بتنسيق ساعة دقيقة ثانية وميلي ثانية. |
خط العرض |
خط العرض (تنسيق) |
ن |
الاتجاه N = الشمال ، S = الجنوب |
خط الطول |
خط الطول (الإحداثيات) |
ه |
الاتجاه E = الشرق ، W = الغرب |
FQ |
إصلاح بيانات الجودة |
NOS |
عدد الأقمار الصناعية المستخدمة |
HPD |
التخفيف الأفقي للدقة |
ارتفاع |
الارتفاع من مستوى سطح البحر |
م |
متر |
ارتفاع |
ارتفاع |
اختباري |
بيانات المجموع الاختباري |
يمكنك التحقق من مشاريع GPS الأخرى الخاصة بنا:
- تعقب المركبات القائم على Arduino باستخدام GPS و GSM
- نظام الإنذار بحوادث المركبات القائم على Arduino باستخدام GPS و GSM و Accelerometer
- كيفية استخدام GPS مع Arduino
- تتبع مركبة على خرائط Google باستخدام Arduino و ESP8266 و GPS
تحضير Raspberry Pi للتواصل مع GPS:
حسنًا ، للقفز ، حتى لا يصبح هذا مملًا ، سأفترض أنك تعرف الكثير بالفعل عن Raspberry Pi ، وهو ما يكفي لتثبيت نظام التشغيل الخاص بك ، والحصول على عنوان IP ، والاتصال ببرنامج طرفي مثل المعجون وأشياء أخرى حول PI. إذا كان لديك أي مشكلة في القيام بأي من الأشياء المذكورة أعلاه ، فاضغط علي تحت قسم التعليقات وسأكون سعيدًا بالمساعدة.
أول شيء يتعين علينا القيام به لبدء هذا المشروع هو إعداد Raspberry Pi 3 الخاص بنا ليكون قادرًا على التواصل مع وحدة GPS عبر UART ، صدقوني ، إنه أمر صعب للغاية واستغرق محاولة الحصول عليه بشكل صحيح ولكن إذا اتبعت دليلي بعناية ستحصل عليه دفعة واحدة ، هذا هو أصعب جزء من المشروع. هنا استخدمنا وحدة GPS Neo 6m v2.
للغطس ، إليك شرح بسيط لكيفية عمل Raspberry Pi 3 UART.
يحتوي Raspberry Pi على جهازي UART مدمجين ، و PL011 و UART صغير. يتم تنفيذها باستخدام كتل أجهزة مختلفة بحيث يكون لها خصائص مختلفة قليلاً. ومع ذلك ، في raspberry pi 3 ، يتم توصيل الوحدة اللاسلكية / البلوتوث بـ PLO11 UART ، بينما يتم استخدام mini UART لوحدة التحكم linux ouptut. اعتمادًا على الطريقة التي تراها بها ، سأقوم بتعريف PLO11 على أنها الأفضل من بين هاتين UART نظرًا لمستوى تنفيذها. لذلك بالنسبة لهذا المشروع ، سنقوم بإلغاء تنشيط وحدة Bluetooth من PLO11 UART باستخدام تراكب متوفر في الإصدار الحالي المحدث من Raspbian Jessie.
الخطوة 1: تحديث Raspberry Pi:
أول شيء أحب القيام به قبل البدء في كل مشروع هو تحديث raspberry pi. لذلك لنفعل المعتاد وننفذ الأوامر أدناه ؛
sudo apt-get update sudo apt-get Upgrade
ثم أعد تشغيل النظام باستخدام ؛
sudo إعادة التشغيل
الخطوة الثانية: إعداد UART في Raspberry Pi:
أول شيء سنفعله بموجب هذا هو تحرير ملف /boot/config.txt . للقيام بذلك ، قم بتشغيل الأوامر أدناه:
sudo nano /boot/config.txt
في الجزء السفلي من ملف config.txt ، أضف الأسطر التالية
dtparam = spi = on dtoverlay = pi3-disable-bt core_freq = 250 enable_uart = 1 force_turbo = 1
ctrl + x للخروج واضغط على y والدخول للحفظ.
تأكد من عدم وجود أخطاء إملائية أو أخطاء مطبعية عن طريق التحقق مرة أخرى من أن الخطأ قد يمنع pi من التشغيل.
ما هي أسباب هذه الأوامر ، فإن force_turbo تمكن UART من استخدام الحد الأقصى للتردد الأساسي الذي نحدده في هذه الحالة ليكون 250. والسبب في ذلك هو ضمان اتساق وسلامة البيانات التسلسلية المستلمة. من المهم أن نلاحظ في هذه المرحلة أن استخدام force_turbo = 1 سيؤدي إلى إبطال ضمان raspberry pi ، ولكن إلى جانب ذلك ، فهو آمن جدًا.
يقوم dtoverlay = pi3-disable-bt بفصل البلوتوث عن ttyAMA0 ، وذلك للسماح لنا بالوصول لاستخدام طاقة UART الكاملة المتاحة عبر ttyAMAO بدلاً من mini UART ttyS0.
الخطوة الثانية ضمن قسم إعداد UART هي تحرير boot / cmdline.txt
سأقترح عليك عمل نسخة من cmdline.txt وحفظها أولاً قبل التحرير حتى تتمكن من العودة إليها لاحقًا إذا لزم الأمر. يمكن القيام بذلك باستخدام ؛
sudo cp boot / cmdline.txt boot / cmdline_backup.txt sudo nano / boot.cmdline.txt
استبدل المحتوى بـ ؛
dwc_otg.lpm_enable = 0 وحدة تحكم = tty1 root = / dev / mmcblk0p2 rootfstype = ext4 elevator = الموعد النهائي fsck.repair = نعم rootwait quiet splash plymouth.ignore-serial-Consoles
حفظ وخروج.
بعد الانتهاء من ذلك ، سنحتاج إلى إعادة تشغيل النظام مرة أخرى لإجراء التغييرات ( sudo reboot ).
الخطوة 3: تعطيل خدمة Raspberry Pi Serial Getty Service
الخطوة التالية هي تعطيل مسلسل Pi وهو خدمة getty ، الأمر الذي سيمنعه من البدء مرة أخرى عند إعادة التشغيل:
sudo systemctl stop [email protected] sudo systemctl تعطيل [email protected]
يمكن استخدام الأوامر التالية لتمكينه مرة أخرى إذا لزم الأمر
sudo systemctl enable [email protected] sudo systemctl start [email protected]
أعد تشغيل النظام.
الخطوة 4: تفعيل ttyAMAO:
لقد قمنا بتعطيل ttyS0 ، الشيء التالي بالنسبة لنا هو تمكين ttyAMAO .
sudo systemctl تمكين [email protected]
الخطوة 5: تثبيت Minicom و pynmea2:
سنكون minicom للاتصال بوحدة GPS وفهم البيانات. إنها أيضًا إحدى الأدوات التي سنستخدمها للاختبار وهي أن وحدة GPS الخاصة بنا تعمل بشكل جيد. بديل ل minicom هو البرنامج الخفي GPSD.
sudo apt-get install minicom
لتحليل البيانات المستلمة بسهولة ، سنستخدم مكتبة pynmea2 . يمكن تثبيته باستخدام ؛
sudo pip تثبيت pynmea2
يمكن العثور على وثائق المكتبة هنا
الخطوة 6: تثبيت مكتبة LCD:
في هذا البرنامج التعليمي ، سنستخدم مكتبة AdaFruit. تم إنشاء المكتبة لشاشات AdaFruit ولكنها تعمل أيضًا على لوحات العرض باستخدام HD44780. إذا كان العرض الخاص بك يعتمد على هذا ، فيجب أن يعمل بدون مشاكل.
أشعر أنه من الأفضل استنساخ المكتبة والتثبيت مباشرة. لاستنساخ المدى ؛
استنساخ بوابة
قم بالتغيير إلى الدليل المستنسخ وقم بتثبيته
cd./Adafruit_Python_CharLCD sudo python setup.py install
في هذه المرحلة ، سأقترح إعادة تشغيل أخرى حتى نكون مستعدين للمضي قدمًا في توصيل المكونات.
اتصالات لواجهة وحدة Raspberry Pi GPS:
قم بتوصيل وحدة GPS وشاشة LCD بـ Raspberry Pi كما هو موضح في مخطط الدائرة أدناه.
الاختبار قبل Python Script:
أشعر أنه من المهم اختبار اتصال وحدة GPS قبل المتابعة إلى نص Python ، سنستخدم minicom لهذا الغرض. قم بتشغيل الأمر:
sudo minicom -D / dev / ttyAMA0 -b9600
حيث يمثل 9600 معدل الباود الذي تتصل به وحدة GPS. يمكن استخدام هذا لمجرد التأكد من اتصال البيانات بين GPS و RPI ، حان الوقت لكتابة نص Python الخاص بنا.
يمكن أيضًا إجراء الاختبار باستخدام القط
sudo القط / dev / ttyAMA0
في Window ، يمكنك رؤية جمل NMEA التي ناقشناها سابقًا.
يوجد نص Python لهذا البرنامج التعليمي Raspberry Pi GPS أدناه في قسم الكود.
مع كل ما قيل وفعل ، حان الوقت لاختبار النظام بأكمله. من المهم أن تتأكد من أن نظام تحديد المواقع العالمي (GPS) الخاص بك يحصل على حل جيد ، فمن خلال إزالته ، تتطلب معظم أنظمة تحديد المواقع ما بين ثلاثة إلى أربعة أقمار صناعية للحصول على الإصلاح ، على الرغم من أن المنجم يعمل في الداخل.
يعمل بشكل صحيح؟ نعم…
هل لديك أسئلة أو تعليقات؟ قم بإسقاطهم في قسم التعليقات.
يوجد فيديو توضيحي أدناه ، حيث أظهرنا الموقع في خطوط الطول والعرض على شاشة LCD باستخدام GPS و Raspberry Pi.