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 وارد کنید. کابل فقط از یک جهت وارد سوکت میشود.
-
با قطع اتصال Wio Terminal از کامپیوتر یا منبع تغذیه دیگر، سر دیگر کابل Grove را به سوکت سمت چپ Wio Terminal متصل کنید. این سوکت نزدیکترین سوکت به دکمه پاور است.
-
حسگر GPS را در موقعیتی قرار دهید که آنتن متصل به آن دید به آسمان داشته باشد - ترجیحاً کنار یک پنجره باز یا در فضای باز. دریافت سیگنال واضحتر زمانی آسانتر است که چیزی مانع آنتن نباشد.
-
اکنون میتوانید Wio Terminal را به کامپیوتر خود متصل کنید.
-
حسگر GPS دارای دو LED است - یک LED آبی که هنگام ارسال داده چشمک میزند و یک LED سبز که هر ثانیه هنگام دریافت داده از ماهوارهها چشمک میزند. مطمئن شوید که LED آبی هنگام روشن کردن Wio Terminal چشمک میزند. پس از چند دقیقه، LED سبز شروع به چشمک زدن میکند - اگر این اتفاق نیفتاد، ممکن است نیاز باشد آنتن را جابجا کنید.
برنامهنویسی حسگر GPS
اکنون میتوانید Wio Terminal را برای استفاده از حسگر GPS متصل شده برنامهنویسی کنید.
وظیفه - برنامهنویسی حسگر GPS
دستگاه را برنامهنویسی کنید.
-
یک پروژه جدید Wio Terminal با استفاده از PlatformIO ایجاد کنید. نام این پروژه را
gps-sensor
بگذارید. کدی در تابعsetup
اضافه کنید تا پورت سریال تنظیم شود. -
دستور زیر را در بالای فایل
main.cpp
اضافه کنید. این دستور یک فایل هدر شامل توابعی برای تنظیم پورت Grove سمت چپ برای UART را وارد میکند.#include <wiring_private.h>
-
در زیر این دستور، خط کد زیر را اضافه کنید تا یک اتصال پورت سریال به پورت UART اعلام شود:
static Uart Serial3(&sercom3, PIN_WIRE_SCL, PIN_WIRE_SDA, SERCOM_RX_PAD_1, UART_TX_PAD_0);
-
باید کدی اضافه کنید تا برخی از هندلرهای سیگنال داخلی به این پورت سریال هدایت شوند. کد زیر را در زیر اعلامیه
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(); }
-
در تابع
setup
، در زیر جایی که پورتSerial
تنظیم شده است، پورت سریال UART را با کد زیر تنظیم کنید:Serial3.begin(9600); while (!Serial3) ; // Wait for Serial3 to be ready delay(1000);
-
در زیر این کد در تابع
setup
، کد زیر را اضافه کنید تا پین Grove به پورت سریال متصل شود:pinPeripheral(PIN_WIRE_SCL, PIO_SERCOM_ALT);
-
تابع زیر را قبل از تابع
loop
اضافه کنید تا دادههای GPS را به مانیتور سریال ارسال کند:void printGPSData() { Serial.println(Serial3.readStringUntil('\n')); }
-
در تابع
loop
، کد زیر را اضافه کنید تا دادهها را از پورت سریال UART بخواند و خروجی را به مانیتور سریال چاپ کند:while (Serial3.available() > 0) { printGPSData(); } delay(1000);
این کد دادهها را از پورت سریال UART میخواند. تابع
readStringUntil
تا یک کاراکتر پایانی، در اینجا یک خط جدید، میخواند. این کار یک جمله کامل NMEA را میخواند (جملات NMEA با یک کاراکتر خط جدید خاتمه مییابند). تا زمانی که دادهها از پورت سریال UART قابل خواندن باشند، خوانده شده و از طریق تابعprintGPSData
به مانیتور سریال ارسال میشوند. زمانی که دیگر دادهای قابل خواندن نباشد،loop
برای 1 ثانیه (1000 میلیثانیه) تأخیر میاندازد. -
کد را بسازید و به Wio Terminal آپلود کنید.
-
پس از آپلود، میتوانید دادههای 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 ترجمه شده است. در حالی که ما تلاش میکنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمههای خودکار ممکن است شامل خطاها یا نادرستیها باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، توصیه میشود از ترجمه حرفهای انسانی استفاده کنید. ما مسئولیتی در قبال سوء تفاهمها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم.