본문 바로가기
Car Life

블루투스 10hz 외장 GPS 자작기(DIY) - (2) 조립/세팅편

by 미스터트롤 2020. 1. 7.
반응형

 

 

거창하게 조립이라고 하지만 사실상 별게 없습니다.

 

전원부 연결하고, 데이터 연결하면 끝입니다.

단, GPS와 블루투스의 TX, RX를 서로 반대로 연결하는 것만 주의 하시면 됩니다

 

우리는 지금 바로 연결하지 않을 것이므로 참고로만 봐주세요.

 

최종적인 결선도

GPS가 TX(송신)하는 것을 HC-06이 RX(수신)해야하기 때문에 이런식으로 결선이 됩니다.

같은 원리로 HC-06이 TX(송신)하는 것을 GPS가 RX(수신)해야하기 때문에 이와 같이 결선이 됩니다.

 

헷갈리지 않기 위해 위 그림에는 TX는 파랑, RX는 초록을 사용했습니다만 실제 결선 하실때는 그냥 한 선으로 다이렉트로 연결하시면 될 것 같습니다.

 

 

 

제가 테스트 한 바로는 이렇게 연결해도 동작은 합니다.

우리가 1초에 한번(1hz)만 위치정보를 GPS가 송신해주는 형태로요. 이런 형태의 제품을 원하신거라면 이대로 블루투스GPS 앱을 받아 잡아서 쓰셔도 무방합니다. 

 

하지만 우리는 10hz로 동작하는 GPS를 원하는 것이니 설정을 해주어야 합니다.

 

 

1. GPS 10hz 설정 (usb to ttl 컨버터 필요)

2. GPS baudrate 올리기 (usb to ttl 컨버터 필요)

3. HC-06 baudrate 올리기 (아두이노 필요)

 

1, 2번은 한번에 설정하면 되고 3번은 따로 작업해야합니다.

 

사실 1번의 경우는 안드로이드 앱에서 바로 설정이 가능할 수도 있습니다. 10hz autosetter라는 앱이 있습니다.

하지만 이것만으로는 부족할 수 있습니다. 몰라도 되는 삽질과정은 아래  '더보기를 눌러 접은글을 보세요.

 

더보기
구글 플레이 스토어에 있는 앱입니다.

저의 경우는 이 앱으로 10hz 설정이 되었습니다.

바로 된건 아니고, 설치하고 처음 버튼을 누르니 실패했다고 나왔는데, 다시 누르니 그 다음엔 성공했다고 뜹니다.

블루투스 터미널로 데이터가 수신되는 것을 확인해보니 전보다 훨씬 더 많은 데이터가 1초에 수신되는 것을 확인했죠.

 

하지만 이 상태로 테스트를 해보니 5초~10초의 딜레이가 생기고, 업데이트 주기가 10hz보다 덜한 것으로 확인되었죠.

 

보조배터리에 연결하여 들고 뛰어다녔습니다.
레이스 크로노 앱에서 수신정보 중 일부

 

두번째 사진에서 보시면 아시겠지만 2.2hz로 찍혀있습니다. 이 갱신율은 1~10hz 사이로 계속 왔다리 갔다리 합니다.

 

이걸 보면서 감이 옵니다. '정보량 과다'.

즉, gps가 주는 정보를 다 소화를 못하고 밀려버리니까 이런 상황이 발생하는 거라고 추측이 되었습니다.

 

 

왜인고 생각해보면, GPS와 HC-06의 기본(Default) 설정된 Baudrate는 9600입니다.

9600이면 초당 10번의 GPS정보를 받아들이기에는 턱없이 부족합니다.

 

그래서 이걸 최대치로 변경해주어야 하죠.

 

결론은 HC-06의 최대 baudrate는 115200이므로 이것으로 설정해주어야 정상 동작했습니다.


1,2번의 설정을 하기 위해서 준비한 USB TTL 컨버터를 준비합니다.

 

 

GPS와 USB TTL 컨버터를 TX/RX만 서로 반대로 연결하고 나머지 VCC와 GND는 그대로 조인해줍니다.

 

그리고 컴퓨터에 연결하면 장치관리자에서 COM포트 연결이 된 것을 알 수 있습니다.

