# قراءة بيانات GPS - جهاز إنترنت الأشياء الافتراضي في هذا الجزء من الدرس، ستضيف مستشعر GPS إلى جهاز إنترنت الأشياء الافتراضي الخاص بك، وتقرأ القيم منه. ## الأجهزة الافتراضية سيستخدم جهاز إنترنت الأشياء الافتراضي مستشعر GPS محاكى يمكن الوصول إليه عبر UART من خلال منفذ تسلسلي. يحتوي مستشعر GPS الفعلي على هوائي لالتقاط موجات الراديو من الأقمار الصناعية لنظام GPS، وتحويل إشارات GPS إلى بيانات GPS. النسخة الافتراضية تحاكي ذلك من خلال السماح لك إما بتعيين خط العرض وخط الطول، أو إرسال جمل NMEA الخام، أو تحميل ملف GPX يحتوي على مواقع متعددة يمكن إرجاعها بالتتابع. > 🎓 سيتم تغطية جمل NMEA لاحقًا في هذا الدرس ### إضافة المستشعر إلى CounterFit لاستخدام مستشعر GPS افتراضي، تحتاج إلى إضافته إلى تطبيق CounterFit. #### المهمة - إضافة المستشعر إلى CounterFit أضف مستشعر GPS إلى تطبيق CounterFit. 1. قم بإنشاء تطبيق Python جديد على جهاز الكمبيوتر الخاص بك في مجلد يسمى `gps-sensor` يحتوي على ملف واحد يسمى `app.py` وبيئة افتراضية لـ Python، وأضف حزم pip الخاصة بـ CounterFit. > ⚠️ يمكنك الرجوع إلى [التعليمات الخاصة بإنشاء وإعداد مشروع Python لـ CounterFit في الدرس الأول إذا لزم الأمر](../../../1-getting-started/lessons/1-introduction-to-iot/virtual-device.md). 1. قم بتثبيت حزمة Pip إضافية لتثبيت shim لـ CounterFit يمكنه التحدث إلى المستشعرات القائمة على UART عبر اتصال تسلسلي. تأكد من تثبيتها من خلال نافذة طرفية مع تفعيل البيئة الافتراضية. ```sh pip install counterfit-shims-serial ``` 1. تأكد من تشغيل تطبيق الويب CounterFit. 1. قم بإنشاء مستشعر GPS: 1. في مربع *إنشاء مستشعر* في لوحة *المستشعرات*، افتح القائمة المنسدلة *نوع المستشعر* واختر *UART GPS*. 1. اترك *المنفذ* مضبوطًا على */dev/ttyAMA0*. 1. اختر زر **إضافة** لإنشاء مستشعر GPS على المنفذ `/dev/ttyAMA0`. ![إعدادات مستشعر GPS](../../../../../translated_images/counterfit-create-gps-sensor.6385dc9357d85ad1d47b4abb2525e7651fd498917d25eefc5a72feab09eedc70.ar.png) سيتم إنشاء مستشعر GPS وسيظهر في قائمة المستشعرات. ![تم إنشاء مستشعر GPS](../../../../../translated_images/counterfit-gps-sensor.3fbb15af0a5367566f2f11324ef5a6f30861cdf2b497071a5e002b7aa473550e.ar.png) ## برمجة مستشعر GPS يمكن الآن برمجة جهاز إنترنت الأشياء الافتراضي لاستخدام مستشعر GPS الافتراضي. ### المهمة - برمجة مستشعر GPS برمج تطبيق مستشعر GPS. 1. تأكد من فتح تطبيق `gps-sensor` في VS Code. 1. افتح ملف `app.py`. 1. أضف الكود التالي إلى أعلى ملف `app.py` لتوصيل التطبيق بـ CounterFit: ```python from counterfit_connection import CounterFitConnection CounterFitConnection.init('127.0.0.1', 5000) ``` 1. أضف الكود التالي أسفل ذلك لاستيراد بعض المكتبات اللازمة، بما في ذلك مكتبة المنفذ التسلسلي لـ CounterFit: ```python import time import counterfit_shims_serial serial = counterfit_shims_serial.Serial('/dev/ttyAMA0') ``` يقوم هذا الكود باستيراد وحدة `serial` من حزمة Pip الخاصة بـ `counterfit_shims_serial`. ثم يتصل بمنفذ `/dev/ttyAMA0` التسلسلي - وهو عنوان المنفذ التسلسلي الذي يستخدمه مستشعر GPS الافتراضي لمنفذ UART الخاص به. 1. أضف الكود التالي أسفل ذلك لقراءة البيانات من المنفذ التسلسلي وطباعة القيم إلى وحدة التحكم: ```python def print_gps_data(line): print(line.rstrip()) while True: line = serial.readline().decode('utf-8') while len(line) > 0: print_gps_data(line) line = serial.readline().decode('utf-8') time.sleep(1) ``` يتم تعريف وظيفة تسمى `print_gps_data` تقوم بطباعة السطر الممرر إليها إلى وحدة التحكم. بعد ذلك، يقوم الكود بالتكرار إلى ما لا نهاية، حيث يقرأ أكبر عدد ممكن من الأسطر النصية من المنفذ التسلسلي في كل دورة. يستدعي وظيفة `print_gps_data` لكل سطر. بعد قراءة جميع البيانات، يتوقف التكرار لمدة ثانية واحدة، ثم يحاول مرة أخرى. 1. قم بتشغيل هذا الكود، مع التأكد من استخدام نافذة طرفية مختلفة عن تلك التي يتم تشغيل تطبيق CounterFit فيها، حتى يظل تطبيق CounterFit قيد التشغيل. 1. من تطبيق CounterFit، قم بتغيير قيمة مستشعر GPS. يمكنك القيام بذلك بإحدى الطرق التالية: * ضبط **المصدر** على `Lat/Lon`، وتعيين خط عرض وخط طول وعدد الأقمار الصناعية المستخدمة للحصول على تثبيت GPS. سيتم إرسال هذه القيمة مرة واحدة فقط، لذا تحقق من مربع **التكرار** لتكرار البيانات كل ثانية. ![مستشعر GPS مع تحديد lat lon](../../../../../translated_images/counterfit-gps-sensor-latlon.008c867d75464fbe7f84107cc57040df565ac07cb57d2f21db37d087d470197d.ar.png) * ضبط **المصدر** على `NMEA` وإضافة بعض جمل NMEA في مربع النص. سيتم إرسال جميع هذه القيم، مع تأخير قدره ثانية واحدة قبل قراءة كل جملة GGA (تثبيت الموقع). ![مستشعر GPS مع إعداد جمل NMEA](../../../../../translated_images/counterfit-gps-sensor-nmea.c62eea442171e17e19528b051b104cfcecdc9cd18db7bc72920f29821ae63f73.ar.png) يمكنك استخدام أداة مثل [nmeagen.org](https://www.nmeagen.org) لإنشاء هذه الجمل عن طريق الرسم على الخريطة. سيتم إرسال هذه القيم مرة واحدة فقط، لذا تحقق من مربع **التكرار** لتكرار البيانات بعد ثانية واحدة من إرسالها جميعًا. * ضبط **المصدر** على ملف GPX، وتحميل ملف GPX يحتوي على مواقع المسار. يمكنك تنزيل ملفات GPX من عدد من مواقع الخرائط والمشي الشهيرة، مثل [AllTrails](https://www.alltrails.com/). تحتوي هذه الملفات على مواقع GPS متعددة كمسار، وسيعيد مستشعر GPS كل موقع جديد بفاصل زمني قدره ثانية واحدة. ![مستشعر GPS مع إعداد ملف GPX](../../../../../translated_images/counterfit-gps-sensor-gpxfile.8310b063ce8a425ccc8ebeec8306aeac5e8e55207f007d52c6e1194432a70cd9.ar.png) سيتم إرسال هذه القيم مرة واحدة فقط، لذا تحقق من مربع **التكرار** لتكرار البيانات بعد ثانية واحدة من إرسالها جميعًا. بمجرد تكوين إعدادات GPS، اختر زر **تعيين** لتطبيق هذه القيم على المستشعر. 1. سترى الإخراج الخام من مستشعر GPS، شيء مثل التالي: ```output $GNGGA,020604.001,4738.538654,N,12208.341758,W,1,3,,164.7,M,-17.1,M,,*67 $GNGGA,020604.001,4738.538654,N,12208.341758,W,1,3,,164.7,M,-17.1,M,,*67 ``` > 💁 يمكنك العثور على هذا الكود في المجلد [code-gps/virtual-device](../../../../../3-transport/lessons/1-location-tracking/code-gps/virtual-device). 😀 لقد نجحت في برمجة مستشعر GPS الخاص بك! --- **إخلاء المسؤولية**: تم ترجمة هذا المستند باستخدام خدمة الترجمة بالذكاء الاصطناعي [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو عدم دقة. يجب اعتبار المستند الأصلي بلغته الأصلية المصدر الرسمي. للحصول على معلومات حاسمة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة تنشأ عن استخدام هذه الترجمة.