Menu
Features Specs GitHub Buy Now
Doer USB GPIO Board Buy Now Learn More
๐Ÿ’ป

Cross-Platform

Works on Windows, macOS, and Linux. No special drivers required.

Raspberry Pi API

Compatible with Raspberry Pi system. Same API calls you already know.

โšก

Digital / PWM / ADC

Full GPIO with pull-up/pull-down, hardware PWM on 8 pins, and analog input on 8 pins.

๐Ÿ”“

Open Source

Python library and STM32 firmware are GPL-3.0 licensed and publicly available on GitHub.

Get Started: Control GPIO from Python

Plug the board in via USB, install the Python library, and you're ready to control hardware from any Python script โ€” on any computer. The board auto-detects over USB, so no manual port configuration is needed.

Install in one command
pip install DoerGPIO

(On some systems you may need to use pip3 instead of pip, or specify the full path (e.g. python -m pip install DoerGPIO) if pip is not on your PATH.)

  • Python 3.9+ supported
  • Auto-detection via USB identification โ€” no serial port setup
# Control an LED with DoerGPIO
import DoerGPIO as GPIO
import time

# Setup pin 17 as output
GPIO.setmode(GPIO.BCM)
GPIO.setup(17, GPIO.OUT)

# Blink 5 times
for _ in range(5):
    GPIO.output(17, GPIO.HIGH)
    time.sleep(0.5)
    GPIO.output(17, GPIO.LOW)
    time.sleep(0.5)

GPIO.cleanup()

Board Capabilities

Digital I/O

All GPIO pins support configurable pull-up and pull-down resistors. Use any pin as a digital input or output.

  • GPIO.setup(pin, GPIO.IN / GPIO.OUT)
  • pull_up_down=GPIO.PUD_UP / GPIO.PUD_DOWN
  • GPIO.input(pin) / GPIO.output(pin, val)

PWM Output

Hardware PWM on 8 dedicated pins. Control servo motors, LED brightness, motor speed, and more.

PWM Pins

4 ยท 9 ยท 10 ยท 16 ยท 18 ยท 20 ยท 22 ยท 26

Analog Input (ADC)

Read analog sensors โ€” potentiometers, light sensors, temperature sensors โ€” on 8 ADC-capable pins.

ADC Pins

0 ยท 9 ยท 10 ยท 11 ยท 14 ยท 15 ยท 18 ยท 26

Technical Specifications

Built around the STM32F070C6TX microcontroller, the Doer USB GPIO Board delivers reliable, real-time hardware control over standard USB. The firmware is written in C using STM32CubeIDE and fully open source.

  • STM32-based for real-time, deterministic performance
  • Plug-and-play โ€” board auto-identifies over USB
  • Firmware source code available on GitHub (GPL-3.0)
MicrocontrollerSTM32F070C6TX
USB TypeUSB Full Speed (CDC)
GPIO Pins28 configurable pins
PWM Pins8 pins โ€” 4, 9, 10, 16, 18, 20, 22, 26
ADC Pins8 pins โ€” 0, 9, 10, 11, 14, 15, 18, 26
Pull ResistorsConfigurable pull-up / pull-down on all pins
PlatformsWindows ยท macOS ยท Linux
Python Version3.9+
Python Librarypip install DoerGPIO
Firmware LanguageC (STM32CubeIDE)
LicenseGPL-3.0

Who It's For

๐Ÿ”ง

Makers & Hobbyists

Build hardware projects from your laptop without needing a Raspberry Pi. Control LEDs, motors, and sensors directly from Python.

๐Ÿงช

Rapid Prototyping

Test hardware interactions from your development machine. Iterate faster by scripting GPIO changes directly in Python.

๐ŸŽ“

Education & Teaching

Teach embedded systems and GPIO concepts with familiar Python syntax. Works on any classroom computer over USB.

Get Started in Minutes

1

Install the Python Library

pip install DoerGPIO
2

Connect the Board via USB

Plug the Doer USB GPIO Board into any USB port. It auto-identifies itself โ€” no manual serial port selection or driver installation required on Windows, macOS, or Linux.

3

Run Your First Script

import DoerGPIO as GPIO

GPIO.setmode(GPIO.BCM)

# Pin 17 as output
GPIO.setup(17, GPIO.OUT)
GPIO.output(17, GPIO.HIGH)

# Pin 22 as input with pull-up
GPIO.setup(22, GPIO.IN, pull_up_down=GPIO.PUD_UP)
value = GPIO.input(22)
print(f"Pin 22: {value}")

GPIO.cleanup()  # Reset all pins

How to Update Firmware

1

Install the Upload Tool Dependency

pip install pyserial
2

Download the Firmware & Upload Script

Get the latest .bin firmware file and upload_fw.py from the GitHub releases page.

GitHub Releases โ†’
3

Run the Upload Script

Make sure the board is unplugged, then run the script. When prompted, plug in the board and flashing will begin automatically. If the board is already connected when the script starts, it will ask you to unplug it first.

python3 upload_fw.py DoerGPIO_FW.bin

Frequently Asked Questions

Which operating systems are supported? โ†“
The board works on Windows, macOS, and Linux. It communicates over standard USB CDC (serial), so no special drivers are required on most modern systems.
How do I install the Python library? โ†“
Run pip install DoerGPIO in your terminal. Python 3.9 or higher is required. The library auto-detects the board over USB, so no manual port selection is needed.
Which pins support PWM and ADC? โ†“
PWM pins: 4, 9, 10, 16, 18, 20, 22, 26.
ADC pins: 0, 9, 10, 11, 14, 15, 18, 26.

All pins support standard digital I/O with configurable pull-up and pull-down resistors.
Is the firmware open source? โ†“
Yes. Both the Python library and STM32 firmware are released under the GPL-3.0 license. You can find the source on GitHub: Python Library and Firmware.
Where can I buy the board? โ†“
The Doer USB GPIO Board is available in our online store. Click here to view the product page and purchase.

Ready to Get Started?

Control hardware from any computer. One USB cable. Pure Python.