일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 시리얼통신
- 시리얼모니터
- 시리얼포트
- 기본 문법
- Serial통신
- 아두이노
- 차량통신
- SoftwareSerial
- platformIO
- UART통신
- vscode
- UART
- 송수신
- OBD모듈
- txrx
- 공모전
- can 통신
- 디바이스마트
- 디지털핀
- 시리얼 통신
- 마스터 슬레이브
- 아두이노레오나르도
- Makefile
- 아두이노우노
- OBD
- SPI 통신
- 양방향 통신
- RX
- 자동 변수
- TX
- Today
- Total
개발 블로그
[DM공모전] 블루투스 통신으로 OBD-II 데이터 핸드폰에 출력하기 & 통신하기[1] 본문
이번엔 아두이노 IDE 시리얼 모니터에서 받아왔던 정보를 VScode 시리얼 모니터에서 받아봤다.
이번엔 블루투스 통신을 해보자!!
https://speak-of-the-devil.tistory.com/7
[공모전] OBD - II 정보 VScode 로 출력하기
VScode로 조이스틱 모듈에 정보를 받아왔고, OBD - II 정보를 아두이노 IDE를 통해 받아오는 것을 했다. 이번엔 아두이노 IDE 시리얼 모니터에서 받아왔던 정보를 VScode 시리얼 모니터에서 받도록 해보
speak-of-the-devil.tistory.com
결과
vscode에서는 시리얼 모니터에서 쓰는 게 안된다고 한다. 시리얼 모니터 프로그램(ex.hercules 시리얼 모니터)을 따로 다운로드 해서 vscode와 함께 사용해야 한다는데 지금 당장은 다른 일이 우선이라 다음에 해보자.
아두이노 IDE 를 이용해서 시리얼 통신을 했다.
진행 과정에서 케이블의 중요성을 다시 한 번 느꼈다... 데이터 전송 전용이 아닌 충전기 케이블로 진행하다 보니 생각하지 못한 에러 상황이 발생했다...OBD 모듈 대신 아두이노 우노를 사용해서 해결했다. 꽤 오랜 시간이 걸렸다... 그렇지만 아주 유익한 시간이었다 :) 자세한 내용은 밑에서 얘기하겠다!!
(수정) 알고 보니, 우리가 구매한 OBD 모듈은 전원을 켜기 위한 코드가 있었다ㅠ(애플 충전기 케이블은 전원 코드를 적어도 켜지지 않았다.)
할 일
1. VScode PlatformIO로 조이스틱 모듈 정보 출력하기
2. OBD - II 정보 VScode 로 출력하기
3. 블루투스 통신으로 OBD-II 데이터 핸드폰에 출력하기
4. 앱과 OBD 모듈이 아두이노 블루투스 통신하는 코드짜기
3번과 4번을 동시에 진행했다. 전체 과정은 아래와 같다.
1) 코드 작성하기
2) 블루투스 앱 다운로드 및 설정
3) OBD 모듈 & 블루투스 모듈 연결하기
4) 통신하기
1) 코드 작성하기
SoftwareSersial 라이브러리를 추가했다. 이 라이브러리는 보드의 핀 맵에 있는 일반 핀에 TX, RX 역할을 부여하는 것을 가능하게 한다.
(HC06은 블루투스 모듈 이름이다. 코드에서는 객체 이름으로 선언했다.)
// a. TX, RX 핀 선언
#include <SoftwareSerial.h>
#define PORT_RX 10
#define PORT_TX 11
SoftwareSerial HC06(PORT_RX, PORT_TX);
// b. 시리얼과 HC06 통신 시작을 위한 선언
void setup(){
Serial.begin(9600);
HC06.begin(9600);
}
// c. 블루투스 -> 모듈, 모듈 -> 블루투스 입출력을 위한 코드
void loop(){
if (HC06.available()){
String get_hc06 = HC06.readStringUntil('\n');
Serial.println(get_hc06);
}
if (Serial.available()){
String get_serial = Serial.readStringUntil('\n');
HC06.println(get_serial);
}
}
a. 데이터 통신을 위한 TX, RX 핀을 선언
b. 시리얼과 블루투스 통신 시작을 위한 선언
c. 블 -> 모듈, 모듈 -> 블 입출력을 위한 선언
2) 블루투스 앱 다운로드 및 설정
다음 앱을 다운로드했다.
앱을 틀고 왼쪽 상단에 햄버거 모양 버튼(줄 3개)을 누르면 창이 나온다. Settings -> Receive 에서 CR(캐리지 리턴)을 선택. 데이터를 받아서 출력할 때 개행하며 출력한다. Devices 메뉴에서 HC-06 모듈을 선택.
HC-06 을 선택하면 Termianl 창으로 연결된다. Terminal 에서 빨간 박스 표시를 누르면 블루투스 연결을 시도한다. 이 부분은 다음 부분에서 시도.
3) OBD 모듈 & 블루투스 모듈 연결하기
OBD 모듈의 뒤를 보면 핀의 역할이 적혀있다. 블루투스 모듈(HC06)도 뒤를 보면 핀의 역할이 적혀있다. 비교해보면 순서대로 핀이 나열된 것을 볼 수 있다. 각 모듈의 TX, RX 는 서로 반대로 연결해야 한다. ( 블루투스의 TX -> OBD의 RX, OBD의 RX -> 블루투스의 TX )
아두이노와 블루투스 모듈 연결이 다 됐다면 앱에서 연결을 하자.
빨간 버튼을 누르면 Connecting to HC-06... -> Connected 문구가 생기면서 연결이 된다.
블루투스 모듈이 깜박 깜박인다면, 연결이 가능한 상태라는 의미이다.
블루투스 모듈이 지속적으로 불을 켜고 있다면 연결이 됐다는 의미!!
연결이 성공적으로 됐지만, 케이블의 문제로 "PC -> 블루투스 모듈"로 데이터를 전송하는 부분에서 연결이 계속 끊겼다.
(블루투스 모듈 -> PC로 전송을 잘됐기 때문에 코드가 잘못된 줄 알고, 코드만 고쳤다...)
핸드폰에서 출력하는 건 잘 가는데, 보드에서 핸드폰으로 가는 게 잘 안됨. 찾아보니 케이블 문제일 수 있다는 얘기가 있어서 다른 보드로 해봤다. 다음 케이블로 하니 매우 잘됐다... 맨 위 영상에서 확인할 수 있다. 아무래도 OBD 모듈 연결을 위한 케이블을 하나 구매해야겠다.
(수정) 알고 보니, 우리가 구매한 OBD 모듈은 전원을 켜기 위한 코드가 있었다.
4) 통신하기
아두이노 IDE 를 실행!
a. 포트가 연결됐는지 확인하자.
b. 오른쪽 상단에 시리얼 모니터를 클릭하자.
c. 하단의 시리얼 모니터에서 출력 방식 (나는 캐리지리턴)을 정하고, baud rate 에는 코드에서 입력한 값을 넣자.
맥북에서는... Enter + Command 를 해야 입력 데이터가 넘어간다!
실행 영상은 맨 위의 영상을 참고하자!!
.
.
.
.
.
(수정) OBD 를 이용한 블루투스 통신을 했다!!
https://speak-of-the-devil.tistory.com/20
[공모전] 블루투스 통신으로 OBD-II 데이터 핸드폰에 출력하기 & 통신하기[2]
이전에 OBD - II 모듈과 블루투스 앱 통신에 문제가 생겨, 아두이노 우노 보드로 바꿔 진행했었다. 그런데 운이 좋게 문제를 해결했다. 모듈에 문제가 있던 것은 아니었다. 모듈 사용 방법이 홈페
speak-of-the-devil.tistory.com
'개발 > Projects' 카테고리의 다른 글
[DM공모전] 블루투스 통신으로 OBD-II 데이터 핸드폰에 출력하기 & 통신하기[2] (0) | 2022.01.27 |
---|---|
[DM공모전] OBD 모듈 VScode 로 조작하기 (0) | 2022.01.20 |
[DM공모전] OBD-II 모듈 아두이노 IDE로 조작해보기 ([Seeed] OBD-II CAN Bus GPS Development Kit) (0) | 2022.01.19 |
[DM공모전] VScode PlatformIO 로 조이스틱 모듈 조작하기 (0) | 2022.01.18 |
[DM공모전] VScode 에서 아두이노 개발 환경 구축하기 (0) | 2022.01.15 |