Introducing the Pyboard
Contents
A Brief History
The Pyboard is the official MicroPython microcontroller board which fully supports MicroPython's software features. The Pyboard comes preloaded with MicroPython.
MicroPython was originally created by the Australian programmer Damien George after a successful Kickstarter backed program in 2013. As a result of this the initial production Pyboard, designated as the PYBv10b, was shipped in june 2014.
Pyboard Versions
There are two distinct families of the Pyboard. The most recent is the Pyboard D-series, also referred to as PyBD. This family, based on the STM32F7 series of microcontrollers is not completely code compatible with the original Pyboards.
The Pyboard V1.1 and Pyboard D are not directly pin compatible in terms of form factor or pin layout. The Pyboard D uses a much smaller, compact module design with a fine-pitch connector to bring out its pins, requiring an adapter board for general use.
With ongoing chip shortages (2025) Pyboard D can be hard to find for purchase.
This web series is written exclusively to support the original Pyboard family which include the Pyboard V1.0 (PYBv1.0), Pyboard Lite (PYBLITEv1.0.) and the most recent, Pyboard V1.1 (PYBv1.1) model.
The different models have some small layout and/or pin differences but are all code compatible. We will be using the Pyboard V1.1 for all code development.
Pinout
The Pyboard V1.1 pinout is straight forward.
Click the image above to see a larger high resolution image.
The STM32F405RGT6 Microcontroller
The Pyboard V1.1 uses the STM32F405RGT6 microcontroller. The name can be broken down:
- STM32: Family of 32-bit microcontrollers from STMicroelectronics.
- F: Identifies the specific series within the family, F = fast.
- 405: Represents the specific line of the MCU.
- R: Indicates the pin count i.e. a 64-pin device.
- G: Specifies the amount of Flash memory i.e. 1 MB of flash memory.
- T: Indicates the package type i.e. LQFP package.
- 6: Denotes the operating temperature range i.e. -40°C to +85°C.
The STM32F405RGT6 CPU core is the 32‑bit ARM Cortex‑M4 operating at a decent 168 MHz clock speed. It provides 1 MB of flash memory and 192 KB of RAM. These specifications are more than adequate to support the MicroPython compiler and runtime system.
Not all of the pins, communication buses, timers, etc that are available on the STM32F405RGT6 MCU are exposed on the Pyboard. Some are designed for other uses that the user should't have access to and the board size is also a limitation.
GPIO Pins
There are ample GPIO pins exposed on the Pyboard for all but the most demanding project.
Digital pins
All up, the board has 34 digital pins. Of these there are 28 pins that are 'anytime' available; X1..X12, X19..X22, Y1..Y12. The remaining six digital pins are either connected to peripherals on the Pyboard or have other serious limitations.
Details on the board's digital pins and how to use them can be found in this MicroPython pyb.Pin class article.
Analog pins
Of the 28 digital pins, 18 of these can also be used as analog pins.
This board provides both ADC (Analog-to-Digital Converter) and DAC (Digital-to-Analog Converter) pins:
- ADC (12-bit): 16 pins; X1..X8, X11, X12, X19..X22, Y11, Y12
- DAC: 2 pins; X5, X6
Details on the board's analog pins and how to use them can be found in these MicroPython pyb.ADC class and MicroPython pyb.DAC class articles.
Serial Communications
The Pyboard has a useful selection of UART, I2C and SPI serial ports.
UART
The Pyboard has five separate hardware UARTs available to the user:
- UART(1): Pins X9, X10
- UART(2): Pins X3, X4
- UART(3): Pins Y9, Y10
- UART(4): Pins X1, X2
- UART(6): Pins Y1, Y2
Details on the board's UARTs and how to use them can be found in this MicroPython pyb.UART class article.
I2C
The Pyboard has two hardware I2C buses:
- i2c(1): Pins X9, X10
- i2c(2): Pins Y9, Y10
The MicroPython pyb module, specific to the Pyboard, provides an I2C class but this is now considered legacy.
Instead the MicroPython machine module contains an I2C class that provides much more control over the I2C bus. When dealing with some slave devices this extra level of control is required.
Details on the board's I2C buses and how to use them can be found in these MicroPython machine.I2C class and MicroPython pyb.I2C class articles.
SPI
The Pyboard has two separate hardware SPI buses available to the user:
- SPI(1): Pins X5, X6, X7, X8
- SPI(2): Pins Y5, Y6, Y7, Y8
Details on the board's SPI buses and how to use them can be found in this MicroPython pyb.SPI class article.
Timers
The Pyboard V1.1 has 14 timers, referred to as Timer(1)..Timer(14), each consisting of an independent counter.
Timer(2), Timer(3), Timer(5) and Timer(6) are reserved by the board for internal use. While it's still possible to use these timers it's recommended to avoid them and use the other timers in MicroPython programs.
The timers count down at a configured frequency from a given value to 0. The execution of a MicroPython function is triggered at the end of the count down.
The counters are also used to provision PWM (pulse width modulation) on digital pins.
Details on the board's timers and how to use them can be found in this MicroPython pyb.Timer class article.
Real-Time Clock
The STM32F405RGT6 has a full-featured calendar (seconds, minutes, hours, day, date, month, and year), a programmable alarm, and a periodic wake-up unit. It also has backup battery capability that retains the correct time/date when the microcontroller is powered down.
Details on the board's RTC and how to use it can be found in this MicroPython pyb.RTC class article.
Additional Hardware
Separate to the microcontroller the Pyboard has some additional hardware that might be useful in MicroPython programs. This hardware includes:
- LEDs: There are four user-controllable LEDs; one each of red, green, blue and orange.
- Switch: A pushbutton switch labelled USR; a MicroPython program can detect whether this switch has been pushed.
- Accelerometer: An MMA7660 that detects acceleration and tilt in 3-dimensions.
The following articles discuss in detail how to uses these items: MicroPython pyb.LED class, MicroPython pyb.Switch class and MicroPython pyb.Accel class
The Pyboard also has a microSD card slot. An inserted card may optionally be used as a boot device as well as providing addition non-volatile storage. How to use a microSD card with the Pyboard is discussed in this article.