以下に、PJ_IoT_00
プロジェクトで DHT22 センサー+Wi-Fi 通信を扱う MicroPython プログラムを作るにあたっての venv 構築・ファイル構成・手順・設定ファイルの使い方 を、Windows + Thonny 環境向けにやさしく丁寧に整理します。
PoC開発 IoT x AI ~フォルダ構成~ | 優日堂 Lab | 優日堂のページ設定した以下のフォルダ
C:\Users\あなたの名前\Documents\RaspiProjects\PJ_IoT_00 に構築していきます。
目次
- 1 開発環境:前提条件
- 2 🔧 主流シェル一覧(2025年現在)
- 3 ディレクトリ構成:理想形
- 4 MicroPython に pip はない
- 5 MicroPython特有のlib フォルダーの使い方
- 6 Wi-Fi接続ユーティリティ(例)
- 7 MicroPython 特有のmain.py(実行ファイル)
- 8 MicroPython 特有のboot.py 起動時に自動実行
- 9 Thonnyでの操作
- 10 🧠 解説まとめ
- 11 📊 MicroPython 特有のまとめ
開発環境:前提条件
環境 | 内容 |
---|---|
OS | Windows 10/11 |
エディタ | Thonny(MicroPython対応済み) |
ボード | Raspberry Pi Pico W(MicroPython書き込み済) |
言語 | MicroPython(Pythonの軽量版) |
プロジェクトパス | C:\Users\あなたの名前\Documents\RaspiProjects\PJ_IoT_00 |
🔧 主流シェル一覧(2025年現在)
一旦、脱線します。
皆さんが馴染み深いる「コマンドプロンプト (cmd)」windows画面下のバーにある検索にcmdと入力して、黒画面が表示されるシェル。
今回のプロジェクトに限らず、Raspberry Piを開発していくうえでPython、MicroPython、Raspbianなどでシェルの使い分けが必要になりますのでここで、その準備を先にしておきます。
対象デバイス | 主に使うシェル | 理由・用途 |
---|---|---|
PC(Windows) | PowerShell または Windows Terminal | 標準環境、仮想環境作成・pip操作などに安定。複数タブも可能(Terminal) |
PC(Linux/macOS) | bash / zsh | Python・IoT系開発者に定番。venv や pip コマンドが自然に使える |
Raspberry Pi Zero 2 W(Raspberry Pi OS) | bash | Raspbian(Debianベース)の標準。Pythonスクリプト、GPIO制御など |
Raspberry Pi Pico W(MicroPython) | Thonny 付属の REPLシェル または rshell / mpremote | MicroPython独自。USB経由でコード実行・REPL操作用 |
スマホ(開発補助) | なし(UI or API経由) | スマホで直接シェル操作は基本しない。Flask APIなどで通信する |
PCでのAI・データ解析補助(Jupyter) | bash または Windows Terminal | 仮想環境 + notebook起動 + pip管理が使いやすい |
使い分けのポイント(開発目的別)
開発内容 | おすすめシェル | 補足 |
---|---|---|
PCでPython仮想環境やスクリプト実行 | PowerShell または cmd(初心者) | .venv 有効化や pip install 向け |
Pico WへMicroPython転送 | Thonny または mpremote | main.py 転送やREPL確認 |
Zero 2 WへPythonスクリプト実行 | SSH接続して bash 使用 | python3 , pip3 , sudo など実行 |
PCでJupyter notebook起動・補助スクリプト実行 | bash または Terminal | jupyter lab , plot_data.py など |
MQTT/Flaskサーバ起動 | bash または PowerShell | python server.py 等 |
Git操作 | Git Bash または Terminal | git clone , git pull などLinux風が便利 |
そもそも「ターミナル」とは?
Python開発におけるTerminal(ターミナル)の活用法について、初心者〜中級者向けに整理して説明します。
特に Windows環境+仮想環境+Raspberry Pi系(Pico W や Zero 2 W)との連携 を意識した内容になっています。
「ターミナル」とは、コマンド(文字)でPCを操作する画面のこと。
Python開発では、以下のような操作に使います:
操作 | 例 |
---|---|
仮想環境の作成・有効化 | python -m venv .venv / .\.venv\Scripts\activate |
ライブラリのインストール | pip install numpy |
ファイルの実行 | python myscript.py |
git管理 | git init / git status |
ファイル操作 | cd , mkdir , copy , del , など |
よく使うターミナルコマンド
コマンド | 説明 |
---|---|
cd | フォルダの移動 (cd myfolder ) |
dir / ls | ファイル一覧の表示(Windows/Linux) |
mkdir | フォルダ作成 |
del / rm | ファイル削除 |
copy / cp | ファイルコピー |
python file.py | Pythonスクリプトの実行 |
pip install | パッケージインストール |
pip list | インストール済みパッケージ一覧 |
deactivate | 仮想環境の終了 |
Python開発でのターミナルの使いどころ
作業内容 | ターミナルの役割 |
---|---|
環境構築 | venvの作成、pipの操作 |
スクリプト実行 | python file.py など |
自動化・整備 | .bat や .sh によるスクリプト化 |
バージョン管理 | git操作 |
ログ・エラー確認 | 実行結果の確認、デバッグ |
Python開発におすすめのターミナル環境
ターミナル名 | 特徴 | おすすめ度 |
---|---|---|
Windows Terminal | 複数タブ、カラー表示、PowerShellやcmdをまとめて使える最新ターミナル | ⭐⭐⭐⭐ |
PowerShell | Windows標準の高機能なシェル。Pythonとも相性良し。 | ⭐⭐⭐ |
コマンドプロンプト(cmd) | 伝統的なシェル。古いが簡素。初心者には分かりやすい。 | ⭐⭐ |
WSL(Linux環境) | 本格的なLinux開発が可能。Flask/Django開発にも最適。 | ⭐⭐⭐⭐(上級者向け) |
Windows Terminal
💡 なぜ Windows Terminal を使うと良いのか?
理由 | 説明 |
---|---|
✅ コマンドプロンプトやPowerShellをタブで切り替え | 複数の作業を同時に行える(例:1つはPython仮想環境、もう1つはGit作業) |
✅ 見た目がきれいでカスタマイズ自由 | フォント、配色、文字サイズなどを変更可能 |
✅ WSL(Linux)、PowerShell、Git Bashも使える | 複数の開発環境を統合できる |
✅ ショートカットで高速操作 | Ctrl + Shift + T で新しいタブなど便利機能が多い |
Windows Terminalを開くと、タブメニューから以下が選べます:
・Windows PowerShell
・Command Prompt(cmd)
・WSL(Ubuntuなど)
・Azure Cloud Shell(使ってなければ非表示)
・Git Bash(インストール済みの場合)
→ つまり「cmdだけ」だった従来の環境が、「いろいろ選べる快適な作業場」に変わります。
今まで cmd を使っていたなら、Windows Terminal を入れておくと cmd も使えて、さらに便利になります。開発作業の効率が大きく上がるのでおすすめです。
Microsoft Store で「Windows Terminal」と検索してインストール(無料)してみてください。
PowerShell(7.x)もインストールして標準的に使っていけばよいと思います。
最新の PowerShell (7.x) をインストール
Microsoft Store から「PowerShell」で検索 → PowerShell をインストール
インストール後、
pwsh を入力
出力 PowerShell 7.x.x
になればokです。
Windows Terminal の既定プロファイルを「PowerShell 」に変更
手順:
- Windows Terminal 右上の「▼」をクリック → 「設定(Settings)」
- 左側の「スタートアップ」もしくは「既定のプロファイル(Default Profile)」を選択
- ドロップダウンから
PowerShell
(7.x と表示される)を選択
※「Windows PowerShell」ではないことを確認 - 「保存」して閉じる
脱線終了、本題に戻ります。⇩
ディレクトリ構成:理想形
C:\Users\あなたの名前\Documents\RaspiProjects\PJ_IoT_00\
全体の構成は以下になります。
PJ_IoT_00\
├─ pc_dev
├─ pico_app/
├─ README.md
pc_dev
├─ pc_dev ← PC補助スクリプト・開発環境
│ ├─ .venv/ ← 仮想環境(Pythonライブラリ用)
│ ├─ requirements.txt ← PCで使うライブラリ定義(matplotlib 等)
│ ├─ sensor_test_dht.py ← DHT22センサーテスト 動作確認用(USB経由 or テスト信号)
│ ├─ sensor_test_bme280.py ← BME280センサーテスト 動作確認用(USB経由 or テスト信号)
│ ├─ sensor_test_oled.py ← OLED表示テスト 動作確認用(USB経由 or テスト信号)
│ └─ …
│ ├─ plot_data.py ← センサーデータをCSVからグラフ表示
│ ├─ wifi_logger.py ← Picoから受信したデータをログに記録
│ ├─ data/ ← 保存されたセンサーデータやログ
│ │ ├─ thm_log_20250619.csv
│ │ └─ wifi_data.json
│ └─ utils/ ← PC用ユーティリティ(CSV整形など)
│ └─ file_utils.py
Thonnyだけで完結するなら、 requirements.txt
は省略可。
仮想環境(venv)の構築
PC(開発用)の Python 仮想環境を作ります。
Pico にではなく、あなたのWindows PCに作る仮想環境です。
venv は 通常の Python(CPython) の機能です。
MicroPython や Raspberry Pi Pico (MicroPython環境) では、venv
は使えません。
venv
は、Python が複数バージョンや依存ライブラリを共存させるために OS(Windows/Linux/macOS)上で仮想的に環境を切り替える仕組みです。
MicroPython は Pico 上で動作する軽量 Python互換のファームウェアであり、以下のような理由で venv
が非対応です:
- OS が存在しない(MicroPython自身がOSのように動作)
- ファイルシステムが限定的(小容量のFlash)
- Pythonパッケージのインストール・アンインストールという概念がない
- 必要な
.py
ファイルは直接 Pico にコピーして使う設計
🎯 誤解されやすい点
用語 | Pico + MicroPython で使える? | 備考 |
---|---|---|
venv | ❌ 使えません | OS依存の仮想環境機能(CPythonの一部) |
pip | ❌ 使えません | MicroPythonにはパッケージ管理機構が基本的にない(upip という簡易版が一部環境で利用可) |
import | ✅ 使えます | lib/ に置いた .py を読み込み可能 |
sys.path | ✅ 一部制限ありで使えます | lib/ や / を見に行く。ただし動的に拡張は慎重に |
混乱させてしまっているかも知れませんが、PJ_IoT_00\pc_devの中に.venvを設置します。
pc_devは、パソコンとpico wをUSBケーブルで接続して実行(動作)させる用のフォルダーとファイルになります。
pico wを単体で動作させる場合は、PJ_IoT_00\pico_appの中のファイルをpico wに転送して動作させますので、.venvは無関係になります。
.venv/
内部の構成(Windows環境)
.venv/
内部の構成を先にご紹介します。
python -m venv .venv
コマンドで作成される .venv/
フォルダの中身は、以下のようになります
.venv/
├─ Include/ ← Cヘッダファイル群(通常は不要)
├─ Lib/ ← 仮想環境専用のライブラリ置き場
│ └─ site-packages/ ← pip install したパッケージが入る(例:requests, matplotlib など)
├─ Scripts/ ← Windows用 実行ファイル群
│ ├─ activate.bat ← cmd用 有効化スクリプト
│ ├─ Activate.ps1 ← PowerShell用
│ ├─ python.exe ← この環境専用のPython本体
│ └─ pip.exe ← pipコマンド
├─ pyvenv.cfg ← 仮想環境の設定ファイル(バージョン情報など)
🔧 コマンドプロンプトの場合
windows画面の下のバーの左側にある検索窓でコマンドプロンプトを検索し選択します。
🔧 コマンドプロンプトが開くと、
Microsoft Windows [Version 10.0.26100.4351]
(c) Microsoft Corporation. All rights reserved.
C:\Users\あなたの名前>_
このようになっていると思います。
🔧 venv構築
C:\Users\あなたの名前>cd C:\Users\あなたの名前\Documents\RaspiProjects\PJ_IoT_00\pc_dev
python -m venv .venv
.venv/
という 隠しフォルダを作成。
👉 通常のプロジェクトでは .venv/
の方が好まれます(IDEが自動認識しやすく、Gitに含めないため)。
🔧 有効化(activate)
.venv\Scripts\activate.bat
有効になると、プロンプトに (venv)
が付きます
(venv) C:\Users\YourName\Documents\RaspiProjects\PJ_IoT_00\pc_dev>
pipを最新版にアップグレード(※重要)
python -m pip install --upgrade pip
仮想環境を作った直後の pip は「古いことが多い」ため、pipの更新は「仮想環境の作成後」に実行します。
🔧 仮想環境のPython が有効か確認
このコマンドは、現在使用されている python.exe
のパスを確認します。
where python
出力が .venv\Scripts\python.exe
を含んでいれば成功。
C:\Users\YourName\Documents\RaspiProjects\PJ_IoT_00\pc_dev\.venv\Scripts\python.exe
Thonnyで venv
を使用するには?
1.メニュー → [実行] → [実行構成]
2.「仮想環境を使用する」にチェック
3.C:\Users\YourName\Documents\RaspiProjects\PJ_IoT_00\pc_dev\.venv\Scripts\python.exeを指定
.venv
を pc_dev/
配下に作成した場合、この設定で仮想環境の Python が使用されます。
requirements.txt
を元にしたライブラリのインストールも、この環境で完結します。
pip install -r requirements.txt
🔧PowerShell コマンドの場合
Windows Terminalの中のPowerShellで構築する場合
python -m venv .venv
..venv\Scripts\Activate.ps1
.venv
という名前の仮想環境が作成されます。
有効化すると、プロンプトが以下のように変わります(例):
(.venv) PS C:\Users\YourName\Documents\RaspiProjects\PJ_IoT_00\pc_dev>
pip
を最新版にアップグレード(※重要)
python -m pip install --upgrade pip
仮想環境の場所を確認したいとき
where python
出力結果に .venv\Scripts\python.exe
が含まれていれば、仮想環境が使われています。
Thonnyで venv
を使用するには?
1.Thonny を起動
2.メニュー → [実行] → [実行構成]
3.「仮想環境を使用する」にチェック
4..venv\Scripts\python.exe
を指定して保存
PowerShell と cmd の違いと共通点
「仮想環境の有効化」の activate の方法だけ違います。
手順 | PowerShell | コマンドプロンプト(cmd) | 補足 |
---|---|---|---|
仮想環境の作成 | python -m venv .venv | 同じ | 共通コマンド |
仮想環境の有効化 | .\.venv\Scripts\Activate.ps1 | .venv\Scripts\activate.bat | コマンドが異なる |
pipの更新 | python -m pip install --upgrade pip | 同じ | 共通コマンド |
ライブラリのインストール | pip install -r requirements.txt | 同じ | 共通コマンド |
スクリプト実行 | python script.py | 同じ | 共通コマンド |
仮想環境の終了 | deactivate | 同じ | 共通コマンド |
pico_app/
pico wを単体動作させるときにpicoにインストールするフォルダー構成です。
pico_app/の中身だけを転送します。
Thonnyは、ファイル更新時に Thonny の "ファイルを上書き" 機能で手動転送します。
自動同期機能はThonnyにはありません。
├─ pico_app/ ← Pico W用(転送対象)
│ ├─ lib/ ← Pico Wで使うライブラリ・機能別モジュール群
│ │ ├─ dht.py ← DHT22センサー用ドライバ(温湿度取得)
│ │ ├─ bme280.py ← BME280センサー
│ │ ├─ display/ ← 表示器(OLEDやLCD)制御クラス・関数(例:oled.py)
│ │ │ └─ oled.py (I2C接続のOLEDにテキストやセンサーデータを表示)
│ │ ├─ net/ ← Wi-Fi通信関連の関数・MQTT/HTTP送信など
│ │ │ ├─ wifi_manager.py (Wi-Fi接続・再接続処理)
│ │ │ └─ mqtt_client.py (MQTT通信ユーティリティ)
│ │ └─ utils/ ← 時刻取得、文字列整形、NTP同期などの補助関数
│ │ ├─ time_sync.py (NTPで時刻同期)
│ │ └─ formatting.py (ログやJSONの整形)
│ ├─ main.py ← Pico Wのメイン処理(ループ、センサーデータ取得&送信)
│ ├─ boot.py ← Pico起動時に1回だけ実行される初期設定(省略可)
│ │ ※REPL制御やNTP同期、LED点灯などに使える
│ ├─ config.py ← Wi-Fi設定・定数定義(SSID/PASS、送信間隔など)
│ └─ README_pico.md ← Pico W側だけに関する説明書(使い方・ファイル構成など)
config.py の書き方
機密情報(Wi-Fi SSIDやパスワード)やGPIO のPIN設定をまとめて管理します。
# config.py
WIFI_SSID = "Your_SSID"
WIFI_PASSWORD = "Your_Password"
SENSOR_PIN = 15 # GPIO番号
など
MicroPython に pip はない
MicroPythonはメモリがとても少ないマイコン用の軽量Pythonです。
- 通常の
pip install
は使えません。 - PyPI も使えません。
- ライブラリは「.pyファイルを直接コピー」して使います。
import
は普通に使えます。
- ただし、Pico上に
その.pyファイルがあること
が条件です。
from lib.dht import DHT22
この場合、lib/dht.py
が Pico にアップロードされていなければ ImportError
になります。
pipとは?
pip
は、Python の パッケージ管理ツールです。
- Python公式の「PyPI(パイパイ)」という倉庫から、追加の機能(ライブラリ)をインストールします。
例
pip install requests
pip install numpy
MicroPython特有のlib フォルダーの使い方
import 用
Pico に転送できるようにライブラリを整理します。
MicroPython では、ルート直下に lib/
フォルダを作っておくと、そこにある .py
ファイルをモジュールとして自動的に探索対象にしてくれます。
つまり、「lib/
は MicroPython にとっての import 用フォルダ」です。
MicroPython公式の 温湿度センサーのDHT ライブラリを lib/dht.py
に保存。
以下は参考(公式に近いもの):
# lib/dht.py
import machine
import time
class DHT22:
def __init__(self, pin):
self.pin = machine.Pin(pin)
def read(self):
import dht
sensor = dht.DHT22(self.pin)
sensor.measure()
return sensor.temperature(), sensor.humidity()
詳しく解説
行 | 内容 |
---|---|
import machine | GPIOなどのハード制御ライブラリ(MicroPython標準) |
import time | sleep() など時間操作ライブラリ |
class DHT22: | DHT22センサー用のクラス定義(自作) |
__init__() | センサーの接続ピンを受け取って初期化 |
read() | dht.DHT22() を使って温度・湿度を計測する関数 |
return | 温度と湿度をタプルで返す (temp, hum) |
このファイルは、DHT22(温湿度センサー)用の便利なラッパークラスです。
ラッパークラスとは
**「ある機能やライブラリを、使いやすい形で包み込んだクラス」**のことです。
- 難しかったり面倒な処理を、シンプルでわかりやすくするために使います。
- 「包む(wrap)」→「ラッパー」という名前です。
ラッパークラスとは:「複雑なライブラリや処理を、使いやすく包み込んだクラス」
→ 自作ライブラリのようなもので、簡潔・安全・再利用可能なコードにするために使います。
ラッパークラスのメリット
メリット | 内容 |
---|---|
✅ シンプルになる | コードが短く、わかりやすくなる |
✅ 再利用しやすい | 他のプロジェクトでも簡単に使える |
✅ 保守しやすい | センサーの仕様変更などに柔軟に対応できる |
✅ エラー防止 | 複雑な処理を1つにまとめて間違いにくくする |
イメージ例(DHT22センサー)
たとえば、MicroPythonで温湿度センサー DHT22 を使うには、通常こんな感じになります
import dht
from machine import Pin
sensor = dht.DHT22(Pin(15))
sensor.measure()
temp = sensor.temperature()
hum = sensor.humidity()
これをラッパークラスにすると、main.py
側は以下のようにスッキリしたコードになります。
フォルダー構成でlib/dht.pyを設置していると、
PJ_IoT_00/
├── boot.py
├── main.py
├── config.py
├── lib/
│ └── dht.py
from lib.dht import DHT22
sensor = DHT22(15)
temp, hum = sensor.read()
read()
を呼ぶだけで温度と湿度を両方取得できる
内部での処理(measure()
, temperature()
など)を 隠して くれる
ミスを減らし、他のファイルでも使い回しやすい
lib/dht.py
の中に DHT22
というクラス(ラッパークラス)を定義してあるから可能なのです。
典型的な lib/dht.py
前述をまとめると、参考例として
import dht
from machine import Pin
class DHT22:
def init(self, pin_num):
self.sensor = dht.DHT22(Pin(pin_num))
def read(self):
try:
self.sensor.measure()
temperature = self.sensor.temperature()
humidity = self.sensor.humidity()
return temperature, humidity
except Exception as e:
print("DHT read error:", e)
return None, None
・__init__()
でセンサーを初期化(ピン番号指定)
・read()
で温湿度を一括取得(内部処理を隠蔽)
・エラーハンドリングもまとめて実装
Wi-Fi接続ユーティリティ(例)
# lib/network_manager.py
import network
import time
import config
def connect_wifi():
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
if not wlan.isconnected():
wlan.connect(config.WIFI_SSID, config.WIFI_PASSWORD)
timeout = 10
while not wlan.isconnected() and timeout > 0:
time.sleep(1)
timeout -= 1
return wlan
MicroPython 特有のmain.py(実行ファイル)
main.py
はなるべくシンプルにし、ロジックは lib/
に切り出すのがベストです。
# main.py
import time
from lib.dht import DHT22
from lib.network_manager import connect_wifi
import config
# Wi-Fi接続
wlan = connect_wifi()
if wlan.isconnected():
print("Connected:", wlan.ifconfig())
# センサー初期化
sensor = DHT22(config.SENSOR_PIN)
while True:
temp, hum = sensor.read()
print("Temp:", temp, "C Humidity:", hum, "%")
time.sleep(5)
MicroPython 特有のboot.py 起動時に自動実行
Python全般ではなく、MicroPythonの起動プロセスにおいて特別な役割を持ちます。
MicroPython 特有のboot.py とは
WindowsやLinuxなどで動く通常のPythonでは、起動時に boot.py
が自動で実行されるという仕様はありません。
通常Pythonでは main.py
や任意の .py
ファイルを明示的に実行します。
MicroPythonでは、起動順に以下が実行されます
- boot.py(あれば)
電源投入やリセット直後に 最初に一度だけ実行
システム全体の初期設定やネットワーク接続などに使う
通常ユーザーが明示的に用意しないと存在しないファイル
- main.py(自動で実行される)
boot.py
のあとに実行される
実際の処理(センサ読み取り・表示・送信など)はこっちに書く
boot.py
は 一番最初に1回だけ実行される特別なファイルです。
ネットワーク初期化、RTC(時計)設定、I2Cバス準備などに使います。
main.py との違いは
項目 | boot.py | main.py |
---|---|---|
実行タイミング | Pico起動直後に1回だけ 最初に実行される初期設定用スクリプト | boot.pyの後に自動実行される 実際の処理を記述するメインスクリプト |
主な用途 | 初期化処理(Wi-Fi接続、RTC設定など) 電源ON直後に1回だけ実行される初期設定 → 環境や通信、センサの初期化など | アプリ本体(センサー読み取りなど) 実際の動作ロジック → ループ処理やデータ送信、表示など |
必須か? | 任意(無くてもOK) | Picoにあると必ず実行される |
なぜ MicroPython に boot.py
があるのか
MicroPython は組み込みマイコン(Pico, ESP32など)で動作するため、
- 電源ON直後に自動的に何らかの準備(Wi-Fi接続、ファイルマウント、タイマー設定など)を行いたい
- 再起動時も確実に初期化されるようにしたい
という理由から、**OSの代わりに使う「起動時スクリプト」**として boot.py
が用意されています。
boot.py
設置の目安
「Raspberry Pi Pico / Pico W を起動したときに、初期化処理を確実に毎回実行したい場合」です。
状況 | boot.py を使うべき理由 |
---|---|
🔌 Picoを起動したら自動的にWi-Fi接続したい | 接続処理を boot.py に書くと、毎回確実に起動時に実行される |
📁 ファイルシステムやSDカードの初期化が必要 | os.mount() などは boot.py で設定するのが安定 |
📶 タイムゾーンやNTPで時刻同期したい | 一度だけの設定は boot.py に向いている |
⚙️ GPIOやI2C/SPIなどの初期設定を共通化したい | 各種初期化を boot.py にまとめておくとミス防止になる |
🔒 セーフブート対策・リカバリ用途 | main.py 側の動作に失敗しても、boot.py だけは実行されるので安全性が上がる |
boot.py を使わなくてもいい場合
✅単純なスクリプトを動かすだけ(main.py
に全て書ける)
✅開発中でテストや動作確認が中心
✅Wi-Fiを使わず、センサーの読み取りだけをする
使うべき目安
✅ Pico起動時に何か自動的に「準備しておきたいこと」があるなら使う
✅ main.py に複雑な初期処理を書きたくないなら分ける
✅main.py 単体で完結する場合は無理に使わなくてOK
Thonnyでの操作
1.Thonny を起動
2.Pico W に接続(MicroPythonが書き込まれていること)
3.左側の "This computer" から main.py, lib/, config.py を Pico にドラッグ
4.保存先を Raspberry Pi Pico にして「Upload」
5.main.py が起動されることを確認
🧠 解説まとめ
構成物 | 内容 |
---|---|
venv/ | PC側だけに必要。Pico Wとは関係なし。 |
requirements.txt | PC側でライブラリが必要なとき用。Pico Wには使えない。 |
lib/ | Picoに送る用。センサーやWi-Fiなどのモジュール群を整理。 |
config.py | SSID/PWなどの変更を楽にするために分離。 |
main.py | 実行の中心となるファイル。 |
boot.py | 電源ON直後に1回だけ実行される初期設定 |
📊 MicroPython 特有のまとめ
MicroPython と 通常Python(CPython)の構成・ファイル比較表
MicroPythonでは
boot.py
とmain.py
によって「電源ON後に自動で処理開始」ができます(家電製品のように動かせる)- ファイルサイズ・処理内容が非常にコンパクトである必要があります(メモリが小さいため)
lib/
に入れておくとimport
できるようになる(ただしフォルダ階層には制限あり)
通常のPython(PC)では
- 起動用の固定ファイルはなく、自由にどのスクリプトを実行するか決められます
venv
,pip
,requirements.txt
によって柔軟にパッケージ管理・環境分離が可能
項目 | MicroPython(組み込み向け) | 通常Python(CPython / PC向け) |
---|---|---|
起動ファイル1 | boot.py (起動時に一度だけ自動実行) | なし(起動時に特別なファイルはない) |
起動ファイル2 | main.py (boot.py の後に自動実行) | 任意の .py ファイルを手動で実行 |
ライブラリ用フォルダ | lib/ にユーザーライブラリやモジュールを配置 | site-packages/ (venv)またはプロジェクト内任意 |
パッケージ管理 | pip や venv は使えない | pip , venv , requirements.txt 使用可能 |
仮想環境 | なし(仮想環境の概念自体がない) | venv により Python 環境を分離・構築 |
importパス | lib/ , root フォルダが対象(sys.path 制限あり) | PYTHONPATH やvenv で柔軟に設定可能 |
ファイルシステム | MicroPythonの内部フラッシュメモリ or SDカード | OSのファイルシステム(ローカルHDD/SSD) |
REPL | シリアルまたはUSB経由で使用 | ターミナル、Jupyterなど柔軟に利用可能 |
開発環境(例) | Thonny, uPyCraft, rshell, ampyなど | VSCode, PyCharm, Thonny, Jupyterなど |
MicroPython プロジェクト構成(Pico W)
PJ_IoT_00\pc_dev\
├── boot.py ← 起動時に一度だけ実行(Wi-Fi設定など)
├── main.py ← 実際のセンサ処理、表示、送信など
├── config.py ← 設定用(SSID, パスワード, センサー設定など)
├── lib/ ← 自作または外部のPythonモジュールをここへ
│ └── dht.py ← 例:DHT22センサ用ラッパークラス