일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 아두이노레오나르도
- 아두이노우노
- 자동 변수
- 공모전
- OBD
- 디바이스마트
- OBD모듈
- 마스터 슬레이브
- 아두이노
- 시리얼 통신
- txrx
- vscode
- Serial통신
- UART
- RX
- Makefile
- TX
- 양방향 통신
- 디지털핀
- platformIO
- UART통신
- can 통신
- 시리얼통신
- SoftwareSerial
- 송수신
- 시리얼포트
- 시리얼모니터
- 기본 문법
- 차량통신
- SPI 통신
- Today
- Total
개발 블로그
[DM공모전] OBD-II 모듈 아두이노 IDE로 조작해보기 ([Seeed] OBD-II CAN Bus GPS Development Kit) 본문
[DM공모전] OBD-II 모듈 아두이노 IDE로 조작해보기 ([Seeed] OBD-II CAN Bus GPS Development Kit)
영글어가다 2022. 1. 19. 13:16공모전에서 사용할 OBD 모듈이 도착했다. 블루투스로 조이스틱 모듈과 앱을 연결하기 전에 OBD 모듈 사용을 먼저 사용해봤다.
모듈은 아래 사이트에서 구매했다.
https://www.devicemart.co.kr/goods/view?no=11983985
OBD-II CAN Bus GPS Development Kit [109990405]
OBD-II CAN 버스 GPS 개발 키트 / 차량의 OBD 포트를 통해 차량 데이터를 시리얼 인터페이스로 전달 / Atmega32U4로 개발이 되어 아두이노와 같이 코딩 가능
www.devicemart.co.kr
구성품
왼쪽 기준으로
- 두 번째 : OBD Ⅱ Slaver(Base board_Male OBD-II connector)
- 이 글에서는 보드(아두이노)라고 지칭하겠다.
- 세 번째 : GPS Board (NEO-6 GPS breakout)
어떻게 하면 이 아이들을 조작할 수 있을까?
- 차량 연결
- 아두이노 보드와 노트북 연결 및 USB 포트 확인
- Arduino IDE 에서 보드와 포트 설정
- VScode 예제 아두이노 보드에 업로드 & Serial monitor 확인
- 문제 해결 과정과 특이사항 (케이블에 따른 USB 인식)
1. 차량 연결
처음에 아두이노와 노트북을 케이블로 연결했을 때, 보드에 불이 켜지지 않아서 보드가 고장 난 게 아닐까 의심을 했다. (이 부분은 5번째에서 다루겠다.) 그래서 차량에 꽂아도 전원이 안 들어오는지 먼저 확인했었다. 차량 하단에 OBD 단자가 있었고, 보드를 연결하자 불이 들어오는 것을 확인했다. 다행히 고장난 보드가 아니었다... 하지만 여전히 노트북은 보드를 인식하지 못했다. 고장나지 않았다는 것에 감사하며 집에 들어왔다...
2. 아두이노 보드와 노트북 연결 및 USB 포트 확인
노트북과 보드의 연결은 생각보다 쉽게 해결됐다. 다른 케이블로 바꾸니 바로 해결... 아두이노 LED에 불이 들어오면서 켜졌다. 어떤 포트에 어떤 보드가 연결된 건지 확인해봤다.
왼쪽 최상단 사과 → 이 Mac에 관하여 → 시스템 리포트 → USB 에서 확인해보니 Arduino Leonardo 보드가 연결됐고 정보를 볼 수 있었다.
3. Arduino IDE 에서 보드와 포트 설정
불이 켜진 김에 Serial Monitor로 어떤 값을 받아오는지 확인해 봤다. 확인을 위해 Arduino IDE 에서 보드&포트 설정을 했다.
포트 연결이 제대로 됐다면 Tool -> Port 에서 포트 주소와 ( 보드 이름 ) 이 생긴다. 아래에서 볼 수 있다.
/dev/cu.usbmodem101(Arduino Leonardo)
4. VScode 예제 아두이노 보드에 업로드 & Serial monitor 확인
보드 설정 후 예제를 열어서 컴파일 후 업로드 했다. 컴파일과 업로드는 체크 버튼과 화살표 버튼을 누르면 된다.
V : 컴파일
⇒ : 업로드
(컴파일은 코드를 기계가 이해할 수 있는 언어로 번역하는 과정, 업로드는 보드에 컴파일 코드를 입력하는 과정이다.)
업로드 후 오른쪽 상단에 돋보기 모양으로 Serial Monitor를 열었다.
Serial Monitor 에 예제 코드(아래 부분)에 따라 출력이 되는 것을 확인했다.
Serial.print("sensor = ");
Serial.print(sensorValue);
Serial.print("\\t output = ");
Serial.println(outputValue);
전체 예제 코드는 다음과 같다.
/*
Analog input, analog output, serial output
Reads an analog input pin, maps the result to a range from 0 to 255 and uses
the result to set the pulse width modulation (PWM) of an output pin.
Also prints the results to the Serial Monitor.
The circuit:
- potentiometer connected to analog pin 0.
Center pin of the potentiometer goes to the analog pin.
side pins of the potentiometer go to +5V and ground
- LED connected from digital pin 9 to ground through 220 ohm resistor
created 29 Dec. 2008
modified 9 Apr 2012
by Tom Igoe
This example code is in the public domain.
<https://www.arduino.cc/en/Tutorial/BuiltInExamples/AnalogInOutSerial>
*/
// These constants won't change. They're used to give names to the pins used:
const int analogInPin = A0; // Analog input pin that the potentiometer is attached to
const int analogOutPin = 9; // Analog output pin that the LED is attached to
int sensorValue = 0; // value read from the pot
int outputValue = 0; // value output to the PWM (analog out)
void setup() {
// initialize serial communications at 9600 bps:
Serial.begin(9600);
}
void loop() {
// read the analog in value:
sensorValue = analogRead(analogInPin);
// map it to the range of the analog out:
outputValue = map(sensorValue, 0, 1023, 0, 255);
// change the analog out value:
analogWrite(analogOutPin, outputValue);
// print the results to the Serial Monitor:
Serial.print("sensor = ");
Serial.print(sensorValue);
Serial.print("\\t output = ");
Serial.println(outputValue);
// wait 2 milliseconds before the next loop for the analog-to-digital
// converter to settle after the last reading:
delay(2);
}
5. 문제 해결 과정과 특이사항 (케이블에 따른 USB 인식)
- 문제 상황
- Apple 노트북 충전기로 보드와 노트북을 연결했는데, 보드가 켜지지 않았다.
- 해결 방법
- 차량에 보드를 연결했을 때는 켜졌기 때문에, 노트북 문제라고 생각했다. 그런데 윈도우에 연결해보니 정상적으로 켜졌다.
- 팀원들과 논의 후 케이블에 문제가 있다고 판단하고, 삼성 케이블로 연결해보니 정상 작동했다.(시스템 리포트에서 USB 포트에 연결된 것을 확인할 수 있다.)
- 특이사항
- 케이블마다 작동이 되고 안되는 것을 확인했다. 그 이유가 USB PD 규격 차이인지,,, 뭔지는 알아봐야 한다.
'개발 > Projects' 카테고리의 다른 글
[DM공모전] 블루투스 통신으로 OBD-II 데이터 핸드폰에 출력하기 & 통신하기[2] (0) | 2022.01.27 |
---|---|
[DM공모전] 블루투스 통신으로 OBD-II 데이터 핸드폰에 출력하기 & 통신하기[1] (0) | 2022.01.24 |
[DM공모전] OBD 모듈 VScode 로 조작하기 (0) | 2022.01.20 |
[DM공모전] VScode PlatformIO 로 조이스틱 모듈 조작하기 (0) | 2022.01.18 |
[DM공모전] VScode 에서 아두이노 개발 환경 구축하기 (0) | 2022.01.15 |