GPS Laptimer

RaceChrono용 블루투스 25hz GPS 만들기 Part .2

Mapsosa 2021. 6. 10. 21:17

Part .1 에서 완성한 GPS Hardware

이제 GPS 세팅을 위해서는 U-Blox 홈페이지에서 U-Center라는 프로그램을 받아야한다.
바로 다운로드는 여기를 클릭하면 된다. 공식 홈페이지 다운로드 링크이기 때문에 걱정할 것이 없다.

아 먼저 내가 실수한게 있더라 저기서 Bluetooth 모듈을 커넥터에서 빼야만 U-Center에서 명령어가 통한다.
Serial 디바이스가 두개가 달려있으면 작동이 안되나보다.

여튼 USB2UART 컨버터를 꽂고 연결을 하면 위와 같은 화면을 만날 수 있다.
처음에는 NMEA중에 GGA RMC GSA GSV VTG GLL이 살아있다.
RaceChrono에서는 GGA RMC GSA GSV 말고 다른 값은 지원하지 않는다고 한다.
그거 지우는 것도 나중에 하기로 하고
일단은

펌웨어 업그레이드를 시켜주도록 하자
펌웨어는 U-blox 웹사이트에서 받을 수 있다. 바로 다운로드는 u-blox M9 SPG firmware version 4.04 <-여기를 누르면 바로 다운로드가 가능하다.
펌웨어 업데이트 창은 위의 Tab에서 Tools를 누르면 나온다.
펌웨어 이미지에 다운받은 Bin파일을 선택하고
그리고 밑에 초록색 Go를 눌러주면 된다.

이렇게 나오면 완료된 것이다.

 

 

이제 설정을 해주도록 하자

상부의 Tab에서 View - Configuration View를 클릭한다.

일단 내가 설정한 값은 ANT에서 전부 체크 후 왼쪽 밑에 Send 클릭

#Active antenna voltage control Enable
B5 62 06 8A 09 00 00 07 00 00 2E 00 A3 10 01 82 51

#Active antenna voltage control Disable
B5 62 06 8A 09 00 00 07 00 00 2E 00 A3 10 00 81 50

Short antenna detection Enable
B5 62 06 8A 09 00 00 07 00 00 2E 00 A3 10 01 82 51

Short antenna detection Disable
B5 62 06 8A 09 00 00 07 00 00 2E 00 A3 10 00 81 50

#Short circuit power down logic Enable
B5 62 06 8A 09 00 00 07 00 00 33 00 A3 10 01 87 6A

#Short circuit power down logic DIsable
B5 62 06 8A 09 00 00 07 00 00 33 00 A3 10 00 86 69

#Automatic short circuit recovery Enable
B5 62 06 8A 09 00 00 07 00 00 35 00 A3 10 01 89 74

#Automatic short circuit recovery Disable
B5 62 06 8A 09 00 00 07 00 00 35 00 A3 10 00 88 73

#Open circuit detection Enable
B5 62 06 8A 09 00 00 07 00 00 31 00 A3 10 01 85 60

#Open circuit detection Disable
B5 62 06 8A 09 00 00 07 00 00 31 00 A3 10 00 84 5F

위의 Hex 값은 UART 터미널에서 해당 Hex 값을 전송하면 위와 같은 U-Center를 켜지 않고도 세팅을 할 수 있게 해준다. Messages View에서 볼 수 있는데 밑에서 설명하겠다.

ITFM에서 Enable해주고 나는 Active 안테나를 사용할 것이기 때문에 Active를 체크했다. 혹시 GPS에서 가짜값을 전송하면 그게 진짜인지 아닌지 판단하는 알고리즘 같다. 요즘은 없다고는 하던데 그래도 일단 체크하고 나중에 없애보는걸로.
그리고 왼쪽 밑에 Send 클릭

#ITFM Enable
B5 62 06 8A 09 00 00 07 00 00 0D 00 41 10 01 FF 86

#ITFM Disable
B5 62 06 8A 09 00 00 07 00 00 0D 00 41 10 00 FE 85

#ITFM Antenna Unknown
B5 62 06 8A 09 00 00 07 00 00 10 00 41 20 00 11 B4

#ITFM Antenna Passive
B5 62 06 8A 09 00 00 07 00 00 10 00 41 20 01 12 B5

#ITFM Antenna Active
B5 62 06 8A 09 00 00 07 00 00 10 00 41 20 02 13 B6

Mode Flag에서 High Precision Mode Enable 해주었고

