오늘은 ESP32 기반의 TTL to RS485 구성된 장비를 ESPHome을 통해 Home Assistant에 추가하는 방법에 대해 알아보겠습니다. 이 장치를 통해 RS485나 TTL 신호를 WiFi를 통해 원격으로 모니터링할 수 있도록 만드는 것이 목표입니다. 장비에 대한 이야기는 차후에 다시 포스트로 소개하고, 우선 ESP Home을 통해 장비를 인식하고, 펌웨어를 장비에 등록할수 있도록 하는 과정을 설명하겠습니다.
준비물
- Home Assistant가 설치된 환경
- ESPHome 애드온이 설치되어 있는 Home Assistant
- 전압변경 장치, ESP32 장치 와 TTL To RS485 연결
- 컴퓨터 (펌웨어 업로드용)
ESP32 장치를 Home Assistant에 추가하는 단계
1. ESPHome 대시보드 접속하기
Home Assistant 대시보드에서 ESPHome 애드온으로 이동합니다. 아직 애드온을 설치하지 않았다면, 별도로 설치가 필요합니다.(이 글에서는 ESPHome 애드온 설치 과정은 다루지 않습니다.)
2. 새 장치 추가하기
ESPHome 대시보드에서 오른쪽 하단의 “+” 버튼을 클릭하여 새 장치를 추가합니다.
- 장치 이름: 원하는 이름을 입력합니다 (예:
esp32_rs485_bridge
) - 장치 유형: “ESP32″를 선택합니다
- “NEXT”를 클릭합니다
3. WiFi 정보 입력하기
- WiFi SSID: 장치가 연결될 WiFi 네트워크 이름을 입력합니다
- WiFi 비밀번호: 해당 네트워크의 비밀번호를 입력합니다
- “NEXT”를 클릭합니다
4. 기본 설정 완료하기
“NEXT”를 클릭하여 기본 설정을 완료합니다. 이제 장치의 기본 구성 파일이 생성됩니다.
5. 설정 파일 편집하기
생성된 기본 구성 파일을 열고, TTL To RS485 연결에 맞게 수정합니다. GPIO17, GPIO16에 각각 TX와 RX를 연결합니다.
아래는 기본적인 예시 구성입니다:
esphome:
name: esp32_rs485_bridge
platform: ESP32
board: esp32dev
wifi:
ssid: "여기에_WiFi_이름"
password: "여기에_WiFi_비밀번호"
# 선택 사항: WiFi 연결 실패 시 접속 포인트(AP) 모드 활성화
ap:
ssid: "ESP32 Bridge Fallback Hotspot"
password: "fallback_password"
# Home Assistant와의 API 활성화
api:
encryption:
key: "여기에_긴_암호화_키"
ota:
password: "여기에_OTA_비밀번호"
# 로그 설정
logger:
level: INFO
# UART 설정 (RS485 또는 TTL)
uart:
id: uart_bus
tx_pin: GPIO17
rx_pin: GPIO16
baud_rate: 9600
data_bits: 8
parity: NONE
stop_bits: 1
# RS485 설정 (필요한 경우)
# 아래는 MAX485 또는 유사한 칩을 사용하는 경우 설정 예시
output:
- platform: gpio
pin: GPIO4
id: rs485_direction
# Modbus 컴포넌트 (RS485로 Modbus 장치를 읽는 경우)
modbus:
id: modbus_bus
uart_id: uart_bus
flow_control_pin: rs485_direction
# 센서 예시 (Modbus 장치에서 데이터 읽기)
sensor:
- platform: modbus_controller
modbus_id: modbus_bus
name: "온도 센서"
address: 1
register_type: holding
register: 0
value_type: U_WORD
accuracy_decimals: 1
unit_of_measurement: "°C"
이 설정은 예시일 뿐이며, 실제 사용하는 RS485/TTL 장치에 맞게 수정해야 합니다. 특히 GPIO 핀 번호와 통신 속도(baud rate)는 사용하는 장치에 맞게 조정하세요.
제가 사용한 ESP32의 정확한 모델은 ESP32 CP2102 칲 입니다. 관련된 핀에 대한 정보는 아래와 같습니다. GPIO, Power(5V,3.3V), GND 등PIN 위치를 잘 찾아서 연결해야 합니다.
RS485로 패킷을 내보내거나, 받는 처리를 아래 A+, B-로 유입되거나, 내보낼수 있도록 하는 것이고, 내부 처리는 TTL로 변환되어, ESP32에서 wifi 모듈을 이용해서 읽거나, 패킷을 내보내도록 처리하는 디바이스가 되겠습니다.

