.. note:: こんにちは、SunFounderのRaspberry Pi & Arduino & ESP32愛好家コミュニティへようこそ!Facebook上でRaspberry Pi、Arduino、ESP32についてもっと深く掘り下げ、他の愛好家と交流しましょう。 **参加する理由は?** - **エキスパートサポート**:コミュニティやチームの助けを借りて、販売後の問題や技術的な課題を解決します。 - **学び&共有**:ヒントやチュートリアルを交換してスキルを向上させましょう。 - **独占的なプレビュー**:新製品の発表や先行プレビューに早期アクセスしましょう。 - **特別割引**:最新製品の独占割引をお楽しみください。 - **祭りのプロモーションとギフト**:ギフトや祝日のプロモーションに参加しましょう。 👉 私たちと一緒に探索し、創造する準備はできていますか?[|link_sf_facebook|]をクリックして今すぐ参加しましょう! .. _iot_access: 1. ネットワークへのアクセス =========================== Raspberry Pi Pico Wは、Raspberry Pi Picoと非常に似ており、GPIO、microUSBポート、サイズが同じです。唯一の違いは、InfineonからのCYW43439 2.4-GHz Wi-Fiチップが追加されている点です。 それでは、どのようにして私たちのWi-Fiネットワークに接続するのか見てみましょう。 **必要なコンポーネント** このプロジェクトでは、以下のコンポーネントが必要です。 こちらが一式を購入する便利なリンクです: .. list-table:: :widths: 20 20 20 :header-rows: 1 * - 名前 - このキットに含まれるアイテム - リンク * - Kepler Kit - 450+ - |link_kepler_kit| 以下のリンクから個別に購入することもできます。 .. list-table:: :widths: 5 20 5 20 :header-rows: 1 * - SN - コンポーネント - 個数 - リンク * - 1 - :ref:`cpn_pico_w` - 1 - |link_picow_buy| * - 2 - Micro USB Cable - 1 - 1. インターネットに接続 ------------------------------------ わずか5行のMicroPythonで、Raspberry Pi Pico Wはインターネットに接続されます。 これら5行のコードは、Shellから直接実行することができ、入力後に ``Enter`` キーを押します。 または、以下の方法に従って新しい ``.py`` ファイルを作成して実行します。 .. code-block:: python import network wlan = network.WLAN(network.STA_IF) wlan.active(True) wlan.connect("SSID","PASSWORD") print(wlan.isconnected()) #. Thonnyの **新規作成** ボタンをクリックして新しいスクリプトを作成し、上記のコードをコピーして貼り付け、 ``SSID`` と ``PASSWORD`` を自分のものに変更します。 .. image:: img/access1.png #. スクリプトを実行するには、 **現在のスクリプトを実行** ボタンをクリックするか、F5キーを押します。接続が成功すると、 ``true`` が表示されます。 .. note:: Raspberry Pi Pico WがUSBケーブルでコンピュータに接続されていることを確認し、右下のコーナーをクリックしてMicroPython(Raspberry Pi Pico).COMXxxをインタープリタとして選択します。 .. image:: img/access2.png 2. タイムアウト判断とIPの表示 ----------------------------------------------- ネットワーク状況が良くない場合を考慮して、コードにタイムアウトの判断を追加しましょう。 接続に成功すると、スクリプトをコピーして実行した後に、Pico WのIPが表示されます。 .. code-block:: python 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]) .. image:: img/access3.png * ``wlan.status()`` 関数:無線接続の現在のステータスを返します、戻り値は以下の表に示されています。 .. list-table:: :widths: 40 10 50 * - ステータス - 値 - 説明 * - 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アドレスのみを表示します。 * `class WLAN – MicroPython Docs `_ .. _create_secrets: 3. ``secrets.py`` にプライベート情報を保存 ---------------------------------------------------------- Pico Wプロジェクトを共有する際、Wi-FiのパスワードやAPIキーを他人に見られたくないでしょう。 より高いセキュリティを確保するために、 ``secrets.py`` ファイルを作成してプライベート情報を保存できます。 #. 以下のコードをThonnyで新しいスクリプトファイルにコピーします。 ``SSID`` と ``PASSWORD`` は自分のものに変更してください。 .. code-block:: python secrets = { 'ssid': 'SSID', 'password': 'PASSWORD', } #. 「保存」ボタンをクリックするか、 ``Ctrl+S`` を押すと表示されるポップアップウィンドウでRaspberry Pi Picoを選択します。 .. image:: img/access4.png #. 名前を ``secrets.py`` に設定します。 .. image:: img/access5.png #. これで、このスクリプトはRaspberry Pi Pico Wで見ることができます。 .. image:: img/access6.png #. 他のスクリプトで次のように呼び出すことができます。実行すると、Wi-Fi接続が成功することが確認できます。 ``secrets.py`` ファイルはライブラリとしてインポートされるので、情報の漏洩を心配する必要はありません。 .. code-block:: python :emphasize-lines: 3,7 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]) .. image:: img/access8.png .. _do_connect: 4. ``do_connect.py`` でインターネットに接続 -------------------------------------------------------------- 次々と行うプロジェクトでネットワーク接続が必要となるため、新しい ``do_connect.py`` ファイルを作成して関連する関数をそこに記述し、再利用するのはいかがでしょうか。これにより、複雑なプロジェクトのコードを大幅にシンプルにすることができます。 #. 以下のコードを新しいスクリプトファイルにコピーし、Raspberry Pi Picoに ``do_connect.py`` として保存します。 .. code-block:: python 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 .. image:: img/access7.png #. 以下のように他のスクリプトで呼び出すと、Raspberry Pi Pico Wはネットワークに接続されます。 .. code-block:: python from do_connect import * do_connect() .. https://www.tomshardware.com/reviews/raspberry-pi-pico-w