HID Proxy Voodoo

A small device to help people build the things that don’t exist yet

There is a frustrating category of inventions that nobody builds.

Not because they are bad ideas.

Not because they are impossible.

Simply because the number of people who need them is too small.

If you are making a product for millions of people, development costs can be spread across a large market.

But what if the thing you want to build is for a few hundred people?

Or ten?

Or one?

This is especially true in accessibility.

A person may need a very specific input device because of a particular disability, a particular activity, or simply because the commercially available options do not fit their needs.

The problem is not always engineering.

Sometimes the problem is that every single one of these devices starts from zero.

Someone has to solve USB.

Someone has to write firmware.

Someone has to design electronics.

Someone has to build prototypes.

And all of that happens before anyone even knows whether the idea works.

I think this is backwards.


What if experimenting was cheap?

Imagine you have an idea for a completely new controller.

Not a normal keyboard.

Not a normal mouse.

Something that does not exist.

Maybe it is a wooden mechanism with a few switches.

Maybe it uses a potentiometer.

Maybe it is built from parts found in a workshop.

Maybe it looks ridiculous.

That is exactly how many good ideas start.

A piece of wood.

A few screws.

A sensor.

A crazy thought.

The problem is that turning that crazy thought into something a computer understands usually requires a lot of knowledge that has nothing to do with the actual invention.

You shouldn’t need to become a USB expert just to answer a simple question:

“Does this idea work?”


The idea behind the HID Proxy

The concept is simple:

Create a hardware platform that sits between the physical world and the computer.

A device that understands human input devices.

A device that can combine, translate, and create new inputs.

Instead of building a new USB device from scratch every time, use a flexible platform that already handles the difficult parts.

The first version is based around ESP32-S3 and STM32 microcontrollers and is designed around three main ideas:

1. Accept existing HID devices

Connect things like:

  • keyboards
  • mice
  • game controllers
  • joysticks
  • steering wheels
  • pedals
  • switches

and use them as building blocks.

2. Create new HID devices

Take simple electronics:

  • buttons
  • potentiometers
  • sensors
  • custom mechanisms

and turn them into devices the computer already understands.

A homemade controller should not require a homemade USB stack.

3. Manipulate and combine inputs

Sometimes the interesting device is not a single input.

Maybe a joystick and some buttons need to become a completely different controller.

Maybe two devices need to work together.

Maybe a non-standard interface needs to control a standard computer.

The hardware should be the easy part.


Why accessibility?

This project started as a general-purpose idea, but accessibility is where I think it has the strongest purpose.

The smaller the target group, the harder it becomes to justify development costs.

A company can spend thousands designing a product for millions of users.

But who funds a device needed by twenty people?

Or a device needed by a small group with a rare condition?

Those ideas often disappear, not because they are bad, but because the economics make them impossible.

If the cost of experimentation becomes low enough, more of those ideas can exist.

That is the goal.

Not to replace professional medical equipment.

Not to pretend one board can solve every accessibility challenge.

Simply to make it easier for people with good ideas to test them.


But isn’t this just a maker board?

Yes.

And no.

An engineer or hobbyist should absolutely be able to keep one of these in their toolbox.

The same way someone keeps an Arduino, a multimeter, or a breadboard nearby.

Not every experiment becomes a product.

Most don’t.

That is fine.

The purpose of experimentation is not that every idea succeeds.

The purpose is making failure cheap enough that people are willing to try.


The software side

There are many possible ways to use the platform.

A beginner might connect a few components and use a simple scripting language such as Lua.

Copy a small example.

Change a few numbers.

Test an idea.

A more experienced developer might replace parts of the firmware completely.

Someone else might only use the hardware design as a foundation for their own project.

I don’t think there should be one “correct” way.

The platform should disappear into the background and let people focus on the thing they are actually trying to build.


Why am I building this?

This is the part where I am supposed to write something inspirational.

I could say that I have always dreamed of changing lives.

That would not be completely false.

I do want this project to have a positive impact.

But the real answer is more complicated.

I like making things.

I like the moment when an idea stops being an idea and starts moving.

A machine doing something because I imagined it and built it is still one of the most satisfying feelings I know.

Somewhere along the way, that feeling became weaker.

While thinking about why, I came across research around the overjustification effect—the idea that external rewards can sometimes replace the internal motivation that made you enjoy something in the first place.

I do not think that explains everything.

But I think it explains part of it.

This project started because I was working on something else, only to discover that the thing I was building already existed.

Normally that means the project goes into a drawer.

Instead, I looked at all the work already done:

The research.

The designs.

The ideas.

The piles of pseudocode.

And I asked:

“What if this effort becomes a tool that helps other people build things?”

Maybe that is a better destination.


Quality matters

One thing I want to make very clear:

This is not meant to be a “quick hack that works sometimes.”

For accessibility especially, reliability matters.

A clever prototype is interesting.

A device someone depends on is something else entirely.

I do not want to cut corners simply because something works in a demonstration.

The objective is not just flexibility.

It is flexibility built on a reliable foundation.


Where does this go?

Honestly?

I don’t know yet.

Some parts will likely become open source.

Some parts may take more time, especially anything involving networking and security.

A device that controls a wheelchair, communication system, or another important tool deserves careful consideration.

“Open” and “secure” are both important goals, and sometimes they require difficult decisions.

The hardware will evolve.

