Cheap DIY Stream deck alternative

Cheap DIY Stream deck alternative

a year ago, March 29, 2023
Reading time: 5 mins

I had this on my to-do list for years now. I finally decided to do it.

After doing some google, I found FreeTouchDeck, which is an open-source project maintained by Dustin Watts.

This project was a lifesaver as it was a ready-to-use project all you need was compatible hardware. This project saved me hours/days or probably months of writing code.

So let’s begin with what hardware I used, it is possible to build it from a wide range of displays. The project is based on the TFT_eSPI library. You will need to find one that is supported by TFT_eSPI and then configure pins and you are good to go.

I used following

  1. 2.4in TFT LCD using ILI9341 driver with resistive touch
  2. ESP32-WROOM-32 bare module
  3. ESP32 breakout board
  4. CH340 Programmer
Cheap DIY Stream deck alternative
TFT LCD Display with touch
Cheap DIY Stream deck alternative
ESP32 breakout Board
Cheap DIY Stream deck alternative
ESP32-WROOM-32 Module
Cheap DIY Stream deck alternative
CH340 Flexy pin programmer for ESP32 ESP8266 and ESP-1

Before using the ESP32 module I was using the ESP32-S3-WROOM-1 module which did not work with this project. The problem seems to be with the compatibility of the BLE Keyboard library that is being used with the ESP32-S3 module.

And ESP32-S3 I had was not letting me use WIFI, failing with Brownout detection.

So, I ended up using the old ESP32-WROOM-32 Module.

First of all, I had to solder the ESP32 Module onto the breakout board. It was a challenging task as it was my first attempt to solder an smd component on a PCB. I first tried using a cheap hot plate that I just ordered from AliExpress.

Cheap DIY Stream deck alternative
Cheap DIY Hot plate reflow setup

You can read more about the Cheap Diy Hot plate Reflow Project Here

The temperature could go too high very quick and I damaged few relays in the process as the relay could only tolerate 2Amps max, the heater obviously drew way more.

So after failing reflow, I just cleaned up the same PCB and started hand soldering the Module.

Cheap DIY Stream deck alternative
Soldering ESP32 module on the breakout board

The soldering process was really hard, because the pads were too close to each other and I did not have a microscope to help me. So I ordered one.

Cheap DIY Stream deck alternative
13 Euro, 1600x digital microscope

I found a cheap 13 Euro digital microscope on AliExpress with 1600x zoom. It was very handy, you can watch me fix the soldering on the Module on this YouTube video

Microscope test

Once the module was soldered I added a header on one end of the PCB where 3v3, Tx, Rx and GND pins were. So I could easily connect it to my programmer.

After this I started soldering some cables (24AWG, single core copper, tinned) to a 1×14 Female header. This is to connect the TFT LCD display that came with male header of same size pre soldered.

After that I soldered the wires to respective pins on my PCB like following:

  • TFT_MISO -> 33
  • TFT_MOSI -> 27
  • TFT_SCLK -> 12
  • TFT_CS -> 22
  • TFT_RST -> 32
  • TFT_DC -> 25
  • TFT_BL -> 13
  • TOUCH_CS -> 26

After connecting the LCD to the header, I was now ready to program our ESP32, I connected 3v3, Tx, Rx and GND pin to respective pins on the programmer and connected to my computer. Opened the sketch.
Uploaded the code as is and the Program magically worked. One problem though. The touch did not work, that is because I had not selected the Interrupt pin for Touch. I changed it to 27 as that was what I used to solder it.

#define touchInterruptPin GPIO_NUM_27

The cheap DIY Stream deck alternative was ready to be used. I additionally used the box that the LCD came in as an enclosure, how cheap can you be? 😀

Cheap DIY Stream deck alternative
FreeTouchDeck in Action Video

Update: Added Air mouse feature to my FreeTouchDeck

Video demo of Air mouse on a FreeTouchDeck
DIY Auto sleep feature for a Cheap Multimeter (without a microcontroller)
Serverless CI/CD NodeJs Engine incompatibility
© 2024 Anil Maharjan