注目キーワード

【Arduino】Raspberry Pi Pico/W をデバッグする!Picoprobeの作り方、Arduinoプログラミング!

すけろく
ん~。
このエラーの時の変数の値が知りたいな~
げんろく
どうした?
プログラムがうまく動かないのか?
すけろく
そうなのだ。
Raspberry Pi Pico Wでもデバック機能が使えると
いいのだが。。。
げんろく
ちなみに、Arduino IDE 2.1.0 のデバッグ機能で
Raspberry Pi Pico / Wのデバッグができるぞ!
やっとできたプログラムを動かしてみると、
「動作がおかしい。」
「きちんと意図したとおりに動いているのか?」
といったことが起こりますよね。
プログラムがコンピュータやマイコンで実行されている間に、
どのように処理が行われているかをチェックできたらいいですよね。
そんな時、有効なのが統合開発環境が提供する「デバッグ機能」です。
デバッグ機能とは?
デバッグとは、プログラムした、ソースコード(スケッチ)のエラーや、バグ(意図しない動きなど)を見つけて、修正することです。
この記事紹介する、デバッグ機能は、プログラムを実行した際に、ソースコード(スケッチ)内の指定した行にあるプログラムで実行を止め、その時点の変数などの値を調べたり、停止したプログラムの次の処理を順々に実行(ステップ実行)させることができる機能のことを示します。
この機能があると、プログラムの各ステップにおける状態を確認できるため、デバッグ作業が非常にやりやすくなります。
Arduino IDE 2.1.0 の紹介でも、デバッグ機能をご紹介しました。
このArduino IDE 2.1.0のデバッグ機能、Raspberry Pi Pico / Wでも使えちゃうんです。
デバッグ機能を使うためには、「Picoprobe」が必要になります。
「Picoprobe」とArduino IDEを連携させることで、デバッグ機能が実現できます。
「Picoprobe」には、Raspberry Pi の公式が販売している「Raspberry Pi デバッグプローブ」という商品があります。
この「Raspberry Pi デバッグプローブ」では、オープンソースの「Picoprobe」が使われています。
この記事では、よりコストを抑える方法として、
「Raspberry Pi Pico」に「Picoprobe」を構築し、デバッグ機能を使う方法 について紹介します。
ご紹介する「Raspberry Pi Pico/W」はこちら!
Arduino、C/C++、MicroPythonに対応している組み込み開発キットです。
正確なタイマ機能を搭載しています。ディスプレイ等がないため、消費電力を抑えた構成をとることができます。いろいろ遊べますよ~
ピンヘッダ実装済み

ピンヘッダを自分ではんだ付けするもの

Arduino、C/C++、MicroPythonに対応している組み込み開発キットです。
正確なタイマ機能やWifi/Bluetoothを搭載しています。ディスプレイ等がないため、消費電力を抑えた構成をとることができます。いろいろ遊べますよ~

スポンサー広告

Arduino IDE でRaspberry Pi Pico/Wをデバッグするには

まず、今回の記事の目標を確認しましょう。

次のような仕組みを作ることが目標です。

図でもわかるように、Picoprobe用の「Raspberry Pi Pico」を一つ用意します。

Raspberry Pi Picoは、安価で手に入るので、おすすめです。

Arduino、C/C++、MicroPythonに対応している組み込み開発キットです。
正確なタイマ機能、温度センサーなどを備えたモデルです。ディスプレイ等がないため、消費電力を抑えた構成をとることができます。いろいろ遊べますよ~
環境を作る手順としては、次の通りです。
  1. Raspberry Pi Picoに「Picoprobe」を構成する
  2. プログラム実行用のRaspberry Pi Pico/WをArduino IDE で書き込めるようにする
  3. プログラム実行用のRaspberry Pi Pico/Wと「Picoprobe」を結線する
  4. Arduino IDE 2.1.0のデバッグ環境を整える
  5. 「Picoprobe」経由でプログラムを書き込む
  6. デバッグ機能を使う

Raspberry Pi Picoに「Picoprobe」を構成する

Raspberry Pi Picoに、「Picoprobe」を構成します。

所要時間:10分程度

The official documentation for Raspberry Pi computers and mi…

