本記事へのコメントで、「この記事に書いた問題に対応したライブラリをリリースした」というお知らせをいただきました。
その修正版のライブラリを使ってみたところ、安定版の最新バージョン「RPI_PICO_W-20240602-v1.23.0.uf2」でエラーが解消されたことを確認できました。
↓コメントのリンクをこちらに掲載しておきます
https://qiita.com/youtoy/items/ac1510b76b43936c33fb#comment-c6c6cf6381c6ef89f1cc
以下のポストをしていた時(Raspberry pi もくもく会というイベントに参加した時)に、そこで出くわしたエラーの対処法に関するメモです。
この時にやろうとしたことは、「Blynk というサービスを使って、スマホアプリ上のボタンを押すごとに、Raspberry Pi Pico W のボード上の LED の ON/OFF が切り替わる仕組みを実装する」というものでした。
以下が、それをうまく動かせた時の様子です。
この動画のようにうまくいく前に、軽くハマってしまいました...
問題が発生した状況
今回、Blynk の基本的な設定や、MicroPython + Raspberry Pi Pico W を使って開発する環境のセットアップ(※ 今回、Thonny を使いました)の詳細については省略します。
今回の話は、MicroPython で書いたプログラムを Raspberry Pi Pico W で動かせる状態になった後の話です。
またその際に、MicroPython + Raspberry Pi Pico W を使った開発で Blynk を利用するために、以下のライブラリを用いています。
●blynk-library-python/BlynkLib.py at master · vshymanskyy/blynk-library-python
https://github.com/vshymanskyy/blynk-library-python/blob/master/BlynkLib.py
そして、スマホアプリ上のボタンを押すごとに、Raspberry Pi Pico W のボード上の LED の ON/OFF が切り替わる仕組みを実装したところ、以下のエラーが発生しました。
Connecting to blynk.cloud:443...
Traceback (most recent call last):
File "<stdin>", line 37, in <module>
File "/lib/BlynkLib.py", line 214, in __init__
File "/lib/BlynkLib.py", line 81, in __init__
File "/lib/BlynkLib.py", line 239, in connect
AttributeError: 'module' object has no attribute 'create_default_context'
処理の流れの中でエラーが発生した部分は、Raspberry Pi Pico W が Wi-Fi につながって、その後に Blynk用のサーバーに接続するところのようでした。
問題の解決方法
エラーが発生した後、いろいろ検証した結果、これを解決できた方法は「ファームウェアを少し古いバージョンにする」というものでした。
当初、公式ページの以下から「RPI_PICO_W-20240602-v1.23.0.uf2」をダウンロードして使ったのですが、その状況だと上記のエラーが発生していました。
●MicroPython - Raspberry Pi Documentation
https://www.raspberrypi.com/documentation/microcontrollers/micropython.html
最終的に、以下のページにある 1つ前のバージョン = 「RPI_PICO_W-20240222-v1.22.2.uf2」を用いることで、以下のようにエラーが発生せず、無事に動作するようになりました。
●MicroPython - Python for microcontrollers
https://micropython.org/download/RPI_PICO_W/
プログラム実行後、以下の画像の下のほうの「0」「1」という数字が出力される = スマホ側のボタン操作で指定した状態が「ON/OFF のどちらか」を示す値の出力が確認できる、という状態になりました。
そして、上で掲載した動画のように、Raspberry Pi Pico W のオンボードLED の ON/OFF をスマホから行えることも確認できました。
なお、1つ前のバージョンではなく、プレビューバージョンとなっていた「RPI_PICO_W-20240608-v1.24.0-preview.34.g5903ee561.uf2」も試したのですが、「RPI_PICO_W-20240602-v1.23.0.uf2」を用いた時と同じエラーが出ました。