It is currently Thu Dec 13, 2018 2:33 am

НИЛ АСЭМ Научно - исследовательская лаборатория автоматизированных систем экологического мониторинга

GPS модуль NEO-6M

by Admin » Sun Jun 03, 2018 6:59 am

GPS модуль NEO-6M
Image
Внешний вид GPS-модуля

Image
GPS - модуль сопряжен с USB - COM конвертером на основе FT232RL (Фото Моисеева Д.Н.).

Данный модуль GPS за счет использования новейших технологий обеспечивает повышенную точность определения координаты (позиционирование) для разрабатываемой платформы.

Особенности:
• Автономный GPS приемник
• модуль U-blox NEO-6M GPS
• «горячий старт» занимает от 1 секунды
• SuperSense ® Indoor GPS: -162 dBm чувствительности отслеживания
• технология антиподавления
• Поддержка SBAS (WAAS, EGNOS, MSAS, GAGAN)
• u-blox 6 располагает 50 каналами позиционирования с более чем 2 миллионами эффективных корреляторов
• Timepulse
• скорость обновления местоположения 5Hz
• температурный режим работы: от -40 до 85°C
• разъем UART TTL
• EEprom (память) для хранения настроек
• аккумулятор для резервного сохранения информации
• встроенная антенна 18X18мм
• совместим с RoHS

Характеристики:
Размеры: 22ммX30мм
Высота: 13мм
Диаметр крепежных отверстий: 3мм

Подключение и конфигурирование модуля:

Первичная настройка модуля осуществляется с компьютера, для чего на компьютер необходимо установить программу U-center. Далее необходимо подключить USB порт компьютера к выводам RXD, TXD GPS модуля. Для этого в качестве переходника используется USB TO TTL конвертер на основе микросхемы CH340 (или любой другой доступный).


Image
USB TO TTL конвертер.

Недостатком конвертера является его неспособность автоматически подстраиваться под изменение скорости связи с GPS модулем при его прошивке конфигурационным файлом. Во время прошивки flash памяти модуля GPS скорость передачи меняется с 9600 до 38400 бит/с. Поэтому изменение скорости порта необходимо выполнять вручную. Подключение конвертора к модулю выполняется согласно таблице:


Далее выполняется запуск программы U-center. Устанавливается номер порта:
Image
Выбор порта для подключения.

Для нового модуля u-blox NEO-6M устанавливается обычно скорость 9600бит/с:
Image
Первичная установка скорости для общения с модулем.

При правильном подключении в нижней части программы U-center должна зеленым цветом мигать пиктограмма установленной связи: Image Следующим шагом является прошивка конфигурационного файла 3DR-Ublox.txt в память модуля. Для этого необходимо в программе U-center перейти к меню Tools и выбрать пункт GNSS Configuration... :

Image

Появиться окно:
Image

В нем выбирается имя файла и выполняется нажатие на кнопку File > GNSS для записи в flash память. После этого появляется окно, в котором необходимо нажать на клавишу, показанную стрелкой:

Image

Следующее окно показывает корректную загрузку конфигурационного файла до момента, пока не произойдет переключение приемника на скорость 38400бит/с:

Image

После получения сообщения ... message rejected! необходимо быстро выполнить переключение программы U-center на скорость порта 38400бит/с. После этого должна продолжиться корректная загрузка файла. После прошивки необходимо подождать. Ждать можно долго, но обычно хватает 5-10 минут и данные с модуля начинают появляться:

Image
u-center получает и отображает данные с GPS

С этого момента можно считать, что первичная подготовка модуля GPS к работе выполнена. Следующим этапом идёт установка скорости обмена данными для работы с разрабатываемым приложением. Часто это 9600 бод.

Сопряжение модуля GPS NEO-6M с микроконтроллером:
Подключение GPS-модуля к микроконтроллеру, в простейшем случае, производится согласно следующей схеме:
Image
Схема сопряжения GPS-модуля с микроконтроллером

