BlueBuzz is an ESP32-based controller that bridges Bluetooth Gamepads, Keyboards, and Mice to MSX computers via GPIO pins. It supports multiple input modes and can be updated over-the-air (OTA).
- Multi-Mode Support:
- Gamepad mode with turbo buttons
- Keyboard mode for MSX keyboard emulation
- Mouse mode for MSX mouse support
- Bluetooth Connectivity:
- Automatic pairing with Bluetooth controllers
- Support for multiple controller types
- OTA Updates: Over-the-air firmware updates via web interface
- Rumble Feedback: Vibration feedback for gamepad input
- LED Indicators: Visual status feedback
- ESP32 development board
- Bluetooth controller (compatible with Bluepad32)
- MSX computer with GPIO expansion capability
- 10kΩ pull-up resistors for buttons (if needed)
| Function | GPIO |
|---|---|
| UP Button | 14 |
| DOWN Button | 26 |
| LEFT Button | 33 |
| RIGHT Button | 32 |
| A Button | 27 |
| B Button | 25 |
| OUT Signal | 17 |
| LED Indicator | 18 |
- Supports standard gamepad controls
- Turbo buttons (L1/R1) for adjustable rapid fire
- D-Pad and analog stick support
- Emulates MSX keyboard input
- Arrow keys and WASD for movement
- N/Space/Enter for action buttons
- M/Esc for secondary actions
- Converts controller mouse movements to MSX mouse input
- Button mapping for left/right/middle clicks
- Scroll wheel support
-
Install required libraries:
- ESP32 Board Support
- Bluepad32
- ESPAsyncWebServer
- ElegantOTA
-
Upload firmware to ESP32 board
-
Connect to WiFi network "BlueBuzz" (default password: none)
-
Access OTA update interface at
http://192.168.1.1/update
- Power on BlueBuzz
- Press and hold SELECT+START on controller for 3 seconds to enter pairing mode
- Pair with your Bluetooth controller
- Pairing Mode: SELECT + START (up)
- OTA Update: SELECT + START (down)
The device uses a state machine to manage different operational modes:
- INIT - System initialization
- PAIRING - Bluetooth pairing mode
- CONNECTED - Waiting for controller connection
- GAMEPAD - Gamepad input processing
- KEYBOARD - Keyboard input processing
- MOUSE - Mouse input processing
- OTA - Over-the-air update mode
- ERROR - Error handling
- Gamepad: Direct button mapping with turbo functionality
- Keyboard: Key mapping to MSX keyboard codes
- Mouse: Relative movement conversion to MSX mouse commands
- CPU frequency set to 80MHz for stability
- Efficient power usage in idle states
-
Controller not connecting:
- Ensure device is in pairing mode (LED blinking)
- Check Bluetooth compatibility
- Try forgetting previous connections
-
No input detection:
- Verify pin connections
- Confirm controller is properly paired
- Check MSX GPIO configuration
-
OTA Update fails:
- Ensure stable WiFi connection
- Verify correct firmware file
- Check available storage space
This project is licensed under the GNU General Public License v3.0 (GPL-3.0).
-
Uses Bluepad32 library for Bluetooth controller support
-
ESPAsyncWebServer and ElegantOTA for OTA updates
-
Inspired by MSX computing community projects