Numbering used for SVs not supported by NMEA를 Extended 3 digit 로 바꿔줬다.

U-Blox의 Datasheet에 따르면

In order to support some GNSS (e.g. BeiDou, Galileo, QZSS), which are not supported by some or all NMEA protocol versions, an "extended" SV numbering scheme can be enabled. This uses the NMEA-defined numbers where possible but adds other number ranges to support other GNSS. Note however that these non-standard extensions require 3-digit numbers, which may not be supported by some NMEA parsing software.

BeiDou, Galileo, QZSS 같은 GNSS를 이용하기 위해서는 필요하다고 한다.

 

그런데 위에서

 

however that these non-standard extensions require 3-digit numbers, which may not be supported by some NMEA parsing software.

이게 좀 애매한데 레이스 크로노가 3-digit 넘버를 지원하는지 모르겠지만 일단 Extended로 했다..

 

#NMEA HiPrec
B5 62 06 8A 09 00 00 07 00 00 06 00 93 10 01 4A 59

#SV Numbering Extended
B5 62 06 8A 09 00 00 07 00 00 07 00 93 20 01 5B 7E

#SV Numbering Strict
B5 62 06 8A 09 00 00 07 00 00 07 00 93 20 00 5A 7D

USE PPP
나도 PPP가 뭔지 정확히 모른다 근데 여기를 참고한 결과 궤도나 시각 보정을 통해 3cm 정도의 정밀한 위치를 얻을 수 있다고 한다. 그래서 호다닥 체크를 했다.

 

그리고 Use AssistNow Autonomous 체크 AssistNow는 U-blox의 A-GPS 브랜드인거 같던데 오토노머스는 위성의 위치를 저장해 놓아서 수동으로 업데이트 해줄 필요 없이 자동으로도 A-GPS가 가능하다고 한다.
왼쪽 밑에 Send 클릭

#Enable PPP
B5 62 06 8A 09 00 00 07 00 00 19 00 11 10 01 DB 32

#Disable PPP
B5 62 06 8A 09 00 00 07 00 00 19 00 11 10 00 DA 31

#AssistNow Autonomous Enable
B5 62 06 8A 09 00 00 07 00 00 01 00 23 10 01 D5 F0

#AssistNow Autonomous Disable
B5 62 06 8A 09 00 00 07 00 00 01 00 23 10 00 D4 EF

그리고 PMS에서 0-FullPower로 해주고 왼쪽 밑에 Send 클릭

#Power Saving Full power
B5 62 06 8A 09 00 00 07 00 00 01 00 D0 20 00 91 16

그리고 Dynamic Model에서 Automotive 로 해주고 왼쪽 밑에 Send 클릭

#Dynamic Model Automotive
B5 62 06 8A 09 00 00 07 00 00 21 00 11 20 04 F6 7D

 

이제 SBAS 세팅인데 이게 좀 모르겠다.

MSAS가 우리나라 남쪽에서 잡힌다는데 PRN이 129, 137이다

근데 디폴트 세팅이 123, 127-129, 131, 133, 136-138라서 이미 129, 137이 포함된다.

그냥 디폴트 값으로 놔두는게 나을 것 같아서 그냥 놔두었다.

#SBAS Default
B5 62 06 8A 10 00 00 07 00 00 06 00 36 50 88 2B 07 00 00 00 00 00 ED 0A

#SBAS MSAS
B5 62 06 8A 10 00 00 07 00 00 06 00 36 50 00 02 02 00 00 00 00 00 37 8D

#SBAS All
B5 62 06 8A 10 00 00 07 00 00 06 00 36 50 00 00 00 00 00 00 00 00 33 73

이제 저장을 해줘야한다.
CFG에서 위에 Device를 모두 선택해주고 왼쪽 밑에 Send 클릭

#Save Config
B5 62 06 09 0D 00 00 00 00 00 FF FF 00 00 00 00 00 00 17 31 BF




나머지 값들은 Messages View에서 설정하는 것이 더 편하더라

이렇게 위 탭의 View - Messages View에 들어와서
UBX 메시지에서 CFG - Valset 까지오면 된다.


그리고 파란색 네모를 클릭하면 해당명령에 대한 Hex 값이 뜬다.

이게 위에 적었던 세팅 명령어의 Hex 값이다.

세팅 바꿀때 마다 컴퓨터에 연결하고 U-center를 켜지 않으려면 Hex 값을 저장해 놓는 것이 좋다.

