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/ru/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 из пакета pip 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. Несмотря на наши усилия обеспечить точность, автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникшие в результате использования данного перевода.