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/wio-terminal-gps-sensor.md

8.4 KiB

خواندن داده‌های GPS - Wio Terminal

در این بخش از درس، شما یک حسگر GPS به Wio Terminal اضافه می‌کنید و مقادیر آن را می‌خوانید.

سخت‌افزار

Wio Terminal به یک حسگر GPS نیاز دارد.

حسگری که استفاده خواهید کرد Grove GPS Air530 sensor است. این حسگر می‌تواند به سیستم‌های مختلف GPS متصل شود تا موقعیت‌یابی سریع و دقیق انجام دهد. این حسگر از دو بخش تشکیل شده است - بخش الکترونیکی اصلی حسگر و یک آنتن خارجی که با یک سیم نازک به حسگر متصل شده تا امواج رادیویی ماهواره‌ها را دریافت کند.

این حسگر از نوع UART است و داده‌های GPS را از طریق UART ارسال می‌کند.

اتصال حسگر GPS

حسگر Grove GPS می‌تواند به Wio Terminal متصل شود.

وظیفه - اتصال حسگر GPS

حسگر GPS را متصل کنید.

یک حسگر Grove GPS

  1. یک سر کابل Grove را به سوکت روی حسگر GPS وارد کنید. کابل فقط از یک جهت وارد سوکت می‌شود.

  2. با قطع اتصال Wio Terminal از کامپیوتر یا منبع تغذیه دیگر، سر دیگر کابل Grove را به سوکت سمت چپ Wio Terminal متصل کنید. این سوکت نزدیک‌ترین سوکت به دکمه پاور است.

    حسگر Grove GPS متصل به سوکت سمت چپ

  3. حسگر GPS را در موقعیتی قرار دهید که آنتن متصل به آن دید به آسمان داشته باشد - ترجیحاً کنار یک پنجره باز یا در فضای باز. دریافت سیگنال واضح‌تر زمانی آسان‌تر است که چیزی مانع آنتن نباشد.

  4. اکنون می‌توانید Wio Terminal را به کامپیوتر خود متصل کنید.

  5. حسگر GPS دارای دو LED است - یک LED آبی که هنگام ارسال داده چشمک می‌زند و یک LED سبز که هر ثانیه هنگام دریافت داده از ماهواره‌ها چشمک می‌زند. مطمئن شوید که LED آبی هنگام روشن کردن Wio Terminal چشمک می‌زند. پس از چند دقیقه، LED سبز شروع به چشمک زدن می‌کند - اگر این اتفاق نیفتاد، ممکن است نیاز باشد آنتن را جابجا کنید.

برنامه‌نویسی حسگر GPS

اکنون می‌توانید Wio Terminal را برای استفاده از حسگر GPS متصل شده برنامه‌نویسی کنید.

وظیفه - برنامه‌نویسی حسگر GPS

دستگاه را برنامه‌نویسی کنید.

  1. یک پروژه جدید Wio Terminal با استفاده از PlatformIO ایجاد کنید. نام این پروژه را gps-sensor بگذارید. کدی در تابع setup اضافه کنید تا پورت سریال تنظیم شود.

  2. دستور زیر را در بالای فایل main.cpp اضافه کنید. این دستور یک فایل هدر شامل توابعی برای تنظیم پورت Grove سمت چپ برای UART را وارد می‌کند.

    #include <wiring_private.h>
    
  3. در زیر این دستور، خط کد زیر را اضافه کنید تا یک اتصال پورت سریال به پورت UART اعلام شود:

    static Uart Serial3(&sercom3, PIN_WIRE_SCL, PIN_WIRE_SDA, SERCOM_RX_PAD_1, UART_TX_PAD_0);
    
  4. باید کدی اضافه کنید تا برخی از هندلرهای سیگنال داخلی به این پورت سریال هدایت شوند. کد زیر را در زیر اعلامیه Serial3 اضافه کنید:

    void SERCOM3_0_Handler()
    {
        Serial3.IrqHandler();
    }
    
    void SERCOM3_1_Handler()
    {
        Serial3.IrqHandler();
    }
    
    void SERCOM3_2_Handler()
    {
        Serial3.IrqHandler();
    }
    
    void SERCOM3_3_Handler()
    {
        Serial3.IrqHandler();
    }
    
  5. در تابع setup، در زیر جایی که پورت Serial تنظیم شده است، پورت سریال UART را با کد زیر تنظیم کنید:

    Serial3.begin(9600);
    
    while (!Serial3)
        ; // Wait for Serial3 to be ready
    
    delay(1000);
    
  6. در زیر این کد در تابع setup، کد زیر را اضافه کنید تا پین Grove به پورت سریال متصل شود:

    pinPeripheral(PIN_WIRE_SCL, PIO_SERCOM_ALT);
    
  7. تابع زیر را قبل از تابع loop اضافه کنید تا داده‌های GPS را به مانیتور سریال ارسال کند:

    void printGPSData()
    {
        Serial.println(Serial3.readStringUntil('\n'));
    }
    
  8. در تابع loop، کد زیر را اضافه کنید تا داده‌ها را از پورت سریال UART بخواند و خروجی را به مانیتور سریال چاپ کند:

    while (Serial3.available() > 0)
    {
        printGPSData();
    }
    
    delay(1000);
    

    این کد داده‌ها را از پورت سریال UART می‌خواند. تابع readStringUntil تا یک کاراکتر پایانی، در اینجا یک خط جدید، می‌خواند. این کار یک جمله کامل NMEA را می‌خواند (جملات NMEA با یک کاراکتر خط جدید خاتمه می‌یابند). تا زمانی که داده‌ها از پورت سریال UART قابل خواندن باشند، خوانده شده و از طریق تابع printGPSData به مانیتور سریال ارسال می‌شوند. زمانی که دیگر داده‌ای قابل خواندن نباشد، loop برای 1 ثانیه (1000 میلی‌ثانیه) تأخیر می‌اندازد.

  9. کد را بسازید و به Wio Terminal آپلود کنید.

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

    > Executing task: platformio device monitor <
    
    --- Available filters and text transformations: colorize, debug, default, direct, hexlify, log2file, nocontrol, printable, send_on_enter, time
    --- More details at http://bit.ly/pio-monitor-filters
    --- Miniterm on /dev/cu.usbmodem1201  9600,8,N,1 ---
    --- Quit: Ctrl+C | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
    $GNGGA,020604.001,4738.538654,N,12208.341758,W,1,3,,164.7,M,-17.1,M,,*67
    $GPGSA,A,1,,,,,,,,,,,,,,,*1E
    $BDGSA,A,1,,,,,,,,,,,,,,,*0F
    $GPGSV,1,1,00*79
    $BDGSV,1,1,00*68
    

💁 شما می‌توانید این کد را در پوشه code-gps/wio-terminal پیدا کنید.

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

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