以下に、PJ_IoT_00 プロジェクトで DHT22 センサー+Wi-Fi 通信を扱う MicroPython プログラムを作るにあたっての venv 構築・ファイル構成・手順・設定ファイルの使い方 を、Windows + Thonny 環境向けにやさしく丁寧に整理します。

PoC開発 IoT x AI ~フォルダ構成~ | 優日堂 Lab | 優日堂のページ設定した以下のフォルダ
C:\Users\あなたの名前\Documents\RaspiProjects\PJ_IoT_00 に構築していきます。

目次

開発環境:前提条件

環境内容
OSWindows 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 / zshPython・IoT系開発者に定番。venvpip コマンドが自然に使える
Raspberry Pi Zero 2 W(Raspberry Pi OS)bashRaspbian(Debianベース)の標準。Pythonスクリプト、GPIO制御など
Raspberry Pi Pico W(MicroPython)Thonny 付属の REPLシェル または rshell / mpremoteMicroPython独自。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 または mpremotemain.py 転送やREPL確認
Zero 2 WへPythonスクリプト実行SSH接続して bash 使用python3, pip3, sudo など実行
PCでJupyter notebook起動・補助スクリプト実行bash または Terminaljupyter lab, plot_data.py など
MQTT/Flaskサーバ起動bash または PowerShellpython server.py
Git操作Git Bash または Terminalgit 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.pyPythonスクリプトの実行
pip installパッケージインストール
pip listインストール済みパッケージ一覧
deactivate仮想環境の終了

Python開発でのターミナルの使いどころ

作業内容ターミナルの役割
環境構築venvの作成、pipの操作
スクリプト実行python file.py など
自動化・整備.bat.sh によるスクリプト化
バージョン管理git操作
ログ・エラー確認実行結果の確認、デバッグ

Python開発におすすめのターミナル環境

ターミナル名特徴おすすめ度
Windows Terminal複数タブ、カラー表示、PowerShellやcmdをまとめて使える最新ターミナル⭐⭐⭐⭐
PowerShellWindows標準の高機能なシェル。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 」に変更

手順:

  1. Windows Terminal 右上の「▼」をクリック → 「設定(Settings)」
  2. 左側の「スタートアップ」もしくは「既定のプロファイル(Default Profile)」を選択
  3. ドロップダウンから PowerShell(7.x と表示される)を選択
     ※「Windows PowerShell」ではないことを確認
  4. 「保存」して閉じる

脱線終了、本題に戻ります。⇩

ディレクトリ構成:理想形

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を指定

.venvpc_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 machineGPIOなどのハード制御ライブラリ(MicroPython標準)
import timesleep() など時間操作ライブラリ
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では、起動順に以下が実行されます

  1. boot.py(あれば)

電源投入やリセット直後に 最初に一度だけ実行
システム全体の初期設定やネットワーク接続などに使う
通常ユーザーが明示的に用意しないと存在しないファイル

  1. main.py(自動で実行される)

boot.py のあとに実行される
実際の処理(センサ読み取り・表示・送信など)はこっちに書く

boot.py一番最初に1回だけ実行される特別なファイルです。
ネットワーク初期化、RTC(時計)設定、I2Cバス準備などに使います。

main.py との違いは

項目boot.pymain.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.txtPC側でライブラリが必要なとき用。Pico Wには使えない。
lib/Picoに送る用。センサーやWi-Fiなどのモジュール群を整理。
config.pySSID/PWなどの変更を楽にするために分離。
main.py実行の中心となるファイル。
boot.py電源ON直後に1回だけ実行される初期設定

📊 MicroPython 特有のまとめ

MicroPython と 通常Python(CPython)の構成・ファイル比較表

MicroPythonでは

  • boot.pymain.py によって「電源ON後に自動で処理開始」ができます(家電製品のように動かせる)
  • ファイルサイズ・処理内容が非常にコンパクトである必要があります(メモリが小さいため)
  • lib/ に入れておくと import できるようになる(ただしフォルダ階層には制限あり)

通常のPython(PC)では

  • 起動用の固定ファイルはなく、自由にどのスクリプトを実行するか決められます
  • venv, pip, requirements.txt によって柔軟にパッケージ管理・環境分離が可能

項目MicroPython(組み込み向け)通常Python(CPython / PC向け)
起動ファイル1boot.py(起動時に一度だけ自動実行)なし(起動時に特別なファイルはない)
起動ファイル2main.pyboot.pyの後に自動実行)任意の .py ファイルを手動で実行
ライブラリ用フォルダlib/ にユーザーライブラリやモジュールを配置site-packages/(venv)またはプロジェクト内任意
パッケージ管理pipvenv は使えないpip, venv, requirements.txt 使用可能
仮想環境なし(仮想環境の概念自体がない)venv により Python 環境を分離・構築
importパスlib/, root フォルダが対象(sys.path制限あり)PYTHONPATHvenvで柔軟に設定可能
ファイルシステム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センサ用ラッパークラス