RP2040-Zero は、小型ながら高性能な Raspberry Pi RP2040 を搭載したマイコンボードでアマゾンなどで、互換品が安く購入することができます。MicroPython を使えば、簡単に LED を点滅させたり、センサーを制御したりすることができます。本記事では、RP2040-Zero に MicroPython をインストールする方法から、GPIO の基本操作、PWM、I2C などの通信機能まで、サンプルコードとともに詳しく解説します。初心者の方にもわかりやすく説明しているので、ぜひ参考にしてみてください!
RP2040-Zero とは?
RP2040-Zero の概要と特徴
RP2040-Zero は、Seeed Studio が開発した Raspberry Pi RP2040 を搭載する小型マイコンボードです。Raspberry Pi Pico と同様に デュアルコア Cortex-M0+(133MHz) を搭載し、264KB の SRAM と 2MB のフラッシュメモリ を備えています。
このボードの最大の特徴は、コンパクトな 「XIAO」シリーズのフォームファクタ を採用しており、狭いスペースにも組み込みやすいことです。また、USB Type-C ポートを搭載し、開発や書き込みがより便利になっています。

- デュアルコア ARM Cortex-M0+(最大 133MHz)
- 264KB SRAM / 2MB Flash
- USB Type-C ポート搭載(データ通信・電源供給)
- GPIO 13本(うち 3 本は ADC 対応)
- I2C / SPI / UART / PWM / ADC に対応
- 3.3V ロジックレベル(5V トレラントなし)
- 超小型(20×17.5mm)で軽量設計
Raspberry Pi Pico との違い
項目 | RP2040-Zero | Raspberry Pi Pico |
サイズ | 20 × 17.5 mm | 51 × 21 mm |
USB ポート | USB Type-C | Micro USB |
GPIO ピン数 | 13 本 | 26 本 |
フラッシュメモリ | 2MB | 2MB(Pico W は 4MB) |
電圧 | 3.3V(5V トレラントなし) | 3.3V(GPIO一部5Vトレラント) |
ADC ピン | 3 本 | 3 本 |
無線通信 | なし | Pico W は Wi-Fi 搭載 |
拡張性 | 小型・省スペース向け | 標準的なブレッドボード向け |
RP2040-Zero は、コンパクトで USB Type-C を採用した使いやすい設計になっており、サイズ重視のプロジェクトに最適です。一方で、拡張性や GPIO の多さを求めるなら Raspberry Pi Pico も良い選択肢になります。
MicroPython のインストール
ファームウェアの書き込み手順
公式サイトから .uf2
ファイルをダウンロード
RP2040-Zero は Raspberry Pi RP2040 を搭載しているため、MicroPython のファームウェアは Raspberry Pi Pico 用(Pico / Pico W 用)の .uf2
ファイル を使用できます。
RP2040-Zero の BOOTSEL ボタンを押しながら USB 接続RPI-RP2
と表示されるドライブに .uf2
ファイルをドラッグ&ドロップ
回路図
今回の回路図です。

ピンの指定方法
RP2040-Zero の GPIO は GP0 ~ GP28 を使用可能です(GP23
, GP24
は USB 接続時に使用)。
MicroPython では、machine
モジュールを使って GPIO を制御します。
LED の点滅
ボード上の LED は GP25
に接続されています。
from machine import Pin
import time
led = Pin(25, Pin.OUT) # GP25を出力モードで設定
while True:
led.toggle()
time.sleep(0.5) # 0.5秒ごとに点滅
ボタン入力を読む
GPIO を入力モードに設定し、プルアップ抵抗を有効にしてボタンの状態を読むサンプルです
from machine import Pin
import time
button = Pin(15, Pin.IN, Pin.PULL_UP) # GP15 にボタン接続
led = Pin(25, Pin.OUT) # 内蔵 LED
while True:
if button.value() == 0: # ボタンが押されたら
led.on()
else:
led.off()
time.sleep(0.1)
PWM を使った LED のフェードイン・アウト
from machine import Pin, PWM
import time
led = PWM(Pin(25)) # GP25 に PWM 出力
led.freq(1000) # PWM 周波数を 1kHz に設定
while True:
for duty in range(0, 65536, 1024): # 0 から 65535 まで増加
led.duty_u16(duty)
time.sleep(0.01)
for duty in range(65535, 0, -1024): # 65535 から 0 まで減少
led.duty_u16(duty)
time.sleep(0.01)
I2C の使用(BME280 などのセンサー、AQM1602)
RP2040-Zero では GP4
を SDA
、GP5
を SCL
として I2C を使えます。
from machine import Pin, I2C
i2c = I2C(0, scl=Pin(5), sda=Pin(4), freq=400000) # I2C0: SCL=GP5, SDA=GP4
devices = i2c.scan() # 接続されている I2C デバイスのアドレスを取得
print("I2C デバイス:", devices)
AQM1602のサンプルプログラム
from machine import Pin, I2C
import time
# I2Cの初期化(I2C0を使用)
i2c = I2C(0, scl=Pin(5), sda=Pin(4), freq=100000)
# AQM1602 の I2C アドレス(一般的には 0x3E)
LCD_ADDR = 0x3E
# コマンド送信
def lcd_command(cmd):
i2c.writeto(LCD_ADDR, bytearray([0x00, cmd])) # 0x00 はコマンド送信
# データ送信
def lcd_data(data):
i2c.writeto(LCD_ADDR, bytearray([0x40, data])) # 0x40 はデータ送信
# LCD 初期化
def lcd_init():
time.sleep(0.05) # 電源投入後の待機
lcd_command(0x38) # Function set: 8-bit, 2-line
lcd_command(0x39) # Function set: 8-bit, 2-line, IS=1
lcd_command(0x14) # Internal osc frequency
lcd_command(0x70) # Contrast set
lcd_command(0x56) # Power/ICON/Contrast control
lcd_command(0x6C) # Follower control
time.sleep(0.2) # 待機
lcd_command(0x38) # Function set: IS=0
lcd_command(0x0C) # Display ON, Cursor OFF
lcd_command(0x01) # Display clear
time.sleep(0.002) # クリア後の待機
# LCD に文字列を表示
def lcd_print(text):
for char in text:
lcd_data(ord(char)) # 1文字ずつ送信
# 実行
lcd_init()
lcd_print("Hello, AQM1602!")
ADC(アナログ入力)を読む
from machine import ADC, Pin
import time
# ADC0(GP26)を使用
adc = ADC(Pin(26))
# 3.3Vのリファレンス電圧を基準に電圧へ変換
conversion_factor = 3.3 / 65535
while True:
raw = adc.read_u16() # 16bitの値(0〜65535)
voltage = raw * conversion_factor
print("ADC値:", raw, "電圧:", round(voltage, 3), "V")
time.sleep(1)
実行結果

まとめ
RP2040-Zero は、Raspberry Pi RP2040 を搭載しながらもコンパクトで手軽に使えるマイコンボードです。MicroPython を活用することで、初心者でも簡単に電子工作や IoT プロジェクトに取り組めます。本記事では、GPIO の基本から通信機能まで幅広く紹介しました。さらに高度なプロジェクトに挑戦する際には、無線通信モジュールやディスプレイを組み合わせることで、より実用的なデバイス開発が可能になります。ぜひ、RP2040-Zero を使って、さまざまなアイデアを形にしてみてください!
追伸、残念ながらアマゾンで買った互換品は内部LEDを点滅させたりすることはできませんでした。