目次
はじめに
壊れたと思っていた Raspberry Pi Pico が修復できました。ネット検索で見つからなかったので、記録として残しておくことにしました。
修復方法の概要
詳細は後述しますが、一言で書くと、CircutPython をインストールし、少し遊んでから、Raspberry Pi Pico用の公式MicroPythonを再インストールしました。
単に、公式MicroPythonを再インストールしたり、Cで作成したソフトを実行しても復旧しませんでした。
何をしていて壊れたの?
公式MicroPythonをインストールしたRaspberry Pi Picoで、machine.deepsleepモジュールを使ったプログラムを作成していました。
プログラムを書き込まずに(REPLモードやプログラム転送)で実行すると、COMポート(ttyACM)が切断されました。しかし、消費電力は下がりません。この段階では、COMポートの再接続で、スリープ!?が復帰しました。
次に、Raspberry Pi Picoにプログラムをmain.pyのファイル名で書き込んで実行してみました。消費電力が下がって(約10mA)喜んだのもつかの間、COMポートを再接続しても復帰できなくなりました。
USBを挿しなおしても、Raspberry Pi PicoのUSBシリアルCOMが動作しないので、通常モードではプログラムの書き換えが出来なくなりました。
公式MicroPythonを再インストールしても、復帰しませんでした。
壊れたー。
修復方法(詳細)
Raspberry Pi Pico上のBOOTSELボタンを押しながら、PCのUSBに接続すると、ドライブとして認識するので、下記からCircutPythonをダウンロードし、ドライブへ書き込みます。
https://circuitpython.org/downloads
CircutPythonは、米Adafruitが支援する組み込み機器向けのPythonです。ベースは MicroPython ですが、様々な機能拡張がされています。
インストール後、起動してみると、なんとCOMから日本語のメッセージが。組み込みマイコンの起動メッセージに日本語が表示されることに驚きです。もちろん、COMポートがハード的に壊れていなかったことも分かり、一安心しました。
ボクは、CircuitPythonが女神のように感じ、少し、試用してみることにしました。CircutPythonだと、リムーバブル・ドライブ上のファイルcode.py(Hello world表示プログラム)を、書き換えて、実行することが出来ます。これは、便利です。
(わざわざ、ここに書いたのは、ドライブのファイル編集が、MicroPythonでのCOMの復旧に寄与したかもしれないからです。互換性を確認したかったので、数多くのプログラムで試しました。)
このあと、Raspberry Pi Pico用のMicroPythonを下記からダウンロードし、再インストールすると、復旧できました。
https://micropython.org/download/rp2-pico/rp2-pico-latest.uf2
復旧させたRaspberry Pi Picoで実験を再開しました。
原因は?
発生した症状、復旧した流れから、以下の2つのどちらかが原因と思います。
- main.pyが公式MicoPythonの再インストールでは消えずに、再インストール後の起動においてもdeepsleep動作が実行され続け、復旧できなかった。
- USBシリアルのハードウェアがスリープ状態に固定されてしまっていて、公式MicroPythonの起動ではスリープ解除ができなかった。
消費電流
参考のために、消費電流の実測値をメモしておきます。後半の4つがMicroPythonでスリープ命令を実行したときの電流値です。フル動作状態にしか見えない値でした。
状態 | 消費電流 |
ファームウェア無し(購入状態) | 8.4 mA |
MicroPythonファームウェア導入後(COM非接続) | 17.9 mA |
COMポート接続状態 | 18.1 mA |
time.sleep(5) | 18.1 mA |
utime.sleep(5) | 18.1 mA |
machine.lightsleep() | 18.1 mA |
machine.deepsleep() | 18.1 mA |
蛇足
てっきり、壊れたと思っていたので、復旧したときには追加で注文してしまっていました。金曜日の夜に発注しましたが、月曜日に発送、火曜日の朝に到着。到着してから、キャンセルできたかもしれなかったことに気づきました。
by bokunimo.net
「Raspberry Pi Pico のシリアルCOMが表示されないときの修復方法」への7件の返信
ありがとうございました。この記事でうちの子も復旧できました
コメントありがとうございます。ご無事でなりよりでした。
[…] Raspberry Pi Pico のシリアルCOMが表示されないときの修復方法 https://bokunimo.net/blog/raspberry-pi/1460/ […]
情報、ありがとうございました。
追加コメントありがとうございます。
pico、すごい機能だけに、使いこなすのは大変そうです。
情報共有よろしくお願いします。
いつも拝見しています
>参考のために、消費電流の実測値をメモしておきます。
picoのsleep時の消費電流が同じ(18.1mA)に見えます、わかると嬉しいです。
私も、Facebookで投稿されている情報を拝見させていただいています。
ご指摘、ありがとうございます。「全部、同じやん!」というツッコミを待っていたので、反応していただき嬉しいです。
実は、MicroPythonから指示してもスリープが実行されず、全て同じ電流値でした。
とはいえ、指摘いただいたように誤記のようにも見えてしまうので、ブログとして不適切でした。
「MicroPythonでスリープ命令を実行したときの電流値です。フル動作状態にしか見えない値でした。」と追加しておきました。