메뉴 전체보기

회원메뉴

ESP32-C3 SuperMini를 이용한 MyWhoosh 가상 변속기 > 게시판

본문 바로가기

쇼핑몰 검색

NO. 3048
제목 : ESP32-C3 SuperMini를 이용한 MyWhoosh 가상 변속기
2026-08-21 10:34

소개: ESP32-C3 SuperMini를 이용한 MyWhoosh 가상 변속기


소개: ESP32-C3 SuperMini를 이용한 MyWhoosh 가상 변속기


이 가이드는 'i'(고단 변속) 키와 'k'(저단 변속) 키를 전송하는 무선 Bluetooth 키보드를 제작하는 방법을 보여 줍니다. 이는 실내 사이클링 앱 MyWhoosh에서 기어 변속에 사용하는 표준 방식입니다. 이 시스템은 iPad와 Windows PC에서 사용하도록 최적화되었습니다.


2025년에 ESP8266 기반의 가상 변속기를 만들었습니다. 이 프로젝트는 Instructables에도 게시되어 있습니다: "MyWhoosh Virtual Shifting With ESP8266" (https://www.instructables.com/MyWhoosh-Virtual-Shifting-With-ESP8266/). 꽤 잘 작동했지만 Windows에서만 사용할 수 있었습니다. 그런데 지난 크리스마스에 새 iPad를 장만했고, 이제는 MyWhoosh를 iPad에서 사용하는 것이 더 좋습니다. MyWhoosh와 함께 가끔 실내 사이클링용 Biketerra도 사용합니다. ESP32 SuperMini 변속기는 Biketerra에서도 작동합니다.




STEP 1. 준비물


1. ESP32-C3 SuperMini 1개 (USB-C가 탑재된 초소형 마이크로컨트롤러)

2. 푸시 버튼 스위치 2개 (일반적인 평상시 열림 방식)

3. 가는 케이블 (예: 연선 또는 벨 와이어)

4. 납땜 인두 및 납

5. USB-C 케이블 1개 (보조 배터리 또는 USB 포트를 통해 ESP32-C3 SuperMini에 전원을 공급하기 위한 용도)




STEP 2. 배선도(Y 구성)


배선도(Y 구성)


ESP32-C3 SuperMini는 매우 작습니다. 하나뿐인 GND 핀에 여러 전선을 납땜해야 하는 번거로움을 피하기 위해 버스바(Y 배선)를 사용합니다.

GPIO 4와 5를 의도적으로 사용하는 이유는 GPIO 8과 9 같은 다른 핀에는 내부 부팅 기능이 있어 칩의 시작을 방해할 수 있기 때문입니다.


1. 접지(GND): ESP32의 GND 핀에 전선을 납땜합니다. 첫 번째 버튼까지 연결한 다음, 그곳에서 점퍼 와이어를 사용해 두 번째 버튼에 연결합니다.

2. UP('i'): GPIO 4에서 "Up" 버튼의 열린 접점으로 전선을 납땜합니다.

3. 저단 변속('k'): GPIO 5에서 "Down Shift" 버튼의 열린 접점으로 전선을 납땜합니다.




STEP 3. 소프트웨어 및 Arduino IDE 설정(단계별 안내)


Arduino IDE를 처음 사용한다면 먼저 공식 웹사이트(arduino.cc)에서 최신 버전을 다운로드하여 설치합니다. 그런 다음 다음 단계를 따르세요:


단계 A: IDE에서 ESP32-C3 활성화

기본적으로 Arduino IDE는 "표준" Arduino 보드만 인식합니다. 먼저 ESP32-C3가 무엇인지 IDE에 알려 줘야 합니다.


1. Arduino IDE를 엽니다.

2. 메뉴에서 File -> Preferences로 이동합니다(macOS에서는 Arduino IDE -> Settings).

3. "Additional Board Manager URLs" 필드를 찾아 여기에 다음 링크를 정확히 붙여 넣습니다:


https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json


4. "OK"를 클릭합니다.

5. 이제 툴바의 가장 왼쪽에 있는 "Board Manager" 아이콘(위에서 두 번째 아이콘이며 작은 회로 기판 모양)을 클릭합니다.

6. 상단 검색창에 `esp32`를 입력합니다.

7. "esp32 by Espressif Systems" 항목을 찾아 "Install"을 클릭합니다. 1~2분 정도 걸릴 수 있습니다.


단계 B: Bluetooth 라이브러리 설치

코드가 Bluetooth 키보드로 작동하는 방법을 알 수 있도록 확장 기능 두 가지를 다운로드합니다.


1. 사이드바 가장 왼쪽에 있는 "Library Manager" 아이콘(위에서 세 번째 아이콘이며 책 세 권 모양)을 클릭합니다.

2. "NimBLE-Arduino"(*h2zero* 제작)를 검색합니다. "Install"을 클릭합니다. (이 라이브러리는 Bluetooth 코드가 칩에 들어갈 만큼 작게 유지되도록 합니다.)

3. "ESP32-BLE-Keyboard"(*T-vK* 제작)를 검색합니다. "Install"을 클릭합니다.

처음 설정할 때 중요: IDE에서 "Dependencies"도 설치할지 묻는 경우 항상 "Install all"을 클릭합니다.


단계 C: 도구 설정(가장 중요한 부분!)

이제 USB-C 케이블로 ESP32-C3 SuperMini를 PC에 연결합니다. 다음으로 IDE가 칩과 정확히 어떤 방식으로 통신할지 설정해야 합니다.


상단의 "Tools" 메뉴로 이동하여 다음 설정을 *정확히* 표시된 대로 구성합니다:


"Board:" -> `ESP32` -> `ESP32C3 Dev Module`

"Port:" SuperMini가 연결된 COM 포트를 선택합니다(예: Windows에서는 `COM3`, Mac에서는 `/dev/cu.usbmodem...`).

"USB CDC On Boot:" -> `Enabled`

⚠️ "매우 중요!" 이 항목을 *Enabled*로 설정하지 않으면 최초 플래싱 과정 후 칩이 USB 식별 정보를 잃게 됩니다. 이후 업데이트를 업로드할 수 없고 Serial Monitor에도 아무런 출력이 표시되지 않습니다.

"Partition Scheme:" -> `Minimal SPIFFS (Large APPS with OTA)` 또는 `Huge APP`

⚠️ "이 설정도 매우 중요합니다!" Bluetooth 기능은 매우 큽니다. 기본 설정을 사용하면 칩의 메모리가 즉시 가득 차 업로드가 빨간색 오류 메시지와 함께 실패합니다. 이 설정은 프로그램에 사용할 수 있는 공간을 늘려 줍니다.

"Flash Mode:" -> `QIO`


단계 D: 코드 복사 및 업로드


1. Arduino IDE의 흰색 텍스트 입력란에 현재 있는 내용을 모두 삭제합니다.

2. 전체 프로그램 코드(단계 4)를 복사하여 그곳에 붙여 넣습니다.

3. 왼쪽 상단의 "checkmark icon"(Verify)을 클릭합니다. 이제 IDE가 오류가 없는지 잠시 확인합니다.

4. 바로 옆에 있는 "right-arrow icon"(Upload)을 클릭합니다.


이제 하단의 검은색 막대에 진행 상황이 표시됩니다. "Upload successful"(또는 *Done uploading*)이 표시되면 SuperMini의 작은 파란색 LED가 잠시 깜박입니다. 이 순간부터 변속기가 신호를 전송합니다!




STEP 4. Arduino 코드


이 코드를 Arduino IDE에 복사한 다음 SuperMini에 플래시하세요:


#include <NimBLEDevice.h>
#include <BleKeyboard.h>

// Shifter Name, Manufacturer, Battery Level (100%)
BleKeyboard bleKeyboard("MyWhoosh C3", "DIY-Maker", 100);

// Pin definitions for the SuperMini
const int pinUp = 4; // Button for shifting UP ('i')
const int pinDown = 5; // Button for shifting DOWN ('k')
const int ledPin = 8; // Internal blue LED of the SuperMini

void setup() {
// Important for the C3 Serial Monitor via USB-C
Serial.begin(115200);
// Enables the internal pull-up resistors (saves external resistors).
pinMode(pinUp, INPUT_PULLUP);
pinMode(pinDown, INPUT_PULLUP);
pinMode(ledPin, OUTPUT);
// Brief LED test at startup (Note: The onboard LED is often active-low.)
digitalWrite(ledPin, LOW);
delay(500);
digitalWrite(ledPin, HIGH);

Serial.println("Start NimBLE Configuration...");

// Set the transmit power to maximum for a stable connection.
NimBLEDevice::init("MyWhoosh C3");
NimBLEDevice::setPower(ESP_PWR_LVL_P9);

// Starts the Bluetooth keyboard service.
bleKeyboard.begin();
Serial.println("Shifter is ready and waiting for pairing..");
}

void loop() {
// Status check every 5 seconds in the Serial Monitor
static unsigned long lastCheck = 0;
if (millis() - lastCheck > 5000) {
if (bleKeyboard.isConnected()) {
Serial.println("Status: Connected!");
} else {
Serial.println("Status: Waiting for Bluetooth pairing...");
}
lastCheck = millis();
}

// Logic for UP Button
if (digitalRead(pinUp) == LOW) {
digitalWrite(ledPin, LOW); // Status-LED on
Serial.println("Click: UP (i)");
if (bleKeyboard.isConnected()) {
bleKeyboard.print('i');
}
delay(300); // 300ms Debounce Time (prevents unwanted double jumps)
digitalWrite(ledPin, HIGH); // Status-LED off
}

// Logic for DOWN Button
if (digitalRead(pinDown) == LOW) {
digitalWrite(ledPin, LOW); // Status-LED on
Serial.println("Click: DOWN (k)");
if (bleKeyboard.isConnected()) {
bleKeyboard.print('k');
}
delay(300); // Debouncing
digitalWrite(ledPin, HIGH); // Status-LED off
}
}




STEP 5. 설정 및 실용적인 팁


설정 및 실용적인 팁


1. 페어링: iPad 또는 Windows PC에서 Bluetooth 설정을 엽니다. 새 장치를 검색합니다. 변속기는 "MyWhoosh C3"(유형: Keyboard)로 표시됩니다. 한 번 페어링하면 완료입니다.

2. 핸들바 마감: 부식 방지를 위해 핫 글루나 열수축 튜브를 약간 사용하여 운동 중 땀으로부터 SuperMini의 섬세한 납땜 접합부를 보호하세요.

3. 조정: 기어 변속이 너무 느리거나 의도치 않게 기어가 건너뛰는 경우 코드 내 `delay(300);` 줄의 값을 조정할 수 있습니다(예: 더 빠른 변속을 위해 200으로 변경).


Android 사용자 참고 사항: Android 운영체제(예: Samsung Galaxy 기기)는 BLE 키보드에 대해 보안 제한이 매우 강한 경우가 많습니다. 스마트폰에서 변속기를 감지하지 못한다면 문제는 하드웨어가 아니라 Android Bluetooth 스택에 있습니다. iPad와 Windows에서는 이 설정이 완벽하게 작동합니다!


직접 버전을 제작하는 모든 분들께: 여러분의 콕핏에서 가상으로 기어를 변속하며 즐거운 시간 보내세요!


원문: https://www.instructables.com/MyWhoosh-Virtual-Shifting-With-ESP32-C3-SuperMini/

좋아요 0
게시판

회사명 공방유니언 주소 각 공방 주소 참조
사업자 등록번호 0000 대표 공방유니언 전화 019-60105846 팩스 0000 이메일 gongbangunion@gmail.com
통신판매업신고번호 0000 개인정보관리책임자 공방유니언
Copyright © 2017 공방유니언. All Rights Reserved.