Raspberry Pi PicoとWindows上のMicroPython

この記事は、その質問に答えるものです。WindowsでRaspberry Pi PicoをMicroPythonで使うにはどうしたらいいですか?また、Windows 8.1の "Board CDC"(MicroPythonをインストールするとPicoが表示されます)用の正しいドライバをインストールする方法を紹介します。(また、CircuitPythonとの違い、つまりボードの名称が「CircuitPython CDC Control」になる点についても説明します)。

最後に、PuTTYを使ったPicoへの接続方法と、Thonny(Python IDEで、Picoと統合されています!)を使ったより快適なオプションについて紹介します。

はじめにPicoとは何か、MicroPythonとは何か?

のです。 Raspberry Pi Pico は、Raspberry Piの新しいマイコンボードで、自社開発のRP2040マイコンチップを搭載しています。

Raspberry Piは、RP2040にたくさんのクールな機能を設計しました(私のお気に入りはPIO - programmable IOで、正確なタイミングなどを必要とする多くのハードウェアインターフェイスをエミュレートすることができます。- Picoは、RP2040が実装された本当に素晴らしいリファレンス・プラットフォームです。

4 $マイコンボード「Raspberry Pi Pico」。

Raspberry Pi PicoとRaspberry Pi Zero Wはどう違うのですか?

マイクロコントローラとの違い(ピコ) とシングルボードコンピュータ (仮にパイゼロw) は,おおよそ次のようなものです:Pico を直接(例えば C 言語で)プログラムします. オペレーティングシステムなしであるのに対し パイゼロW は通常Linuxで動作します。これはリアルタイムのような利点がありますが、欠点もあります。使用しているハードウェアについてもっと知る必要があり、最新のオペレーティングシステムでは当たり前の多くの機能(例えば、ファイルアクセス)を実装する必要があります。PicoはPi Zero Wに比べてリソースが少ないですが(例えばRAMがかなり少ない、VideoCore GPUがない、など)、消費電力が少なく、前述のPIOやアナログ入力(ADC)などの機能が追加されています。

Picoは、ネットワーク接続、HDMI出力、カメラ入力、処理などを必ずしも必要としないプロジェクトに適しています。言い換えれば、ハードウェアとのインターフェイス、長いバッテリ寿命などを望むのであれば、Picoはあなたのためにあるのです。

Pico用に既に存在するソフトは何ですか?

で提供される別のソフトウェアを使用して、Pico をフラッシュすることができます。 UF2ファイル (Pico getting started guideをご覧ください。).Raspberry Piは、いくつかのUF2ファイルを提供しています。

他にもたくさんあります。 の例は、ここにあります。 (Cコード)です。

注意してください。 2021年1月30日現在の最新のUF2ファイルをリンクしています。特にMicroPythonは更新されているかもしれませんので Raspberry Pi Picoのスタートページ.

MicroPython

もし、フルインしてC言語でプログラミングするのが少し難しく感じるのであれば、MicroPythonで始めることができます。この場合、Raspberry Pi Picoにいくつかのソフトウェアがプリインストールされており(MicroPython UF2ファイル)、小さなPythonインタプリタが動作します。

Python 3標準ライブラリをフルサポートしていないため、MicroPythonと呼ばれています。MicroPythonはPicoのような制約のある環境での使用を想定しています。PicoのRAMは2MBで、これではPython 3がもたらすすべてを満たすことはできません。チェック CPythonとMicroPythonの違いについては、こちらのGithubページをご覧ください。.また、こちらは公式 MicroPythonホームページを、そして MicroPythonの公式ドキュメント.

CircuitPython

注:ほとんどの手順は、Windows上のCircuitPython RP2040ベースのボード、例えばAdafruit Feather RP2040にも適用できますが、少し異なる手順を踏む必要があります - この記事でその違いを指摘します。

CircuitPythonは、基本的にAdafruit社が開発しているMicroPythonの亜種です。

フラッシュ後のデバイスマネージャでは、ボード自体の呼び方が変わります(CircuitPython CDC Control)-もちろん、別のソフトウェアが必要です。まず、必要なものは以下の通りです。

今回は、Windows上のRP2040搭載機器にCircuitPythonライブラリをインストールする方法と、Thonnyを使ったプログラムの実行・停止方法についてもご紹介します。

MicroPython UF2には何が入っているのですか?

PicoにMicroPythonがインストールされると、シリアルコンソールを使ってPicoに接続し(この記事で方法を紹介します)、Pico上でPythonのコードを書き始めることができるようになります。

PicoへのMicroPythonのインストール

  • Picoから電源を抜く
  • BOOTSELボタンを押し、押したままにする
  • microUSB-USBケーブルでPicoとPCを接続します。
  • これでBOOTSELボタンを離すことができます。
BOOTSELボタンを押し、押したままmicroUSBケーブルを挿し込みます

Pico は RPI-RP2 としてファイルシステム上に表示されるはずです。

PicoはRPI-RP2として表示されます。

(補足:RPI-RP1ってなんだったんだろう?)

PicoはFAT32のフラッシュドライブをエミュレートしており、その中に2つのファイルが入っています。INDEX.HTM と INFO_UF2.TXT の2つのファイルがあります。

Windowsドライブマネージャ

実際、Windowsのドライブマネージャーを見ると、Picoは128MBのFATフラッシュドライブであることがわかります。

間違ってもPicoにファイルを保存しようとしないでください 此の方: 無言で削除されます。書き込まれたように見えても、それはWindowsが操作をキャッシュしているだけで、あなたのファイルは消えてしまうのです。PicoのFlashは2MBしかないってもう言ったっけ?RP2040は最大16MBのフラッシュをサポートすることになっています)。

