In addition to being a 4-port USB 2 High-Speed hub, this Programmable USB hub is also:
- A CircuitPython based development board.
- A bridge between your computer and I2C (via Sparkfun Qwiic connectors), GPIO, and SPI (via its mikroBUS header).
- A power supply, providing 6 A of 5 V power to downstream devices and 13 mA resolution monitoring (per-port).
- A USB to TTL Serial adapter.
- A flexible embedded electronics test and development tool.
- Functionally flexible. Open source python drivers on the upstream host and Python firmware on the internal MCU allow the behavior of this USB hub to be easily changed to suit your application and environment.
The Capable Robot Programmable USB hub is housed in a robust extruded aluminum enclosure.
Internally mounted LED light pipes direct status information from 10 RGB LEDs to the front panel for easy observation of hub state.
The rear of the enclosure exposes the upstream USB connection and a USB port to re-program and communicate with the internal MCU. Also exposed are two I2C buses (via Sparkfun Qwiic connectors), the Programmable USB hub’s UART, and 2x GPIO. Input power is provided to the hub by a locking Molex Micro-Fit connector.
Features and Specifications
- USB2 High-Speed Hub
- 4x USB2 High Speed (480 mbps) downstream ports
- 1x USB2 High Speed (480 mbps) upstream port
- 5th endpoint on USB hub exposes I2C, SPI, UART, and 2x GPIO
- Data lines to each USB port can be disconnected via software commands. This allows errant USB devices to be “unplugged” virtually and re-enumerated.
- USB digital signals can be boosted to help drive long cables.
- Power Monitoring & Control
- 5 V power on each downstream port can be individually turned on and off
- Monitor the power consumed by each port at up to 1 kHz at a resolution of 13 mA
- Adjustable (per-port) current limits between 0.5 A and 2.6 A
- Onboard regulators support 12 V to 24 V power input and generate 6 A of 5 V power for downstream devices. No power is drawn from the upstream USB port.
- Input power is protected from over-voltage events and reverse-polarity connection.
- Physical IO
- mikroBUS header to add additional sensors and connectivity. Solder jumpers enable the UART and SPI to connect to either the USB hub IC or the MCU.
- JST GH connector with UART and 2x GPIO, controlled by the USB hub.
- 2x Sparkfun Qwiic connectors enable easy attachment of I2C sensors to the USB hub or to the internal MCU.
- 5x RGB status LEDs to visualize port power draw
- 5x RGB status LEDs to visualize port connection types
- Open Source Python Drivers
- MIT-licensed Python drivers allow you to control and monitor your USB hub the way you want to.
- Easy integration into hardware-in-the-loop (HITL) test systems
- Automate testing of embedded USB devices. You can simulate USB unplug events, unexpected loss of USB power, control.
- Control and monitor the USB hub via the upstream USB port or the MCU USB port.
- Runs Adafruit CircuitPython
- An ATSAMD51 microcontroller configures the USB hub IC and is available for you to reprogram to change the behavior of your hub.
- The microcontroller ships with open source CircuitPython firmware which is updatable over the MCU USB connector. No drivers or reflashing hardware is needed – Python firmware shows up as files on a small flash hard drive when connected to your computer and can be immediately edited.
- Robust Design
- Extruded aluminum enclosure with optional rubber bumper end caps and optional flange mounts.
- OEM version (board only) has corner mounting holes for easy integration into a custom enclosure.
- IO is protected from ESD strikes (exact specification TBD).
- Locking input power connector with reverse polarity protection and over-voltage protection
- Reinforced Micro-USB connectors
Programmable USB Hub is part of the Microchip Get Launched 2019 design competition!