원문 캡처 · github.com
원문 캡처 · github.com

FaderBuddy는 60mm 모터 구동 선형 포텐셔미터를 ESP32와 연결해 위치를 읽고 원하는 곳으로 움직이는 제어 보드다. I2C 핀 두 개와 전원으로 연결하며, 햅틱 피드백과 가상 디텐트도 지원한다. ESPHome 구성 요소를 사용하면 Home Assistant에 통합할 수 있다.

ATtiny1616 마이크로컨트롤러가 폐루프 모터 제어와 정전식 터치 감지를 처리하므로, 페이더마다 모터 드라이버나 PID 제어 루프를 따로 구현할 필요가 없다. 여러 보드를 같은 I2C 버스에 연결할 수 있고, 직각 핀 헤더로 이웃한 보드를 선 없이 이어 붙일 수도 있다. 페이더 간격은 18mm 또는 19mm를 지원한다. STEMMA QT/QWIIC 호환 커넥터도 제공한다. FaderBuddy 저장소

ESPHome과 Home Assistant 연동

ESPHome 사용자 지정 구성 요소는 Home Assistant 엔티티와 양방향으로 위치를 동기화하고, 레이어별 자동화 트리거와 햅틱 설정을 지원한다. 하나의 ESP32에 여러 페이더를 연결할 수 있으며, Home Assistant에서 FaderBuddy 보드의 펌웨어를 한 번의 클릭으로 업데이트할 수 있다.

간단한 ESPHome 설정 예시는 다음과 같다.

yaml
external_components:
 - source: github://scottbez1/FaderBuddy

fader_buddy:
 - id: my_fader
 on_manual_move:
 then:
 - lambda: |-
 ESP_LOGD("fader", "Fader moved to %d on layer %d", x, layer);

람다에서 페이더를 움직이려면 다음과 같이 호출한다.

cpp
id(my_fader).remote_move_to(position, layer);

// optionally cap the speed - 0-255, where 255 is full speed
id(my_fader).remote_move_to(position, layer, 128);

설정 절차와 추가 예시는 ESPHome 연동 문서에 있다. ESPHome 이외의 장치에서도 사용할 수 있도록 펌웨어는 위치와 상태를 읽고, 위치 이동을 명령하고, 햅틱 피드백을 설정하는 I2C 인터페이스를 제공한다.

준비물과 배선

필요한 것은 60mm 모터 구동 페이더, FaderBuddy PCB, ESPHome 호환 ESP32 보드다. 페이더 예시로 Behringer MF60T가 있으며, 음악·영상 장비 판매점에서 교체용 5개 묶음으로 판매된다. 제품은 Soundwell이 제조하는 것으로 보인다고 안내한다. Sweetwater 또는 Amazon에서 구할 수 있다.

PCB는 미국에서 Bezek Labs에서 조립된 제품으로 구매하거나 설계 파일을 이용해 JLCPCB에서 제작·조립할 수 있다. 직접 제작하는 경우 PCB 제작 안내를 참고한다. ESP32 보드는 I2C에 사용할 GPIO 핀 두 개가 비어 있어야 한다. 직접 제작한 보드는 사용 전에 펌웨어를 기록해야 하며, 방법은 펌웨어 업데이트 안내에 있다.

연결 핀의 역할은 다음과 같다.

핀설명
Vmot모터 전원. 5V 권장
Vio마이크로컨트롤러 입출력 전원. 3.3V 또는 5V이며 SDA/SCL I2C 버스 전압과 일치해야 함
GND접지 기준
SDAI2C 데이터. FaderBuddy에 풀업 저항 포함
SCLI2C 클록. FaderBuddy에 풀업 저항 포함

ESP32 같은 3.3V 마이크로컨트롤러의 일반적인 배선은 호스트와 FaderBuddy 사이에 전선 다섯 개를 연결하는 방식이다. 5V는 모터에, 3.3V는 로직에 공급한다.

호스트FaderBuddy
5VVmot
3.3VVio
GNDGND
SDASDA
SCLSCL

STEMMA QT 커넥터가 있는 마이크로컨트롤러에서는 STEMMA QT로 연결하고, 모터 전원용 5V 전선을 추가로 연결한다. 추가 페이더는 핀 헤더로 직접 이어 붙일 수 있어 별도 전선이 필요 없다. STEMMA QT 케이블로 보드를 연결할 수도 있지만, 이 경우 보드 사이에도 5V 전선을 추가해야 한다.

5V 입출력과 5V STEMMA QT 커넥터를 지원하는 장치(예: 5V 입출력으로 설정하도록 납땜 점퍼를 연결한 MCP2221)를 사용하는 경우에는 각 FaderBuddy의 VMOT ↔ VIO 납땜 브리지를 연결해야 한다. 이 브리지를 연결한 상태로 나중에 3.3V 입출력 환경에서 사용하면 5V VMOT 전원이 호스트의 3.3V 입출력 전원에 연결돼 다른 장치를 손상시킬 수 있으므로 주의해야 한다.

FaderBuddy의 기본 I2C 주소는 0x20이다. 같은 버스에 FaderBuddy를 여러 개 연결하거나 해당 주소를 쓰는 장치가 이미 있으면 PCB의 납땜 점퍼 패드 세 개를 연결해 주소를 바꿀 수 있다.