余談:インドを旅行したとき、128GBの容量のサムドライブを買ったことをちょっと思い出した - それはあなたのデータをニルヴァーナに書き込むものだった。そのドライブを返品してお金を取り戻そうとしたら、そのベンダーはいなくなっていた......という冒険がありました🙂。

しかし、正しい種類のファイルであるUF2ファイルをこのドライブにコピーすれば、認識されて書き込まれます。

MicropythonのUF2ファイルをPicoにコピーする

ダウンロードした後、ブラウザからドラッグ&ドロップするか、コピー&ペーストしてください。コピーが完了すると、Picoは自動的に再起動し、フラッシュ・ドライブは表示されなくなります。

注:CircuitPythonを使用する場合、もちろんこのステップではCircuitPython UF2ファイルを代わりに使用します。

再起動後、WindowsのドライブマネージャからPicoが消えている

Picoは現在(再起動後)MicroPythonが動作しており、USB経由でシリアルポート(COM-port)を提供しています。(専門用語では、USBデバイスクラス02となります =。 コミュニケーションとCDCコントロール およびUSBデバイスのSubClass02)。

ピコへの接続、Windows 10

Windows 10では、必要なCOM-Portドライバ(usbser.inf)が自動的にインストールされ、アクティベートされるので、簡単にPicoに接続することができるのです。

どのCOMポートにあるのかを確認するには、デバイスマネージャーを開いてください。

デバイスマネージャーを開くには、Windowsの検索で「デバイス」と入力し、「デバイスマネージャー」をクリックします。

ここで、ポート(COMとLPT)の下に、新しいUSB Serial Deviceと、COMポート番号(接続するためにすぐに必要になります)が表示されます。

新しいシリアルデバイスが登場し、Picoに接続できるようになりました

これが本当にMicroPythonが動作するPicoであるかどうかを再確認するために、次のようにします。

View」をクリックし、「Devices by Container」を選択します。

デバイスマネージャーでは、デバイスをさまざまなビューで表示することができます

Board in FS mode "という項目があり、"USB Composite Device "と "USB Serial Device "の2つのノードがあります。COM3)".COM3は重要で、PuTTY(後述)に使用する必要があります。

デバイスを右クリックし、コンテキストメニューから適切なプロパティを選択することで、さらにデバイスを調査することができます。FSモードのBoardのプロパティは空です。

USB Composite Deviceは、Bus reported device descriptionに "Board in FS mode "と表示されます。

注:これはMicroPythonが動作しているPicoです。別のソフトウェアでリフラッシュすると、ここで違う結果が表示されるでしょう

USBシリアルデバイス自体には、興味深いプロパティが表示されます。