(만약 윈도우10을 쓰신다면 드라이버 오류가 발생할 수 있습니다. 그 땐 아래 링크를 참조해서 드라이버를 3.3버전으로 강제로 설정해주세요)

 

장치관리자에 연결한 장치가 정상적으로 동작하지 않는 경우.

https://m.blog.naver.com/saeroman/221012102544

 

윈도우10에서 PL2303 USB to TTL 드라이버 오류 발생시 해결 팁

아두이노 미니 프로를 PC에 연결하기 위해 PL2303 USB to TTL 모듈을 사용하려했다. 윈도우7에서...

blog.naver.com

 

 

 

1. GPS 10hz 설정 (usb to ttl 컨버터 필요)2. GPS baudrate 올리기 (usb to ttl 컨버터 필요)

 

 

이제 준비가 완료되었으니 설정을 변경할 프로그램을 다운로드하고 설치합니다.

제가 구입한 GPS는 UBLOX제품을 사용하고 있으므로 u-center 프로그램을 설치합니다.

 

https://www.u-blox.com/en/product/u-center

 

u-center

GNSS evaluation software for Windows

www.u-blox.com

여기서 윈도우즈용 프로그램을 받고 설치하면 다음과 같은 화면을 보실 수 있습니다.

 

u-center 실행직후 화면

 

이 프로그램이 연결해놓은 GPS와 통신 할 수 있도록 장치관리자에 인식된 COM포트를 선택해줍니다.

 

퍼온 사진이라 COM10입니다.
장치관리자에 인식된 COM포트를 선택합니다. 개인별로 다 다를겁니다.

 

그리고 컨트롤+F9 또는 View에 Configuration View를 선택합니다.

 

구버전에서는 왼쪽 창에 트리구조로 되어있어서 항목별로 트리구조였는데, 제가 받은 버전은 따로 그런게 없네요.

 

먼저 PRT (Ports)를 눌러 아래 그림처럼 설정을 띄웁니다.

 

포트의 Baudrate 변경

이부분에 baudrate를 115200으로 변경해주고 좌측하단 Send버튼도 한 번 눌러줍니다.

(화면 캡쳐 할 때 장치 연결을 안하고 한 터라서 Send 버튼이 비활성되어있습니다)

 

baudrate를 115200으로 변경하는 것은 통신 규약 변경이므로 새로 명확하게 접속을 다시 하기 위해 프로그램을 종료했다가 다시 실행하시기 바랍니다.

 

더불어 잘 되지 않는 경우 아래 내용을 참조해보세요 (댓글로 친절하게 적어주신 EuCh님 감사합니다)

 

1. u-center를 연결했을 때 기본적으로 baudrate은 9600이다.
2. port에서 baudrate을 115200으로 변경하면 이제부터 gps랑 통신은 115200이다.
3. u-center의 설정은 9600이므로, port 탭에서 send를 누른 순간 u-center와 gps 사이의 통신은 유효하지 않다.
4. 이 상태에서 u-center의 config탭에서 설정 저장을 하면 이부분은 적용되지 않는다.
5. 따라서, 이 현상을 해결하기 위해서는 view - text console 창을 띄워두고 통신을 계속 확인한다.
6. port에서 115200으로 바꾼 뒤에는 u-center에서 115200으로 변경 (좌측 상단 그래프 누르면 변경 가능)
7. 이후 config에서 다시 설정 내역 업로드

 

 

 

2. GPS baudrate 올리기 (usb to ttl 컨버터 필요)

그 다음 RATE (Rates)를 누릅니다.

 

RATE의 Measurement Period 변경

여기서 Measurement Period는 1초(1000ms)에 몇번 측정할 것인지를 묻는 것입니다.

기본 값은 1000ms인데 이게 1초에 1번 측정이라는 말이고, 1hz의 의미가 됩니다.

 

5hz를 설정하고 싶다면 200ms로 변경하고

10hz를 설정하고 싶다면 100ms로 변경하면 됩니다.

 

마찬가지로 변경하여 입력 후 Send를 눌러줍니다.

 

 

 

마지막으로 이정보를 최종 저장하기 위해서 CFG를 누릅니다.

 

최종 저장

Save current configuration이 선택되어있는지 확인한 다음

Devices의 모든 것을 선택하고 Send를 누르고 잠시 기다려줍니다.

 