1
左のRaspberry Pi 公式サイトにアクセスします。
2
「Debugging using another Raspberry Pi Pico」
「Download the UF2 file」のリンクを
クリックします。
3
ダウンロードされる「picoprobe.uf2」を
コピーします。
4
Raspberry Pi Pico の「BootSel」ボタン
を押します。
※ボタンは押したまま
5
Raspberry Pi Pico をパソコンにUSBで
接続します。
※ボタンは押したまま
6
Raspberry Pi Pico がパソコンに
USBドライブとして認識されます。
※ボタンを離す
7
コピーした「picoprobe.uf2」を
Raspberry Pi Picoのドライブへ
ペーストします。
※読み込まれるとUSBドライブの
認識が外されます。
8
Windowsのデバイスマネージャを開きます。
「ユニバーサルシリアルバスデバイス」に
「Picoprobe CMSIS-DAP v2」として認識されます。※「libusb-win32」デバイスとして認識される
可能性があります。
その場合は「補足」にあるツールを使って、
「WinUSB(v6.1.7600.xx)」に
ドライバを変更します。
以上で、「Picoprobe」の構成手順は完了です。

補足

Iibusb-win32」デバイスとして認識されている場合、次のツールを使ってドライバを変更します。
ツールは、インターネットで検索してダウンロードしてください。


ツール:zadig-2.8.exe(2023年6月時点)
変更内容
 ・[Options]から、[List All Devices]を選択します
・対象のインターフェイスを選択します
・Driverを「WinUSB」に変更します
・ Replace Driverボタンを押します

スポンサー広告

プログラム実行用のRaspberry Pi Pico/WをArduino IDE で書き込めるようにする

プログラムの書き込みを行い、実行する側のRaspberry Pi Pico/WをArduino IDEで書き込めるようにします。
手順については、次の記事で紹介していますので、確認してください。
「Raspberry Pi Pico /W」をArduino IDEで書き込む準備
関連記事

すけろく ついに、国内でもRaspberry Pi Pico Wを手に入れたぞ! げんろく Wi-Fiモジュールがついているので、 国内の技適取得が必要だったからな。 すけろ[…]

関連記事

すけろく うぬぬ。 げんろく どうした? 何かあったのか? すけろく Raspberry Pi Pico W にArduinoから プログラムが書き込めないのだ・・・ […]

プログラム実行用のRaspberry Pi Pico/Wと「Picoprobe」を結線する

プログラム実行用のRaspberry Pi Pico /Wと、「Picoprobe」を結線します。
結線には、ブレッドボードとジャンパ線を使用します。
結線の前に、Raspberry Pi Pico/Wや「Picoprobe」にピンヘッダをはんだ付けしましょう。

Raspberry Pi Pico Wにピンヘッダをはんだ付けする

「Raspberry Pi Pico W」には、ピンヘッダをつけるための穴(ランド)がついています。

ピンヘッダをつけることで、ブレッドボードや、ディスプレイのシールドなどと接続することができます。

ピンヘッダとは次のようなものです。

秋月電子さんの1×40ピンヘッダ

ピンヘッダ 1×40 
入手元:秋月電子
型番:PH-1x40S
片方のピンが長いものになります。
40ピンありますので、8ピン分を切って使うなどできます。
秋月電子さんの通販サイトURLはこちらです。
はんだ付けの手順や、必要となる道具のおススメについては、次の記事で紹介しています。
関連記事

電子工作という言葉を聞くとまず思い浮かぶのは、中学校の技術家庭の授業でやったはんだ付け。 最近の学校は実習とかやっているのかなとふと思います。 子供の頃は何となく作業していたので、今思うと「よく部品壊さなかったな・・・」と思いま[…]

ピンヘッダをはんだ付けする場所は、Raspberry Pi Pico/Wの基板の周囲にあるGPIOの穴(ランド)と、デバッグ用GPIOの穴(ランド)です。
ピンヘッダをはんだ付けしたイメージは次の通りです。

Raspberry Pi Picoのはんだ付け部分

Raspberry Pi Picoのはんだ付け部分は、次の通りになります。

周囲GPIOと今回デバッグに使うGPIOは上下逆に、ピンヘッダをはんだ付けします。

はんだ付けした結果は次のようになります。

デバッグに使うピンヘッダだけ、上向きにはんだ付けしています。

Raspberry Pi Pico Wのはんだ付け部分

Raspberry Pi Pico W のはんだ付け部分は、次の通りになります。

周囲GPIOと今回デバッグに使うGPIOは上下逆に、ピンヘッダをはんだ付けします。

はんだ付けした結果は次のようになります。
デバッグに使うピンヘッダだけ、上向きにはんだ付けしています。

ブレッドボードを使って結線する

はんだ付けが終わったら、ブレッドボード上で、プログラム実行用のRaspberry Pi Pico/Wと、「Picoprobe」を結線します。

結線内容は次の通りです。