The software will evolve.

The community around it—if one forms—will probably influence it in ways I cannot predict.


How can you help?

At this stage, the biggest challenge is simple:

Building hardware costs money.

Prototype boards.

Components.

Manufacturing.

Testing.

The boring things that are absolutely necessary before the interesting things can happen.

If you believe this idea is worth exploring, support can take many forms:

  • Sponsorship.
  • Technical feedback.
  • Testing.
  • Sharing the project with someone who may benefit.

The goal is not to build one product.

The goal is to make it easier for people to build the products that do not exist yet.


Final thoughts

I don’t know if this will become a commercial product.

I don’t know if it will become a widely used platform.

But I do know this:

There are people with ideas that never become reality because the first step is too expensive.

If this project can remove some of that first barrier, then it will have been worth building.

And honestly…

“If this platform saves someone from spending three weeks writing USB firmware just to test an idea, then it has already justified its existence.”

TTGO T9 Audio – Everything

I have had those boards (V1.6) for over a decade, had fun plans for them, but never got around to doing anything with them !

This document will always be a work in progress, even after i finish whatever project I will be making, anything new that I find about this board or similar boards will end up here

The TTGO T9 Audio RGB_LED WM8978 is an

  • ESP32 : ESP32-WROVER 802.11 b/g/n + Bluetooth 4.1 LE module with 4MB Flash, 4MB PSRAM
  • audio chip (WM8978 stereo CODEC)
  • SD card slot and 18 RGB LEDs.
  • Gyroscope++: InvenSense MPU-9250 : 9-axis motion-tracking sensor IMU 9-DOF MPU-9250 9-Axis Attitude + Gyroscope + Accelerator + Magnetometer Sensor Module
  • Battery: The circuitry to charge and use a battery in UPS mode !
  • built-in microphone
  • 3.5mm audio jack

Now that I might have some free time soon, I decided to compile the resources here for my reference, and to see what fun project they might be good for !

1- Links

Unorganized links

new boards, AI Thinker … ESP32-A1S

New boards, LyraT

Are the ESP32 and ESP8266 5V tolerant (Yes they officially are)

This is a very old question, ever since Espressif removed the 5V tolerant statement from their datasheet no one felt safe connecting 5V directly to the digital input pins, but the news is out now, according to the CEO of Espressif himself, their boards are indeed 5V tolerant ON THE DIGITAL INPUT PINS

What pins are 5V tolerant exactly?

The IO pins in input state (sink) are 5V tolerant, Yet the power supply to the chip must be 3.3V (Most boards come with a regulator for this so it should not be a problem). other models do not come with a regulator, and in such a case, you will need to add the regulator, but even then you do not need a level shifter for the digital inputs. for the ESP32, The ones without an onboard regulator usually go for as little as $2.5 (5 boards for $12) , while the ones that come with a voltage regulator and a serial to USB adapter will set you back around $4.6 (3 for $14)

When pins on the Espressif microcontroller are set as output, they will use 3.3V logic, whether or not the difference in voltage between high and low will register on the other microcontroller/device is an issue related to the other microcontroller, from my experience, Arduino Uno works just fine.

Also note that analogue pins are a different story, the ADC pins use the power provided to the chip as a reference voltage. so a voltage divider is still required.

so in short, if you connect the 5V supply to the VIN pin (going through the onboard regulator), and use 5V logic on the digital pins while they are in input mode (Sink) you should good, and this is not just me, this is an official statement.

You may be wondering why is it not the in datasheet then ? The answer is, it used to be in the datasheet, but the company faced problems with people powering the chip itself with 5V so they omitted it to avoid confusion,

This is excellent news for someone like me who has to go through the hassle of logic level converters whenever coupling Arduino with ESP chips.

Before the CEO of the company made those statements, many people did their own experiments and found those results, but there were still doubts as to whether the results were conclusive or whether there was more to the story, a convincing experiment by ba0sh1.com did demonstrate that it was indeed 5 Volt tolerant on the input pins,

Where did i get this from

Swee-Ann Teo, who after my research seems to be from Espressif made the following statements

  • On whether ESP8266 is 5V tolerant, he had this to say on a facebook post by hackaday

“i can reply officially here: it is 5V tolerant at the IO. while the supply voltage is at 3.3V.”

  • On whether ESP32 and ESP8285 are also 5V tolerant

“ESP32 and ESP8285 are both 5V tolerant as well. but for ESP32, it is a very complicated matter. it supports 1.8V operations too… i don’t know where to start…”

  • When asked why this information is not in the datasheet, he responded

“the reason is too many users took it to mean that the chip is 5 V tolerant. When we say 5 V tolerant, we are only referring to the IOs. So some users mistook this to make that they can power the chip entirely off the 5 V supply. The correct usage is to use 5 V open for these 5 V tolerant pins, and only via only drain configuration.” And then elaborated on the matter with “I understand, but the time needed to do the iterations when mistakes were made, was too long. when the product was launched 5 V WiFi modules (with DCDC) were the norm. Many users saw “5 V” written in the specs and thought it could be a 1-1 replacement for such modules.”

  • One user asked if the tolerance towards 1.8 volts of the ESP32 was relevant to enabling battery operation, the response was no, specifically, Teo responded with

“actually not. but many memory devices are moving towards 1.8V operations, and we would be compatible with them as well.”

The facebook post where this is all written is here.