이제 GPS의 설정은 완료되었습니다.

 

 

3. HC-06 baudrate 올리기 (아두이노 필요)

아두이노 스케치를 먼저 다운로드 해둡니다.

https://www.arduino.cc/en/Main/Software

 

Arduino - Software

By downloading the software from this page, you agree to the specified terms. THE ARDUINO SOFTWARE IS PROVIDED TO YOU "AS IS" AND WE MAKE NO EXPRESS OR IMPLIED WARRANTIES WHATSOEVER WITH RESPECT TO ITS FUNCTIONALITY, OPERABILITY, OR USE, INCLUDING, WITHOUT

www.arduino.cc

 

그리고 기본 결선부분은 아래 블로그 들을 참조하면 됩니다.

 

https://kocoafab.cc/tutorial/view/619

 

블루투스 모듈 ATcommand모드

개요 BLE가 아닌 HC-05나 HC-06과 같은 블루투스 모듈을 사용하게 되면 블루투스 모듈에 관한 기본 정보를 세팅해야 할 때가 있습니다. 예를 들면 블루투스 모듈의 이름을 세팅해야 할 때도 있고 블루투스의 통신 속도나 4자리의 핀 번호, 슬레이브/마스터 모드 등 다양한 정보를 세팅하게 됩니다. 이럴때 사용해야 하는것이 ATcommand입니다. 사실 AT 명령어는 헤이즈 사의 모뎀을 제어하는 언어였는데 사실상 통신의 표준이 되어 모든 모뎀을 제어하는데

kocoafab.cc

https://happyguy81.tistory.com/69

 

[아두이노] 블루투스(HC-06) 와 AT 명령어 사용하기