먼저 BAUD Rate는

그룹에서 CFG-UART1을 선택하고 Key name에서 Baudrate를 선택하고 Add to list를 선택하면 저렇게 추가가 된다 이때 Get Current Value를 누르면 현재값을 가지고 온다.
혹은 저기서는 빨간색으로 표시된 칸에 값을 집어넣고 오른쪽 밑에 Send를 누르면 값이 적용된다.
꼭 Flash BBR RAM 다 체크 하도록 하자

#UART1 230400
B5 62 06 8A 0C 00 00 07 00 00 01 00 52 40 00 84 03 00 BD 31

#UART1 115200
B5 62 06 8A 0C 00 00 07 00 00 01 00 52 40 00 C2 01 00 F9 E7

#UART1 460800
B5 62 06 8A 0C 00 00 07 00 00 01 00 52 40 00 08 07 00 45 C5

#UART1 921600
B5 62 06 8A 0C 00 00 07 00 00 01 00 52 40 00 10 0E 00 54 EB

#UART2 230400
B5 62 06 8A 0C 00 00 07 00 00 01 00 53 40 00 84 03 00 BE 37

#UART2 115200
B5 62 06 8A 0C 00 00 07 00 00 01 00 53 40 00 C2 01 00 FA ED

#UART2 460800
B5 62 06 8A 0C 00 00 07 00 00 01 00 53 40 00 08 07 00 46 CB

#UART2 921600
B5 62 06 8A 0C 00 00 07 00 00 01 00 53 40 00 10 0E 00 55 F1

#UART1, 2  230400
B5 62 06 8A 14 00 00 07 00 00 01 00 52 40 00 84 03 00 01 00 53 40 00 84 03 00 E0 95

#UART1, 2 115200
B5 62 06 8A 14 00 00 07 00 00 01 00 52 40 00 C2 01 00 01 00 53 40 00 C2 01 00 58 E1

#UART1, 2 460800
B5 62 06 8A 14 00 00 07 00 00 01 00 52 40 00 08 07 00 01 00 53 40 00 08 07 00 F0 FD

#UART1,2 921600
B5 62 06 8A 14 00 00 07 00 00 01 00 52 40 00 10 0E 00 01 00 53 40 00 10 0E 00 0E C1

이 Hex 값의 작동여부는 확인해 보지 않았으나 아마 작동 될 것 같다.

 

그리고 NMEA Sentences를 설정해야하는데 저렇게 해당 Sentence에 해당하는 모든 채널을 추가하고 전부 0혹은 1로 바꾼 후 Send를 누르면 된다.

나는 RaceChrono에서 지원하는 GGA RMC GSA GSV 값을 추가했다.

좀 귀찮고 나중에 손을 대야하므로 Hex 명령어를 적어 놓는다.

#Enable GBS
B5 62 06 8A 1D 00 00 07 00 00 DD 00 91 20 01 E1 00 91 20 01 DE 00 91 20 01 DF 00 91 20 01 E0 00 91 20 01 89 16

#Disable GBS
B5 62 06 8A 1D 00 00 07 00 00 DD 00 91 20 00 E1 00 91 20 00 DE 00 91 20 00 DF 00 91 20 00 E0 00 91 20 00 84 DF

#Enable GGA
B5 62 06 8A 1D 00 00 07 00 00 BA 00 91 20 01 BE 00 91 20 01 BB 00 91 20 01 BC 00 91 20 01 BD 00 91 20 01 DA D5

#Disable GGA
B5 62 06 8A 1D 00 00 07 00 00 BA 00 91 20 00 BE 00 91 20 00 BB 00 91 20 00 BC 00 91 20 00 BD 00 91 20 00 D5 9E

#Disable GLL
B5 62 06 8A 1D 00 00 07 00 00 C9 00 91 20 00 CD 00 91 20 00 CA 00 91 20 00 CB 00 91 20 00 CC 00 91 20 00 20 03

#Enable GLL
B5 62 06 8A 1D 00 00 07 00 00 C9 00 91 20 01 CD 00 91 20 01 CA 00 91 20 01 CB 00 91 20 01 CC 00 91 20 01 25 3A

#Enable GSA
B5 62 06 8A 1D 00 00 07 00 00 BF 00 91 20 01 C3 00 91 20 01 C0 00 91 20 01 C1 00 91 20 01 C2 00 91 20 01 F3 4C

