[ESP32] CAN 신호를 받아 해석하고 특정 아날로그 신호로 내보내기(CAN to Analog Converter - CAC)

2025. 10. 21. 23:05·프로젝트 작업기
반응형

 

어느 날 샵을 하는 형으로부터 의뢰(?)가 들어왔다.

 

"핸들 리모컨에서 저항값 나오는거 알지?"
"네"

"몇몇 차들이 저항이 아닌 CAN 신호로 나오는데 이걸 저항으로 바꿀 수 있어?"

"왜요?"
"손님 중 한명이 그 차를 타고 있는데 저항값만 읽는 네비를 들고와서 쓸 수 있게 해달라고 하네.."

"회로도 한번 봐볼게요 그 차 뭔데요?"

"제네시스"

 

출처 : 기아GSW

 

최근 출시되는 차들은 조작부 통신방식이 CAN으로 많이 바뀌고 있다.

하지만 아직까지도 대부분의 차들이 위와 같이 저항을 통한 전압분배로 어떤 버튼이 눌렸는지 인식을 하고 있다.

 

출처 : 현대GSW

 

위에서 말했던 제네시스의 회로도이다.

조작부 신호 전달을 저항이 아닌 CAN으로 통신하고 있다.

 

이론상으로는 B-CAN을 읽어 해석하고 저항들과 트랜지스터들을 이용하여 전압분배 회로를 구성하여 신호를 보내주면 될거같다.

 

"네, 할 수 있을거 같네요"

 

바로 시작해보자.

 

 

ATmega와 PCB를 공부하면서 작년 말경 설계하고 올해초 만든 자동차 통합개발 모듈이다.

그때 당시에도 생각을 꽤하고 쓸거같은 기능들만 넣었는데 만들어놓고 몇번쓰고 말았다.

생각나서 다시 꺼내서 봤는데.. "너 통합개발 모듈 아닌거 같다.."

 

어차피 만들어야 할거 ATmega에서 ESP32로 MCU를 바꿔 통합개발 모듈 V2.0을 만들기로 하였다.

이제 주로 사용하는 MCU가 ESP32가 되어버렸고 STM32는 가끔쓰는 정도로 당분간은 이 2가지만 계속 쓰지 않을까 싶다.

 

MCU는 정했고 나머지를 어떻게 구성 해야할지 정해야한다.

 

전원부는 12볼트를 채택하여 벅 컨버터로 구성 해야할지? 5볼트를 채택하여 선형 레귤레이터로 구성 해야할지? 고민을 많이 했다.

우선은 5볼트 전원을 뽑아올 곳이 있어서 5볼트를 채택하였다. 일단 써보고 나중에 구성을 바꿀 예정이다.

 

그리고 기본적으로 구성해야 할 부트핀, 리셋핀, 디버그핀은 알잘딱깔센 하게 잘 구성하였다.

 

 

CAN 인터페이스는 2개는 있어야 할거 같다.

B-CAN, C-CAN 등.. CAN을 따로따로 읽거나 출력할때가 있기 때문이다.

그리고 지금 다 만들어놓고 글을 쓰면서 한 생각인데 처음에 구성했을 때 FD-CAN으로 구성했으면 어땠을까? 하는 생각이 떠올랐다. 뭐 이것도 일단 써보고 나중에 구성을 바꾸면 된다.

 

출처 : 기아GSW

 

그리고 이 프로젝트를 시작한 계기가 된 전압분배 회로!

현대기아 GSW를 뒤져보니 대부분 위와 같은 저항으로 구성하여 똑같이 구성하였다.

 

 

추가적으로 오픈 컬렉터도 구성하여 나중에 버튼 기능이나 메모리 모듈을 만들 수 있게 하였다.

오픈 컬렉터도 구성하니 나중에 다른 회로나 LIN 모듈과 K-LINE 모듈을 다시 구성하게 된다면 핀이 모자를거 같아 확장 IC도 구성하였다. 현재까지 남는 핀은 헤더핀으로 연결 하는걸로~

 

 

아, 그리고 위에서 MCU를 정할 때 말하지 못한게 하나 있는데 이번에는 MCU 주변 회로를 개별 구성하지 않고 모듈화 된 MCU를 쓰기로 했다.

 

위 사진만 보면 MCU와 모듈형 MCU의 가격 차이는 2달러 정도이다.

하지만 모듈형 MCU는 2배 크기인 8MB의 플래시 메모리를 가지고 있고 안테나와 더불어 기본적인 장치들이 이미 내부에 구성되어 있다.

MCU와 주변장치들을 개별 구성하는 것보다는 면적을 조금 더 차지하지만 가격대비 주변장치 구성과 안정성은 단점을 충분히 커버할 수 있는 장점이라고 생각한다.

 

https://documentation.espressif.com/esp32-wroom-32e_esp32-wroom-32ue_datasheet_en.pdf

 

https://dl.espressif.com/dl/schematics/esp32_devkitc_v4-sch.pdf

기본 회로구성은 위 데이터시트와 더불어 공식 개발보드 회로도를 참고하여 구성하였다.

 

 

그렇게 PCB까지 후다닥 만들어버렸다.

그런데 모듈형 MCU로 처음 설계를 하다보니 한가지 실수를 한게 있다.

 

KiCad는 알려주는데 EasyEDA 너는 왜..

 

