Skip to the content
PCBKitNew board
2 layers99.1 × 76.2 mmPico dev, the printed circuit board in 3D

USB to interfaces implementing MicroPython "machine" module functionalities on a computer.

Size
99.1 × 76.2 mm
Copper layers
2
Thickness
1.6 mm
Parts
36
Nets
38
Pads
200
Tracks, vias
309, 0
Pours
3
Routed
Yes
KiCad
KiCad 5 (file 20171130)
Created
20 Mar 2021
Updated
13 Jul 2023

Overview

Pico dev is an open-source printed circuit board by execuc, from the execuc/u2if repository on GitHub. It is a 2-layer board of 99.1 × 76.2 mm with 36 parts on 38 nets, routed with 309 tracks and 0 vias.

It is built around the SS14. Its parts include 18 connectors, 4 resistors, 3 capacitors, 3 switches and 2 ICs. It belongs with the interfaces and adapters boards and the RP2040 boards of this library.

Main components

1

README

README.md

u2if project

u2if(USB to interfaces) is an attempt to implement some of the MicroPython "machine" module functionalities on a computer. The goal is to be able to communicate with breakout boards (sensors, lcd...) simply from a python program on x86 machine. It uses a Raspberry PICO (or other RP2040 based board) to make the interface between the computer (USB) and peripherals/protocols.

Python led swith on/off:

python
import time
from machine import u2if, Pin

# Initialize GPIO to output and set the value HIGH
led = Pin(u2if.GP3, Pin.OUT, value=Pin.HIGH)
time.sleep(1)
# Switch off the led
led.value(Pin.LOW)

Caution

It is in experimental state and not everything has been tested. Use with caution. It is supposed to work on windows, linux and Mac. To work in Linux in non-root, an udev rules has to be added (See Firmware readme).

Why this project ?

When I want to retrieve values from a sensor or even to play with a led or a button from the PC, I make an arduino program that communicate to the PC via the serial port. That umplies to define a serial "protocol" between the PC and the arduino and it is not necessarily reusable because it is specific. I find it interesting to implement a majority of the functionalities of the MicroPython machine module and add other protocols.

Solutions already exist, for example Adafruit Blinka from Adafruit via the FT2232H in CircuitPython or pyftdi in Python with the same IC. Note: now, firmware part can be also used with Adafruit Blinka !

Implemented Interfaces

The following features are coded:

Licenses and Project directories

This repository is presented as the sources of a python project (License). But it also contains the following projects:

How to use it

Upload firmware

See Firmware README

Install u2if python package

Install python package from release file (u2if-..tar.gz) with python3 -m pip install dist/u2if-..tar.gz

Build u2if python package

To build package if wanted :

  • If needed, install build: python3 -m pip install --upgrade build
  • Build it: python3 -m build

Examples

There is no documentation but examples can help to use this library :

  • Led On/Off
  • Switch with or whithour irq and debouncing
  • PWM controlling servo-motor
  • Display testing: SSD1306 (I2C and SPI), GC9A01 (round lcd)
  • Some sensors simple test: MPU9250 (IMU), VL53L0X (range), BMP280(Temp)
  • UART read/Write
  • Analog read.
  • Rotrary encoder
  • I2C scan
  • Play 48khz 16bit .wav over I2S DAC (PAM5102)
  • ...

u2if boards/pinout

For simplicity, the pins of the SPI, I2C and UART devices have been fixed. If a peripheral is not used, its pins can be used as a classic I/O. Here are the compatibles boards.

PICO

Implemented interfaces:

  • GPIO
  • ADC
  • PWM
  • UART0 & UART1
  • I2C0 & I2C1
  • SPI0 & SPI1
  • WS2812B
  • I2S

Adafruit Feather RP2040

Implemented interfaces:

  • GPIO
  • ADC
  • PWM
  • UART0
  • I2C0 & I2C1
  • SPI0 & SPI1
  • WS2812B

Adafruit Qt Py RP2040

Implemented interfaces:

  • GPIO
  • ADC
  • PWM
  • UART1
  • I2C0 & I2C1
  • SPI0
  • WS2812B

Adafruit ItsyBitsy RP2040

Implemented interfaces:

  • GPIO
  • ADC
  • PWM
  • UART0
  • I2C1
  • SPI0 & SPI1
  • WS2812B

Adafruit Trinkey QT2040

