반응형

 

https://youtube.com/live/y6N3HqWLwRk

 

ESP32보드와 캔통신 모듈인 SN65HVD230를 이용해서 1:1단방향 CAN통신 구현해보기!(녹칸다의 CAN통신 시즌2 1편 튜토리얼)

녹칸다의 캔통신 시즌2 시리즈이다!
ESP32보드를 이용해서 CAN통신을 해보는 내용이다!
(시즌1에서는 아두이노 우노와 MCP2515를 활용했다)

시즌2에서 사용할 CAN통신 모듈은 SN65HVD230이다.
아두이노 우노를 활용하지 않고 ESP32보드를 활용하는 이유는 SN65HVD230모듈이 3.3V 로직레벨로 통신을 하기 때문이다.

레벨컨버터를 활용하면 되지만 연결하는게 복잡해지고 그럴바에는 ESP32나 ESP8266을 활용하는게 더 좋아 보였다.
(나중에 IoT관련 예제로 응용도 가능할 것 같음!)

녹칸다의 캔통신 시즌2의 최종목표는 자동차와 통신하는 것이다.
자동차에는 다양한 제어시스템이 있고 제어시스템간 CAN BUS로 통신을 한다.
OBD2 프로토콜을 이용해서 차량내 정보를 아두이노에서 다양하게 활용할 수 있다.
결국 CAN통신을 알아야 그것이 가능한 것이다.

크게보면 아래와 같은 목차가 있다.
(1) ESP32보드간 1:1단방향 통신
(2) ESP32보드간 1:1양방향 통신(반이중방식)
(3) ESP32보드간 1:N양방향 통신
(4) 컴퓨터와 ESP32보드간 1:N양방향 통신
(5) ESP32와 자동차간 통신(자동차쪽은 OBD2 시뮬레이터 활용)

이번편에서는 1번항목인 1:1단방향 통신을 주요내용으로 하도록 한다.
한쪽보드는 송신기이고 다른쪽보드는 수신기가 되는것이다.

 

(선행자료)
1.녹칸다의 ESP32시리즈
https://bota.tistory.com/category/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/ESP32%EC%99%80%20%EC%95%84%EB%91%90%EC%9D%B4%EB%85%B8
2.녹칸다의 캔통신 시즌1(MCP2515)
https://bota.tistory.com/category/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/CAN%ED%86%B5%EC%8B%A0%28MCP2515%29

(개발환경설정)
1.ESP32보드 추가주소(녹칸다는 2.0.9버전이다)
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
2.보드선택(ESP32 Dev Module)
3.CAN통신 라이브러리주소(라이브러리 매니저에서 acan esp32 검색)
https://github.com/pierremolinaro/acan-esp32
4.사용하는 보드 : ESP32
5.사용하는 캔통신 모듈: SN65HVD230

(깨알지식)
1.기본주소외 확장주소를 사용하려면 frame.ext값을 1로 설정해야한다!
2.통신속도가 서로 다르면 아무일도 벌어지지 않는다!
3.아두이노 우노는 아날로그입력을 10bit(0~1023)로 해석하고 ESP32는 12bit로 해석한다!
4.우노는 0~5V를 1024등분해서 아날로그 입력을 받는다!
5.ESP32는 0~3.3V를 4095등분해서 아날로그 입력을 받는다!

(주요주제)
1.id개념 11bit(standard) 29bit(extended)
2.통신속도개념(125k,250k,500k...)
3.원리 텍스트송수신
4.시리얼로 led 제어(X)
5.led제어 버튼제어
6.버튼 업다운카운트
7.fnd출력하깅(*)
8.데이터송수신전략(*)
9.가변저항값 읽어오기
10.온습도센서 읽어오기(실수형)(*)

(예제목차)
1.캔통신모듈을 연결하고 송신기에서 수신기쪽으로 1초간격으로 데이터를 전송해서 시리얼모니터에 출력하는 예시를 만드시오!(주소를 스탠다드로할것)

can1-1-1(송신기).txt
0.00MB
can1-1-2(수신기).txt
0.00MB

 

2.예제1번을 확장주소(29bit주소로할것)

can1-2-1(송신기).txt
0.00MB
can1-2-2(수신기).txt
0.00MB

 

3.수신기에 LED를 1개 연결(D18)하고 송신기에서 수신기쪽에 있는 LED를 1초간격으로 ON/OFF하는 예시를 구현해보시오!

can1-3-1(송신기).txt
0.00MB
can1-3-2(수신기).txt
0.00MB

 

4.송신기에 버튼을 1개 연결하고 수신기에는 LED를 1개 연결해서 송신기에 연결된 버튼을 누르면 수신기 LED가 토글되도록하시오!

can1-4-1(송신기).txt
0.00MB
can1-4-2(수신기).txt
0.00MB

 

5.송신기에 버튼 4개를 연결하고 수신기에 LED 4개를 연결해서 (4)번에서 했던 예제를 4채널로 확장하시오!

can1-5-1(송신기).txt
0.00MB
can1-5-2(수신기).txt
0.00MB

 

6.송신기에 버튼 2개를 18번핀과 19번핀에 연결하고 수신기에 내부 변수값을 업/다운 카운트해서 시리얼모니터에 출력하시오!(수신기가 온도제어시스템이라고 할때 온도를 0.1도를 올리거나 내릴수 있도록 하시오!/기본온도는 20.0도)

can1-6-1(송신기).txt
0.00MB
can1-6-2(수신기).txt
0.00MB

 

7.송신기에 가변저항(D4)을 연결하고 측정값을 수신기로 전송해서 시리얼모니터에 출력하시오!

can1-7-1(송신기).txt
0.00MB
can1-7-2(수신기).txt
0.00MB

반응형
Posted by 덕력킹
,