아두이노에서 블루투스의 사용은 필수 아닌 필수가 되는 것 같다. 그중에서 가장 많이들 사용하는 아두이노 블루투스인 HC-06 블루투스 3.0버전을 사용한다. 일단 통신 프로그램에서 최근에 나온 블루투스 4.0의(..

happyguy81.tistory.com

결선도를 참고해서 연결 한 다음 AT Command에서 원하는 동작을 하면 됩니다.

(*AT Command는 블루투스 기기를 제어하는 명령어라고 생각하시면 되겠습니다)

 

블로그 글들에는 HC-05와 HC-06이 혼재된 경우도 있고 그래서 설정방법이 조금씩 상이 합니다.

저는 HC-06기준으로 정리해서 아래에 적겠습니다.

 

 

결선이 완료된 아두이노를 컴퓨터에 연결하고 아두이노 스케치 프로그램을 실행합니다.

전에 썼던 코드가 그대로 적혀있네요.

 

HC-06 기준으로 작성된 코드입니다. 내용은 크게 아실필요가 없겠지만 굳이 설명해보자면..

SoftwareSerial.h 라이브러리를 불러(include)옵니다.

그리고 아두이노 2,3번 포트를 사용하도록 하는 오브젝트를 하나 선언해줍니다.

setup함수에서는 초기에 아두이노와 9600으로 통신하고, HC-06도 9600으로 통신하도록 선언합니다.

 

loop함수에서는 아두이노를 통해 HC-06과 정보를 송수신하여 보여주도록 입력한 것입니다.

 

#include <SoftwareSerial.h>

SoftwareSerial BTSerial(2,3);

void setup() {
  Serial.begin(9600);
  BTSerial.begin(9600);
}

void loop() {
  // put your main code here, to run repeatedly:
  if (BTSerial.available())
    Serial.write(BTSerial.read());
  if (Serial.available())
    BTSerial.write(Serial.read());
}

 

위 명령어를 다 입력하였다면 업로드 버튼을 눌러 아두이노로 프로그램을 올려줍니다.

 

 

정상적으로 업로드가 완료되면 이제 AT Command로 HC-06에 설정할 준비가 된 것입니다.

 

 

우측 상단의 시리얼 모니터 창을 열어주시면

퍼온사진입니다.

시리얼 모니터 창이 나오고 여기서 이제 원하는 AT Command를 입력하여 설정할 수 있습니다.

(그림에는 뭔가 텍스트가 나와있지만 아무것도 없이 나오는게 정상입니다)

 

HC-06기준으로 line ending없음(No line ending)을 선택해야합니다. 

 

 

그리고 나서 상단에 AT라고 먼저 입력하고 엔터 또는 전송버튼을 누릅니다.

 

그럼 아래에 응답으로 OK가 나와야합니다.

초기에 좀 반응이 느릴 수 있으니 몇차례 시도해봅니다.

 

OK응답이 왔다면 아래 표를 참조해서 원하는 AT Command를 입력합니다.

 

이것보다 더 많은 AT Command가 있습니다. 자세한 내용은 구글링하세요~

 

저는 딱 두 가지만 설정 했습니다.

 

1. HC-06의 블루투스 장치이름 변경

   명령어 창에 "AT+NAMEMrtrollGps" 라고 입력합니다.

   그럼 MrtrollGps라고 블루투스 장치가 검색되게 됩니다.

   원하는 장치명으로 입력하시면 됩니다.

 

2. Baudrate 설정

   명령어 창에 "AT+BAUD8" 을 입력합니다.

   그럼 이제 이 블루투스 장치는 115200으로 통신하게 됩니다.

   더 높으면 좋을수도 있겠으나, 115200이상을 지원하는지도 모르고,

   115200이면 충분할거라는 생각에 요정도로만 설정합니다.

 

명령을 내릴때마다 응답을 받으면 정상적으로 설정된 것입니다.

 

혹시 모르니 잠시 기다렸다가 컴퓨터에 연결된 아두이노 USB를 제거하고 HC-06을 빼줍니다.

 

 

 

이제 GPS와 HC-06의 설정이 완료되었으니 둘을 결선할 차례입니다.

 

위에 첨부한 그림을 다시 썼습니다. 여러분의 스크롤은 소중하니까요

 

결선을 완료한 모습

 

이제 완료되었습니다. 이제 이 장치를 가지고 외부로 나가서 테스트해 봅시다.

전원은 집에 하나쯤은 있는 보조배터리에 연결하였습니다.

 

 

레이스크로노를 실행하고 상단 설정버튼을 눌러 외장 GPS를 추가합니다.

외장 GPS 타입은 당연히 블루투스 GPS 리시버입니다.

 

 

설정한대로 HC-06에 블루투스 명이 MrtrollGps라고 검색됩니다.

 

 

 

GPS 스펙에 콜드 스타트에 30초 정도 소요된다고 나와있습니다.

되도록 뭔가 가려진게 없는 야외에서 30~1분정도 인내심을 갖고 기다립니다. (더 걸릴 수도 있습니다.)

 

 

 

GPS 정보를 정상적으로 수신하기 시작하면 GPS에서 초록불이 깜빡거립니다. (제가 구입한 GPS는 그렇습니다)

그러면 세션을 시작해서 GPS 정보를 봅니다. (먼저 켜놔도 상관없습니다)

 

 

 

 

 

아파트 단시 사이라서 그런지 Satellites는 6~8 사이를 왔다갔다 합니다.

10hz로 잘 통신이 되고 있으며 걸어다닐때는 4~5kph, 적당히 달리면 9~10kph가 측정됩니다.

움직이는 것을 멈추면 금방 다시 0~1kph로 내려옵니다.

 

 

 

차에 대시보드에 얹어놓고 테스트를 해보아도 매우 정상적으로 잘 동작하는 것을 알 수 있었습니다.

 

 

 

차후 이 모듈을 서킷용 차량 유리창 언저리에 잘 고정하고 ACC 전원과 스위치를 이용해 연결 할 생각입니다.

 

 

다음에 서킷에 방문하게 되면 이 모듈을 이용하여 레이스크로노와 통신한 결과로 실제 어느정도 성능이 나오는지 포스트를 하나 더 작성하도록 하겠습니다.

 

 

도움이 되셨기를 바랍니다.

 

 

2021.05.31)

GPS의 성능에 관한 포스팅은 아래 링크로..

https://mrtroll.tistory.com/594

 

외장 10hz gps와 폰더와의 타임 비교

2021년 5월 31일, WMR 트렉데이에 참가하였다. 오랜만에 서킷주행도 하고 남은 SUR4G를 소진할 겸, 지인들 얼굴도 볼 겸이었다. WMR 트렉데이는 바이크와 차량이 세션을 나누어 주행하고, 세션별 기록

mrtroll.tistory.com

 

반응형