Управляющий код для микроконтроллера (на Proton BASIC Compiler):
Code: Select all
' Read and display GPS info on a graphic LCD.
' Получаем Дату, время UTC, широту и долготу.. Выводим это на дисплей..

Device = 16F877A               ; 16F877a PIC
Config WDT_OFF, PWRTE_ON, LVP_OFF, HS_OSC
Xtal = 20                     ; 20MHz kristal

All_Digital TRUE              ; Alle ingangen digitaal

Declare Adin_Res 10           ; Resultaat in 10Bit
Declare Adin_Tad FRC          ; Occsilator kiezen
Declare ADIN_DELAY 50         ; 50µS sample time

Declare LCD_DTPin PORTB.0     ; Data vanaf B.0
Declare LCD_ENPin PORTB.4     ; EN pin op B.4
Declare LCD_RSPin PORTB.5     ; RS pin op B.5

Declare Rsin_Pin PORTC.7      ; GPS RS-232 data input op C.7
Declare Serial_Baud 9600      ; 9600baud snelheid (default: 9600,8N1)
Declare Rsin_Mode true        ; DATA niet inverteren

'----[VARIABLE DECLARATIONS]-------------------------------------------------

Dim BLOOP As Byte System ' General purpose loop variable

' Value extraction variables
Dim EXTRACT_ITEM As Byte
Dim COMMA_COUNT As Byte
Dim CHARPOS As Byte
Dim Char As Byte

' GPS variables
Dim DAY As Byte
Dim MONTH As Byte
Dim YEAR As Byte
Dim HOURS As Byte
Dim MINUTES As Byte
Dim SECONDS As Byte
Dim LATITUDE_DEGREES As Byte
Dim LATITUDE_MINUTES As Byte
Dim LATITUDE_SECONDS As Byte
Dim LATITUDE_BEARING As Byte
Dim LONGITUDE_DEGREES As Byte
Dim LONGITUDE_MINUTES As Byte
Dim LONGITUDE_SECONDS As Byte
Dim LONGITUDE_BEARING As Byte
Dim FIX_TYPE As Byte
Dim SATELLITES_IN_VIEW As Byte
Dim DATA_STRING[20] As Byte
Dim RX_BUFF[200] As Byte
'-----------------------------------------------------------------------------
DelayMS 200 ' Wait for the PIC® micro to stabilise
All_Digital = TRUE ' Set PORTA and PORTE to all digital
Cls
GoTo MAIN_PROGRAM_LOOP ' Jump over the subroutines

'----[EXTRACT A VALUE BASED ON THE COMMA THAT IT FOLLOWS]----------------------
' Locates and extracts the value following the comma placed in EXTRACT_ITEM
' The extracted text is returned in array DATA_STRING with a NULL terminator
' If an invalid value is found, then 000000 will be returned in the array
EXTRACT_THE_VALUE:
StrN DATA_STRING = "0000000000000000000"
COMMA_COUNT = 0 ' Reset the comma counting variable
CHARPOS = 0 ' Start at the beginning of the array
Repeat
Char = RX_BUFF[CHARPOS] ' Scan the array to parse
If Char = "," Then Inc COMMA_COUNT ' Increment COMMA_COUNT if a comma is found
If COMMA_COUNT = EXTRACT_ITEM Then ' Have we found the correct comma ?
BLOOP = 0 ' Yes. So....
Repeat ' Form a loop
Inc CHARPOS ' Skip over the comma and keep scanning the array
Char = RX_BUFF[CHARPOS] ' Extract the pieces of the value into CHAR
If Char = 0 Then Break
If Char = "," Then Break
DATA_STRING[BLOOP] = Char ' Fill DATA_STRING with the value
Inc BLOOP ' Point to the next data piece
Until CHARPOS >= 199 ' Keep looping until a terminator is found
DATA_STRING[BLOOP] = 0 ' Add a NULL to DATA_STRING
Break
EndIf
Inc CHARPOS
Until CHARPOS >= 199
Return