画像は2つのブレッドボードに分けているので、結線が多く、複雑に見えます。
もちろん、一つのブレッドボード上に配線すれば、配線はすっきりします。
今回は、一つのブレッドボードに配置しました。
配置したイメージは次の通りです。
右側が「Picoprobe」、左側がプログラム実行用のRaspberry Pi Pico Wです。
接続に使用したブレッドボードやジャンパ線は次の通りです。
電子回路の試作を行う際に使用するツールです。
左右にVinとGNDがあり、中心部分に回路を構成して使います。
電子回路の試作を行う際に使用するツールです。
ブレッドボード上で使用する際にはこちらが便利です。
持っておくと便利です。
電子回路の試作を行う際に使用するツールです。
いろんな長さのものがセットになり、保管用のボックスもついています。

Arduino IDE 2.1.0のデバッグ環境を整える

Arduino IDEのデバッグ環境を整えます。
次の手順に従って、設定をしましょう。

前提条件

この手順は、Arduino IDEにボードマネージャとして「Raspberry Pi Pico/RP2040」がインストールされていることが必要です。

使用する情報 設定値
ボードマネージャURL https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json
ボードマネージャ名 Raspberry Pi Pico/RP2040

ボードマネージャの追加手順については、次の記事をご覧ください。

ボードマネージャのインストール手順については、次の記事を参考にしてください!

関連記事