バスで報告されたデバイスの説明は "Board CDC "です。

注意:CircuitPythonを使用している場合、ボードデバイスの説明は "Board CDC "ではなく "CircuitPython CDC Control "になります。

デフォルトのポート設定は、9600ビット/秒、8データビット、パリティなし、1ストップビット、フロー制御なし、で、これらは動作します(下記参照)。
USBのクラスは02、USBのサブクラスは02です

何を探しているのかがわかっている場合は、ハードウェアID(VID=ベンダーID、PID=製品ID)が便利です。

VID_2E8A → ベンダーIDは 2E8A (16進数)または 11914 (10進数)であり、これは Raspberry Pi

PID_0005 →プロダクトIDは 5MicroPythonを実行する際にボードに表示されるものです(デフォルトの製品IDは 3)

参考:Chromeブラウザのデバッグログ

この情報は、Chromeブラウザーを使っても取得することができます。

chrome://device-log

をクリックすると、現在接続されているデバイスが表示されます。

上のスクリーンショットでは、Chromeのデバイスログの出力から、MicroPythonでフラッシュする前のPicoが「Raspberry Pi」「RP2 Boot」、そして「MicroPython」「FSモードのボード」として表示されることがわかります。製品IDが違うことに注目してください。

Windows 10に話を戻します。

上のスクリーンショットにあるように、Windows 10は自動的にusbser(USB Serial Driver)をインストールしてくれますので、すぐにPicoを使い始めることができます。

プッチー

PuTTYはtelnet/SSHクライアントです。Picoに接続し、MicroPythonのREPLと対話するために使用します。 PuTTYのダウンロードはこちら.(ほとんどのWindows 10のインストールには、64ビットのMSI Windows Installerを使用することができます)。

PuTTYを起動します。正しい設定を入力します。

  • 接続の種類は、以下のように設定する必要があります。 シリアル
  • Serial Lineは、上記で調査した結果に応じた値に設定する必要があります。私の場合、これは COM3.あなたの場合は、おそらく違うものになるでしょうね。
  • スピードはとりあえず9600のままでOK

開く」をクリックすると、「ターミナル」が開きます。

最初のプロンプトを表示するには、Enterキーを1回押します。

そして、プロンプトの後にPythonのコードを書き始めれば、すぐに解釈されます。古典的な "Hello world "を入力してみてください。

print("Hello world!")

MicroPythonは次のように返信します。

Hello world!

予想通り🙂。

最初の接点ができたので、ハッピーコーデを祈ります

Thonny: Python IDE, Picoで動く!

PuTTYの使用は、長時間のセッションや、Picoに多くのコードをロードしたい場合には、あまり快適ではありません。幸いなことに、オープンソースのアプリケーションであるThonny(Raspberry Pi OSにデフォルトでインストールされています)がWindowsでも利用でき、Pico(MicroPythonとCircuitPython)のサポートを統合しています

ステップ1

Thonnyのダウンロードはこちらを選択し、インストールします。

ステップ2

Picoを上記のように接続し、COM番号を取得します。必要であれば、上記のPuTTYの方法で、Picoに接続できるかどうかテストすることができます。

ステップ3

Thonnyを起動し ツール メニューを選択します。 オプション

WindowsのThonnyデフォルトの起動画面、ツールメニューから、ここのオプションを選択します。

ステップ4: Pico をインタプリタとして設定する

Interpreter」タブをクリックします。デフォルトでこの画面が表示されます。

Thonny(デフォルト)を実行するのと同じインタプリタが、デフォルトのInterpeter

MicroPython (Raspberry Pi Pico)をクリックし、選択します。

MicroPython (Raspberry Pi Pico) サポートをThonnyにビルトインしました。

ノート: を使用している場合 CircuitPythonを選択する必要があります。CircuitPython(汎用)「をこのドロップダウンから選択します。

ポートは「try to detect port automatically」のままでも、特定のポートを設定することもできます(正しいポート番号を決定する方法は上記で見ています)。

ポートの自動検出を試みる

注:ポートがドロップダウンに表示されるはずなので、そこにあることを再確認するのがよいでしょう。

