注釈

こんにちは、SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasts Communityへようこそ!仲間たちと一緒にRaspberry Pi、Arduino、ESP32についてさらに深く学びましょう。

参加する理由は?

  • 専門家のサポート: コミュニティやチームの助けを借りて、購入後の問題や技術的な課題を解決できます。

  • 学びと共有: ヒントやチュートリアルを交換して、スキルを向上させましょう。

  • 限定プレビュー: 新製品の発表や先行情報をいち早く手に入れましょう。

  • 特別割引: 最新製品の特別割引をお楽しみください。

  • イベント・プレゼント: プレゼント企画や祝日セールに参加しましょう。

👉 一緒に探求し、創造を楽しみませんか?[ここ]をクリックして、今すぐ参加しましょう!

8.1 ネットワークへの接続

注釈

他のIoTプロジェクトから来た場合は、ステップ3から始めて、 do_connect.pysecrets.py の作成を進めてください。

それでは、Wi-Fiネットワークへの接続方法を見ていきましょう。

必要なコンポーネント

このプロジェクトでは、以下のコンポーネントが必要です。

キット一式を購入するのが便利です。こちらのリンクから購入できます:

名前

このキットに含まれるアイテム

リンク

Pico 2 W スターターキット

450以上

Pico 2 W Kit

別々に購入することもできます。以下のリンクから購入可能です。

SN

コンポーネント

数量

リンク

1

Pico 2 Wの概要

1

2

Micro USBケーブル

1

1. インターネットへの接続

わずか5行のMicroPythonコードで、Raspberry Pi Pico 2 Wはインターネットに接続されます。

これらの5行のコードは、シェルから直接実行できます。入力後に Enter を押してください。 または、以下の方法で新しい .py ファイルを作成して実行することもできます。

import network
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect("SSID","PASSWORD")
print(wlan.isconnected())
  1. Thonnyで 新規作成 ボタンをクリックし、上記のコードをコピー&ペーストして、 SSIDPASSWORD を自分のものに変更してください。

    ../../_images/access1.png
  2. スクリプトを実行するには、 現在のスクリプトを実行 ボタンをクリックするか、F5を押してください。接続が成功すれば、 true が表示されます。

    注釈

    Raspberry Pi Pico 2 WがUSBケーブルでコンピュータに接続されていることを確認し、右下隅をクリックして、MicroPython (Raspberry Pi Pico).COMXxxをインタープリタとして選択してください。

    ../../_images/access2.png

2. タイムアウト判定とIP表示

ネットワーク環境が悪い場合を考慮して、コードにタイムアウト判定を追加しましょう。

接続が成功した場合、Pico 2 WのIPが表示されます。以下のスクリプトをコピーして実行してください。

import network
import time

wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect("SSID","PASSWORD")

# 接続待機または失敗
wait = 10
while wait > 0:
    if wlan.status() < 0 or wlan.status() >= 3:
        break
    wait -= 1
    print('waiting for connection...')
    time.sleep(1)

# 接続エラーの処理
if wlan.status() != 3:
    raise RuntimeError('wifi connection failed')
else:
    print('connected')
    print('IP: ', wlan.ifconfig()[0])
../../_images/access3.png
  • 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アドレスのみを表示しています。

  • class WLAN – MicroPython Docs

3. secrets.py に個人情報を保存

Pico 2 Wプロジェクトを共有する際に、他の人にWi-FiパスワードやAPIキーを見られたくない場合があります。 セキュリティを確保するために、 secrets.py ファイルを作成して個人情報を保存することができます。

  1. 以下のコードを新しいスクリプトファイルにコピーします。 SSIDPASSWORD は自分のものに変更してください。

    secrets = {
    'ssid': 'SSID',
    'password': 'PASSWORD',
    }
    
  2. 保存ボタンをクリックするか、 Ctrl+S を押すと、ポップアップウィンドウが表示されます。そこでRaspberry Pi Picoを選択します。

    ../../_images/access4.png
  3. 名前を secrets.py に設定します。

    ../../_images/access5.png
  4. Raspberry Pi Pico 2 Wでこのスクリプトが表示されるようになります。

    ../../_images/access6.png
  5. 他のスクリプトで以下のように呼び出すことができます。実行すると、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 = 10
    while wait > 0:
        if wlan.status() < 0 or wlan.status() >= 3:
            break
        wait -= 1
        print('waiting for connection...')
        time.sleep(1)
    
    # 接続エラーの処理
    if wlan.status() != 3:
        raise RuntimeError('wifi connection failed')
    else:
        print('connected')
        print('IP: ', wlan.ifconfig()[0])
    
    ../../_images/access8.png

4. do_connect.py を使ってインターネットに接続

次のプロジェクトでネットワーク接続が必要になることを考慮し、 do_connect.py ファイルを新たに作成し、再利用可能な関数をその中に書き込むと、複雑なプロジェクトのコードが大幅に簡素化されます。

  1. 以下のコードを新しいスクリプトファイルにコピーし、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 = 10
        while wait > 0:
            if wlan.status() < 0 or wlan.status() >= 3:
                break
            wait -= 1
            print('waiting for connection...')
            time.sleep(1)
    
        # 接続エラーの処理
        if wlan.status() != 3:
            raise RuntimeError('wifi connection failed')
        else:
            print('connected')
            ip=wlan.ifconfig()[0]
            print('network config: ', ip)
            return ip
    
    ../../_images/access7.png
  2. 他のスクリプトで以下のように呼び出すことで、Raspberry Pi Pico 2 Wがネットワークに接続されます。

    from do_connect import *
    do_connect()