Иногда нам необходимо знать где мы находимся или с какой скоростью двигаемся, на какой высоте над уровнем моря наше устройство. Все это и многое другое мы можем узнать с помощью GPS приемника.
GPS — система глобального позиционирования. На сегодняшний момент существует несколько таких систем:
- GPS
- ГЛОНАСС
- Бэйдоу
- Galileo
- DORIS
Все эти систему работают по одному и тому же принципу, только принадлежат разным странам. Протокол передачи данных так же у всех единый и называется NMEA.
Ярким примером использования таких систем является микросхема SIM68 и ее модификации китайской компании SIMCOM. В статье мы разберем работу с GPS приемником SIM68M.
Основные характеристики GPS приемника Sim68M
- Навигационные системы ГЛОНАСС/GPS/Galileo/QZSS
- EASYTM аппроксимация эфемерид
- EPOTM загрузка эфемерид
- AGPS
- SBAS (WAAS, EGNOS, GAGAN, MSAS)
- Jamming Removing
- Работа с активными и пассивными антеннами
Интерфейсы
- UART
- Цифровые выводы — PPS — EINT0
- Протоколы — NMEA — PMTK. Отладочное средство
- SIM68 EVB KIT с интерфейсом USB2.0 full speed
- Встроенный МШУ О
- Размеры: 10.1мм Х 9.7мм Х 2.5мм
Подключение SIM68M к микроконтроллеру
SIM68M включает в себя два UART (UART0 и UART1) интерфейс для последовательной связи.
Подключение к микроконтроллеру осуществляется через UART0. Этот интерфейс используется как выход NMEA и ввод команд PMTK. Линия приема (RXD0) и линия передатчика (TXD0). Скорость передачи данных от 4800 до 921.6 Kbps.
UART1 используется в качестве входных данных RTCM.
Рассмотрим пример кода подключения и настройки модуля GPS навигации SIM68M к микроконтроллеру PIC 18. Схема подключения к микроконтроллеру представлена на рисунке 3.
Протокол NMEA достаточно избыточный, содержит большое количество информации, которая не всегда нужна. По этому в функции инициализации выберем какие пакеты NMEA нам необходимо считывать.
procedure sim68_Init(); var strInit: String[55]; begin UART_Remappable_Init(115200); DelayMs200; strInit := '$PMTK314,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0*34'+chr($0D)+chr($0A); UART_Remappable_Write_Text(strInit); // Включаем фитнес режим strInit := '$PMTK886,1*29'+chr($0D)+chr($0A); UART_Remappable_Write_Text(strInit); Delay_ms(5); //Включаем работу GPS и ГЛОНАСС strInit := '$PMTK353,1,1,0,0,0*2B'+chr($0D)+chr($0A); UART_Remappable_Write_Text(strInit); DelayMs40; end;
Данная функция отправляет SIM68M в режим энергосбережения. Чтобы выйти из этого режима, достаточно на вход приемника отправить любой символ.
procedure sim68_Sleep(); begin str := '$PMTK161,1*29'+chr($0D)+chr($0A); UART_Remappable_Write_Text(str); end;
Внимание!
Каждая команда к модулю SIM68M должна заканчиваться символами $0D$0A. Указывающими что это конец команды.