You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
IoT-For-Beginners/translations/fa/3-transport/lessons/1-location-tracking/single-board-computer-gps-d...

4.6 KiB

رمزگشایی داده‌های GPS - سخت‌افزار مجازی IoT و رزبری پای

در این بخش از درس، پیام‌های NMEA که از حسگر GPS توسط رزبری پای یا دستگاه مجازی IoT خوانده شده‌اند را رمزگشایی کرده و عرض و طول جغرافیایی را استخراج خواهید کرد.

رمزگشایی داده‌های GPS

پس از خواندن داده‌های خام NMEA از پورت سریال، می‌توان آن‌ها را با استفاده از یک کتابخانه متن‌باز NMEA رمزگشایی کرد.

وظیفه - رمزگشایی داده‌های GPS

دستگاه را برنامه‌ریزی کنید تا داده‌های GPS را رمزگشایی کند.

  1. پروژه اپلیکیشن gps-sensor را باز کنید، اگر هنوز باز نشده است.

  2. بسته Pip به نام pynmea2 را نصب کنید. این بسته شامل کدی برای رمزگشایی پیام‌های NMEA است.

    pip3 install pynmea2
    
  3. کد زیر را به بخش واردات در فایل app.py اضافه کنید تا ماژول pynmea2 وارد شود:

    import pynmea2
    
  4. محتوای تابع print_gps_data را با کد زیر جایگزین کنید:

    msg = pynmea2.parse(line)
    if msg.sentence_type == 'GGA':
        lat = pynmea2.dm_to_sd(msg.lat)
        lon = pynmea2.dm_to_sd(msg.lon)
    
        if msg.lat_dir == 'S':
            lat = lat * -1
    
        if msg.lon_dir == 'W':
            lon = lon * -1
    
        print(f'{lat},{lon} - from {msg.num_sats} satellites')
    

    این کد از کتابخانه pynmea2 برای تجزیه خطی که از پورت سریال UART خوانده شده استفاده می‌کند.

    اگر نوع جمله پیام GGA باشد، این پیام یک موقعیت‌یابی است و پردازش می‌شود. مقادیر عرض و طول جغرافیایی از پیام خوانده شده و از فرمت NMEA (d)ddmm.mmmm به درجه‌های اعشاری تبدیل می‌شوند. تابع dm_to_sd این تبدیل را انجام می‌دهد.

    سپس جهت عرض جغرافیایی بررسی می‌شود و اگر عرض جغرافیایی جنوبی باشد، مقدار به عدد منفی تبدیل می‌شود. همین‌طور برای طول جغرافیایی، اگر غربی باشد، به عدد منفی تبدیل می‌شود.

    در نهایت، مختصات همراه با تعداد ماهواره‌هایی که برای تعیین موقعیت استفاده شده‌اند، در کنسول چاپ می‌شوند.

  5. کد را اجرا کنید. اگر از یک دستگاه مجازی IoT استفاده می‌کنید، مطمئن شوید که اپلیکیشن CounterFit در حال اجرا است و داده‌های GPS ارسال می‌شوند.

    pi@raspberrypi:~/gps-sensor $ python3 app.py 
    47.6423109,-122.1390293 - from 3 satellites
    

💁 می‌توانید این کد را در پوشه code-gps-decode/virtual-device یا پوشه code-gps-decode/pi پیدا کنید.

😀 برنامه حسگر GPS شما با رمزگشایی داده‌ها با موفقیت اجرا شد!

سلب مسئولیت:
این سند با استفاده از سرویس ترجمه هوش مصنوعی Co-op Translator ترجمه شده است. در حالی که ما تلاش می‌کنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است شامل خطاها یا نادرستی‌ها باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، توصیه می‌شود از ترجمه حرفه‌ای انسانی استفاده کنید. ما مسئولیتی در قبال سوء تفاهم‌ها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم.