0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

RaspipicoWをWebREPLでWiFi遠隔操作する方法

Last updated at Posted at 2025-11-22

はじめに

MicroPythonにはWebREPLと呼ばれる、ブラウザ上でPythonプロンプトを使える機能があります。また、ThonnyにもWebREPLで接続する機能があります。
picoWボードで使用したのでやり方を残しておきます。

picoWにboot.pyファイルを作成する

picoWをUSBでPCに繋ぎ、Thonnyで以下を実行する。
boot.pyファイルを作成してpicoWに書き込む。

#boot.py

import network
import webrepl
import time

# WiFi接続 (ルーターのSSIDとパスワードに書き換えてください)
ssid = 'SSID'
password = 'PASWORD'

wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(ssid, password)

# WiFiが繋がるまで少し待つ(重要)
max_wait = 10
while max_wait > 0:
    if wlan.status() < 0 or wlan.status() >= 3:
        break
    max_wait -= 1
    print('waiting for connection...')
    time.sleep(1)

# WebREPLを起動する(これが重要!)
webrepl.start()
print('WebREPL started at', wlan.ifconfig()[0])

手動でパスワード設定ファイルを作る

picoWをUSBでPCに繋ぎ、ThonnyのREPLで以下を実行する。
Thonnyのシェル(下の画面)で、以下の3行のコードを1行ずつコピー&ペーストしてエンターキーを押してください。これで強制的に設定ファイルを作成します。

webrepl_cfg.py
f = open('webrepl_cfg.py', 'w')
f.write("PASS = '1234'\n")
f.close()

picoW内にwebrepl_cfg.pyが作られてパスワードが1行書き込んである。

webrepl_cfg.py
PASS = '1234'

WebREPL

Thonnyを終了する。
picoWのUSBを電源供給アダプタにつなぎ変える。
電源が入るとboot.pyが実行されてWebREPLが開始されている。

次のgithubからZIPファイルをダウンロードする。
https://github.com/micropython/webrepl

解凍してwebrepl-masterホルダ内のwebrepl.htmlをダブルクリックしてChromeブラウザで表示させる。
アドレスにws;//192.168.0.4:8266/ を入力して Conectボタンをクリックするとつながる。
image.png

ThonnyでWebREPL接続する

Thonny1.png

ポートをWebREPLにしてパスワードを設定して接続OKを押す。

Thonny2.png

これで、ThonnyからもWebREPL操作が可能となりました。
ファイルの編集転送(上書き)などができます。

但し、USBのようにファイルを新規に作成して実行アイコンを押しても喧嘩してエラーが発生する場合があります。

そこで、安定してプログラムを実行する方法としてmain.pyのファイルのみを書き換えて電源入れ直しで実行させる方法が安定しています。

main.pyを電源入り切りで実行させる

main.py
#========================================
#
# Web REPL   T.F.
#
# 2025/11/22 Ver1
#
#========================================
#------------------------------------
# import
#------------------------------------
from machine import PWM, Pin
import time

#------------------------------------
# Pin
#------------------------------------
led = Pin("LED", Pin.OUT)

servo1 = PWM(Pin(0))
servo1.freq(50)

#------------------------------------
# Val
#------------------------------------
maxd = 65025
dig_0  = 0.065    # 0°  open
dig_90 = 0.115   # 90° close

#-------------------------------------
# Close
#-------------------------------------
servo1.duty_u16(int(maxd*dig_90))
print("90deg close")
OPEN=False

#-------------------------------------
# コマンド用の関数を定義するだけ
#-------------------------------------
def mes():
    print("picoW running under WiFi ws://192.168.0.4:8266/")
    print("def:on(),off(),blink(times),RCshot(),RCopen(),RCclose()")

#-------------------------------------
#
#-------------------------------------
def on():
    led.on()
    print("LED turned ON")

#-------------------------------------
#
#-------------------------------------
def off():
    led.off()
    print("LED turned OFF")
    
#-------------------------------------
#
#-------------------------------------
def blink(times):
    import time
    for _ in range(times):
        led.toggle()
        time.sleep(0.2)
        led.toggle()
        time.sleep(0.2)
    print(f"Blinked {times} times")

#-------------------------------------
# one shot Open
#-------------------------------------
def RCshot():
    servo1.duty_u16(int(maxd*dig_0))
    time.sleep(0.3)
    servo1.duty_u16(int(maxd*dig_90))
    print("one shot open")

#-------------------------------------
# Open
#-------------------------------------
def RCopen():
    servo1.duty_u16(int(maxd*dig_0))
    print("0deg open")
    
#-------------------------------------
# Close
#-------------------------------------
def RCclose():
    servo1.duty_u16(int(maxd*dig_90))
    print("90deg close")

picoWにThonnyでmain.pyを作成して書き込みます。
電源を入れ直すと
boot.py を実行(もし存在すれば)
これが完了するまで次は進みません。
main.py を実行(もし存在すれば)
boot.py の処理が終わった直後にこれが始まります。

この状態で ThonnyがWebREPLで接続状態のプロンプト>>> 状態になっていたら
プロンプトに関数def mes()を実行させれば、関数が実行されます

>>>mes()
picoW running under WiFi ws://192.168.0.4:8266/
def:on(),off(),blink(times),RCshot(),RCopen(),RCclose()
>>> 

関数をいろいろと作成して、プロンプトに関数記入する
すなわち
picoWをWiFiリモート操作することができます。

以上です:v_tone5:

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?