The Raspberry Pi Pico Zero, manufactured by Waveshare (Part ID: 20187), is a compact and versatile microcontroller board based on the RP2040 chip. Designed for low-power applications and embedded systems, it offers a cost-effective solution for hobbyists, students, and professionals alike. The Pico Zero is equipped with GPIO pins for interfacing with a wide range of sensors, actuators, and other peripherals. It supports programming in MicroPython and C/C++, making it accessible to both beginners and experienced developers.
The Rpi Pico Zero is built around the RP2040 microcontroller, which features dual ARM Cortex-M0+ cores and a flexible I/O system. Below are the key technical details:
Parameter | Value |
---|---|
Microcontroller | RP2040 (Dual ARM Cortex-M0+ cores) |
Clock Speed | 133 MHz |
Flash Memory | 2 MB (onboard QSPI flash) |
SRAM | 264 KB |
GPIO Pins | 20 |
Communication Interfaces | I2C, SPI, UART, PWM |
Operating Voltage | 3.3V |
Input Voltage Range | 1.8V to 5.5V |
USB Interface | Micro-USB (for power and data) |
Programming Languages | MicroPython, C/C++ |
Dimensions | 51mm x 21mm |
The Rpi Pico Zero features a 20-pin GPIO header. Below is the pinout and description:
Pin Number | Pin Name | Function |
---|---|---|
1 | 3V3 | 3.3V Power Output |
2 | GND | Ground |
3 | GP0 | GPIO Pin 0 / UART0 TX |
4 | GP1 | GPIO Pin 1 / UART0 RX |
5 | GP2 | GPIO Pin 2 / I2C1 SDA |
6 | GP3 | GPIO Pin 3 / I2C1 SCL |
7 | GP4 | GPIO Pin 4 / PWM Output |
8 | GP5 | GPIO Pin 5 / PWM Output |
9 | GP6 | GPIO Pin 6 / SPI0 SCK |
10 | GP7 | GPIO Pin 7 / SPI0 TX |
11 | GP8 | GPIO Pin 8 / SPI0 RX |
12 | GP9 | GPIO Pin 9 / SPI0 CSn |
13 | GP10 | GPIO Pin 10 / UART1 TX |
14 | GP11 | GPIO Pin 11 / UART1 RX |
15 | GP12 | GPIO Pin 12 / PWM Output |
16 | GP13 | GPIO Pin 13 / PWM Output |
17 | GP14 | GPIO Pin 14 / I2C0 SDA |
18 | GP15 | GPIO Pin 15 / I2C0 SCL |
19 | RUN | Reset Pin |
20 | VSYS | Input Voltage (1.8V to 5.5V) |
Powering the Board:
Programming the Board:
Connecting Peripherals:
The Rpi Pico Zero can communicate with an Arduino UNO via I2C. Below is an example of how to set up the Pico Zero as an I2C slave:
from machine import I2C, Pin
import utime
i2c = I2C(0, scl=Pin(5), sda=Pin(4), freq=100000)
data = b"Hello Arduino!"
while True: i2c.writeto(0x08, data) # Send data to I2C address 0x08 utime.sleep(1) # Wait 1 second before sending again
#include <Wire.h>
void setup() {
Wire.begin(0x08); // Initialize as I2C slave with address 0x08
Wire.onReceive(receiveEvent); // Register receive event handler
Serial.begin(9600); // Start serial communication for debugging
}
void loop() {
// Main loop does nothing; data is handled in receiveEvent
}
void receiveEvent(int bytes) {
while (Wire.available()) {
char c = Wire.read(); // Read each byte sent by the Pico Zero
Serial.print(c); // Print received data to the Serial Monitor
}
Serial.println(); // Add a newline after the received message
}
Board Not Detected by Computer:
GPIO Pins Not Responding:
I2C/SPI Communication Fails:
Overheating or Power Issues:
Can I power the Pico Zero with a battery?
Yes, you can use a battery as long as the voltage is within the range of 1.8V to 5.5V. Connect the battery to the VSYS pin.
What is the maximum current output of the GPIO pins?
Each GPIO pin can source or sink up to 12mA, with a total maximum current of 50mA for all pins combined.
Can I use the Pico Zero with other programming languages?
While MicroPython and C/C++ are the primary options, you can also use CircuitPython or other RP2040-compatible frameworks.