관련된 데이터 시트는 아래 링크를 참고해주세요.
https://www.espressif.com/sites/default/files/documentation/esp32_datasheet_en.pdf
6. 펌웨어 설치하기
구성 파일 저장 후 ESPHome 대시보드에서 해당 장치의 “INSTALL” 버튼을 클릭합니다.
설치 방법 중 “Plug into this computer”를 선택합니다. 이 방법은 ESP32 장치를 USB를 통해 직접 컴퓨터에 연결하여 펌웨어를 업로드합니다.
7. ESP32 연결 및 펌웨어 업로드
- ESP32 장치를 USB 케이블로 컴퓨터에 연결합니다
- 연결된 포트가 자동으로 인식되면 “NEXT”를 클릭합니다
- 펌웨어 컴파일 및 업로드가 시작됩니다
- 업로드 완료 메시지가 나타날 때까지 기다립니다
8. Home Assistant에서 장치 통합하기
펌웨어 업로드가 완료되면, ESP32 장치는 설정된 WiFi 네트워크에 연결을 시도합니다. 연결이 성공하면 Home Assistant에서 자동으로 장치를 발견합니다.
이후 펌웨어 업데이트는 USB가 아니라, OTA 연결방식으로 되므로, Wifi를 통한 무선으로 펌웨어를 업데이트 할 수 있습니다.
Home Assistant 대시보드에서 “설정” > “장치 및 서비스” > “통합”으로 이동하여 ESPHome 장치가 나타나는지 확인합니다. “구성”을 클릭하여 장치 세부 정보를 확인하고 설정할 수 있습니다.
문제 해결
ESP32가 인식되지 않는 경우
- USB 케이블이 제대로 연결되었는지 확인하세요
- 일부 USB 케이블은 데이터 전송을 지원하지 않습니다. 다른 케이블을 시도해보세요
- 적절한 드라이버가 설치되어 있는지 확인하세요 (특히 CP210x나 CH340 드라이버)
ESP32가 인식되지만, “Connecting” 상태에서 Firmware업데이트가 진행되지 않는경우
- ESP32보드에 초기화 버튼을 누른 상태에서 USB Install 을 할 수 있습니다. (아래 이미지 참고)
- USB-Ctype 오른쪽에 작은 버튼을 누르고 있으면, 기존 firmware를 Erase한 뒤에 새로운 Firmware를 업데이트 합니다.

펌웨어 업로드 오류
- ESP32를 부트로더 모드로 진입시키세요: BOOT 버튼을 누른 상태에서 EN/RST 버튼을 누르고 BOOT 버튼을 계속 누른 상태로 유지합니다
- 업로드 속도를 낮추어 보세요 (ESPHome 고급 설정에서 조정 가능)
WiFi 연결 문제
- WiFi 자격 증명이 올바른지 확인하세요
- ESP32가 WiFi 라우터의 범위 내에 있는지 확인하세요
- 2.4GHz WiFi 네트워크를 사용하고 있는지 확인하세요 (대부분의 ESP32는 5GHz를 지원하지 않습니다)
결론
이제 ESP32 기반 TTL To RS485가 Home Assistant에 연결되었습니다. 이를 통해 Modbus 장치나 다양한 시리얼 통신 장치의 데이터를 모니터링하고 제어할 수 있습니다. Home Assistant의 자동화 기능을 활용하여 이러한 장치들을 스마트홈 시스템에 완벽하게 통합할 수 있습니다.
추후 포스팅에서는 다양한 센서와 액추에이터를 이 브릿지에 연결하는 방법과 Home Assistant 자동화를 구성하는 방법에 대해 더 자세히 다루겠습니다.
궁금한 점이나 문제가 있으시면 댓글로 남겨주세요!
답글 남기기