2025年4月26日土曜日

Raspberry Pi Pico 2を使ってみた〜Thonny(MicroPython)プログラミング

以前の続きです。これまでRaspberry Pi Picoでやってきた動作実験を、Raspberry Pi Pico 2でもやってみようと思って復習を兼ねて取り組んでいます。今回は、Thonnyを使ってMicroPythonでのプログラミングについて動作確認をします。

はじめに、Pi Pico 2をMicroPythonでのプログラミングに対応させるために、ファームウェアを変更する作業を行います。各Pi Picoに対応したファームウェアファイル(「.uf2」ファイルなので他の実行ファイルと区別はつきにくい)は、以下のところからダウンロードすることができます。

今回は、Pi Pico 2を使いますので、対応したファームウェアファイル(.uf2)をダウンロードしておきます。これをPi Pico 2にコピーするために、USBケーブルでPi Pico 2とPCを接続します。その際に、(他のPi Picoシリーズと同じく)接続するPi Pico 2が一度も実行ファイル(.uf2)を入れた(コピーした)ことがなければ、PCに挿しただけでUSBストレージデバイスとして認識されます。この「USBストレージデバイス」として認識されているところに、一度でも実行ファイル(.uf2)を入れた(コピーした)ことがある場合は、それがC/C++でのプログラミングであってもMicroPythonでのプログラミングであっても、それ以降は「BOOTSEL」ボタンを押しながら接続しないと、USBストレージデバイスとしては認識してくれなくなるので注意が必要です。
#ちなみに、今回もPCはLinux Mintで動かしている自作PCを使用して動作確認しています。

USBストレージデバイスとして認識されたPi Pico 2に、MicroPythonでのプログラミングに対応させるファームウェアをコピーすると、自動的にPi Pico 2がリセットされてUSB接続された状態になります。これでPi Pico 2側のセットアップは完了です。続けて、Thonnyを起動すると、既にPi Pico用のセットアップを済ませていたため何の問題もなく接続されました。(詳しい設定方法は、拙Blogの過去記事を御覧ください)

あとは、とりあえずLチカプログラム(.py)を開いて「実行」ボタンをクリックするだけです。ということで、あっけないほど無事にLチカ実験が完了して動作確認ができました。試しに、Pi Picoに挿し替えて同じようにLチカできるか確認しましたが、Pi PicoでもPi Pico 2でもThonnyが自動的に認識して同じLチカプログラムが動くことを確認しました。挿し替える際は、一度「停止」ボタンをクリックしてからUSBケーブルを抜き、挿し替えたらもう一度「停止」ボタンをクリックすると自動的に認識してくれます。この方法でうまくいかなかったら、Thonnyを終了させてから挿し替えて、再びThonnyを起動すれば問題ないと思います。

C/C++でやったときは、環境を整えるためにいろいろと試行錯誤しましたが、あまりにも簡単に動作確認することができてしまい、Pi Picoとの共存も簡単にできることがわかりました。初学者用としては、こちらの方がかなり良いと思いました。

〈参考Lチカプログラム(MicroPython)〉

from machine import Pin
import utime
led = Pin(25, Pin.OUT)
while True:
led.toggle()
utime.sleep_ms(400)

「Raspberry Pi Pico 2を使ってみた」

2025年4月17日木曜日

LP-838(Lepy)2.1 chのD級アンプを試してみる

これまで、様々なスピーカーユニットを使ってスピーカーの自作に挑戦してきましたが、サブウーファーを試すためには、Amazonで購入した「ZK-MT21(←YouTube動画)」という2.1 ch対応のパワーアンプを使っていました。これはこれで、コンパクトで使い勝手が良いので重宝しているのですが、YouTubeで「Lepy」と刻印されたHi-Fi 2.1 chステレオパワーアンプがあることを知って、気になったので購入してしまいました。

今回購入したのは、「Lepy LP-838(←YouTube動画)」という割とスタンダードなもののようですが、同じ「Lepy」でも型番の違うものや「Lepy」ではなく「Lvpin」や「Lepai」となっているものなど、いろいろあるので調べてみました。型番違いは機能や形も違うので需要に応じて選べば良いようですが、「Lepy」というのがブランド名でBukang Technologyという会社の製品のようです。元々は、「Lepai」というブランド名で製造・販売されていたものが「Lepy」へとブランド名を変更したとのこと。「Lvpin」は別会社のコピー品とのことでした。
#「Lepai LP-2020A+のコピー品caiyun Lvpin CY-20Aについて」や「中華アンプのおすすめ人気ランキング【2025年】」を参考にしました。

