10 KiB
خواندن دادههای GPS - سختافزار مجازی IoT
در این بخش از درس، شما یک حسگر GPS به دستگاه IoT مجازی خود اضافه میکنید و مقادیر آن را میخوانید.
سختافزار مجازی
دستگاه IoT مجازی از یک حسگر GPS شبیهسازیشده استفاده میکند که از طریق یک پورت سریال به UART دسترسی دارد.
یک حسگر GPS فیزیکی دارای یک آنتن است که امواج رادیویی را از ماهوارههای GPS دریافت کرده و سیگنالهای GPS را به دادههای GPS تبدیل میکند. نسخه مجازی این کار را شبیهسازی میکند و به شما اجازه میدهد که یا یک عرض و طول جغرافیایی تنظیم کنید، جملات خام NMEA ارسال کنید، یا یک فایل GPX با چندین موقعیت مکانی بارگذاری کنید که به ترتیب بازگردانده شوند.
🎓 جملات NMEA در ادامه این درس پوشش داده خواهند شد
افزودن حسگر به CounterFit
برای استفاده از یک حسگر GPS مجازی، باید یکی را به برنامه CounterFit اضافه کنید.
وظیفه - افزودن حسگر به CounterFit
حسگر GPS را به برنامه CounterFit اضافه کنید.
-
یک برنامه پایتون جدید در کامپیوتر خود در پوشهای به نام
gps-sensor
با یک فایل به نامapp.py
و یک محیط مجازی پایتون ایجاد کنید و بستههای pip مربوط به CounterFit را اضافه کنید.⚠️ میتوانید به دستورالعملهای ایجاد و تنظیم یک پروژه پایتون CounterFit در درس ۱ در صورت نیاز مراجعه کنید.
-
یک بسته Pip اضافی نصب کنید تا یک شیم CounterFit نصب شود که بتواند با حسگرهای مبتنی بر UART از طریق اتصال سریال ارتباط برقرار کند. مطمئن شوید که این کار را از یک ترمینال با محیط مجازی فعال انجام میدهید.
pip install counterfit-shims-serial
-
مطمئن شوید که برنامه وب CounterFit در حال اجرا است.
-
یک حسگر GPS ایجاد کنید:
-
در کادر Create sensor در بخش Sensors، از منوی کشویی Sensor type گزینه UART GPS را انتخاب کنید.
-
مقدار Port را روی /dev/ttyAMA0 بگذارید.
-
دکمه Add را انتخاب کنید تا حسگر GPS در پورت
/dev/ttyAMA0
ایجاد شود.
حسگر GPS ایجاد شده و در لیست حسگرها ظاهر میشود.
-
برنامهنویسی حسگر GPS
اکنون میتوانید دستگاه IoT مجازی را برای استفاده از حسگر GPS مجازی برنامهنویسی کنید.
وظیفه - برنامهنویسی حسگر GPS
برنامه حسگر GPS را بنویسید.
-
مطمئن شوید که برنامه
gps-sensor
در VS Code باز است. -
فایل
app.py
را باز کنید. -
کد زیر را به بالای فایل
app.py
اضافه کنید تا برنامه به CounterFit متصل شود:from counterfit_connection import CounterFitConnection CounterFitConnection.init('127.0.0.1', 5000)
-
کد زیر را در ادامه اضافه کنید تا برخی از کتابخانههای موردنیاز، از جمله کتابخانه مربوط به پورت سریال CounterFit، وارد شوند:
import time import counterfit_shims_serial serial = counterfit_shims_serial.Serial('/dev/ttyAMA0')
این کد ماژول
serial
را از بسته Pip به نامcounterfit_shims_serial
وارد میکند. سپس به پورت سریال/dev/ttyAMA0
متصل میشود - این آدرس پورت سریالی است که حسگر GPS مجازی برای پورت UART خود استفاده میکند. -
کد زیر را در ادامه اضافه کنید تا از پورت سریال بخواند و مقادیر را در کنسول چاپ کند:
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
را فراخوانی میکند.پس از خواندن تمام دادهها، حلقه به مدت ۱ ثانیه متوقف میشود و سپس دوباره تلاش میکند.
-
این کد را اجرا کنید، مطمئن شوید که از ترمینالی متفاوت از ترمینالی که برنامه CounterFit در آن اجرا میشود استفاده میکنید تا برنامه CounterFit همچنان در حال اجرا باقی بماند.
-
از برنامه CounterFit، مقدار حسگر GPS را تغییر دهید. میتوانید این کار را به یکی از روشهای زیر انجام دهید:
-
مقدار Source را روی
Lat/Lon
تنظیم کنید و یک عرض جغرافیایی، طول جغرافیایی و تعداد ماهوارههای استفادهشده برای دریافت موقعیت GPS مشخص کنید. این مقدار فقط یک بار ارسال میشود، بنابراین گزینه Repeat را علامت بزنید تا دادهها هر ثانیه تکرار شوند. -
مقدار Source را روی
NMEA
تنظیم کنید و چند جمله NMEA در کادر متن وارد کنید. تمام این مقادیر ارسال میشوند، با تأخیری ۱ ثانیهای قبل از هر جمله GGA (موقعیتیابی).میتوانید از ابزاری مانند nmeagen.org برای تولید این جملات با کشیدن روی نقشه استفاده کنید. این مقادیر فقط یک بار ارسال میشوند، بنابراین گزینه Repeat را علامت بزنید تا دادهها یک ثانیه پس از ارسال کامل تکرار شوند.
-
مقدار Source را روی فایل GPX تنظیم کنید و یک فایل GPX با موقعیتهای مسیر بارگذاری کنید. میتوانید فایلهای GPX را از سایتهای محبوب نقشهبرداری و کوهنوردی مانند AllTrails دانلود کنید. این فایلها شامل چندین موقعیت GPS به صورت یک مسیر هستند و حسگر GPS هر موقعیت جدید را با فاصله ۱ ثانیه بازمیگرداند.
این مقادیر فقط یک بار ارسال میشوند، بنابراین گزینه Repeat را علامت بزنید تا دادهها یک ثانیه پس از ارسال کامل تکرار شوند.
پس از تنظیم مقادیر GPS، دکمه Set را انتخاب کنید تا این مقادیر به حسگر اعمال شوند.
-
-
خروجی خام حسگر GPS را مشاهده خواهید کرد، چیزی شبیه به موارد زیر:
$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 پیدا کنید.
😀 برنامه حسگر GPS شما با موفقیت اجرا شد!
سلب مسئولیت:
این سند با استفاده از سرویس ترجمه هوش مصنوعی Co-op Translator ترجمه شده است. در حالی که ما تلاش میکنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمههای خودکار ممکن است شامل خطاها یا نادرستیها باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حیاتی، توصیه میشود از ترجمه حرفهای انسانی استفاده کنید. ما مسئولیتی در قبال سوء تفاهمها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم.