Raspberry Pi Pico WH で Wi-Fi に繋いでみる。そして、設定ファイルから読み込むようにする。

# Raspberry Pi Pico WH で Wi-Fi に繋いでみる。そして、設定ファイルから読み込むようにする。

[前回の記事](https://qiita.com/kazzpapa3/items/d11d3d065cf6c31b9326) で Raspberry Pi Pico WH への MicroPython のインストールと Lチカ（＝LED をチカチカさせるやつ）をやってみました。

今回は Thonny IDE の利用方法を整理しながら、せっかくの無線チップ搭載モデルなので、Wi-Fi に接続するまでの流れとしてまとめます。

また、SSID やパスワードをプログラムに直書きするのではなく、ini ファイル的なコンフィグファイルから読み込めるようにしておきハードコードディングをしなくても済むようにしたいと思います。

## Python の import 対象ディレクトリの確認

デフォルト状態の Thonny IDE では、Raspberry Pi Pico と接続されている状態で起動した場合、下半分に「シェル」タブが表示されている状態です。

問題なく起動し、MicroPython が実行できる状態であれば、`>>>` と表示されており、入力待ちの状態となっているはずです。

![raspberry-pi-pico-wh-02_01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97503/da9ce6ca-11dd-bcf2-3c5d-5c873315e9b8.png)

この状態で、以下のように入力します。

```python
>>> import sys
>>> print(sys.path)
```

実行後、`['', '.frozen', '/lib']` のように返却され、import の対象とできるディレクトリが確認できました。

![raspberry-pi-pico-wh-02_02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97503/104f0cba-6716-9bb8-c67b-91404c061932.png)

以降は `/lib` ディレクトリを作成し、その中にサードパーティモジュール、自作のモジュールを配置する方針でいきます。

## Thonny でのファイル管理

Thonny IDE のデフォルトの画面構成は、先の2枚のスクリーンショットのような見た目となっているかと思いますが、Thonny の「表示」メニューから表示内容を変更することが可能です。

<figure><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97503/a024abab-bef5-33eb-caa0-5b29a91504c8.png">
<figcaption>Mac版 Thonny での「表示」メニューの例</figcaption>
</figure>

「表示」→「ファイル」を選択し有効化することで、以下のようなファイルタブが表示されるようになり、ローカルコンピュータ内、Raspberry Pi Pico 内のディレクトリが確認できるようになります。

![raspberry-pi-pico-wh-02_04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97503/ebffa4ef-cde6-f6f9-c2c8-3ea01a4b8608.png)

## lib/config.py の作成

上記で定義した自作モジュールの配置先としてローカル側の作業ディレクトリに `lib` ディレクトリを作成し、続けて `config.py` ファイルも作成しておきます。

とはいえ`config.py` の内容としてはただの変数定義となり、以下の要領で書いておきます。

```python:/lib/config.py
ssid = 'hogehoge'
password = 'password'
```

 `lib` ディレクトリおよび `config.py` ファイルの用意ができたら、Thonny のファイルタブのローカルディレクトリ側の `lib` ディレクトリを右クリックすることで「/ にアップロード」の選択肢が表示されます。

![raspberry-pi-pico-wh-02_05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97503/d9ca1a26-7e9c-6fd7-e0c9-4dc9be7b25c3.png)

そのまま該当のメニューを選択することで、Raspberry Pi Pico の「/（ルート）」にアップロードすることが可能となります。

なお、Thonny のファイルタブ内の Raspberry Pi Pico のエリアを右クリックすることで、ディレクトリやファイルの直接の作成もできますが、万が一、Raspberry Pi Pico に配置したファイルの自動実行が止まらず、ファイルの中身が見られないまま Raspberry Pi Pico を初期化しなければならない可能性も 0 ではなさそうなので、ローカルにファイルを置いておき、適宜アップロードする方が精神衛生的にも良さそうです。

実際に私も昨年末からいくつか作っていたものがあったのですが、PC に接続し、Thonny を起動した時点で Raspberry Pi Pico 側のプログラムが実行されたまま `Device is busy or does not respond. Your options:` というメッセージから <kbd>Ctrl</kbd> + <kbd>C</kbd> などのキー入力を受け付けず、初期化せざるを得ない場面に遭遇しました。  
そのため、Raspberry Pi Pico 側での直接のファイルの作成や操作、編集は避けておいた方が良さそうです。（[同種のエラー](https://github.com/thonny/thonny/issues/2282)）

### 余談：Raspberry Pi Pico の初期化

Raspberry Pi Pico の初期化は Raspberry Pi Documentation ページ下部の [Resetting Flash memory](https://www.raspberrypi.com/documentation/microcontrollers/pico-series.html#resetting-flash-memory) セクションにある UF2 file をダウンロードし、BOOTSEL ボタンを押しながら USB 接続し外部記憶装置として認識した Raspberry Pi Pico に配置することで実施が可能です。

## Wi-Fi への接続

続けてローカル側の作業ディレクトリのルートに `main.py` というファイルを作成し、以下の要領でプログラムを記載します。

```python:main.py
import network
import config

wlan = network.WLAN(network.WLAN.IF_STA)

wlan.active(True)
wlan.connect(config.ssid, config.password)

print('network config:', wlan.ipconfig('addr4'))
```

このファイルを先ほどの `lib` ディレクトリ一式と同様に Raspberry Pi Pico にアップロードし Thonny で開いた上で、実行ボタン（緑丸の中に再生マーク または F5 キー）をクリックします。

正しく実行できると「シェル」に `network config:` に続けて、割り当てられたプライベート IPv4 アドレス、サブネットマスクが表示され、Wi-Fi に接続できたことが確認できました。

![raspberry-pi-pico-wh-02_06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97503/c6206b2b-e5a0-a6ab-ad49-7c3a71414e5f.png)

また、ESP8266用の MicroPythonチュートリアルにはなりますが、[`network`](https://micropython-docs-ja.readthedocs.io/ja/latest/library/network.html#module-network) モジュールの [`network.WLAN`](https://micropython-docs-ja.readthedocs.io/ja/latest/library/network.WLAN.html#network.WLAN) クラスの説明や Wi-Fi の設定例も記載がありますので、適宜ご参照ください。



https://micropython-docs-ja.readthedocs.io/ja/latest/esp8266/tutorial/network_basics.html



## おわりに

今回は Thonny IDE の操作方法に触れながら、ini ファイル的な設定ファイルから定義値を読み取りつつ、Wi-Fi に接続するまでの流れを見てみました。

次回は、何らかのセンサーを取り付けてその値を取得できるといいなと思いながら今回のエントリはこれで終わりにしたいと思います。

ではまた。