Give Your Desktop GPIO Pins
GimmeGPIO adds Raspberry Pi-style GPIO pins to nearly any computer, allowing easy hardware interfacing via a custom Python library.
Single-board computers like the Raspberry Pi have a lot going for them. They are small, relatively inexpensive, and in many cases they have great community support. But the best feature of all is their ability to easily interface with external hardware via their GPIO pins. This makes it easy to hook them up to sensors, displays, motors, LEDs, and just about anything else your electronics projects may require. Try doing that with a desktop computer!
It would be nice if desktop computers did have GPIO pins, however. They are far more powerful than a single-board computer, and they are the machines that people most often do their development work on. So, Clem Mayer came up with a simple solution to make that possible. He created a USB to GPIO bridge called GimmeGPIO that adds dozens of GPIO pins to almost any computer. Just plug it into a USB port, and the pins can be controlled via software.
A custom four-layer PCB was designed for GimmeGPIO. It is populated with an ESP32-S2 microcontroller, which is perfect for this project because it has native USB support and enough GPIO pins to support a full 40-pin header matching the pinout of a Raspberry Pi. The board itself was designed to match the form factor of a Raspberry Pi Zero. An optional 3D-printed case was also created to protect the hardware.
To make it as easy as possible to use this device, Mayer developed a Python library that controls the GPIO pins. It supports all of the functions you would expect, like setting a pin as an input or output, and setting or reading a pin state. Support for advanced functions like PWM and I2C is also available.
If you are interested in creating your own GimmeGPIO, take a look through the project write-up. Or if you’d rather use an Arduino that you already have lying around, you could follow along with this project instead.