by Dan » 17 Jan 2026, 14:39
I have never tried this with a wheelchair but if you're crazy enough to try it I think it would work. You could program an ESP32 microcontroller to replace the buttons on the wheelchair joystick. Or use an ESP32 to control relays. ESP32 home is part of home assistant, you can assign a name to any button or relay like "Wheelchair Tilt". You can then also activate any button or relay by voice. You can add timers the any button.
All the home assistant software can run on a tiny, low power consumption, Raspberry PI. Your wheelchair can be its own network, you can, if you wish to, hotspot your phone for internet access if you like but Home assistant can run 100% offline also with its built in voice assistant. But to use something like Apple's Siri you would have to be online. You can also access home assistant using a web browser from anywhere. Home assistant can be setup with its own domain name.
ESP32 is versatile for this because it's low-cost, has built-in Wi-Fi/Bluetooth, and integrates seamlessly with Home Assistant (HA) via ESPHome.
Replacing buttons with direct ESP32 interfacing or using relays for safer, non-invasive control. This assumes basic electronics knowledge; if you're modifying a wheelchair, consult a professional to ensure safety and compliance with any medical standards.
Option 1:
Direct ESP32 Integration to Replace Buttons This involves wiring the ESP32 to mimic button presses on the joystick. You'd essentially "hijack" the button signals.Hardware Setup:Get an ESP32 board (e.g., ESP32-DevKitC).
Identify the joystick's button pins: Use a multimeter to find which wires/pins correspond to each button (e.g., tilt up/down). Wheelchair joysticks often use simple switch closures (pulling a pin to ground). Connect ESP32 GPIO pins to these: For each button, wire a GPIO as an output. When you want to "press" the button, set the GPIO low (or high, depending on the logic).
Add optocouplers or transistors if needed to isolate circuits and prevent damage.
Firmware with ESPHome:
Install ESPHome (part of HA ecosystem) on your ESP32. It's YAML-based and handles OTA updates.
Example ESPHome config YAML (flash this to the ESP32 via USB):
esphome:
name: wheelchair_controller
esp32:
board: esp32dev
wifi:
ssid: "YourSSID"
password: "YourPassword"
api: # Enables HA integration
logger:
# Define binary sensors or switches for buttons
switch:
- platform: gpio
name: "Wheelchair Tilt Up"
pin: GPIO25 # Choose your pin
id: tilt_up
inverted: true # Adjust based on logic
- platform: gpio
name: "Wheelchair Tilt Down"
pin: GPIO26
id: tilt_down
inverted: true
# Optional: Add a button to test
button:
- platform: restart
name: "Restart ESP32"
Upload this via ESPHome dashboard in HA. Once connected, these "switches" appear in HA as entities (e.g., switch.wheelchair_tilt_up).
Voice Activation:
In HA, set up voice assistants like Google Assistant, Alexa, or HA's built-in (via Nabu Casa or Rhasspy).
Create automations: E.g., voice command "Tilt wheelchair up" triggers the switch.wheelchair_tilt_up entity to turn on for 0.5 seconds (to simulate a button press).
Example HA automation YAML:
automation:
- alias: Voice Tilt Up
trigger:
- platform: event
event_type: google_assistant_command # Or your voice platform
event_data:
command: "tilt wheelchair up"
action:
- service: switch.turn_on
entity_id: switch.wheelchair_tilt_up
- delay: '00:00:00.5'
- service: switch.turn_off
entity_id: switch.wheelchair_tilt_up
Option 2:
Using ESP32 to Control Relays. This is safer for beginners—relays act as isolated switches, avoiding direct wiring to the joystick's internals.Hardware Setup:Use a relay module (e.g., 4-channel 5V relay board compatible with ESP32). Wire relays in parallel with the joystick buttons: Each relay closes the circuit for a button when activated.
Connect relay inputs to ESP32 GPIOs (e.g., GPIO 25 for tilt up relay).
Firmware with ESPHome:Similar to above, but define relays as switches.
esphome:
name: wheelchair_relay
esp32:
board: esp32dev
wifi: [...] # Same as above
api:
logger:
switch:
- platform: gpio
name: "Wheelchair Tilt Up Relay"
pin: GPIO25
id: tilt_up_relay
- platform: gpio
name: "Wheelchair Tilt Down Relay"
pin: GPIO26
id: tilt_down_relay
The relays will click on/off to simulate button presses.
Voice Activation:
Identical to Option 1—use HA entities for the relays in automations.
Additional TipsSafety First:
Wheelchairs are critical devices. Test thoroughly on a bench setup before installing. Add fail-safes like watchdog timers in ESPHome to reset if the ESP32 hangs.
Power: Power the ESP32 from the wheelchair's battery (use a buck converter for 3.3V) or a separate USB battery.
Expansion: Add sensors (e.g., IMU for auto-leveling) or Bluetooth for app control.
Debugging: Use the ESPHome logs in HA to monitor. If you run into code issues, the code_execution tool could help simulate snippets, but this should get you started.
Resources: Check the ESPHome docs for more configs, or communities like Reddit's r/homeassistant for wheelchair-specific mods.
I'm a dude playing a dude disguised as another dude.