Python Mechanical TV Remote


ESP32-S2 development board on a custom PCB with Kailh Choc mechanical switches. The remote checks a Google Firebase web service to dynamically update the Python code ran when each button is pressed, released, or held. This code can perform HTTP requests to control a Roku TV over the local network, using the Roku ECP, among other possibilities.

Initial Prototype

Codenamed Inky, the original design for this project involved overlaying a flexible eink display over a matrix of surface mounted buttons. The screen could be updated to represent the current layout, the user would press a button on the display, effectively pressing the physical button behind.

I was extremely interested in this concept as it allowed for a dynamic remote that still had a distinct tactile response, unlike an implementation using a capacitive touch panel.

Unfortunatley the flexible displays were far too delicate for this use case, a couple of presses would result in dead pixels on the button, a hard enough press would kill the display entirely.

Final Version

After the failure of my initial concept, I decided to simplify the idea to just use a grid of high quality, low profile, mechanical switches. I designed and ordered a custom PCB through PCBWay.

Need a problem solver?

Contact me with any opportunities at 778-836-5896, , or reach me on LinkedIn

Grab a resume