1. 아두이노IDE에 ESP32 개발환경 구축방법
1. 상단 메뉴에 File - Preference - Additional boards manager 에 아래 링크 추가
https://dl.espressif.com/dl/package_esp32_index.json
2. Boards Manager에 esp 검색하면 esp32에 최신버전(2025년도 5월7일 기준 3.2.0) Install, 인스톨 시간 10분이상 필요
3. Board - ESP32 Dev Module 선택한다.

개발환경 구축이 완료되었는데, 간단한 LED점멸 예제를 업로드하여 잘 작동하는지 확인해보자.
ESP-WROOM-32의 내부 LED는 GPIO 2번핀에 연결되어 있다.
2. ESP-WROOM-32 내부 LED 점멸 예제
int LED_BUILTIN = 2;
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}
3. ESP WROOM 32 블루투스 키보드 라이브러리 추가
최신 아두이노 버젼에는 인터넷에 돌아다니는 라이브러리가 컴파일이 안된다.
기존 라이브러리 : https://github.com/T-vK/ESP32-BLE-Keyboard
- BleKeyboard 라이브러리가 내부적으로 std::string 타입을 사용했는데
- ESP32 Arduino Core 3.0 이상에서는 BLEDevice::init()이나 BLECharacteristic::setValue()가 String 타입만 받게 변경
즉, std::string을 String으로 바꿔야함
- 예전 Arduino Core 버전에서는 std::string도 허용했지만, 최신 버전(특히 3.0.0, 3.1.0, 3.2.0 이후)에서는 엄격하게 String 객체만 허용
뭔말인지 나도 자세히는 잘 모른다. 아래 수정된 라이브러리로 해결하자.
변경된 블루투스 키보드 라이브러리 다운로드
4. ESP-WROOM-32 블루투스 키보드 테스트 회로

회로 간소화를 위해 Pull-up 저항 스위치 회로를 만들고, 코딩에서 Input Pullup 기능을 사용할 것이다.
5. ESP-WROOM-32 블루투스 키보드 예제
#include <BleKeyboard.h>
BleKeyboard btKeyboard;
const int BUTTON_PIN = 4; // D4 Switch
void setup() {
Serial.begin(115200);
pinMode(BUTTON_PIN, INPUT_PULLUP); //Input Pullup
btKeyboard.begin();
Serial.println("Waiting for BLE connection...");
}
void loop() {
if (btKeyboard.isConnected()) { // if Bluetooth is connected
if (digitalRead(BUTTON_PIN) == LOW) { // PULLUP = LOW
btKeyboard.press('a'); // 'a' Key Press
delay(100);
btKeyboard.releaseAll(); //
delay(500);
}
} else {
Serial.println("Not connected yet...");
delay(1000);
}
}
6. 추가
추가적으로 블루투스 장치 연결할때 ESP32 Keyboard 로 잡히는것을 원하지 않을 수 있다. 제품이름처럼 Keychron K8, Leopold FC900R 등 표시되는게 하는 방법은 객체생성 방식을 아래처럼 바꾸면된다.
기본 코드
BleKeyboard bleKeyboard;
수정 코드
BleKeyboard bleKeyboard("MyCustomKeyboard", "MyBrand", 75);
아래와 같이 파라미터값을 넣어줄 수 있다.
BleKeyboard bleKeyboard("MyKeyboard"); // 키보드 이름
BleKeyboard bleKeyboard("MyKeyboard", "MyBrand"); // 키보드이름, 제조사
BleKeyboard bleKeyboard("MyKeyboard", "MyBrand", 95); // 키보드 이름, 제조사, 배터리

필자는 위 그림처럼 객체를 생성하였더니

이처럼 디바이스 이름이 ESP32 Keyboard 에서 testkeyboard로 변경된 것을 확인할 수 있었다.
이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
'키보드 DIY 프로젝트' 카테고리의 다른 글
| 블루투스 42KEY 키보드 (with ESP-WROOM-32 Keyboard, 3D프린팅) (0) | 2025.10.20 |
|---|---|
| (#3) 9KEY 키보드 제작 (9Keys + 1Knob) (3) | 2024.10.24 |
| (#2) 3D프린터로 볼륨컨트롤러 DIY (3D프린터,아두이노) (0) | 2024.10.02 |
| (#1) (자작) 기계식키보드만들기 - 1Key 부터 빌드업 (with PCB, 3D Printing, Arduino, Atmega32u4) (4) | 2024.09.10 |