QT Py (RP2040 based)
Contents
- 1 RP2040 QT Py
- 2 Pins (RP2040 version)
- 2.1 Adafruit RP2040
- 2.1.1 3V
- 2.1.2 5V
- 2.1.3 A0 / D0 - Digital/analog GPIO pin 0
- 2.1.4 A1 / D1 - Digital/analog GPIO pin 1
- 2.1.5 A2 / D2 - Digital/analog GPIO pin 2
- 2.1.6 A3 / D3 - Digital/analog GPIO pin 3
- 2.1.7 SDA / D4
- 2.1.8 SCL / D5
- 2.1.9 TX / A6 / D6
- 2.1.10 RX / A7 / D7
- 2.1.11 SCK / A8 / D8
- 2.1.12 MISO / A9 / D9
- 2.1.13 MOSI / A10 / D10
- 2.1.14 NeoPixel
- 2.2 Seeeduino RP2040
- 2.2.1 3V
- 2.2.2 5V
- 2.2.3 A0 / D0 / P26 - Digital/analog GPIO pin 0
- 2.2.4 A1 / D1 - Digital/analog GPIO pin 1
- 2.2.5 A2 / D2 - Digital/analog GPIO pin 2
- 2.2.6 A3 / D3 - Digital/analog GPIO pin 3
- 2.2.7 SDA / D4
- 2.2.8 SCL / D5
- 2.2.9 TX / A6 / D6
- 2.2.10 RX / A7 / D7
- 2.2.11 SCK / A8 / D8
- 2.2.12 MISO / A9 / D9
- 2.2.13 MOSI / A10 / D10
- 2.2.14 On-board LEDs
- 2.1 Adafruit RP2040
- 3 Programming
- 4 Flash EEPROM 2 MB
- 5 QT Py Breakout Board
- 6 QTPy49 Board
- 7 Videos
RP2040 QT Py
- Adafruit QT Py RP2040 Product page or Seeed XIAO RP2040 Product page
- USB Type C connector
- RP2040 32-bit Cortex M0+ dual-core
- Runs at ~125 MHz
- 264 KB RAM
- 8 MB SPI FLASH chip for storing files and CircuitPython/MicroPython code storage (Adafruit), 2 MB SPI Flash (Seeedstudio)
- No EEPROM
- Can be used with MicroPython or CircuitPython
- Built-in RGB NeoPixel LED
- 13 GPIO pins (11 breakout pads and two QT pads):
- Four 12 bit ADCs (one more than Pico)
- Two I2C ports (one on the QT connector, one on the breakout pads)
- SPI and UART peripherals, in standard QT Py locations,
- PWM outputs on every IO pin - for servos, LEDs, etc
- There are 6 GPIO in consecutive order for PIO compatibility
- 3.3V logic and power 600 mA
- Both Reset button and Bootloader select buttons for quick restarts (no unplugging-replugging to relaunch code)
Pins (RP2040 version)
- Pins are different in MicroPython between Seeeduino XIA and Adafruit QT Py
Adafruit RP2040
3V
- Regulated output from the onboard regulator. You can draw 500mA
5V
- 5v out from the USB port.
- Voltage input
- Requires external diode
- Schottky, signal, power
- Between external power source and this pin
- Cannot power the USB port by supplying 5V to this pin
- There is a protection diode that prevents the 5V from reaching the USB connector.
- This is to protect host computer USB ports, etc.
- Requires external diode
A0 / D0 - Digital/analog GPIO pin 0
- Digital I/O 0
- GPIO29 in MicroPython
- Analog In 0
- True analog output with 10 bit precision
- Does not have PWM
- Capacitive touch input.
A1 / D1 - Digital/analog GPIO pin 1
- Digital I/O 1
- GPIO28 in MicroPython
- Analog In 1
- Capacitive touch input
- AREF pin.
A2 / D2 - Digital/analog GPIO pin 2
- Digital I/O 2
- GPIO27 in MicroPython
- Analog In 2
- PWM
- Capacitive touch input.
A3 / D3 - Digital/analog GPIO pin 3
- Digital I/O 3
- GPIO26 in MicroPython
- Analog In 3
- PWM output
- Capacitive touch input.
SDA / D4
- Digital I/O 4
- I2C SDA pin
- PWM output
- GPIO24 in MicroPython
- No analog on this pin
- No pull up on this pin
- When using with I2C requires an external 2.2K-10K pullup to 3.3V.
SCL / D5
- Digital I/O 5
- I2C SCL
- GPIO25 in MicroPython
- No analog on this pin
- No pull up on this pin
- When using with I2C requires an external 2.2K-10K pullup to 3.3V.
TX / A6 / D6
- Digital I/O 6
- Transmit (output) for Serial1
- GPIO20 in MicroPython
- Analog 6
- PWM output
- Capacitive touch input
RX / A7 / D7
- Digital I/O 7
- Receive (input) for Serial1
- GPIO5 in MicroPython
- Analog 7
- PWM output
- Capacitive touch input
SCK / A8 / D8
- Digital I/O 8
- SPI SCK pin
- GPIO6 in MicroPython
- Analog 8
- PWM output
MISO / A9 / D9
- Digital I/O 8
- SPI MISO pin
- GPIO4 in MicroPython
- Analog 8
- PWM output
MOSI / A10 / D10
- Digital I/O 10
- SPI MOSI pin
- GPIO3 in MicroPython
- Analog 10
- PWM output
NeoPixel
- NEOPIXEL LED Features
- Individually addressable and programmable RGB LEDs
- Operating voltage: 3.3V to 5V
- Power consumption: 60mA per LED at full brightness
- Communication: PWM through data pin
- Driver IC: WS2812
- Data = Pin 11
- Power = Pin 12 - set low for low power usage
- By default pin 12 is set high by Arduino/CircuitPython
- Code example
import board import neopixel pixels = neopixel.NeoPixel(board.NEOPIXEL, 1) # fill((rVal, gVal, bVal)) # rVal, gVal, bVal = red/green/blue values (0-255) pixels.fill((255, 0, 0)) # Note double parens
Seeeduino RP2040
3V
- Regulated output from the onboard regulator. You can draw 500mA
5V
- 5v out from the USB port.
- Voltage input
- Requires external diode
- Schottky, signal, power
- Between external power source and this pin
- Cannot power the USB port by supplying 5V to this pin
- There is a protection diode that prevents the 5V from reaching the USB connector.
- This is to protect host computer USB ports, etc.
- Requires external diode
A0 / D0 / P26 - Digital/analog GPIO pin 0
- Digital I/O 0
- Analog In 0
- P26 in Arduino/MicroPython
- True analog output with 10 bit precision
- Does not have PWM
- Capacitive touch input.
A1 / D1 - Digital/analog GPIO pin 1
- Digital I/O 1
- P27 in Arduino/MicroPython
- Analog In 1
- Capacitive touch input
- AREF pin.
A2 / D2 - Digital/analog GPIO pin 2
- Digital I/O 2
- P28 in MicroPython
- Analog In 2
- PWM
- Capacitive touch input.
A3 / D3 - Digital/analog GPIO pin 3
- Digital I/O 3
- P29 in Arduino/MicroPython
- Analog In 3
- PWM output
- Capacitive touch input.
SDA / D4
- Digital I/O 4
- P7 in Arduino/MicroPython
- I2C SDA pin
- PWM output
- No analog on this pin
- No pull up on this pin
- When using with I2C requires an external 2.2K-10K pullup to 3.3V.
SCL / D5
- Digital I/O 5
- P7 in Arduino/MicroPython
- I2C SCL
- No analog on this pin
- No pull up on this pin
- When using with I2C requires an external 2.2K-10K pullup to 3.3V.
TX / A6 / D6
- Digital I/O 6
- Transmit (output) for Serial1
- P0 in Arduino/MicroPython
- Analog 6
- PWM output
- Capacitive touch input
RX / A7 / D7
- Digital I/O 7
- Receive (input) for Serial1
- P1 in Arduino/MicroPython
- Analog 7
- PWM output
- Capacitive touch input
SCK / A8 / D8
- Digital I/O 8
- SPI SCK pin
- P2 in Arduino/MicroPython
- Analog 8
- PWM output
MISO / A9 / D9
- Digital I/O 8
- SPI MISO pin
- P4 in Arduino/MicroPython
- Analog 8
- PWM output
MOSI / A10 / D10
- Digital I/O 10
- SPI MOSI pin
- P3 in Arduino/MicroPython
- Analog 10
- PWM output
On-board LEDs
- Red Power LED
- USER LED (RGB)
- RED - GPIO17
- GRN - GPIO16
- LED_BUILTIN in Arduino
- BLU - GPIO25
- Code to Blink 3 LEDs
- NEOPIXEL LED Features
- Individually addressable and programmable RGB LEDs
- Operating voltage: 3.3V to 5V
- Power consumption: 60mA per LED at full brightness
- Communication: PWM through data pin
- Driver IC: WS2812
- NEOPIXEL Power - GPIO11 - set low for low power usage
- NEOPIXEL Data - GPIO12
- NEOPIXEL Demo
Programming
- C/C++
- CircuitPython
- MicroPython
C/C++
C/C++ Adafruit RP2040
- Arduino IDE Setup
- Add the URL to the the Additional Boards Manager URLs
- Tools > Board > Boards Manager
- Search for RP2040
- Scroll down to the Raspberry Pi Pico/RP2040 by Earle F Philhower, III entry
- Click Install to install it
- Tools > Boards menu
- Navigate to the Raspberry Pi RP2040 Boards menu and choose Adafruit QT Py RP2040
C/C++ Seeeduino RP2040
- Arduino IDE Setup for Seeeduino RP2040 version
- Requires Arduino IDE version 1.8 or higher
- Add https://files.seeedstudio.com/arduino/package_seeeduino_boards_index.json to Preferences Additional Boards Manager URLs
- RP2040 C/C++ SDK
CircuitPython/MicroPython
CircuitPython
- CircuitPython looks for a code file on the board to run
- There are four options: code.txt, code.py, main.txt and main.py
- CircuitPython looks for those files, in that order, and then runs the first one it finds
- QT_Py_blink.py
- QT Py Haxpress used with 2MB Flash EEPROM
- Mu code editor
CircuitPython for RP2040
- CircuitPython is a derivative of MicroPython
- Adafruit CircuitPython
- Running v7.3.0 (downloaded on 2021-01-21)
- Free memory
import gc gc.mem_free()
Install CircuitPython on Adafruit QT Py RP2040
- Adafruit QT Py RP2040 Overview
- CircuitPython for Adafruit RP2040
- Hold down the BOOT (right) button while plugging it into USB
- Download [ UF2 from Adafruit QT Py CircuitPython RP2040
- Drive will open
- Drop UF2 onto drive
>>> import gc >>> gc.mem_free() 208128 >>> import time >>> gc.mem_free() 207952
Updating CircuitPython
- Save the contents of CIRCUITPY, just in case
- Double-click the reset button to show the BOOT drive
- Drag the update-bootloader .uf2 file to the BOOT drive
- Wait a few tens of seconds for the bootloader to update; the BOOT drive will reappear
- Check INFO_UF2.TXT to verify that the bootloader version has been updated. Then you will need to reload CircuitPython.
- Update mpy files
Land Boards CircuitPython Code
I2CIO-8 (MCP23008) Drivers
- GitHub Repo
- I2CIO8.py Demo code - Bounce an LED across MCP23008 card output pins
- I2CIO8_RW.py - Read jumpers, write back LEDs
SWLEDX8-I2C (MCP23017) Drivers
- SWLEDX8.py = Control the SWLEDX8-I2C card
PROTO16-I2C (MCP23017) Drivers
- PROTO16_Blink.py - Control the PROTO16-I2C card
Digital I/O Example
import board import digitalio import time led = digitalio.DigitalInOut(board.D13) led.direction = digitalio.Direction.OUTPUT while True: led.value = True time.sleep(0.1) led.value = False time.sleep(0.5)
Flash EEPROM 2 MB
- EEPROM installs on card bottom side
QT Py Breakout Board
- Built onto GRID49 card
- Socket for QT Py
- QT Py pins brought to header strips
- 3.3V power distribution on 2x8 header
Pins (CCW direction)
- S12 = A0
- R12 = A1
- Q12 = A2
- P12 = A3
- N12 = SDA
- M12 = SCL
- L12 = TX
- L1 = RX
- M1 = SCK
- N1 = MI
- P1 = MO
- Q1 = 3.3V
- R1 = GND
- S1 = 5V
- A6=B6=C6=D6=E6=F6=G6=H6 = GND
- A7=B7=C7=D7=E7=F7=G7=H7 = 3.3V
QTPy49 Board
Videos