'----[PARSE GPS DATA]----------------------------------------------------------
' Extract the location data from the GPS strings
' The date is returned in byte array DATA_STRING
' All the rest are returned in their respective variables
PARSE_GPS:
Clear
RSIn Wait("$GPGGA,"),Str RX_BUFF\63 ' Pull the GPGGA string from the GPS data
BLOOP = 0
Repeat
RX_BUFF[BLOOP] = RX_BUFF[BLOOP] - 48 ' Convert ASCII to INT and load array RX_BUFF
Inc BLOOP
Until BLOOP > 63
HOURS = RX_BUFF#1 + (RX_BUFF#0 * 10)
MINUTES = RX_BUFF#3 + (RX_BUFF#2 * 10)
SECONDS = RX_BUFF#5 + (RX_BUFF#4 * 10)

LATITUDE_DEGREES = RX_BUFF#12 + (RX_BUFF#11 * 10)
LATITUDE_MINUTES = RX_BUFF#14 + (RX_BUFF#13 * 10)
LATITUDE_SECONDS = RX_BUFF#17 + (RX_BUFF#16 * 10)
LATITUDE_BEARING = RX_BUFF#21 + 48
LONGITUDE_DEGREES = (RX_BUFF#25 * 100) + (RX_BUFF#24 * 10) + RX_BUFF#23
LONGITUDE_MINUTES = RX_BUFF#27 + (RX_BUFF#26 * 10)
LONGITUDE_SECONDS = RX_BUFF#30 + (RX_BUFF#29 * 10)
LONGITUDE_BEARING = RX_BUFF#34 + 48
FIX_TYPE = RX_BUFF#36
SATELLITES_IN_VIEW = RX_BUFF#39 + (RX_BUFF#38 * 10)
'
' Find the date of the fix
'
RSIn Wait("$GPRMC,"),Str RX_BUFF\63 ' Pull the GPRMC string from the GPS data
EXTRACT_ITEM = 8 ' Parse the value after the 8th comma
GoSub EXTRACT_THE_VALUE
Return
'------------------------------------------------------------------------------
MAIN_PROGRAM_LOOP:

Cls
Print At 2, 1, "GPS NMEA SERIAL "
Print At 3, 1, "Data extraction test"
DelayMS 3000
Cls

While 1 = 1

GoSub PARSE_GPS
If FIX_TYPE > 0 Then
Print At 1,1,"DATE ",DATA_STRING#0,DATA_STRING#1,":",DATA_STRING#2,DATA_STRING#3,":",DATA_STRING#4,DATA_STRING#5,"       "
Print At 2,1,"TIME ",Dec2 HOURS,":",Dec2 MINUTES,":",Dec2 SECONDS," UTC   "
Print At 3,1,"LAT ",Dec2 LATITUDE_DEGREES,39," ",Dec2 LATITUDE_MINUTES,".",Dec2 LATITUDE_SECONDS,34,LATITUDE_BEARING, "  "
Print At 4,1,"LON ",Dec3 LONGITUDE_DEGREES,39," ",Dec2 LONGITUDE_MINUTES,".",Dec2 LONGITUDE_SECONDS,34,LONGITUDE_BEARING, "  "
;Print At 3,1, "FIX TYPE ", Dec1 FIX_TYPE,"  "
;Print At 4,1, "SATELLITES ",Dec SATELLITES_IN_VIEW,"    "
Else
Cls
Print At 3,1,"NO SATELLITES IN VIEW"
Repeat
GoSub PARSE_GPS
Until FIX_TYPE > 0
Cls
EndIf
Wend


Литература:
1. U - center. Руководство пользователя (рус.).
2. NEO-6-DataSheet.
3. GPS Antennas.
4. NMEA Protocol Specification.

На главную
Admin
Site Admin
 
Posts: 209
Joined: Wed Sep 20, 2017 9:55 am

Return to Промежуточные исследования и разработки

cron

User Menu

Login