주소A2A1A0
0x20[ ][ ][ ]
0x21[ ][ ][█]
0x22[ ][█][ ]
0x23[ ][█][█]
0x24[█][ ][ ]
0x25[█][ ][█]
0x26[█][█][ ]
0x27[█][█][█]

보정과 하드웨어

FaderBuddy를 모터 페이더에 장착해 Home Assistant에 연결한 뒤 자체 보정을 실행해 모터 제어를 조정한다. 기본 프로필이 제공되지만, 페이더가 매끄럽게 움직이지 않거나 위치에 잘 안착하지 않을 수 있다.

Home Assistant에서 보정하려면 설정의 기기 및 서비스에서 ESPHome을 열고 해당 기기를 선택한다. Configuration에서 Self Calibration을 누른 뒤, 페이더가 이동 범위 양 끝까지 움직였다가 돌아오는 동안 손을 대지 않는다. 몇 초 걸린다. Diagnostic 아래의 Status 센서가 calibration succeeded로 표시되는지 확인한다. 실패하면 상태에 이유가 표시된다.

보정 결과는 FaderBuddy의 플래시 메모리에 저장되므로 보드마다 한 번만 실행하면 된다. 보드를 다른 페이더에 옮기거나 무거운 페이더 캡을 추가하는 등 큰 변경을 했다면 다시 보정한다.

미국에서 바로 사용할 수 있는 선택지는 펌웨어가 이미 기록되고 하드웨어 시험을 거친 조립 PCB를 Bezek Labs 매장에서 구매하는 것이다. 직접 제작하려면 PCB 제작 안내를 참고한다. 보드에는 ATtiny1616 마이크로컨트롤러와 UPDI 프로그래밍 인터페이스, DRV8837 모터 드라이버, 포텐셔미터 위치 피드백, 정전식 터치 감지, 전원·디버그 상태 LED가 포함된다. 3.3V 또는 5V 로직을 지원한다. 3.3V 로직에서는 모터 전원으로 5V가 별도로 필요하고, 5V 로직에서는 Vio와 Vmot를 합쳐 전선 네 개만 사용할 수 있다. I2C용 JST 커넥터는 QWIIC/STEMMA QT와 호환되며, 인접 보드를 직접 연결하는 0.1인치 핀 헤더도 제공한다. PCB는 JLCPCB 조립에 맞춘 소형 설계다.

터치 감지 기능은 필수는 아니며, 터치 기능이 없는 페이더 캡으로도 작동한다. 터치 감지는 이동 중 사용자가 페이더를 만지면 모터 움직임을 취소해 사용자의 손과 모터가 서로 밀어내는 상황을 방지한다. 페이더를 움직이지 않고 만지는 것을 감지하거나 두 번 두드리는 동작을 지원하는 데도 쓸 수 있다.

시판 터치 감지 페이더 캡은 구하기 어렵다. Soundwell/Behringer 페이더는 비교적 표준적인 8mm × 1.2mm 페이더 스템을 사용하지만, 시중의 페이더 캡 대부분은 전도성이 없는 플라스틱이거나 중고 상태의 고가 개별 교체 부품으로만 판매된다. 전도성 PLA 필라멘트로 직접 3D 프린트할 수 있으며, 전도성 PLA의 높은 저항은 터치 감지 표면을 만드는 데 적합하다고 안내한다. 직접 출력하지 않으려면 Bezek Labs 매장에서 2색 단일 부품 전도성 페이더 캡을 구매할 수 있다.

햅틱과 레이어

펌웨어는 폐루프 모터 제어를 처리하며, 햅틱 피드백 모드를 설정할 수 있다. 디텐트가 없는 부드러운 동작, 0%와 100%에 붙는 자기식 끝점, 1~15개 위치를 지정하는 디텐트를 지원한다.

FaderBuddy는 최대 8개의 가상 레이어를 설정할 수 있다. 레이어를 이용하면 하나의 페이더로 조명 밝기와 팬 속도처럼 여러 기능을 다룰 수 있다. 호스트는 명령 하나로 레이어를 바꾸며, 전환하면 해당 레이어의 이전 페이더 위치와 햅틱 설정이 적용된다. 자세한 내용은 레이어 및 I2C 프로토콜 안내를 참고한다.

추가 문서에는 ESPHome 설정과 API, 레이어 구조와 구현, MF60T 페이더를 낮은 공간에 맞게 개조하는 선택적 방법, PCB 주문과 조립, UPDI를 이용한 마이크로컨트롤러 펌웨어 업로드, ATtiny1616 부트 영역의 사용자 지정 부트로더를 통한 I2C 펌웨어 업데이트가 있다.

저장소에는 KiCad PCB 설계 파일, PlatformIO 기반 ATtiny1616 펌웨어, ESPHome 사용자 지정 구성 요소와 예시, 소프트웨어 도구와 데모, ESP32 기반 생산 시험 장치, PCB 내보내기용 CI 스크립트가 들어 있다. production_tools/programAndTest에는 모터 페이더 보드의 생산 프로그래밍과 품질 관리에 쓰는 지원되지 않는 코드가 포함된다.

FaderBuddy는 Apache 2.0 라이선스로 배포된다. 상업용 제품을 포함해 사용·수정·배포할 수 있지만, 프로젝트에 대한 저작자 표시를 포함하고 변경 사항을 밝혀야 한다. 수정 사항을 공개할 의무는 없지만 원작이 자신의 것이라고 주장하거나 프로젝트 이름·브랜드를 제품 보증에 이용할 수는 없다.