Wifi経由で命令を送り操作ができるバージョンを開発中…なのですが、(PicoWの)起動後になかなか繋がらなかったり、途中で接続が切れてしまうケースが多発してしまっています。そこで作ってもらったのが、以下のスクリプト。
# Raspberry Pi Pico WiFi Stability Checker
import time
import network
from machine import Pin
# WiFi Configuration
WIFI_SSID = YOUR_SSID
WIFI_PASSWORD = YOUR_PASSWORD
led = Pin("LED", Pin.OUT)
# WiFi status tracking
start_time = time.time()
connection_losses = 0
last_check = time.time()
# Connect to WiFi
print(f"Connecting to WiFi: {WIFI_SSID}...")
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(WIFI_SSID, WIFI_PASSWORD)
# Wait for connection (Timeout: 30 seconds)
timeout = 30
start = time.time()
while wlan.isconnected() == False:
if time.time() - start > timeout:
print(f"WiFi connection timeout to {WIFI_SSID}")
led.value(0)
exit()
print(f"Connecting to {WIFI_SSID}...", end="\r")
led.value(1)
time.sleep(0.25)
led.value(0)
time.sleep(0.25)
wlan_status = wlan.ifconfig()
print(f"\nConnected! IP: {wlan_status[0]}")
led.value(1)
# Main loop
print(f"\nWiFi connection check started (every 60 seconds)")
print("Press 'Ctrl+C' to exit\n")
try:
while True:
current_time = time.time()
# Check WiFi connection status every 60 seconds
if current_time - last_check >= 60:
uptime = int(current_time - start_time)
if wlan.isconnected():
rssi = wlan.status('rssi')
signal_bars = max(0, min(5, (rssi + 100) // 10))
bar = "█" * signal_bars + "░" * (5 - signal_bars)
print(f"[{uptime}s] Connected - Signal: {bar} {rssi} dBm")
led.value(1)
else:
connection_losses += 1
print(f"[{uptime}s] ERROR: Connection lost! (Loss count: {connection_losses})")
# Blink LED when disconnected
for _ in range(10):
led.value(1)
time.sleep(0.2)
led.value(0)
time.sleep(0.2)
led.value(0)
last_check = current_time
time.sleep(1)
except KeyboardInterrupt:
print("\n\nExiting...")
finally:
led.value(0)
print("Done")
これを、mpremoteでPico Wに転送して、実行すると、60秒おきにWiFiの接続状態と信号強度を表示し、接続が切れた場合は、LEDが点滅してお知らせしてくれます。
mpremote cp checker.py :main.py
以下は、Geminiに教えてもらった dBm(デシベルミリワット) の目安です。
-30 dBm: 理論上の最大値。ルーターのすぐ横にいる状態です。 -50 dBm 前後: 非常に強力。動画視聴やオンラインゲームも快適にこなせる最高レベルの状態です。 -67 dBm: 実用上の最低ライン。ビデオ通話などが安定して行える限界の目安です。 -80 dBm 以下: 非常に弱い。接続が途切れたり、通信速度が極端に遅くなったりします。