
前回は「後攻、有線LAN」だったので今回は「先行、無線LAN」に戻ります。前々回、無線LANはラズパイPico 2 W上のMicroPythonから手近なアクセスポイントに接続できたところで終わってました。今回は、プラットフォームとネットワークの接続ステータスなどをも少し丁寧に確認していきたいと思います。
※Pico関係投稿一覧は こちら
ifconfig()関数は非推奨になってた
以下のMicroPython公式のドキュメントを読んでいて気付きました。
前回、ネットワークに接続できた後、DHCPで割り当てられたIPアドレスを確認するのに以下の関数を使わせていただきました。
ifconfig()
しかし、以下は上記のドキュメント註釈からの引用であります
この関数は非推奨です。代わりに ipconfig()を使ってください。
ああ、いつの間にか非推奨になっていたのね。。。それにしてもLinux風のifconfigではなく、Windows風なipconfigに統一なのね。知らんけど。
まあ、上記のドキュメント読むといろいろ書いてあるので、今回はその辺を「盛った」WLANのステータス確認用のスクリプトを作成してみます。こんな感じ。
import network import time import uctypes import sys SYSINFO_BASE = 0x40000000 CHIP_ID = 0x00 PPB_BASE = 0xE0000000 CPUID = 0xED00 CHIP_ID_REG = { "CID": 0 | uctypes.UINT32, "PLT": 4 | uctypes.UINT32 } CPU_ID_REG = { "CPU": 0 | uctypes.UINT32 } def chipInfo(): #cpu = uctypes.struct(PPB_BASE+CPUID, CPU_ID_REG) machine=sys.implementation[2] print("sys.implementation[2]: ",machine) cid = uctypes.struct(SYSINFO_BASE+CHIP_ID, CHIP_ID_REG) print("SYSINFO::CHIP_ID: 0x{0:08x}".format(cid.CID)) print("SYSINFO::PLATFORM: 0x{0:08x}".format(cid.PLT)) if "ESP8266" in machine.upper(): return True else: return False def conWiFi(): wlan = network.WLAN(network.STA_IF) wlan.active(True) wlan.connect('YOUR SSDI', 'YOUR PASSWD') while not wlan.isconnected() and wlan.status() >= 0: print("Waiting to connect:") time.sleep(1) return wlan def networkInfo(): phy_modeP = chipInfo() print("NETWORK::COUNTRY_CODE: ",network.country()) print("NETWORK::HOSTNAME: ",network.hostname()) if phy_modeP: print("NETWORK::PHY_MODE: ",network.phy_mode()) def networkStat(wlan): print("NIC.active:", wlan.active()) print("NIC.isconnected:", wlan.isconnected()) print("NIC.status:", end="") stat = wlan.status() if stat == network.STAT_IDLE: print("IDLE") elif stat == network.STAT_CONNECTING: print("CONNECTING") elif stat == network.STAT_GOT_IP: print("GOT_IP") else: print("??? CODE={0}".format(stat)) def main(): networkInfo() wlan = conWiFi() networkStat(wlan) #print(wlan.ifconfig()) if __name__ == "__main__": main()
ちょっとRP2350のハードウエアを直接アクセスしたりして、お惚け老人の色を出してみました。そんなもん、いらんぞなもし。
上記スクリプトの実行結果
当然すぎるっちゃ、当然すぎますが、RP2350登載のRaspberry Pi Pico 2 Wと認識されており、デフォルトでWLANのカントリーコードは未設定、hostnameはPico2Wであります。そしてAPへの接続はOKとな。