私のコンピュータでは、ボードCDC(Pico with MicroPython)はCOM5ポートにあります。

ポートの自動検出を試みる」のままにしています。 OK]をクリックすると、設定が保存されます。

これで画面はこのように変わります。

Raspberry Pi PicoとRP2040によるMicroPythonのプロンプトに注目。

ステップ5:テスト

これで、Picoとの通信テストができるようになりました。

タイプ

print("Hello world")

をMicroPythonのプロンプトに入力し、Enterキーを押します。

ハローワールド、ピコピコドットコム流 🙂。

ピコが反応するのがわかると思います。

おめでとうございます!WindowsでThonnyとPicoの接続に成功しました。

もっと複雑なスクリプトThonnyでLEDを点滅させる

先ほどのREPL(read evaluate print loop)もいいですが、もっと複雑なプロジェクトでは、まずソースを入力したり、ファイルから読み込んだりしたいものです。

Thonnyウィンドウの上部はこんな使い方ができるんです。

コードを入力します。私の例では、オンボードのLEDを点滅させ(これはハードウェアのhello worldに相当します!)、永遠にループさせます。

import time
from machine import Pin
print("Welcome to Pico example 2, blinking an LED")
led = Pin(25, Pin.OUT)
# For demo purposes, we have an infinite loop here
while True:
    led.high()
    time.sleep(0.5)
    led.low()
    time.sleep(0.5)

Pythonの適切な字下げに注意する(Pythonでは空白は制御のために使われます!)。

搭載されているLEDを点滅させるコード

ここで「実行」ボタンをクリックします

Thonnyが保存先を聞いてきます。

このコンピューターまたはRaspberry Pi Picoに保存しますか?

Raspberry Pi Picoを選択します。

ファイル名を hello.py としました - OK をクリックして保存します。

OKボタンが押されると、コードの実行が開始されます。PicoのオンボードLEDが点滅し始め、Shellに出力されるのがわかるはずです。

%Run -c $EDITOR_CONTENT

注:%Run -c $EDITOR_CONTENT コマンドを入力する必要はなく、Thonnyが自分でやっていました。以下の出力は、私たちのコードからのものです。

WindowsのThonnyでCircuitPythonを動かす。

同じ手順で、インタープリタにCircuitPython(generic)を選択します。

Thonny shellでは、別の確認が表示されます。

と書いてあります。Adafruit CircuitPython 7.0.0 on 2021-09-20; Adafruit Feather RP2040 with rp2040
Adafruit CircuitPython 7.0.0 on 2021-09-20; Adafruit Feather RP2040 with rp2040

Windows 8.1

Raspberry Pi Picoは "Board CDC "となり、エラー状態で表示されます。

Windows 8.1では、シリアルドライバーは自動的にロードされず、デバイスはエラー状態で表示されます。

注意:CircuitPythonの場合、デバイスの名前は代わりに "CircuitPython CDC control "となります。同じ手順です。

Windows 8.1でのCircuitPythonのCDC制御

Board CDC(MicroPythonが動作するPico)のプロパティはこんな感じです。

このデバイスのドライバがインストールされていない(Code 28)と表示される。

この問題を解決するためのソリューションが ザディグツールは、無料でダウンロードできます。

注目です。 Zadig 2.7に含まれるinstaller_x64.exeに「Trojan.Tedy」があることは、多くのウイルススキャナが認めているようです。 これは誤報かもしれませんが、しかし:私は、以下のものを使用することをお勧めします。 Zadig-2.5.exe その代わり、この警告は出ませんでした(2回目の検証)。念には念を入れましょう。

ザディグ は、USBデバイスにアクセスするための汎用USBドライバーのインストールを支援します。

ここでは、USBシリアル(CDC)ドライバを使用します。

上のドロップダウンからBoard CDC (Interface 0)を選択し、もう一方のフィールドからUSB Serial (CDC)を選択します。ドライバのインストールをクリックします。

インストール後、ドライバがusbser(v1.0.0.0)に設定されていることが確認できます。

そして、Windows10で説明したように、正しいCOMポート番号で、接続できるようになります。

デバイスマネージャーでBoard CDCが表示され、ドライバーも表示されるようになりました。
Windows 8.1でPico上のMicroPythonのHello worldを実現する。