また、同じ「Lepy LP-838」でも中身が違うものがあるようで、いくつかの分解動画を見比べて自分が買ったものも中身を確認してみましたが、同じ「MADE IN BUKANG(基板にシルク印刷されている)」でもアンプICやスイッチなどの構成が違っているようでした。そもそも、コピー品が多く出回る中華製品ですので、刻印されているものが本当かどうかも含めて疑っておく必要はあるかもしれません。(知らんけど)一応、簡単な仕様について以下にまとめておきます。

〈Lepy LP-838〉

  • 対応するスピーカーインピーダンス…4〜8Ω
  • オーディオ入力…【リア】RCAオーディオピンジャック・【フロント】3.5 mm TRSオーディオジャック(何故か「MP3」と刻印されている)
  • スピーカー端子出力…15W×2 ch(ステレオ出力)
  • ネジ端子出力…20W×1 ch(サブウーファー出力)
  • 電源入力…DC12〜14.4V(最大3A)
  • アンプIC…TDA7266(←Datasheet)

#基板を確認して、「TDA7266」とシルク印刷されているのを確認しましたが、これを信頼するかしないかは自分次第ということになります。

以前使っていたZK-MT21の方は、以下のとおりです。

〈ZK-MT21〉

  • 対応するスピーカーインピーダンス…4〜8Ω
  • オーディオ入力…3.5 mm TRSオーディオジャック
  • ネジ端子出力…50W×2 ch(ステレオ出力)+100W×1 ch(サブウーファー出力)
  • 電源入力…DC12〜24V(最大9A)
  • アンプIC…CS8673E(←Datasheet)

#「ZK-MT21 2.1 CHANNEL 200W CLASS D (CS8673E) BLUETOOTH AMPLIFIER WITH AUXILIARY INPUT TEST & REVIEW」(←YouTube動画)

使ってみての感想ですが、ZK-MT21は「FREQ(Frequency)」の調節ができるようになっているのですが、LP-838だとその調節ができないことがネックだと感じました。LP-838では、サブウーファーへ出力する周波数をいじれないので、「BASS」の音量とサブウーファー音量だけで調節する必要があります。そのため、かなり考えてあれやこれやと確かめながらセッティングしないと満足できる音にはならないように思いました。

総じてではありますが、クラシックのような低音も複雑に音が重なる楽曲では調節が難しく、電子楽器を多用する楽曲や小編成バンドのような楽曲では低音の強調が心地よい印象をもちました。スピーカーの組み合わせ方によっても聴こえ方が異なる可能性があるので、さらにいろいろと試してみたくなりました。(まさに「沼」である…orz)

2025年4月4日金曜日

Raspberry Pi Pico 2を使ってみた〜C/C++ SDKでLチカプログラミング

以前に買ったまま放置状態で、昨年あたりから本格的に使い始めているRaspberry Pi Picoですが、その後継機としてRaspberry Pi Pico 2が開発・販売されています。搭載されているチップが、Pi PicoのRP2040(←DatasheetのPDF)からPi Pico 2のRP2350(←DatasheetのPDF)に変更になっていることが大きな違いのようですが、使用感としてどんな違いがあるのか(それほど違いはないのか)確かめてみたいと思います。
#Pi PicoとPi Pico 2の詳しい違いは、Pico Seriseのページにまとまっています。

これまでPi Picoを使って実験的なことをやってきましたが、Pi PicoでできたことがPi Pico 2でもできるかどうか検証してみたいと思います。(その前に、今回購入したPi Pico 2はピンヘッダなしのものだったので、ピンヘッダのはんだ付けもしました)

