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/uk/3-transport/lessons/1-location-tracking/virtual-device-gps-sensor.md

11 KiB

Читання даних GPS - Віртуальне IoT обладнання

У цій частині уроку ви додасте GPS сенсор до вашого віртуального IoT пристрою та зчитуватимете дані з нього.

Віртуальне обладнання

Віртуальний IoT пристрій використовуватиме симульований GPS сенсор, доступний через UART через послідовний порт.

Фізичний GPS сенсор має антену для прийому радіохвиль від GPS супутників і перетворення GPS сигналів у GPS дані. Віртуальна версія симулює це, дозволяючи вам встановлювати широту та довготу, надсилати необроблені NMEA речення або завантажувати GPX файл із кількома локаціями, які можуть повертатися послідовно.

🎓 NMEA речення будуть розглянуті пізніше в цьому уроці

Додайте сенсор до CounterFit

Щоб використовувати віртуальний GPS сенсор, потрібно додати його до додатку CounterFit.

Завдання - додати сенсор до CounterFit

Додайте GPS сенсор до додатку CounterFit.

  1. Створіть новий Python додаток на вашому комп'ютері в папці gps-sensor з одним файлом app.py і віртуальним середовищем Python, та додайте пакети CounterFit через pip.

    ⚠️ Ви можете звернутися до інструкцій зі створення та налаштування Python проєкту CounterFit у уроці 1, якщо це необхідно.

  2. Встановіть додатковий пакет через pip для встановлення CounterFit shim, який може працювати з сенсорами на основі UART через послідовне з'єднання. Переконайтеся, що ви встановлюєте це з терміналу, де активоване віртуальне середовище.

    pip install counterfit-shims-serial
    
  3. Переконайтеся, що веб-додаток CounterFit запущений.

  4. Створіть GPS сенсор:

    1. У вікні Create sensor на панелі Sensors, розгорніть поле Sensor type і виберіть UART GPS.

    2. Залиште Port встановленим на /dev/ttyAMA0.

    3. Натисніть кнопку Add, щоб створити GPS сенсор на порту /dev/ttyAMA0.

    Налаштування GPS сенсора

    GPS сенсор буде створений і з'явиться у списку сенсорів.

    Створений GPS сенсор

Програмування GPS сенсора

Тепер віртуальний IoT пристрій можна запрограмувати для використання віртуального GPS сенсора.

Завдання - програмування GPS сенсора

Програмуйте додаток GPS сенсора.

  1. Переконайтеся, що додаток gps-sensor відкритий у VS Code.

  2. Відкрийте файл app.py.

  3. Додайте наступний код на початок app.py, щоб підключити додаток до CounterFit:

    from counterfit_connection import CounterFitConnection
    CounterFitConnection.init('127.0.0.1', 5000)
    
  4. Додайте наступний код нижче, щоб імпортувати необхідні бібліотеки, включаючи бібліотеку для послідовного порту CounterFit:

    import time
    import counterfit_shims_serial
    
    serial = counterfit_shims_serial.Serial('/dev/ttyAMA0')
    

    Цей код імпортує модуль serial з пакету counterfit_shims_serial. Потім він підключається до послідовного порту /dev/ttyAMA0 - це адреса послідовного порту, який використовує віртуальний GPS сенсор для свого UART порту.

  5. Додайте наступний код нижче, щоб зчитувати дані з послідовного порту та виводити значення в консоль:

    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 секунду, а потім повторюється.

  6. Запустіть цей код, переконавшись, що ви використовуєте інший термінал, ніж той, у якому запущений додаток CounterFit, щоб додаток CounterFit залишався запущеним.

  7. У додатку CounterFit змініть значення GPS сенсора. Ви можете зробити це одним із наступних способів:

    • Встановіть Source на Lat/Lon і задайте явну широту, довготу та кількість супутників, використаних для отримання GPS фіксації. Це значення буде надіслано лише один раз, тому поставте галочку Repeat, щоб дані повторювалися кожну секунду.

      GPS сенсор з вибраним lat lon

    • Встановіть Source на NMEA і додайте кілька NMEA речень у текстове поле. Усі ці значення будуть надіслані, з затримкою в 1 секунду перед кожним новим реченням GGA (фіксація позиції).

      GPS сенсор з встановленими NMEA реченнями

      Ви можете використовувати інструмент, наприклад nmeagen.org, щоб генерувати ці речення, малюючи на карті. Ці значення будуть надіслані лише один раз, тому поставте галочку Repeat, щоб дані повторювалися через одну секунду після того, як усі вони були надіслані.

    • Встановіть Source на GPX файл і завантажте GPX файл із трек-локаціями. Ви можете завантажити GPX файли з багатьох популярних сайтів для картографування та походів, таких як AllTrails. Ці файли містять кілька GPS локацій як маршрут, і GPS сенсор повертатиме кожну нову локацію з інтервалом в 1 секунду.

      GPS сенсор з встановленим GPX файлом

      Ці значення будуть надіслані лише один раз, тому поставте галочку Repeat, щоб дані повторювалися через одну секунду після того, як усі вони були надіслані.

    Після налаштування GPS параметрів натисніть кнопку Set, щоб застосувати ці значення до сенсора.

  8. Ви побачите необроблений вихідний сигнал 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. Хоча ми прагнемо до точності, будь ласка, майте на увазі, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ на його рідній мові слід вважати авторитетним джерелом. Для критичної інформації рекомендується професійний людський переклад. Ми не несемо відповідальності за будь-які непорозуміння або неправильні тлумачення, що виникають внаслідок використання цього перекладу.