傍点

このダイアログには、ドライバの製造元として libwdi が表示されています。

Windows 7のPico / Serial Port

お客様の声 ザディグ Windows7でもシリアルポートドライバをインストールすることで、Picoが使えるようになりました。必ず ザディグ2.5新しいZadig 2.7は、ドライバのインストール中にウイルススキャナによってフラグが立てられたためです。(理由は不明ですが、念には念を入れ、古いものを使用します。)

ステップバイステップのガイドが必要な場合は、上記のWindows 8.1用のガイドをチェックしてください。

WindowsでCircuitPython RP2040ボードのライブラリのインストールとプログラミングを行う。

AdafruitのFeather RP2040などを使っている場合、CircuitPythonを使いたいことがあるかもしれません。Adafruitには NeoPixel RGB にライブラリがインストールされている必要があります。 リブ フォルダーに保存されます。

(注 ライブラリのダウンロードはこちら - Download Project Bundle "のリンクをクリックしてください)。

プロジェクトのバンドルフォルダを展開すると、CircuitPython 6.xとCircuitPython 7.xの2種類のサブフォルダが表示されます。

をフラッシュしたため、ここではCircuitPython 7.xバージョンを使用しています。 7.0.0 CircuitPythonバージョン.

エクスプローラーに「CIRCUITPY」というドライブが表示されているのがわかると思います。

CIRCUITPYドライブとその初期コンテンツ(lib, boot_out.txt, code.py)。

のです。 リブ フォルダは、CircuitPythonの新規インストールでは空です。Windowsのエクスプローラを使って、ここにファイルをコピー&ペーストするだけです。

ダウンロードしたlibフォルダから必要なライブラリをCIRCUITPYのlibフォルダにコピーしてください。

必要なライブラリを lib フォルダにコピーする。

これで、code.pyも上書きできるようになりました。

code.pyを置き換える

Thonnyを使って、code.pyファイルを編集し、実行することができます。Thonnyの開くアイコンをクリックし、「Where to open from」ダイアログで「CircuitPython device」を選択します。

CircuitPythonデバイスはこちらから選択

そして、ここでcode.pyを開くことができます。

code.pyをクリックし、OK

これでThonnyのウィンドウは次のようになります。

上部に表示されるcode.py、下部に表示されるShell

キーボードのF5キーを押すか、実行アイコンをクリックします。

実行アイコン

うまくいけば、Adafruit Feather RP2040のNeoPixel RGB LEDが、さまざまな色で点滅し始めるはずです。おめでとうございます🙂。

色や色の変化までの時間を変更したり、他の機能を追加することもできます。あるいは、他の機能を追加することもできます。

修正したスクリプトを実行できるようにするには、シェルで Ctrl + C を押します(または Thonny メニューで Run > Interrupt Execution を選択します)。これで、スクリプトを再度アップロードすることができます。

デバッグに嬉しいのは、Thonnyではコンソール出力が得られるので、print文を使って情報を出力できることです。

ThonnyがAdafruit Feather RP2040からprint文を出力する。

Adafruit CircuitPython Bundle

Adafruitでは、複数のライブラリをZIPでまとめてダウンロードできる便利なサービスを提供しています。対応するadafruit-circuitpython-bundle-7.x.-mpyまたは-6.x.mpyをダウンロードする。 これ.Windowsのエクスプローラーを使うだけで、上記で説明したようなライブラリの一部または全部をインストールすることができます。 Adafruit Feather RP2040には十分な容量があるので、全ライブラリをアップロードすると約1.2MBの容量になります。コピーには数分かかるかもしれません。

その他のメモ

このガイドの手順をCircuitPythonにも使用できますか?

もちろん、そうです。例えば、Windows 8.1でZadigを使用することができます(詳細は上記の説明をご覧ください。 Zadigのバージョン2.5.730を使用してください!)。ボードCDC "デバイスの代わりに "CircuitPython CDC control "デバイスを探すことになります。

CircuitPython CDC制御デバイス用Zadig

Zadigでドライバのインストールに失敗?

アンチウィルスソフトが原因かもしれない。もしかしたら誤報かもしれませんが、確証はありません。私のVirus scanner (Bitdefender)は次のように教えてくれました。

"Die Datei C:\UsersMaxThreader_x64.exe ist Gen:Variant.Tedy.11444 infiziert und wurde in die Quarantäne verschoben." msgstr "" "インストールされたドライバーのインストールに失敗しました。We推奨は、システムスキャンを実行することです。"

多くのウイルススキャナーは、installer_x64.exe(USBドライバの一部)に「Trojan.Tedy」があることを認めているようです。代わりにZadig-2.5.exeを使用してみることをお勧めします。 こちらからダウンロードできます。.私はZadig-2.5を使って、CircuitPython USBシリアルドライバをWindows 8.1インストール(私のメインマシンです)にインストールしました。

ThonnyでPicoのコード実行を止めるにはどうしたらいいですか?

シェル内でクリックし、Ctrl+Cを押します。これで、現在のコードの実行が停止するはずです。

KeyboardInterruptがコードを停止させた

Thonnyで過去の発言を繰り返す

同じコマンドをもう一度実行したいときは、シェルプロンプトでキーボードの↑キーを押して、過去のコマンドの履歴を呼び出すと便利です。

Pi PicoがThonnyから切断されたことを知るにはどうしたらよいですか?

コードを実行しようとすると、次のようなエラーメッセージが表示されます。

グローバル変数への問い合わせエラー serial.serialutil.SerialTimeoutException:書き込みタイムアウト

つまり、ThonnyはPicoが想定しているシリアルポートに書き込むことができないのです。

Thonnyでデバイスが自動的に見つかりませんでしたエラー

以下のエラーが発生した場合。

デバイスを自動的に見つけられませんでした。
接続を確認する(デバイスがブートローダモードでないことを確認する)か、または、次のように選択します。
インタプリタメニューの「インタプリタの設定」(ウインドウ右下)
をクリックすると、特定のポートや他のインタプリタを選択することができます。

正しいインタプリタが選択されていることを確認してください。もしあなたのデバイスがMicroPythonではなくCircuitPythonを実行しているならば、次のように選択する必要があります。 CircuitPython(汎用) をThonnyのインタープリターとして使用することができます。やり方はこの記事の関連情報をご覧ください。

WindowsでPico/MicroPythonを使うためのヒントを教えてください。

他にもWindowsでPicoとMicroPythonを始めるためのヒントがあれば、コメントで教えてください!適宜、記事を更新します🙂。

Picoでできる素晴らしいプロジェクトを楽しんでください。

マックス

PiCockpitのPicoブログ記事をもっと見る

この記事を読んでくださった方は、次の記事も読んでみてください。

7コメント

  1. Gokhan Cinoglu on 3月 24, 2021 at 10:01 am となります。

    私はWin8.1ですが、COM問題の解決策を持っているのはこのサイトだけです。ありがとうございました。

  2. Shubham Chauhan on 6月 7, 2021 at 6:25 pm となります。

    Windows 8.1でBoard CDCを使用するためのソリューションが掲載されている記事のリンクを教えてください。

    • raspi berry on 11月 21, 2021 at 9:16 pm となります。

      この記事は、Windows 8.1でBoard CDCを使用する方法 - Version 2.5のZadigツールを使用する方法を説明するものです。

  3. Pablo Cervantes on 7月 12, 2021 at 7:01 pm となります。

    ありがとうございます。Windows 7 64bitはスムーズに動作しています。

  4. Franckeno on 12月 19, 2021 at 10:15 am となります。

    このチュートリアルに大感謝です

  5. Jajcio on 5月 5, 2022 at 4:32 pm となります。

    非常に素晴らしいチュートリアル ポーランドで言うところのコーヒーをテーブルに置く、つまり藪をつつむことなくということですね。素晴らしいです。

  6. Jerry Bee on 7月 28, 2022 at 2:42 am となります。

    助けてほしいのです。 私のWindows11では、picoは「ポータブルデバイス」と表示されるだけです。 このため、Puttyがそれを見つけることができず、パスが特定できないというエラーが発生します。

    どうすればいいのかわからない。

    ありがとうございます。

コメントを残す