Implemented interfaces:

  • GPIO
  • ADC
  • PWM
  • UART0
  • I2C0 & I2C1
  • SPI0 & SPI1
  • WS2812B

Troubleshooting

Import error using MicroPython module

import ustruct

The ustruct module is belongs by micropython. There is a micropython-cpython-ustruct compatibility module, but it doesn't seem to work for me. If necessary modify:

python
import ustruct

to:

python
import struct as ustruct
import utime & const

Install micropython-cpython-utime and micropython-cpython-micropython.

Parts

36
QtyValueFootprintReferences
4MountingHoleMountingHole:MountingHole_3.2mm_M3H1, H2, H3, H4
310kResistor_SMD:R_0805_2012Metric_Pad1.15x1.40mm_HandSolderR1, R2, R3
3CPCapacitor_THT:CP_Radial_D6.3mm_P2.50mmC1, C2, C3
3I2C0Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalJ5, J6, J7
2+3.3VConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ13, J17
2GNDConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ15, J16
2SPI0Connector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_VerticalJ9, J10
1+5VConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ14
1470Resistor_SMD:R_0805_2012Metric_Pad1.15x1.40mm_HandSolderR4
1AN0_GP26Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ3
1AN1_GP27Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ4
1GPIOConnector_PinHeader_2.54mm:PinHeader_1x05_P2.54mm_VerticalJ11
1GPIOConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ18
1LEDLED_THT:LED_D5.0mmD2
1MODEConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJ1
1PicoMCU_RaspberryPi_and_Boards:RPi_Pico_SMD_THU1
1SPI1/GPIOConnector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_VerticalJ12
1SS14Diode_SMD:D_SMAD1
1SSD1306_I2Coled_ssd1306:ssd1306_I2cU2
1SWDConnector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalJ2
1SW_GP8Button_Switch_THT:SW_PUSH_6mm_H4.3mmSW3
1SW_GP9Button_Switch_THT:SW_PUSH_6mm_H4.3mmSW2
1SW_RSTButton_Switch_THT:SW_PUSH_6mm_H4.3mmSW1
1UART0Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ8

Questions

How big is the Pico dev PCB?

It measures 99.1 × 76.2 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Pico dev use?

36 parts, built around the SS14. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Pico dev KiCad files?

From the execuc/u2if repository on GitHub, at the commit this page was made from: the board is board/pico-dev/pico-dev.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the Pico dev design in my own project?

Its repository states no licence, so its author keeps all rights: ask execuc before reusing the design.

Similar boards

  • 2 layers80 × 129.1 mmSmart Plant, the printed circuit board in 3D

    Smart Plant

    JGAguado/Smart_Plant

    The Smart Plant is a board that can be plugged directly on the soil, close to the plant, that allows the measurement of the environment (soil moisture, environment temperature & illuminance), and presents the…

    75 parts303
  • 2 layers128 × 88 mmFireball revD, the printed circuit board in 3D

    Fireball revD

    ugcs/ddc

    Drone Show Software is software designed for drone shows, allowing flight path planning as well as control of dozens of drones simultaneously in a synchronized manner.

    64 parts223
  • 4 layers113.5 × 105.5 mmMultistepper, the printed circuit board in 3D

    Multistepper

    eddyem/stm32samples

    Code samples and ready projects based on bare-metal STM32

    243 parts208
  • 2 layers66.8 × 34 mmESP8266, the printed circuit board in 3D

    ESP8266

    MaloufSleep/ME-ESP8266

    Malouf Electronics - ESP8266 Dev Board

    127 parts204MIT
  • 2 layers40 × 53.6 mmCanLite, the printed circuit board in 3D

    CanLite

    voltlog/CanLite

    ESP32 based CAN development board

    42 parts192GPL-3.0
  • 2 layers40 × 100 mmBack pcb, the printed circuit board in 3D

    Back pcb

    ZeroPhone/ZeroPhone-PCBs

    PCB files for ZeroPhone - for gerbers and schematics, go to "Releases" tab!

    118 parts148GPL-3.0
  • 2 layers100 × 85 mmVNA, the printed circuit board in 3D

    VNA

    profdc9/VNA

    Vector Network Analyzer based on the STM32F103C8T6 bluepill

    178 parts93
  • 4 layers80 × 100 mmBaseboard, the printed circuit board in 3D

    Baseboard

    NVIDIA-AI-IOT/my-jetson-nano-baseboard

    An open source Jetson Nano baseboard and tools to design your own.

    240 parts91