1. ネットワークへのアクセス¶
Raspberry Pi Pico Wは、Raspberry Pi Picoと非常に似ており、GPIO、microUSBポート、サイズが同じです。唯一の違いは、InfineonからのCYW43439 2.4-GHz Wi-Fiチップが追加されている点です。 それでは、どのようにして私たちのWi-Fiネットワークに接続するのか見てみましょう。
必要なコンポーネント
このプロジェクトでは、以下のコンポーネントが必要です。
こちらが一式を購入する便利なリンクです:
名前 |
このキットに含まれるアイテム |
リンク |
---|---|---|
Kepler Kit |
450+ |
以下のリンクから個別に購入することもできます。
SN |
コンポーネント |
個数 |
リンク |
---|---|---|---|
1 |
1 |
||
2 |
Micro USB Cable |
1 |
1. インターネットに接続¶
わずか5行のMicroPythonで、Raspberry Pi Pico Wはインターネットに接続されます。
これら5行のコードは、Shellから直接実行することができ、入力後に Enter
キーを押します。
または、以下の方法に従って新しい .py
ファイルを作成して実行します。
import network
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect("SSID","PASSWORD")
print(wlan.isconnected())
Thonnyの 新規作成 ボタンをクリックして新しいスクリプトを作成し、上記のコードをコピーして貼り付け、
SSID
とPASSWORD
を自分のものに変更します。スクリプトを実行するには、 現在のスクリプトを実行 ボタンをクリックするか、F5キーを押します。接続が成功すると、
true
が表示されます。注釈
Raspberry Pi Pico WがUSBケーブルでコンピュータに接続されていることを確認し、右下のコーナーをクリックしてMicroPython(Raspberry Pi Pico).COMXxxをインタープリタとして選択します。
2. タイムアウト判断とIPの表示¶
ネットワーク状況が良くない場合を考慮して、コードにタイムアウトの判断を追加しましょう。
接続に成功すると、スクリプトをコピーして実行した後に、Pico WのIPが表示されます。
import network
import time
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect("SSID","PASSWORD")
# Wait for connect or fail
wait = 10
while wait > 0:
if wlan.status() < 0 or wlan.status() >= 3:
break
wait -= 1
print('waiting for connection...')
time.sleep(1)
# Handle connection error
if wlan.status() != 3:
raise RuntimeError('wifi connection failed')
else:
print('connected')
print('IP: ', wlan.ifconfig()[0])
wlan.status()
関数:無線接続の現在のステータスを返します、戻り値は以下の表に示されています。ステータス
値
説明
STAT_IDLE
0
接続も活動もなし
STAT_CONNECTING
1
接続中
STAT_WRONG_PASSWORD
-3
パスワードが不正なため失敗
STAT_NO_AP_FOUND
-2
アクセスポイントが応答しないため失敗
STAT_CONNECT_FAIL
-1
その他の問題による失敗
STAT_GOT_IP
3
接続成功
wlan.ifconfig()
関数:IPアドレス、サブネットマスク、ゲートウェイ、DNSサーバーを取得します。このメソッドは、直接呼び出された場合、上記の情報を含む4タプルを返します。この場合、IPアドレスのみを表示します。
3. secrets.py
にプライベート情報を保存¶
Pico Wプロジェクトを共有する際、Wi-FiのパスワードやAPIキーを他人に見られたくないでしょう。
より高いセキュリティを確保するために、 secrets.py
ファイルを作成してプライベート情報を保存できます。
以下のコードをThonnyで新しいスクリプトファイルにコピーします。
SSID
とPASSWORD
は自分のものに変更してください。secrets = { 'ssid': 'SSID', 'password': 'PASSWORD', }
「保存」ボタンをクリックするか、
Ctrl+S
を押すと表示されるポップアップウィンドウでRaspberry Pi Picoを選択します。名前を
secrets.py
に設定します。これで、このスクリプトはRaspberry Pi Pico Wで見ることができます。
他のスクリプトで次のように呼び出すことができます。実行すると、Wi-Fi接続が成功することが確認できます。
secrets.py
ファイルはライブラリとしてインポートされるので、情報の漏洩を心配する必要はありません。import network import time from secrets import secrets wlan = network.WLAN(network.STA_IF) wlan.active(True) wlan.connect(secrets['ssid'], secrets['password']) # Wait for connect or fail wait = 10 while wait > 0: if wlan.status() < 0 or wlan.status() >= 3: break wait -= 1 print('waiting for connection...') time.sleep(1) # Handle connection error if wlan.status() != 3: raise RuntimeError('wifi connection failed') else: print('connected') print('IP: ', wlan.ifconfig()[0])
4. do_connect.py
でインターネットに接続¶
次々と行うプロジェクトでネットワーク接続が必要となるため、新しい do_connect.py
ファイルを作成して関連する関数をそこに記述し、再利用するのはいかがでしょうか。これにより、複雑なプロジェクトのコードを大幅にシンプルにすることができます。
以下のコードを新しいスクリプトファイルにコピーし、Raspberry Pi Picoに
do_connect.py
として保存します。import network import time from secrets import * def do_connect(ssid=secrets['ssid'],psk=secrets['password']): wlan = network.WLAN(network.STA_IF) wlan.active(True) wlan.connect(ssid, psk) # Wait for connect or fail wait = 10 while wait > 0: if wlan.status() < 0 or wlan.status() >= 3: break wait -= 1 print('waiting for connection...') time.sleep(1) # Handle connection error if wlan.status() != 3: raise RuntimeError('wifi connection failed') else: print('connected') ip=wlan.ifconfig()[0] print('network config: ', ip) return ip
以下のように他のスクリプトで呼び出すと、Raspberry Pi Pico Wはネットワークに接続されます。
from do_connect import * do_connect()