


PCパーツ・ガジェット専門
自作PCパーツやガジェットの最新情報を発信中。実測データに基づいた公平なランキングをお届けします。
Raspberry Pi Pico 2 / Pico 2 W のプロジェクト集を解説。MicroPython / C 開発環境、センサー接続、IoT連携、ESP32 との比較、実例を詳しく紹介。
Raspberry Pi Zero 2W活用プロジェクト集。低消費電力・小型システム事例を具体例で解説する。
Arduino Nano ESP32活用ガイド。WiFi対応小型ボードの特徴・Arduino IDE開発を具体例で解説する。
ESP32開発ボードを2026年視点で比較。S3・C6・C3・S2・H2の違いを具体例で解説する。
M5Stack を使ったIoTプロトタイピングを解説。Core2 / CoreS3 / StickC Plus の選び方、UIFlow、Arduino 開発、センサーモジュール、実例を詳しく紹介。
ESP32 を使ったIoT開発の初心者ガイド。ESP32-S3 / C6 / C3 の選び方、Arduino IDE / ESP-IDF 導入、センサー連携、Home Assistant 統合を詳しく紹介。
2026 年時点における組み込み開発の現場では、Raspberry Pi Pico シリーズは依然として最も信頼性の高いマイクロコントローラー基板の一つとして君臨しています。特に「Pico W」および新たに登場した「Pico 2 W」シリーズは、内蔵された WiFi および Bluetooth Low Energy(BLE)機能により、IoT センサーノードや簡易 Web サーバーの構築において ESP32 シリーズと対等に渡り合える存在へと進化しました。本記事では、2025 年末から 2026 年初頭にリリースされた最新ファームウェアである MicroPython 1.24 および CircuitPython 9.2 を前提に、これらのボードを用いた具体的なワイヤレスプロジェクトの構築方法を解説します。
従来、初心者の方が WiFi 機能を備えた基板で開発を行う際、ESP32 の普及により多くの学習リソースが存在してきましたが、Pico シリーズはその安価さ(定価 1,500 円前後)、豊富な GPIO ピン数(最大 40 ピン実装を含む 26 ピン)、そして ARM Cortex-M0+ や M33 プロセッサによる高い演算性能が評価されています。特に 2026 年の現在、RP2040 チップを搭載する Pico W と、次世代 RP2350 プロセッサを搭載する Pico 2 W の使い分けは重要な検討事項となりました。本稿では両者のアーキテクチャの違いから始め、具体的なハードウェア接続、MicroPython によるプログラミング基礎、さらに Phew ライブラリを用いた Web サーバー実装までを包括的に扱います。
IoT プロジェクトにおける通信プロトコルの選定も進化しており、HTTP ベースの REST API だけでなく、軽量な MQTT プロトコルや BLE を利用した近接通信が標準的になっています。本記事では SSD1306 ドライバー搭載の OLED ディスプレイ表示と DHT22 温湿度センサーの読み込みといった基本センシングから、Phew フレームワークによるレスポンシブな Web UI の実装、そして ESP32 Wroom-32 との性能比較までを詳細に記述します。これにより、読者は単なるスクリプト作成ではなく、産業用や家庭用として運用可能なシステムを 2026 年の技術基準に合わせて設計する能力を得ることができます。
Raspberry Pi Pico シリーズの選択において、最初に検討すべきは搭載されているメインプロセッサの違いです。従来の「Pico W」および「Pico 2」として広く流通しているモデルは、Broadcom が設計し、Raspberry Pi Foundation がライセンスを取得した RP2040 マイクロコントローラーを採用しています。RP2040 はデュアルコアの ARM Cortex-M0+ プロセッサで動作し、最大クロック周波数 133MHz で駆動されます。これに対し、最新モデルである「Raspberry Pi Pico 2 W」は、より高性能な RP2350 シリーズのマイクロコントローラーを搭載しています。RP2350 は ARM Cortex-M33 プロセッサを採用しており、ベクトルセキュリティ拡張(M-Profile Vector Extension)や浮動小数点演算ユニット(FPU)をハードウェアとして備えているのが大きな特徴です。
この CPU の違いは、計算処理の複雑さが必要なプロジェクトにおいて顕著に現れます。例えば、画像認識のための簡易な推論を行う場合や、高速な信号処理が必要なモーター制御においては、Cortex-M33 を持つ RP2350 の方が 133MHz の M0+ よりも遥かに効率的です。RP2040 はシングルスレッド実行が基本ですが、RP2350 ではより高度な割り込み処理やマルチタスクの実行が可能で、MicroPython のインタプリタのオーバーヘッドを軽減する余地があります。また、RAM(SRAM)容量も RP2040 版では 264KB が標準ですが、Pico 2 W の環境では最適化され、より大きなデータバッファやネットワークパケットキューを確保しやすくなっています。
通信機能に関しても両者で共通点が多いものの、無線チップのバージョンに微妙な違いが存在します。Pico W および Pico 2 W はどちらも CYW43439-WF という WiFi/Bluetooth Combo チップを搭載しています。このチップは、IEEE 802.11 b/g/n(2.4GHz)に対応し、最大転送速度は理論値で 54Mbps を誇ります。ただし、ファームウェアのバージョンや 2026 年時点でのドライバー最適化により、実際のスループットは環境ノイズの影響を受けます。特に Pico 2 W では、BLE 5.0 以降のプロトコルスタックがより安定しており、Android デバイスや iOS とのペアリング成功率が高いことが確認されています。
| パラメータ | Raspberry Pi Pico W | Raspberry Pi Pico 2 W | ESP32-WROOM-32 |
|---|---|---|---|
| メイン CPU | RP2040 (Dual Cortex-M0+) | RP2350 (Cortex-M33 + FPU) | Xtensa LX7 Dual-Core |
| 最大クロック | 133 MHz | 160-240 MHz (可変) | 240 MHz |
| SRAM | 264 KB | 512 KB - 1MB (モデルによる) | 320 KB |
| Flash Memory | 2 MB - 16 MB (実装依存) | 2 MB - 8 MB | 4 MB - 16 MB |
| 無線機能 | WiFi 4 / BLE 5.0 (CYW43439) | WiFi 4 / BLE 5.0 (CYW43439) | WiFi 4/5 / BT 4.2/5.0 |
| GPIO ピン数 | 26 (実装) | 26 (実装) | 30+ |
| AD コンバータ | 12-bit, 4 チャネル | 12-bit, 8 チャネル | 12-bit, 8 チャネル |
Raspberry Pi Pico W を活用した開発において、最も重要なステップは安定した開発環境の整備です。2026 年現在、標準的な推奨ツールとして「Thonny」IDE が引き続き採用されていますが、バージョン管理やドライバーの整合性が以前よりも厳しくなっています。Python のバージョンとしては、MicroPython 1.24 をベースとした Thonny の最新版(バージョン 3.x)を使用することを強く推奨します。CircuitPython 9.2 を使用する場合は、Thonny の設定で「Runtime」を CircuitPython に切り替える必要がありますが、本稿では MicroPython の標準的な動作を中心に解説を進めます。
まず、Pico W のファームウェアを更新する手順から確認しましょう。Raspberry Pi Foundation の公式サイトから、対応する RP2040 または RP2350 向けの UF2 ファイルをダウンロードします。2026 年時点では、RP2350 用のファームウェアには「rp2350-w」または「rp2040-w」という接尾辞が付与されており、これらは WiFi ドライバーの安定性を向上させるパッチが含まれています。ファイルをダウンロードしたら、Pico W のボード本体に搭載されている BOOTSEL ボタンを押し続けたまま USB ケーブルを接続します。PC 上に「RPI-RP2」というマウントボリュームが認識されたら、UF2 ファイルをドラッグ&ドロップでコピーし、自動再起動させます。
Thonny の設定において、接続先のデバイスとして「Raspberry Pi Pico」を選択する際、シリアルポートの割り当てが自動的に検出されない場合があります。この場合、「ツール」メニューから「オプション」を開き、通信インターフェースを明示的に指定する必要があります。特に 2026 年以降の Windows 11/12 や macOS Sonoma 環境では、USB シリアルドライバー(CP210x または CH340)が自動インストールされないケースがありますので、メーカーサイトからドライバーを手動でインストールしておくことが必須となります。また、Python のインタプリタを PC にインストールするのではなく、「Raspberry Pi Pico」にデフォルトの MicroPython インタプリタを使用する設定を選ぶことで、ファイル転送時の遅延を最小限に抑えられます。
MicroPython は Python 言語をマイクロコントローラー向けに最適化したインタプリタであり、Pico W ではその利点である簡潔な構文と高速な実行速度を享受できます。基本的なライブラリ構造として machine モジュールはハードウェア制御に、network モジュールは通信機能に、そして time モジュールは時間管理に使用されます。例えば、GPIO ピンの状態を操作する際、Pin(15, Pin.OUT) のようにピン番号とモードを指定し、次に value(1) で HIGH(3.3V)出力、value(0) で LOW(0V)出力を行います。この 3.3V の電圧レベルは、後述する DHT22 や OLED ディスプレイとの接続において極重要です。
WiFi 機能の初期化は network.WLAN クラスを用いて行います。Pico W では標準で STA モード(ステーションモード)と AP モード(アクセスポイントモード)の両方がサポートされていますが、一般的なセンサーノードでは STA モードを使用します。初期化コードでは wlan = network.WLAN(network.STA_IF) と定義し、active(True) で無線を有効化した後、connect(ssid, password) を呼び出します。ここで注意すべきは、2026 年現在も多くのルーターが WPA3 プロトコルを採用している点です。Pico W のファームウェア(MicroPython 1.24)では WPA3-Personal への対応が進んでいますが、セキュリティレベルが高いネットワークに接続する際、パケットの暗号化オーバーヘッドにより接続速度が一時的に低下することがあります。
import network
import time
# WiFi モジュールの初期化
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
# SSID とパスワードを設定(大文字小文字を区別)
ssid = 'MyHomeNetwork_5G'
password = 'SecurePassword123!'
# 接続試行と再接続ロジック
if not wlan.isconnected():
print('Connecting to WiFi...')
try:
wlan.connect(ssid, password)
# 最大 10 秒待機して接続を確認
for i in range(10):
time.sleep(1)
if wlan.isconnected():
break
if wlan.isconnected():
print('Connected to', wlan.ifconfig())
else:
print('Connection failed. Check password.')
except OSError as e:
print(f'Error connecting: {e}')
このスクリプトは、接続が確立するまでループで待機し、失敗時にはエラーメッセージを出力します。2026 年の最新ファームウェアでは、接続状態の取得に wlan.ifconfig() を使用することで、IP アドレス(例:192.168.1.50)、サブネットマスク、ゲートウェイアドレスを確認できます。また、DHCP サーバーが応答しない場合や IP 衝突が発生した場合のフォールバックロジックを記述することが、産業用プロジェクトでは推奨されます。
IoT プロジェクトにおいて、センサーデータを可視化することは不可欠です。最も一般的に使用されるディスプレイとして SSD1306 ドライバーを搭載した 0.96 インチ OLED モジュールがあります。このデバイスは I2C バスプロトコルを使用しており、Pico W の SDA(GPIO 2)および SCL(GPIO 3)ピンを接続するだけで動作します。SSD1306 は低消費電力かつ高コントラストな表示が可能で、温度・湿度データや WiFi 信号強度(RSSI)をリアルタイムに表示するのに適しています。
I2C バスでの通信にはプルアップ抵抗の存在が必須となります。Pico W の GPIO ピン内部にプルアップ抵抗が実装されている場合もありますが、SSD1306 モジュール自体に 4.7kΩ または 10kΩ の抵抗が付属していることを確認してください。接続が不安定な場合は、外部に抵抗を追加することで信号の高レベル電圧(VCC)を安定化させます。また、SSD1306 は 5V ドライブ対応のモデルもありますが、Pico W の GPIO は 3.3V なので、レベルシフターを使用せずに直接接続する際は SSD1306 が 3.3V で動作することを確認してください。
from machine import I2C, Pin, Signal
import ssd1306
import time
# I2C インスタンスの作成(Pico W の SCL=GPIO3, SDA=GPIO2)
i2c = I2C(0, scl=Pin(3), sda=Pin(2), freq=400000)
# SSD1306 オブジェクトの初期化(幅 128px, 高さ 64px)
oled = ssd1306.SSD1306_I2C(128, 64, i2c)
def show_sensor_data(temp, hum):
oled.fill(0) # 画面クリア
oled.text("Temp: {:.1f} C".format(temp), 0, 0)
oled.text("Hum: {:.1f} %".format(hum), 0, 15)
oled.text("WiFi: OK", 80, 30) # WiFi 接続状況の簡易表示
oled.show()
# ループ処理
try:
while True:
show_sensor_data(25.0, 60.0) # 実際のセンサー値に置き換え可能
time.sleep_ms(1000)
except KeyboardInterrupt:
print("Stopped")
DHT22 センサーは、I2C プロトコルではなく独自のシングルワイヤプロトコルを使用します。Pico W の GPIO 15 ピンをデータピンとして使用し、センサーの VCC を 3.3V に、GND をグラウンドに接続します。DHT22 はデジタル信号を出力しますが、読み取りタイミングが厳密であるため、time.sleep_us() を用いたマイクロ秒単位の制御が必要です。また、読み取り頻度は 1Hz(1 秒に 1 回)を超えないように設定し、センサーの発熱による誤差を防ぎます。
Raspberry Pi Pico W の利点の一つとして、内蔵 WiFi 機能により簡易な Web サーバーとして動作できる点が挙げられます。Phew ライブラリは、この目的のために設計された Python 用ライブラリであり、HTTP リクエストを処理して HTML ページを送信する機能を備えています。2026 年時点の Phew バージョン(v1.5 以降)では、テンプレートエンジンが強化され、Jinja2 ベースのシンタックスを利用できるようになっています。これにより、動的なデータ表示と静的な UI 構成を効率的に分離できます。
Web サーバーを実装する際、Pico W は DHCP クライアントとして動作し、ルーターから IP アドレスを取得します。サーバー起動時には web_server.run() メソッドが呼び出され、デフォルトでポート 80 が開放されます。ただし、セキュリティ上の理由から、外部への公開を避けるため、ルーターの内部ネットワーク(LAN)からのアクセスのみ許可する設定が推奨されます。また、Pico W の処理能力には限りがあるため、複雑な CSS や JavaScript を内包した重いページは避けるべきです。
Phew を使用したテンプレートファイル(index.html)の準備と読み込み例を示します。この HTML ファイルを Pico W 上の Flash メモリに保存するか、またはコード内に文字列として埋め込むことで、動的な Web ページ生成が可能です。
pip install phew(PC 側ではなく、Pico 上の環境で利用可能){{ variable }} 形式で変数を定義する。web_server.run() でサーバーを開始する際、スレッド安全性に注意する。from phew.server import run, get, post
import network
# HTML テンプレート定義(簡易版)
INDEX_HTML = """
<html>
<head><title>Pico W Status</title></head>
<body>
<h1>Current Status</h1>
<p>Temperature: {{ temp }} C</p>
<form action="/update" method="post">
<input type="text" name="temp" value="25">
<button type="submit">Set Temp</button>
</form>
<p><a href="/">Refresh</a></p>
</body>
</html>
"""
# GET リクエストハンドラー(メインページ表示)
@get("/")
def index():
return INDEX_HTML.format(temp=25.0) # 実際の値を取得するロジックをここに
# POST リクエストハンドラー(設定更新処理)
@post("/update")
def update_temp(request):
new_temp = float(request.form["temp"])
print(f"Temperature updated to {new_temp}")
return "Updated!"
# サーバー起動(ループ内で実行可能、または Thonny 上での実行推奨)
try:
run(host="0.0.0.0", port=80) # 0.0.0.0 はすべてのインターフェースでリスン
except OSError as e:
print(f"Server error: {e}")
このコードは、ブラウザからアクセスした際に現在の温度を表示し、POST リクエストを受け取って値を更新するシンプルな例です。2026 年の環境では、HTTPS(SSL/TLS)対応の Phew モジュールも利用可能ですが、Pico W のメモリ制約を考慮すると、LAN 内での非暗号化通信が一般的です。
IoT アプリケーションにおいて、単なる Web サーバーよりも効果的なデータ収集方法として MQTT(Message Queuing Telemetry Transport)があります。これは Pub/Sub パターンを採用した軽量なプロトコルで、MQTT Broker として Mosquitto や HiveMQ Cloud などのサーバーにデータをプッシュします。MicroPython 1.24 の標準ライブラリには umqtt が含まれていますが、より高機能な umqtt.simple またはサードパーティの軽量実装を使用することで効率的な通信が可能です。
MQTT を利用するメリットとして、帯域幅の節約とリアルタイム性が挙げられます。HTTP リクエストに比べヘッダーサイズが小さく、Pico W のようなリソース制約のあるデバイスでも安定した動作が可能です。設定では、Broker URL(例:broker.hivemq.com:1883)、クライアント ID、ユーザー名、パスワードを指定します。2026 年現在、多くのクラウド IoT プラットフォームで MQTT の QoS レベル 1(少なくとも 1 回の到達)が推奨されており、データロストを防ぎつつオーバーヘッドを抑えるバランスが取れています。
import network
from machine import Pin, time_ns
import umqtt.simple as mqtt
import time
# WiFi 接続済みであることを前提とする
BROKER = "broker.hivemq.com"
PORT = 1883
CLIENT_ID = "pico_w_sensor_node_01"
TOPIC_PUB = "home/sensor/temperature"
TOPIC_SUB = "home/command/set_temp"
def mqtt_callback(topic, msg):
print("Received message on topic {}: {}".format(topic.decode(), msg.decode()))
# ここにコマンド処理ロジックを実装
try:
client = mqtt.MQTTClient(CLIENT_ID, BROKER, PORT)
client.set_callback(mqtt_callback)
while True:
if not client.is_connected():
print("Connecting to MQTT Broker...")
client.connect()
msg = client.wait_msg()
# 待機中にデータを収集して送信する処理も可能
# Pico W の処理能力に余裕がある場合のみ非同期実行を推奨
client.publish(TOPIC_PUB, b"25.0")
time.sleep(60) # 1 分ごとにデータを送信
except Exception as e:
print(f"MQTT Error: {e}")
このスクリプトは、一定間隔で温度データを Broker にプッシュし、サブスクライブされたトピックからのコマンドを待つ構造です。Pico W の電力消費を抑えるためには、接続切れ時の自動再接続ロジック(try-except ブロック)が不可欠です。また、セキュリティの観点から、Broker への接続時に TLS を使用することも検討すべきですが、処理負荷が高くなるため、LAN 内のみの利用であれば平文通信で十分と判断されることもあります。
Raspberry Pi Pico 2 W が登場した大きな理由は、Bluetooth Low Energy(BLE)スタックの強化にあります。RP2350 プロセッサのアーキテクチャ変更により、Pico 2 W は BLE 5.0 以降の標準プロトコルをサポートしており、スマートフォンやタブレットとのペアリングが容易になります。MicroPython 1.24 および CircuitPython 9.2 では、ble モジュールおよび adafruit_ble ライブラリが充実し、GATT(Generic Attribute Profile)テーブルを定義することで、独自の BLE デバイスとして動作できるようになりました。
BLE の用途として最も一般的なのは、スマホアプリとの連携による設定変更やデータ取得です。例えば、センサーノードの IP アドレスを変更したい場合、WiFi 接続が不安定な時に BLE を経由して SSH または API コマンドを送信することができます。Pico 2 W は広告パケット(Advertising Packet)を定期的にブロードキャストし、近接しているデバイスに自身の存在を知らせます。これにより、ユーザーはスマホから「ペアリング」ボタンを押すだけで接続プロセスを開始できます。
import machine
from micropython import const
import bluetooth
# adafruit_ble モジュールのインポートが必要となる場合があります
# BLE の定義(簡易版)
ble = bluetooth.BLE()
ble.active(True)
def scan_for_devices():
results = ble.scan(2000, 0x18) # 2 秒間スキャン
for address, ad_type, data in results:
if len(data) > 5:
print(f"Found device at {address}: {data.hex()}")
# GATT サービスの定義例(簡易化)
class ServiceTemp:
def __init__(self):
self.temperature = const(25.0)
# 注意:実際の BLE 実装には adafruit_ble ライブラリの詳細な設定が必要
Pico W と Pico 2 W の BLE 性能比較では、接続時の遅延やペアリング確立時間に差があります。Pico 2 W では M-Profile Vector Extension(MVE)により、暗号化処理が高速化されているため、BLE のセキュリティ機能(LE Secure Connections)を有効にしても動作速度の低下は最小限に抑えられています。また、消費電力面でも Deep Sleep モードからのウェイクアップ時間が短縮されており、バッテリー駆動の IoT デバイスにとって重要な要素となっています。
ESP32 シリーズ(特に Wroom-32)は、長年 WiFi/IoT ベンチマークのデファクトスタンダードでした。しかし 2026 年現在、Pico シリーズとの比較において明確な優劣がつくケースが多くなっています。まず CPU の性能において、ESP32 は Xtensa LX7 プロセッサを採用し、最高で 240MHz で動作します。これに対し Pico W(RP2040)は 133MHz ですが、双コア構成により並列処理が可能です。Pico 2 W(RP2350)の M33 プロセッサは浮動小数点演算に強く、科学計算や信号処理において ESP32 よりも効率が良い場合があります。
WiFi の通信性能については、ESP32 が長年優位性を保ってきましたが、CYW43439 チップを搭載した Pico W および Pico 2 W は、ESP8266 や旧世代の ESP32 モデルと比較すると同等かそれ以上のスループットを記録します。特に 5GHz バンドへの対応や MIMO(Multiple Input Multiple Output)機能の有無において違いが生じます。Pico シリーズは現在 2.4GHz のみですが、ファームウェアの最適化により ESP32 との差は縮まっています。また、ESP32 は外部メモリ(PSRAM)を拡張可能ですが、Pico W は Flash メモリの容量に依存するため、大容量データの処理には制限があります。
| 項目 | Raspberry Pi Pico W/2W | ESP32-WROOM-32U |
|---|---|---|
| 価格 | ¥1,500 - ¥2,000 (基板別) | ¥800 - ¥1,200 (モジュール別) |
| CPU アーキテクチャ | ARM Cortex-M0+/M33 | Xtensa LX7 |
| WiFi 規格 | WiFi 4 (802.11 b/g/n) | WiFi 4/5 (802.11 a/b/g/n/ac) |
| Bluetooth | BLE 5.0 / Classic BT | BT 4.2 / LE / Classic |
| メモリ (RAM) | 264KB - 1MB | 320KB + PSRAM 可能 |
| 開発言語 | MicroPython, CircuitPython, C/C++ | Arduino, MicroPython, ESP-IDF |
| 消費電力 | 低 (Deep Sleep 優秀) | 中 (常時接続時) |
最終的な選定基準は、プロジェクトの要件によります。高価なプロセッサや複雑な暗号化処理が不要で、安価な Web サーバー構築が目的であれば ESP32 も依然として有効です。しかし、Python(MicroPython/CircuitPython)での開発を重視し、Raspberry Pi 環境との親和性を求める場合は Pico シリーズが最適解となります。特に Pico 2 W の登場により、BLE や AI 関連のタスクにおいても ESP32 を凌駕するポテンシャルを有しています。
実際の運用において最も重要となるのが電力管理です。Pico W および Pico 2 W は USB 給電が標準ですが、バッテリー駆動(LiPo バッテリー等)も可能です。MicroPython の machine.deep_sleep() メソッドを使用することで、消費電流を数 µA レベルまで削減できます。しかし、USB ケーブルを介して接続している状態では完全な Deep Sleep に入れないため、電源回路の設計が重要になります。特に DHT22 や OLED ディスプレイを使用する場合、それらのデバイスは Pico W の GPIO ピンから電力を供給されることが多く、全体の消費電流に大きく影響します。
また、2026 年時点では、セキュリティパッチの適用頻度が高まっています。WiFi ドライバーには脆弱性が発見される可能性があり、ファームウェアの更新は定期的に行う必要があります。Thonny IDE を使用して接続している間は、USB ケーブルを通じて外部からアクセスできるため、公共のネットワーク環境での運用時は注意が必要です。物理的なセキュリティとして、重要なデータ(WiFi パスワードや API キー)をコード内にハードコーディングせず、EEPROM や Flash メモリの保護領域に格納することを推奨します。
Q1: Raspberry Pi Pico W と Pico 2 W の主な違いは何か? A1: 最大の差は搭載プロセッサです。Pico W は ARM Cortex-M0+ (RP2040) を採用し、クロック周波数は最大 133MHz です。一方、Pico 2 W は ARM Cortex-M33 (RP2350) を搭載しており、浮動小数点演算ユニット(FPU)を備え、最高で 240MHz で動作可能です。これにより、複雑な計算や信号処理が必要な場合、Pico 2 W の方が高速に処理できます。また、RAM 容量も Pico 2 W の方がより多く確保されていますが、価格差は僅かです。
Q2: MicroPython と CircuitPython の使い分け方は? A2: MicroPython は Python の標準的な文法により、Pico や他の多くのマイクロコントローラーで動作する汎用的な言語です。一方、CircuitPython は Adafruit 社が開発し、より簡易化されたライブラリ体系(Board-specific modules)を提供します。2026 年現在では、CircuitPython の方がドキュメントが豊富で初心者向けのハードウェア制御に優れていますが、MicroPython の方が C/C++ との互換性が高く、既存の Python コードとの移植性が良いです。
Q3: WiFi に接続できない場合の対処法を教えてください。
A3: まず、SSID とパスワードが正しいか確認してください。大文字小文字に注意が必要です。次に、Thonny のコンソールでエラーメッセージを確認し、OSError が発生している場合はドライバーやファームウェアの問題である可能性があります。MicroPython 1.24 にアップデートするか、RP2040/RP2350 の最新 UF2 ファイルを書き換えてください。また、ルーターが WPA3 プロトコルを使用している場合、Pico W の対応状況を確認してください。
Q4: DHT22 センサーを接続した際に値が表示されないのはなぜ?
A4: 最も一般的な原因はプルアップ抵抗の不足です。DHT22 はデジタル信号を送信する際、内部でプルアップ抵抗を必要とすることがあります。GPIO ピンに 10kΩ の抵抗を VCC に接続してください。また、読み取り頻度が速すぎないか確認してください。DHT22 は 1 秒以内に再度読み取ることは推奨されません。コード内の time.sleep(2) を使用し、十分なインターバルを設けてください。
Q5: Phew ライブラリを使用する際の制限事項は? A5: Pico W のメモリ容量(SRAM)が限られているため、非常に大きな HTML ページや大量の静的ファイルをサーバーに保存することは推奨されません。また、Phew は非同期処理をサポートしていないバージョンが多いため、重い処理を行うとサーバーがフリーズする可能性があります。GET/POST リクエストをシンプルにし、長時間かかる計算は外部サーバーへ任せる設計が望ましいです。
Q6: ESP32 から Pico W への移行において注意すべき点は?
A6: GPIO ピンの配置や電圧レベルに違いがあります。ESP32 は多くのピンを 5V tolerant にしていますが、Pico W の GPIO は厳密に 3.3V です。外部デバイスとの接続時には必ずレベルシフターを使用するか、3.3V 対応のデバイスのみを使用してください。また、WiFi ドライバーの実装方法が異なり、ESP-IDF を使用している場合は Pico W では MicroPython の network モジュールを習得する必要があります。
Q7: BLE デバイスとして動作させるには何が必要か?
A7: Raspberry Pi Pico 2 W であれば標準機能で対応していますが、Pico W(RP2040)でも BLE をサポートするファームウェアにアップデートすることで可能です。Adafruit の adafruit_ble ライブラリまたは MicroPython の ble モジュールを使用します。GATT サービスを定義し、広告パケットを設定する必要があります。また、スマホアプリ側で BLE デバイスを検出・接続するための設定が必要です。
Q8: 電力供給は USB ケーブル以外にどうすればよいですか? A8: LiPo バッテリー(3.7V)またはリチウムイオン電池を使用できます。Pico W の VBUS ピンには直接接続せず、DC-DC コンバーターで 5V に昇圧してから供給するか、BMS(バッテリーマネジメントシステム)を介して接続してください。Deep Sleep モードを利用する場合、MCU の電源をシャットダウンするためのスイッチ回路を組み込むことで、数 µA 以下の消費電流を実現できます。
Q9: セキュリティ面での対策はどのように行うべきか? A9: WiFi パスワードや API キーをコード内に直接記述せず、EEPROM や Flash メモリの保護領域に格納してください。また、外部への公開を避けるため、ルーターのファイアウォールで Pico W の IP アドレスからのアクセス制限を設定します。可能であれば TLS/SSL を使用して通信を暗号化し、MQTT ブローカーには認証機能を有効にしてください。
Q10: 2026 年時点でのファームウェア更新方法は? A10: Raspberry Pi Foundation の公式サイトより最新の UF2 ファイルをダウンロードします。BOOTSEL ボタンを押しながら USB を接続し、マウントされたボリュームへファイルをコピーして再起動させます。Thonny IDE を使用している場合は、「Python インタプリタ」の設定で「Raspberry Pi Pico」を選択し、自動更新機能(利用可能な場合)を利用することも可能です。
本記事では、2026 年時点の最新技術環境を踏まえた Raspberry Pi Pico W および Pico 2 W を用いたワイヤレスプロジェクトの構築方法を解説しました。RP2040 と RP2350 のアーキテクチャの違いや、CYW43439 WiFi チップの性能について詳細に比較し、それぞれの特徴に応じた選定基準を提示しています。MicroPython 1.24 を用いたプログラミングでは、GPIO 制御からネットワーク接続までを段階的に学び、Phew ライブラリによる Web サーバー実装や MQTT プロトコルを活用した IoT データ連携の手法を紹介しました。
これらの知識と技術は、2026 年の IoT 市場において即戦力となるスキルセットです。特に Pico 2 W の登場により、Bluetooth を活用した近接通信や低消費電力での運用が可能となり、従来 ESP32 一辺倒であった分野に新たな選択肢が生まれました。本記事で学んだ基礎知識を元に、読者各位が独自の IoT プロジェクトを開発し、より便利で安全な生活環境を実現することを期待しております。次世代の組み込み開発において、Pico シリーズは引き続き中核的な役割を果たし続けるでしょう。