今回は、「Arduino IDE 2.0」の「ボードマネージャ」と書き込み先のボードの指定について記載します。 Arduino IDEは、Arduinoに対応した各種ボード(Arduino uno、M5Stack、M5Stic[…]

所要時間:10分程度

1
Windowsのエクスプローラから、以下のフォルダにアクセスします。
C:Users{ユーザー名}AppDataLocalArduino15packagesrp2040hardwarerp2040{Arduino-picoのバージョン}lib
2
「picoprobe.tcl」をメモ帳で開きます。
3
「picoprobe.tcl」をメモ帳で開きます。
次のとおり変更し保存します。
【変更前】
source [find interface/picoprobe.cfg] 【変更後】
source [find interface/cmsis-dap.cfg]
4
Windowsのエクスプローラから、以下のフォルダにアクセスします。
C:Users{ユーザー名}AppDataLocalArduino15packagesrp2040toolspqt-openocd1.5.0-b-c7bab52shareopenocdscriptsinterface
5
「cmsis-dap.cfg」をメモ帳で開きます。
6
「picoprobe.tcl」をメモ帳で開きます。
次の内容を追加し保存します。
【変更前】
transport select swd
adapter_khz 500
以上で、Arduino IDEのデバッグ環境の設定手順は完了です。

「Picoprobe」経由でプログラムを書き込む

いよいよ、プログラムの書き込みを「Picoprobe」経由で行います。

所要時間:10分程度

1
パソコンと、「Picoprobe」を接続します。
2
Arduino IDEを起動します。
[ツール]-[ボード]から、下記を選択します。
[Raspberry Pi Pico/RP2040] – [Raspberry Pi Pico W]

3
[ツール]-[ボード]から、下記を選択します。
[Upload Method]から[Pocoplobe (CMSIS-DAP)]を
選択します。

void setup() {
   // put your setup code here, to run once:
   Serial.begin();
   Serial.println("Picoprobe Test");
}
void loop() {
   // put your main code here, to run repeatedly:
   Serial.println("Picoprobe Test loop");
}
4

新規にスケッチを開き、左のようなプログラムを
入力します。
5
[スケッチ]-[書き込み]を選択して書き込みます。
6
書き込みが終わるまでしばらく待ちます。
以上で、「Picoprobe」経由でのプログラムの書き込みは完了です。

デバッグ機能を使う

書き込みが終わったら、デバッグをします。
スケッチのプログラムの左をクリックして、ブレークポイントを作成します。
赤い印がついたところがブレークポイントになります。
画面上部のデバッグボタンを押します。
次のように、設定したブレークポイントで処理が止まり、状態を確認できます。
続行を押すことで、処理が実行され、次のブレークポイントまで処理が進みます。
ステップインボタンを押すと、押した分だけ処理をステップ実行できますよ!
これで、Arduino IDEでのRaspberry Pi Pico/Wのデバッグ機能を使うための環境が整いました。

編集後記

いかがだったでしょうか。

Raspberry Pi Pico/Wで開発する際に、便利なデバッグ機能をArduino IDEで使うことができました。

これで、効率的なプログラム開発ができますね!

Raspberry Pi Picoは、非常に安価な開発ボードなので、「Picoprobe」を手軽に手に入れることができます!

本記事が、少しでも皆さんのお役に立てればと思います。
もし、本記事が役に立ったと!応援したい!という方、いらっしゃいましたら、
以下のリンクからRaspberry Pi PicoやRaspberry Pi Pico Wを、ぜひ手に入れてくださいね~
記事は以上になります。
最後までご覧いただきありがとうございました。
記事内でご紹介した「Raspberry Pi Pico H / W」はこちら!
ピンヘッダ実装済み
ピンヘッダを自分ではんだ付けするもの
Arduino、C/C++、MicroPythonに対応している組み込み開発キットです。
正確なタイマ機能、温度センサーなどを備えたモデルです。ディスプレイ等がないため、消費電力を抑えた構成をとることができます。いろいろ遊べますよ~

Raspberry Pi Pico Wの他の記事はこちらからどうぞ!

すけろく ウーム。 センサーなどの情報を記録したいな。 げんろく なに。Raspberry Pi Picoで記録媒体を 使いたいのか。 すけろく そうだ。 センサーやカメラのデータを保存したいのだ。 げんろく データの保管には、microSDカードが 使いやすいそ。使ってみるか! この記事では、「Raspberry Pi  Pico/W」に「microSDカードスロット」を接続して読み書きしてみま […]

すけろく うーむ。 げんろく どうした?浮かない顔をして。 すけろく LEDを火のように光らせる方法を知りたくてな。 げんろく それなら、1/fの揺らぎを使って 再現してみるか。 この記事では、「Raspberry Pi  Pico W」を使って、「LEDを揺らぎを加えて点灯させる」方法をご紹介します。 Raspberry Pi の中でも、省電力なCPUを搭載したマイコン開発ボードです。 他のRa […]

すけろく うーむ。 どうしたものか。 げんろく どうした。 暗い顔をして。 すけろく カーモデルのウィンカー点滅を再現したくてな。 明滅回路を作ろうか悩んでおる。 げんろく ん!? そんなときは、メインプロセッサと切り離して 動作するPIOの出番ではないのか! この記事では、「Raspberry Pi  Pico/W」に実装されている「PIO(Programmable I/O」を実際に使ってみます […]

すけろく Raspberry Pi Pico/WのPIO機能を使ってUARTの送信には成功した。 しかし、まだ受信側ができていないのぉ。 げんろく そうだな。 今度は受信側を試してみるか。 すけろく どうせなら、パソコンから送った文字を返すような やり取りができるといいな。 げんろく よし。 UART送受信を実装してみよう。 この記事では、「Raspberry Pi  Pico/W」に実装されてい […]

すけろく Raspberry Pi Pico/WのPIO機能については前回調べた。 今度は実際に使ってみたいの~ げんろく そうだな。 実際にプログラムする際の注意事項などを見ていこう。 すけろく Arduino IDEでも使用できるのか? げんろく ああ。 使えるぞ! Arduino IDEで使う場合を例にやっていこう。 この記事では、「Raspberry Pi  Pico/W」に実装されている […]

すけろく Raspberry Pi Pico/Wには、PIOという機能があるらしいな。 げんろく そうだ。 UARTなどのインタフェース不足や、実装されていない機能を GPIOに対してプログラムできる機能だ。 すけろく Raspberry Pi Pico/Wをもっと知るために PIOを調べてみたい。 げんろく よし! PIOについて少し調べてみるか! この記事では、「Raspberry Pi  P […]

すけろく うーむ。 げんろく どうした浮かない顔して。 すけろく これまで、Raspberry Pi Pico / Wをいろいろ確認してきたが 外付けのボタンの認識ってやったかぇ? げんろく たしかに!まだ取り上げていない基本的なものがあるな よし、今回はボタン押下時の状態を Raspberry Pi Pico / Wで認識してみよう。 この記事では、「Raspberry Pi  Pico W」を […]

すけろく 宅内で使っているリモコンは、どういった仕組みで テレビなどをつけているのかな~? げんろく 赤外線を使って信号を送っているのだ。 すけろく しかし、たくさんある機器のリモコンが混信しないのは どういった仕組みなのかぇ? げんろく よし、今回は赤外線リモコンの通信を 調査してみるか! この記事では、「Raspberry Pi  Pico W」を使って、「赤外線リモコンの通信内容を分析する」 […]

すけろく うーむ。 対応付けが難しいな。 げんろく どうした? Raspberry Pi Picoで悩んでいるようだな。 すけろく Raspberry Pi PicoやPico Wの GPIOピンの情報がボード上にプリント されていないから資料との対応付けがやりづらくてな。 げんろく そうか。そういう課題があるのだな。 よし、解決するグッツを作って提供してみよう! 皆さんは、「Raspberry […]

すけろく うーむ。 モーターを毎回同じくらい回転させることはできんのかな。 げんろく DCモーターや、サーボモーターだと、 回転量を正確に制御することは難しいぞ。 すけろく では、何か解決策はあるのかぇ? げんろく ステッピングモーターというものがある。 モーターの回転をステップとして制御できる。 今回はこのあたりを動かしてみるか。 この記事では、「Raspberry Pi  Pico W」を使っ […]