#Disable GSA
B5 62 06 8A 1D 00 00 07 00 00 BF 00 91 20 00 C3 00 91 20 00 C0 00 91 20 00 C1 00 91 20 00 C2 00 91 20 00 EE 15

#Enable GSV
B5 62 06 8A 1D 00 00 07 00 00 C4 00 91 20 01 C8 00 91 20 01 C5 00 91 20 01 C6 00 91 20 01 C7 00 91 20 01 0C C3

#Disable GSV
B5 62 06 8A 1D 00 00 07 00 00 C4 00 91 20 00 C8 00 91 20 00 C5 00 91 20 00 C6 00 91 20 00 C7 00 91 20 00 07 8C

#Enable RMC
B5 62 06 8A 1D 00 00 07 00 00 AB 00 91 20 01 AF 00 91 20 01 AC 00 91 20 01 AD 00 91 20 01 AE 00 91 20 01 8F 70

#Disable RMC
B5 62 06 8A 1D 00 00 07 00 00 AB 00 91 20 00 AF 00 91 20 00 AC 00 91 20 00 AD 00 91 20 00 AE 00 91 20 00 8A 39

#Enable VTG
B5 62 06 8A 1D 00 00 07 00 00 B0 00 91 20 01 B4 00 91 20 01 B1 00 91 20 01 B2 00 91 20 01 B3 00 91 20 01 A8 E7

#Disable VTG
B5 62 06 8A 1D 00 00 07 00 00 B0 00 91 20 00 B4 00 91 20 00 B1 00 91 20 00 B2 00 91 20 00 B3 00 91 20 00 A3 B0

#Disable ZDA
B5 62 06 8A 1D 00 00 07 00 00 D8 00 91 20 00 DC 00 91 20 00 D9 00 91 20 00 DA 00 91 20 00 DB 00 91 20 00 6B 68

#Enable ZDA
B5 62 06 8A 1D 00 00 07 00 00 D8 00 91 20 01 DC 00 91 20 01 D9 00 91 20 01 DA 00 91 20 01 DB 00 91 20 01 70 9F

그리고 대망의 Update율 즉 Hz
Hz로 적으면 안되고 ms 단위로 적어야한다.
1000ms는 1초이고 위와 같이 디폴트 상태는 1000ms다
1000ms마다 한번 nmea를 송신하는 것이다.
그러면 25hz는 40ms이고 20hz는 50ms이고 15hz는 소숫점이 깔끔하지 못하고 10hz는 100ms 5hz는 200ms다.

 

혹시나 원하는 다른 hz가 있으면 hz를 ms로 변환하는 법은 1hz = 1/s 이니까 1hz = 1/1000ms다. 그러므로 1000을 원하는 hz로 나눠주면 원하는 ms값을 구할 수 있다.

 

여튼 그렇게 입력하고 Send를 누르면 되는데 저것도 세팅시에 다시 만져야 하는 일이 많으니 Hex값을 남겨놓는다.

#25hz
B5 62 06 8A 0A 00 00 07 00 00 01 00 21 30 28 00 1B 77

#20hz
B5 62 06 8A 0A 00 00 07 00 00 01 00 21 30 32 00 25 8B

#10hz
B5 62 06 8A 0A 00 00 07 00 00 01 00 21 30 64 00 57 EF

#5hz
B5 62 06 8A 0A 00 00 07 00 00 01 00 21 30 C8 00 BB B7

#1hz
B5 62 06 8A 0A 00 00 07 00 00 01 00 21 30 E8 03 DE FA

여튼 이렇게 40ms로 바꿔주면 25hz로 세팅이 된다.


이제 블루투스를 세팅해줄 차례
블루투스 모듈과 연결된 USB2UART 어댑터를 OTG를 이용해 폰에 꽂아준 다음
https://play.google.com/store/apps/details?id=de.kai_morich.serial_usb_terminal

 

Serial USB Terminal - Google Play 앱

직렬 변환기에 USB로 연결된 시리얼 장치의 터미널

play.google.com

이 앱을 설치하고 실행한다.

설정에서 블루투스 모듈의 초기 BAUD rate로 설정해주고 접속한다.

여기는 설정할거 별로 없다. 이름이랑 Baudrate 정도만 수정해주면 된다
AT command로 진행되는데 저는 BT836B를 이용중이라 이 파일을 보고 했다.
나는 Feasyscom에서 산거라 저 파일을 이용했으나 다른 블루투스 모델이면 해당 제조사 홈페이지에서 테이터시트 확인 후 설정해야한다.

반응형