無駄なこととは思いながら、以前Pi Pico用にLinux Mintで動かしている自作PCで作った、動作確認(Lチカ)するための「blink.uf2」(プログラムファイル)をPi Pico 2に入れてみたらどうなるだろうかと思って、試しにやってみました。(C/C++でのプログラミング環境の作り方の詳細は、拙Blogの過去記事をご覧ください)当たり前と言えば当たり前のことですが、うんともすんとも言いませんでした。Pi Pico用に構築したC/C++ SDKをPi Pico 2に対応したものにするためにアップデートする必要があります。Pi Picoのときと同じように、Linux Mintの自作PC上でPi Pico 2に対応したC/C++ SDK環境を整えたいと思います。

ちょっと調べてみると、「pico-sdk」の中にRP2350に対応したsrc(source)のセットがないとダメだということがわかりました。ネットの情報を頼りに自分がインストールした「pico」フォルダを開いて「pico-sdk」→「src」とフォルダを開いてみると、確かに「rp2350」フォルダはありませんでした。そこで、「ターミナル(端末)」を起動して、「pico-sdk」フォルダに移動してからC/C++ SDKのアップデートを行いました。手順は以下の通りです。
#今回は、デバイスビジネス開拓団さんの「Pico三昧(22) Raspberry Pico 2、C/C++ SDKで吉例Lチカ」を参考にしました。

$ cd pico/pico-sdk/
$ git pull

しばらく待つとアップデート作業が終わって「src」フォルダ内に「rp2350」というフォルダが出来上がっていました。(他にも増えたところはたくさんありましたが説明は割愛します)これでPi Pico 2に対応したC/C++ SDKが整ったことになります。早速ですが、Lチカの実行ファイル(.uf2)を作ってみたいと思います。「cd」コマンドで元のユーザーディレクトリのトップに移動してから、以下のようにコマンドを打ち込みます。

$ cd pico/pico-examples/build/
$ export PICO_SDK_PATH=../../pico-sdk
$ cmake -DPICO_PLATFORM=rp2350 -DPICO_BOARD=pico2 ..

ここまでできたら、あとは「blink」フォルダ内で「make」するだけのはずです。(上記のコマンドに続いて作業を行います)

$ cd blink/
$ make -j4

Pi Picoのときと同じようにやってみたつもりですが、エラーを吐いてうまくコンパイルできません。「Makefile」に何らかの問題があるようなエラーメッセージが出ていて、「CMakefile」フォルダに「CMakeError.log」というエラーの内容をレポートするファイルが出来上がっているとも書かれていました。これを見ながら、複数のエラーが発生しているような感じだったので、元々のpico-examplesの更新が必要なのではないかと考えて、gitコマンドでのダウンロード作業からやり直してみることにしました。(この作業は、私の作業環境である「pico」フォルダ内に移動したところから行いましたが、このフォルダ名は任意で構いません)

$ git clone -b master https://github.com/raspberrypi/pico-examples.git
$ cd pico-examples/
$ mkdir build
$ cd build/
$ export PICO_SDK_PATH=../../pico-sdk
$ cmake -DPICO_PLATFORM=rp2350 -DPICO_BOARD=pico2 ..

この作業をしているフォルダ内に、既に「pico-examples」フォルダがあると作業はうまくいきません。これまで使っていた「pico-examples」フォルダを残したままだとgit cloneコマンドが通らないためです。(強制的に上書きすることはできるかもしれませんが、ちょっとややこしいみたい…)今後も以前の「pico-examples」を使用する可能性がある場合には、以前のものを別のところに移動させておくと良いと思います。

これで準備が整ったと思いますので、以下のコマンドで再度実行ファイルのコンパイルに挑戦してみます。

$ cd blink/
$ make -j4

これで、無事に実行ファイル「blink.uf2」が出来上がりました。PCにPi Pico 2をつないで(初回はUSBケールでつなぐだけでUSBメモリのように認識しますが、2回目以降は「BOOTSEL」ボタンを押しながらつなぎます)、USBメモリのように開いた窓に「blink.uf2」をコピーすると、自動的にプログラムしたものが動き始めます。少々時間はかかりましたが、無事にLチカ動作実験成功ということになりました。これからは、Pi Pico(無印)の実行ファイルを作る環境との共存が可能なのかを確認したり、Pi Pico 2のThonnyやビジュアルプログラミングへの対応などを一通り確認したりしてみたいと思います。(やることいっぱい思いつくのだけれど、相変わらず時間がない…。orz)

「Raspberry Pi Pico 2を使ってみた」