Python、MicroPythonを開発し、動作確認をするうえで効率的に確認できる各種スクリプトを用意しました。ご活用ください。

IoT × AI 実践学習 カリキュラム一覧
で開発したスクリプトに活用するために用意した開発ツールです。
是非ともご覧ください。

🧰Wi-Fiチェッカー

家庭内や事務所内のAP(アクセスポイント)、Wi-FiルーターなどにPico WをWi-Fi接続するときの挙動を確認できます。
Wi-Fiが急につながらなくことがあります。その時に原因の特定や切り分けが可能になります。

📌電波強度(RSSI)の目安

RSSI値 (dBm)状態
-30 ~ -50非常に強い
-50 ~ -60強い
-60 ~ -70良好
-70 ~ -80弱い(不安定の可能性)
-80 以下非常に弱い(切断の可能性大)

tool_wifi_checker.py

# tool_wifi_checker.py
# Wi-Fi接続、通信を診断
# PEP 8スタイルに準拠(インデント、定数、命名規則など)

import network
import time
import sys

# ======== Wi-Fi設定 ========
SSID = "あなたのSSID"
PASSWORD = "あなたのPASSWORD"

# ======== 接続検証関数 ========
def check_wifi():
    wlan = network.WLAN(network.STA_IF)
    wlan.active(True)

    print("=== Wi-Fi診断開始 ===")

    # 1. 無線インターフェイスの状態
    if not wlan.active():
        print("❌ 無線LANインターフェイスが有効化されていません。")
        return
    else:
        print("✅ 無線LANインターフェイスは有効")

    # 2. スキャンしてSSID確認 & RSSI取得
    print("🔍 周辺SSIDをスキャン中...")
    networks = wlan.scan()
    ssid_list = []
    target_rssi = None
    for net in networks:
        ssid_name = net[0].decode('utf-8')
        ssid_list.append(ssid_name)
        if ssid_name == SSID:
            target_rssi = net[3]  # RSSI値(dBm)

    if SSID not in ssid_list:
        print(f"❌ 指定SSID '{SSID}' が見つかりません。")
        print(f"📡 検出されたSSID: {ssid_list}")
        return
    else:
        print(f"✅ SSID '{SSID}' が見つかりました。")
        if target_rssi is not None:
            print(f"📶 電波強度(RSSI): {target_rssi} dBm")
            if target_rssi > -60:
                print("🔋 電波は非常に強い")
            elif target_rssi > -70:
                print("📶 電波は良好")
            elif target_rssi > -80:
                print("⚠️ 電波は弱い(不安定の可能性あり)")
            else:
                print("❌ 電波が非常に弱い(接続困難の可能性)")

    # 3. 接続試行
    print(f"🔌 SSID '{SSID}' に接続中...")
    wlan.connect(SSID, PASSWORD)

    # 4. 接続待機(パスワード通過確認付き)
    max_wait = 10
    password_checked = False
    while max_wait > 0:
        status = wlan.status()
        
        if status == network.STAT_GOT_IP:
            print("✅ 接続成功")
            print("📄 IP情報:", wlan.ifconfig())
            return
        
        elif status == network.STAT_WRONG_PASSWORD:
            print("❌ パスワードが間違っています。")
            return
        
        elif status == network.STAT_CONNECTING:
            print("⏳ 接続待機中...")
        
        elif status == network.STAT_IDLE:
            print("⏳ 接続準備中...")
        
        elif status == network.STAT_NO_AP_FOUND:
            print("❌ アクセスポイントが見つかりません。")
            return
        
        elif status == network.STAT_CONNECT_FAIL:
            if not password_checked:
                print("✅ パスワードは通過した可能性あり(認証後の接続失敗)")
                password_checked = True
            print("❌ 接続失敗(原因不明)")
            return
        
        # 認証成功の目安(MicroPythonは明示的な認証OKイベントが無いので推測)
        if status not in (network.STAT_IDLE, network.STAT_CONNECTING, network.STAT_WRONG_PASSWORD) and not password_checked:
            print("✅ パスワード認証は成功")
            password_checked = True

        max_wait -= 1
        time.sleep(1)

    print("❌ タイムアウト。接続できませんでした。")

# ======== 実行 ========
if __name__ == "__main__":
    try:
        check_wifi()
    except Exception as e:
        print("💥 実行中にエラー発生:", e)
        sys.print_exception(e)

Wi-Fiルーター側に潜在的な設定の問題があり不安定になっている場合は、ルーターの設定を適切にする必要があります。

🔍i2c_scan.py

I2Cデバイスのアドレスを確認する時に使用します。
Pico Wに接続するデバイスのpin番号とfreq(周波数)を設定(書き換え)してください。
SCL: GPIO9, SDA: GPIO8
周波数はデータシートに何種類か掲載されています。通常は100KHzで確認できるはずです。

📌I2Cの通信速度の規格

モード速度 bpsPico W
スタンダード100k
ファスト400k
ファストモードプラス1M
ハイスピード3.4M-
ウルトラハイスピード5M-

i2c_scan.py

# i2c_scan.py
# デバイスのアドレスを表示
# PEP 8スタイルに準拠(インデント、定数、命名規則など)

from machine import I2C, Pin

# I2Cの初期化 (SCL: GPIO9, SDA: GPIO8)
i2c = I2C(0, scl=Pin(17), sda=Pin(16), freq=100000)

# デバイスアドレスをスキャン
devices = i2c.scan()

if devices:
    for device in devices:
        print("デバイスアドレス:", hex(device))  # デバイスアドレスを表示
else:
    print("I2Cデバイスが見つかりません。配線を確認してください。")

🧰全角チェッカー

全角スペースは、なかなか発見しにくく、あるとエラーになります。

SyntaxError: invalid non-printable character U+3000全角スペース(U+3000) が Python コードに混じっているときのエラーです。他にも、

Traceback (most recent call last): File "<stdin>", line 6 SyntaxError: invalid syntax

SyntaxError 、エラー内容を見ると 行6で文法エラー になっています。こんな時にご利用ください。

特に日本語環境だと…
コメント書くときに 全角スペース が混ざる
' と見た目が似た 全角の ” や ″ を使ってしまう
- が実は 全角の ― や ー だった
こういう「見えない敵」がよく SyntaxError の原因になります。

# tool_check_zenkaku_space.py
# 指定したファイルに全角スペースがあるかどうかチェックする

filename = "対象ファイル"   # 同じフォルダ内にあるファイルを対象にする

with open(filename, "r", encoding="utf-8") as f:
    for lineno, line in enumerate(f, 1):
        if " " in line:  # 全角スペースを検出
            print(f"{lineno}行目に全角スペースがあります: {line.rstrip()}")

print("✅ チェック完了")

✅使い方

Thonny で PC 上のファイルを扱う方法

保存時に保存先を選ぶ
C:\Users\あなたの名前\Documents\RaspiProjects\PJ_test\tool_check_zenkaku_space.py

対象ファイルも PC に保存
C:\Users\あなたの名前\Documents\RaspiProjects\PJ_test\対象ファイル

PCモードで実行する
Thonny の右下に「インタプリタ選択」があります。
ここを 「ローカル Python 3」 に切り替える
(今は「MicroPython (Raspberry Pi Pico)」になっているはず)

こうすると Thonny が PC 上の Python を使ってスクリプトを実行してくれます。

実行
check_zenkaku_space.py を開いて、
filename = "対象ファイル.py"の対象ファイルにチェックするファイル名を記載
「▶ 実行」
PC 上で保存した "対象ファイル.py" がチェックされます。