위 사진의 안테나 PCB 부분인 KEEP-OUT ZONE에는 어떤 소자들이 있어서는 안된다고 기재되어 있다.

와이파이나 블루투스 기능을 쓰게되면 영향이 있다는데 이미 발주했고 현재는 쓸일이 없으니 되길 기도하는 수 밖에..

 

 

뺄거 빼고 배치할거 배치하고 최대한 기본부품으로 구성하면서 꽤 많은 부품들을 배치했는데 50달러대로 마무리 했다.

예전에 생각없이 80달러 120달러로 발주했을 때보다 많이 발전했다.

 

 

발주하고 5일차 되는날 도착하였다. 역대급으로 빨랐던거 같다.

 

 

바로 헤더핀과 커넥터를 납땜 하였다.

다시봐도 부품배치, 아주 깔끔하게 잘한거 같다.

 

 

USB to TTL 모듈을 이용하여 업로드를 하였다.

그리고 앞으로는 USB-C 모듈대신 헤더핀으로 UART 핀을 구성하여 UART로 펌웨어 업로드와 디버깅을 하려고 한다.

사용성 vs 크기축소와 더불어 단가절약을 비교한다면 후자가 맞다고 생각하였다.

 

 

바로 테스트를 해보도록 한다.

 

출처 : 기아GSW
출처 : 기아GSW

 

컴포넌트에 나온 커넥터가 꽤 많이 뜯어야 나오는 커넥터라 에어백을 분해해서 나오는 핀에 연결하여 테스트 하기로 한다.

 

 

테스트 결과는 성공적.

이제 CAN 데이터를 읽어 특정 CAN 값에 따라 아날로그 출력이 잘 이루어지는지 테스트 해야하는데 의뢰자(?)분께서 차량을 다시 수배해야 한다고 하여 나중에 차량이 수배된다면 이 글에 추가로 글을 게재하도록 하겠다.

 

https://gun-ny.tistory.com/m/94

 

CAN 데이터 추출은 위 게시글에 게재했던 방법으로 진행할 예정이다.

내 차로 테스트 하고 싶었는데 마땅히 테스트로 쓸 CAN 데이터가 없어 차량이 수배된 후에 테스트를 해야할거 같다.

 

끝.

 

반응형
저작자표시 비영리 변경금지 (새창열림)

'프로젝트 작업기' 카테고리의 다른 글

[Buildroot/Qt/라즈베리파이] TA모닝 아날로그 계기판 디지털 계기판으로 만들기(빌드루트 임베디드 리눅스 환경)  (0) 2026.01.11
[STM32/라즈베리파이/Qt] TA모닝 아날로그 계기판 디지털 계기판으로 만들기(라즈베리파이OS 환경)  (0) 2025.12.06
[ESP32] TA모닝 에어컨 자동 컨트롤러를 만들어 출력 및 연비 개선하기(일명 세상에서 가장 빠르게 에어컨을 켠 채 오르막길을 올라가는 순정 모닝 만들기) 下  (0) 2025.09.25
[Library] CAN통신 모니터링 라이브러리  (0) 2025.08.29
[ESP32] TA모닝 에어컨 자동 컨트롤러를 만들어 출력 및 연비 개선하기(일명 세상에서 가장 빠르게 에어컨을 켠 채 오르막길을 올라가는 순정 모닝 만들기) 上  (6) 2025.08.18
'프로젝트 작업기' 카테고리의 다른 글
  • [Buildroot/Qt/라즈베리파이] TA모닝 아날로그 계기판 디지털 계기판으로 만들기(빌드루트 임베디드 리눅스 환경)
  • [STM32/라즈베리파이/Qt] TA모닝 아날로그 계기판 디지털 계기판으로 만들기(라즈베리파이OS 환경)
  • [ESP32] TA모닝 에어컨 자동 컨트롤러를 만들어 출력 및 연비 개선하기(일명 세상에서 가장 빠르게 에어컨을 켠 채 오르막길을 올라가는 순정 모닝 만들기) 下
  • [Library] CAN통신 모니터링 라이브러리
이니셜P
이니셜P
카카오톡 문의 : initial_p 유튜브 : https://www.youtube.com/@gun-ny
    반응형
  • 이니셜P
    #include <이니셜.P>
    이니셜P
  • 전체
    오늘
    어제
    • 분류 전체보기 (93)
      • 협력점 안내 (1)
      • 프로젝트 작업기 (11)
      • 프로젝트 포트폴리오 (3)
      • 끄적끄적 (2)
      • Arduino (11)
      • STM32 (0)
      • ESP32 (8)
      • EasyEDA (0)
      • QT (5)
      • LVGL (0)
      • Buildroot (14)
      • Yocto (2)
      • Git (2)
      • C언어, C++ (18)
      • 프로그래머스 (16)
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

      빌드루트
      임베디드
      SN65HVD230
      모닝
      esp32
      계기판
      루트파일시스템
      Embedded
      RaspberryPi
      리눅스
      Qt
      0xbe000011
      SError
      아두이노
      can
      rootfs
      linux
      Buildroot
      라즈베리파이
      Overlay
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.5
    이니셜P
    [ESP32] CAN 신호를 받아 해석하고 특정 아날로그 신호로 내보내기(CAN to Analog Converter - CAC)
    상단으로

    티스토리툴바