A simple PCB with a Raspberry Pi Pico and some buttons, LEDs for gaming or robots...
This new version have :
- 1 GPIO expander with a MCP23017 chip (I2C communication with the Pico, with configurable jumpers address)
- 4 rotary encoders with a push button
- 4 push buttons, 1 temporary position (0/1)
- 4 push buttons, 1 fix position (0-1)
- 4 toggle switches, 3 fixes positions (1-0-2)
- 6 LEDs for warnings/alerts
This Raspberry Pi Pico use CircuitPython version 9.x with external libraries :
-
Adafruit module CircuitPython_MCP230xx
-
JoystickXL module CircuitPython_JoystickXL
As part of an educational project, the schematic and PCB are made with KiCad version 9 (kicad folder).
💡 All important parameters are stored in the schematic/PCB editors text variables (common project variables).
First V2 prototype (8 x 8 cm only) from AISLER manufacturer :
Some useful plugins for KiCad :
- AISLER Push for KiCad : https://github.com/aislerhq (with AISLER repository to always get the latest updates)
- Interactive HTML BOM : https://github.com/openscopeproject/InteractiveHtmlBom
- Board2Pdf : https://gitlab.com/dennevi/Board2Pdf
- Solarized Dark Theme : https://github.com/pointhi/kicad-color-schemes
Many thanks to @Kochise for his help and tips for the PCB 🍻
The first enclosure prototype is made with FreeCad version 1.0.x. Work is progress !
-
MultiPicoBoxV2_PCB_test is for testing the PCB with all external components only 🔧
-
MultiPicoBoxV2_JoystickXL_test is for testing everything like a gamepad 🕹️
Look at the code folder for more details.
- [code] Add unit tests for the MultiPicoBoxV2 class (code/tests folder)
- [code] Add code for renaming the interface name :
usb_hid.set_interface_name() - [freecad] Add 3D enclosure files for printing, building
- [pcb] Add RUN pin (Pico n°30) in J24 (2 -> 4 pins) : GPA7, GPB7, RUN, GP22 and remove J25 ?
- [pcb] Add mounting holes (with GND), round corners
Bus I2C :
- https://www.i2c-bus.org
- https://learn.adafruit.com/working-with-i2c-devices?view=all 👌
- https://learn.adafruit.com/circuitpython-basics-i2c-and-spi?view=all
- https://learn.sparkfun.com/tutorials/i2c/i2c-at-the-hardware-level
Microchip GPIO expander MCP23017 :
- https://www.microchip.com/en-us/product/mcp23017
- https://learn.adafruit.com/using-mcp23008-mcp23017-with-circuitpython?view=all 👌
- https://www.woolseyworkshop.com/2021/03/18/adding-digital-io-to-your-arduino-part-3-the-mcp23017/
Rotary encoders :
- https://learn.adafruit.com/rotary-encoder?view=all
- https://howtomechatronics.com/tutorials/arduino/rotary-encoder-works-use-arduino/
- Bourns PEC11R Series : https://www.bourns.com/resources/rohs/encoders/contacting-encoders
The BOM and an interactive BOM (HTML version) for components assembly are in the kicad folder.
Note
Big thanks to the Adafruit company, to all Python, MicroPython, CircuitPython, KiCad, FreeCad and plugins communities. ❤️
Happy coding & have fun ! 🥳

