2025年10月10日金曜日

M5Stackを使ってみる〜CORE BASICでもUARTを使えるようにする

以前の続きです。前回は、Linux Mintで動かしている自作PCを使ってM5StackCORE BASIC V2.7の動作確認をしました。Unit CardKB v1.1を使えるようにすることまではできましたが、UNIT-SYNTH(「SYNTH」と略記)には対応していないことがわかってどうすればよいか調べてみました。

すると、Switch Scienceさんのサイトで、Core BasicやM5Stick-Cに「PORT.C(UART)」などを追加できる道具が販売されているのを見つけました。Core Basic用に「M5StackBasicLite」というベースボードが、M5Stick-C用に「ExtPort for StickC」という拡張ボードが販売されていました。これこそ、まさに求めていたものだと思ってすぐに購入しました。今回は、これらを使ってSYNTHの動作確認をしていくことにします。

M5StackBasicLiteについては、GitHubサポートページがありました。使い方は見たらわかるレベルだったので、Core BasicからBOTTOM(バッテリーモジュール)を慎重に外してM5StackBasicLiteを接続してみました。この状態でもUSB-Cケーブルからの給電で使えるようなのですが、BOTTOMもつながりそうだったのでサンドイッチのようにM5StackBasicLiteをはさんでつないでみました。隙間ができてしまって、見た目はちょっと不格好になってしまいますが、使用には問題がなさそうです。
#「M5StackBasicLite」は、Switch Scienceで受託販売されているもので、基板に「@akita11」とシルク印刷されていました。Switch Scienceのページにもありますが、秋田純一さんの受託販売商品のようです。

BOTTOMのスイッチを「0(OFF)」にしてからCore BasicをUSB-CケーブルでPCにつなぎます。動作確認には、今回もLinux Mintで動かしている自作PCを使います。Arduino IDE(2.3.6)を起動して、「ツール」メニューからボードとポートを選択します。(詳細は、過去記事をご覧ください)前回やった手順通りに、「ファイル」メニューから「スケッチ例」→「(カスタムライブラリのスケッチ例)M5UnitSynth」→「piano」を選択して開きます。「→(コンパイル&書き込み)」ボタンをクリックして様子を見ていると、コンパイルとUploadが無事に終わってSYNTHから音が出ました。
#SYNTHをつなぐタイミングは、プログラムをUploadする前でも後でも良いようです。

試しに、「drum」の方でも動作確認してみましたが、問題なく音が出て、思ったより良い音で鳴ってくれました。自作PCから外して、BOTTOMのスイッチを「1(ON)」にしてからCore Basicの電源ボタンを押すとSYNTHから音が出たので、PCから独立した状態にしても使えることがわかりました。これは面白い。ちょっとプログラムを改造すれば、Core Basicのスイッチやセンサー類を利用したり、外付けのセンサー類をつないだりすることで、楽器のようなものを作ることも可能なのではないかと思いました。

この勢い(?)で、M5Stick-Cでも動作確認をしてみることにして、前出の「ExtPort for StickC」を使ってみます。ExtPort for StickCについては、同じくGitHubにサポートページが用意されていて、こちらも@akita11(秋田純一)さんの受託販売商品です。Stick-CのピンソケットにExtPort for StickCを挿して使うのですが、こちらはCore Basicより簡単に取り付けられます。

Stick-CをUSB-Cケーブルで自作PCつないでから、Arduino IDEを起動してボードを「M5Stick-C」に、ポートを「/dev/ttyACM0」にします。この状態で「piano」をコンパイルしてUploadしてみましたが、プログラム自体の書き込みには成功するものの、SYNTHから音は出ませんでした。残念。このサンプルプログラム自体に「@Hardwares: M5Core +Unit Synth」とあるので、単純にStick-Cはサポート対象外なのかもしれません。

M5Stackを使ってみる

2025年10月2日木曜日

超古いMebius(PC-AL50G5)を整理する

以前からこのBlogでも紹介してきたSHARPMebiusPC-AL50G5)ですが、情報処理推進機構(IPA)の「学校教育現場におけるオープンソースソフトウェア活用にむけての実証実験 ZDNET(「教育現場におけるデスクトップ Linux 導入の実証実験を開始 アルファシステムズ」PDF)」に参加した際に導入していただいたもので、私個人に譲渡されてから、そろそろ十数年が経とうとしています。

【当時公開された情報】

当時は、KNOPPIXをベースに、アルファシステムズさんが改造したオリジナルのKNIPPIXで動かしていましたが、その後はいろいろといじりまくって、現在はPuppy Linuxで運用しています。古いからと言って使えない訳でもないのでしばらく延命作業をしてきましたが、使わない期間が長くなって経年劣化も気になり始めたので、処分するもの、これからもメンテナンスを続けるもの、動作実験環境としてさらにいじりたおすもの等に分別して整理することにしました。

特に問題だったのは、液晶にカビのようなものが発生して映りが悪くなったりところどころ見えなくなったりしているものがあったことでした。これは処分の候補としては最優先となります。他にも、ヒンジ部分やラッチのところに問題が発生していて、物理的に壊れてしまっているものも優先的に処分することにしました。バッテリーも劣化していて液漏れ状態のものもありましたが、この機種は、ACアダプターの電源だけでも起動&作業が可能なので、バッテリーなし状態でも問題なく使うことができます。処分するものをまとめるために、バッテリーの液漏れが見つかったものと物理的に壊れているものを組み合わせて、「処分用PC」を作っていきました。作業を始めたのは良いのですが、完品状態のものが18台もあるため、なかなか作業が進みません。とりあえず、本体の状態とバッテリーの状態を確認して、4台ほど処分することにしました。
#処分するものは、すべてHDDとメモリー、光学ドライブを抜き取りました。

回収は、リネットジャパンさんにお願いしました。これまでも、何回か利用させてもらっているし、居住市が連携市町村に入っているので他の選択肢もないためです。(もう少し新しいものなら、リサイクルショップへ持ち込むという手もあったかもしれませんが…)段ボールも用意して自分で梱包しましたが、ありがたいことに夕方に申し込んで翌日の午前中には引き取ってもらえるとのこと。
#ついでに、引越し作業の中で液晶を壊してしまったモニタ(当時は、買ってそれほど経っていなかったのでショックが大きかった…)とかなり古いiPhoneを1台を一緒に処分することにしました。

翌日の正午前に宅配便業者が引き取りに来て、無事に持って行ってもらいました。特に中身を確認するでもなく、伝票1枚であっさりとしていました。翌日には、今回引取をお願いしたPCたちが、予定通りリサイクル業者に届いた旨のお知らせがメールで届きました。職場で「古いPCを4台捨てたんだ。」と話したら、「えっ!? ∑(゚Д゚)」って顔をされました。(^-^;;;
#回収から約2週間後には、「処理完了」のお知らせが届きました。

残りのMebiusは、メンテナンスをしながらもう少し使えるかどうかやってみようと思っています。まぁ、あまり遠くない将来に、あと数台処分してしまいたいと思っているのですが…。

2025年9月25日木曜日

FAMIC on USBを試してみる~Linux Mintでも使えるかやってみる

以前の続きです。「FAMIC on USB」というMML(Music Macro Language)でプログラムできる音楽系ガジェット(小さなマイコンボード)を使ってみています。これまでは、MacBook ProGoogle chromeを使った動作確認をしてきましたが、今回はLinux Mintで動かしている自作PCでも動作確認をしておきたいと思います。

使っていてわかってきたこと(どこかに明記されているかも…)ですが、仕組みとしては、DACのようにPCから音声出力する仕組みを利用してデータの書き込みを行っているようなので、DACのように認識されてしまえば理論的にはLinuxでも使えると思います。今回の動作確認には、自作PCのUSB 3.0ポートにUSB 3.0対応のケーブルを挿して、そこにFAMIC on USBをつないで検証します。今回もYAZAWATVR35WH(電池駆動のアンプ内蔵スピーカー)を使って音が出るか確認します。

Linux版のGoogle chromeで「MML Playground」にアクセスしてMMLでプログラムを作ります。普段は、ヘッドホン出力をBluetoothで飛ばしてスピーカーから音を出しているので、プログラムが完成するまではスピーカーから音を出して確認します。以前からやってみたかった「呼び込みくん群馬電機株式会社製)」の曲を再現してみました。(耳コピですけどね)音の長さをどう表現するか少し悩みましたが、「MML Command Reference」も参考にしながらそれらしいプログラムを作りました。
#著作権等を考慮して、プログラム自体の公開は控えておきます。

いよいよFAMIC on USBを接続してみます。USB 3.0ポートにUSB 3.0ケーブルでつなぐと、予想通りDACと同じように自動的に認識されて、「Analog Output FAMIC WRITER」と「Digital Output (S/PDIF) FAMIC WRITER」として認識されました。デフォルトで「Analog…」の方が選択されるようなので、そのまま「FAMIC WRITE」ボタンをクリックしました。緑のLEDが点灯して、書き込まれている感じになりましたが曲が流れず、リセットボタンを押すともともとプログラムされていた音が流れます。ならばと思い「Digital…」の方でもやってみましたが、結果は同じでした。

この後、挿し込むUSBポートを2.0の方にしてみたり、USBケーブルを2.0対応のものに替えてみたり、書き込むデータを「Example」から選んだものにしてみたりといろいろと試行錯誤してみましたが、どのパターンでも書き込むことができませんでした。挙動としては、緑のLEDが2回点灯するので、書き込もうとしていることはわかるのですが、青のLEDの方は全く反応していないように見えます。

うまくいく方法はないものかと「歯車(設定)」アイコンをクリックして、「WRITING SPEED」を「9600 baud」から「4800 baud」に変更してみました。ダメ元で「FAMIC WRITE」をクリックして書き込みを試みると、青のLEDも点灯して無事に書き込むことができました。「WRITING SPEED」を「4800 baud」にした状態でUSBポートとUSBケーブルの違いを再度検証してみましたが、USBポートやUSBケーブルの問題ではなく、単に書き込み速度(ボーレート)の問題だったことわかりました。

Linuxでの使い方にはちょっと工夫が必要ではありますが、使えることがわかってホッとしました。MMLでのプログラミングについては、もう少しスマートにわかりやすく書けるようになりたいと思いました。自己満足の世界ではありますが、昔ファミコンで遊んだゲームの音を再現して遊んでみるだけでなく、ファミコン音源(のようなもの)で様々な楽曲を演奏できるのが面白いと思いました。

2025年9月15日月曜日

M5Stackを使ってみる〜とりあえずLinuxで使えるか試す

以前の続きです。前回は、MacBook Proを使ってM5StackCORE BASIC V2.7の動作確認をしました。macOSでは、Upload時にエラーが出てうまく動かすことができませんでした。今回は、Linux Mintで動かしている自作PCを使って動作確認をしていきたいと思います。

自宅のMintには、Linux版Arduino IDE(2.3.6)をインストールしています。これを起動して、MacBook Proでやったときと同じように、ボードマネージャで「esp32(2.0.17)」を、ライブラリマネージャーで「M5Stack(0.4.6)」をインストールしておきます。
#「esp32」は、2.x系のものを使わないとダメみたいなので。

M5StackをUSBケーブルでPCにつないだ上で、「ツール」メニューから「ボード:」の項目を選択して、「esp32」→「M5Stack-core-ESP32」を選択し、さらに「ポート:」の項目を選択して、「/dev/cu.usbserial-…(LilyGo T-Display)」を選択します。(「LilyGo T-Display」というのがあるらしい←何故これでよいのかはわからないけど…)次に、「ファイル」メニューから、「スケッチ例」→「(カスタムライブラリのスケッチ例)M5Stack」→「Unit」→「CardKB」とたどってプログラムを開きます。

この状態でちょっと試しにと「→(コンパイル&書き込み)」ボタンをクリックしてみました。すると、何の問題もなくコンパイルとUploadが完了してしまいました。もしやと思ってGroveポートにCardKBをつなぐと、キーボードとして使うことができました。Cardであることにこだわった製品なだけに、タクティルスイッチが薄くて押し難かったり、挙動が不安定だったりして必ずしも使いやすいとは言えませんが、使えることだけはわかりました。M5StackのGitHubサイトにあった、Arduino IDEのサンプルプログラムでも試してみましたが、こちらも問題なくコンパイルと書き込みができて使えることがわかりました。

MacBook Pro(macOS)ではできなかったのに、Linux Mintでは意外にあっさりとCardKBが使えたので、その他のユニット類についてもMintで動作確認をしてみようと考えました。さしあたってUNIT-SYNTH(仏dream社のSAM2695を内蔵したシンセサイザーユニット(「SYNTH」と略記))で音が出せるかやってみようと思いました。先に結論から言うと、そもそも今回使っているCORE BASIC V2.7のGroveポートはI2C(「PORT.A」と言うらしい)にしか対応しておらず、「PORT.C(UART)」対応のSYNTHユニットは使えないことがわかりました。orz
#「M5Stack Groveポート A-B-C」を参考にしました。

前回の記事で、すでにフラグが立っていたことに気づいて悶絶してしまいましたが、Groveポートの「色の違い」に違和感を覚えなかった自分にも問題がないとは言えません。ちなみにですが、「PORT.A(I2C)」は赤、「PORT.B(I/O=GPIO」は黒、「PORT.C(UART)」は水色となっています。M5Stick-CやCardKBのGroveポートの色は白ですが、これはそもそものGroveポートの色が白だったためではないかと推察しています。

一応、Arduino IDEで作業した手順だけは記録しておきます。CardKBを動かした状態からなので、既にArduino IDEとCore Basicはつながっている状態からの手順と考えてください。

  1. ライブラリマネージャーから「M5UnitSynth(1.0.1)」ライブラリーをインストールする。
  2. 「ファイル」メニューから「スケッチ例」→「(カスタムライブラリのスケッチ例)M5UnitSynth」→「piano」を選択して開く。
    ※見つからない場合は、M5Stackの「UNIT-SYNTH」公式サイトで公開されている、サンプルプログラム(「drum」と「piano」)を使ってください。
  3. 「→(コンパイル&書き込み)」ボタンをクリックして、実行プログラムをUploadする。
  4. Core BasicにSYNTHをつなぐ。

ここまでの作業でUploadには成功するものの、SYNTHユニットから音が出ることはありませんでした。他に使えるようにする方法がないか調べてみたいと思います。

M5Stackを使ってみる

2025年9月7日日曜日

Arduino® UNO R4 WiFiを使ってみる〜Linuxでも使えるかリベンジも兼ねて

前回の続きです。Arduino UNO R4 WiFiの動作確認をしています。Arduino UNO R4 Minima動作確認のときは、Linux版のArduino IDEで動かすことができなかったところで終わっていたのですが、今回、R4 Minimaでの再チャレンジも併せてR4 WiFiの動作確認もしていきたいと思います。
#いつものLinuix Mintで動かしている自作PCで検証します。

まず、Linux版Arduino IDE(2.3.6)を起動して、改めて「Arduino UNO R4 Boards(1.5.0)」をインストールすることにします。「ボードマネージャ」で「UNO R4」を検索して、「Arduino UNO R4 Boards」を選択して「インストール」ボタンをクリックします。以前うまく行かなかったときから、R4 Minimaへの対応状況に変化があるか確認するために、「ツール」メニューから「ボード:」を「Arduino UNO R4 Minima」に、「ポート:」を「/dev/ttyACM0(Arduino UNO R4 Minima)」に設定しました。「ファイル」メニューから「スケッチ例」→「01.Basics」→「Blink」を開いてLチカ動作確認をしてみます。残念なことに、R4 Minimaでは、まだdfu-utilのDFUエラーが解消されておらず、エラーが出てしまって書き込むことができませんでした。

ダメ元で、ボードをR4 WiFiに交換して動作確認をすることにしました。「ツール」メニューから「ボード:」を「Arduino UNO R4 WiFi」に、「ポート:」を「/dev/ttyACM0(Arduino UNO R4 WiFi)」に変更して、「→(コンパイル&書き込み)」ボタンをクリックしてみました。すると、問題なくプログラムを書き込むことができてLチカ動作確認ができてしまいました。\(^O^)/(一人で勝手に盛り上がる)

こうなると、Linuxで使えないR4 Minimaが不便(不憫)に感じます。ファームウェアのアップデートで解決するかもしれないと考えて試行錯誤してみましたが、アップデートできるArduinoの種類が決まっているようです。詳しくは、公式のサポートページ「Use the Firmware Updater in Arduino IDE」に情報がありました。現時点では、R4 Minimaのファームウェアアップデートには対応していないようです。
#R4 WiFiの方は、Linux MintでもMacBook ProでもArduino IDEを使ってファームウェアアップデートができました。

R4 WiFiの方は、MacBook Proでの動作確認で使用した「PlayAnimation」をLinux版Arduino IDEで開いて無事にコンパイル&書き込みができました。調子に乗って、以前はできなかった「Arduino UNO R4 WiFiを使って、ネットから日時取得 のプログラム」を持ち込んで、ダメ元でコンパイル&書き込みをしてみたところ、問題なく動いてしまいました。(狂喜乱舞!)どうやら、プログラムの書き込みが完了したor書き込まれた状態で電源をつないだときに、Wi-Fiにつなぐことを試みているようなのですが、そのタイミングでうまくWi-Fiにつながることができないと、それ以降はもう一度電源をつなぎ直す以外にWi-Fiにつなごうとしてくれなくなるようでした。
#参考にしたプログラムを少しいじれば、解決するかもしれませんが…。

そんなことならと思い、MacBook Proの方でも再度チャレンジしてみましたが、コンパイル&書き込みの後、何度か電源をつなぎ直すと動いていることが確認できました。いろいろと試行錯誤させられましたが、うまく動かなかった原因がプログラムの問題ではなかったとわかってホッとしました。つまずきの原因が、意外と単純なことだというのはよくあることなのでよしとします。

2025年9月2日火曜日

Arduino® UNO R4 WiFiを使ってみる

これまでにも何度か紹介しているArduinoですが、フィジカル・コンピューティングと言えばなマイコンボードで、広く普及し始めた(「自分が使い始めた」と同義ですが)Arduino Duemilanoveの時代から愛用しています。小学校教育にフィジカル・コンピューティングを導入する研究をしてきたので、自宅には当時購入したDuemilanoveが複数枚あります。その流れで、UNOLeonardoとその互換ボード、M0、Genuino 101(Arduino 101)などもあって、シールド類も含めるとかなりの数に上ります。

以前、Arduino UNO R4 Minima動作確認をしていましたが、ようやくArduino UNO R4 WiFiを入手したので、こちらも動作確認をしていきたいと思います。
#おさらいではありますが、R4シリーズには、ルネサスRA4M1チップ(32bit Arm® Cortex®-M4内包)が使われています。
#UNO R3までのArduinoは、PCなどと接続する際に標準サイズやmicroサイズのUSB-Bコネクタを使っていましたが、R4からはUSB-Cコネクタが採用されていることも大きな違いになっています。

R4 WiFiは、その名の通り無線LANに接続できる機能が付加されているのですが、私自身は「マトリクスLED(8*12)」の方に興味があり、これを使いこなしてみたいという衝動に駆られて購入したのでした。ネットで情報を探していると、Wi-Fi経由でNTPサーバから現在時刻を取得する使い方が紹介されていました。ありがたいことに、取得した現在時刻をマトリクスLEDに表示するプログラムを作って紹介しているサイト「Arduinoマイコンボードでの実験備忘録」を見つけたので、今回は「Arduino UNO R4 WiFiを使って、ネットから日時取得」と「Arduino UNO R4 WiFiを使って、ネットから日時取得 のプログラム」を参考にしながら動作確認をしていくことにしました。

動作確認は、いつものMacBook Proを使います。Arduino IDE(バージョンは「2.3.6」)を起動して、「ツール」メニューから「ボード:」の項目を選択して、「Arduino UNO R4 Boards」→「Arduino UNO R4 WiFi」と選択します。(「Arduino UNO R4 Boards」をインストールしていない場合は、ボードマネージャでのインストール作業が必要です)R4 WiFiをUSBケーブルでつないで「ツール」メニューから「ポート:」の項目を選択して、接続したR4 WiFi(/dev/cu.usbmodem…(Arduino UNO R4 WiFi))を選択します。これで準備は完了です。

先ほど紹介させていただいた「プログラム」をもとに、少しだけ改造して作ったプログラムを「→(コンパイルと書き込み)」ボタンをクリックして作業を進めます。コンパイルにエラーはなく、問題なく書き込まれた感じになりました。R4 WiFiの方も動こうとしている感じがするので、プログラム自体は書き込めているのだろうと思います。しかし、うまく動きません。中の処理がどうなっているのかわからないので、どこでつまずいているのかはわかりません。でも、動作が途中で止まってしまうようなので、原因を考えていきたいと思います。

仕方がないので、「ファイル」メニューから「スケッチ例」→「(Arduino UNO R4 WiFi用のスケッチ例)LED_Matrix」→「PlayAnimation」を開いて使うことにしました。「→(コンパイルと書き込み)」ボタンをクリックするとエラーもなく無事にコンパイルと書き込みが行われ、Animationが表示されました。これで、マトリクスLEDの初歩的な使い方わかりました。あとは、はじめに動作実験を行った「マトリクスLEDに時刻を表示する」プログラムがどうすれば動くのか、試行錯誤してみたいと思います。

2025年8月22日金曜日

M5Stackを使ってみる〜6年以上前からの再挑戦

既にだいぶ前のことになってしまいましたが、M5StackCORE BASICの初期のバージョンを購入して時計のようなものを作ってみるところまではやっていました。その後、バッテリーを内蔵しているBOTTOMを取り外そうとしたときにピンコネクタが固くてなかなか外せず、無理やり外して筐体のプラスチックにヒビが入ってしまいました。Σ(゚Д゚;それ以来、使う気にならず長らく放置してしまっていました。
#この失敗は、割と多いらしい。

当時一緒に買った「ウォッチバンド(Watch)」も本体を壊してしまったので使い道がなくて放置。その後、M5Stick-Cのウォッチバンド付きを買って気を取り直そうと試みましたが、はじめの失敗から立ち直れず、また壊してしまうかもしれないという気持ちと、他にもやりたいことが増えてしまったということで結果的に放置状態が続いてしまいました。

とは言え、全く興味を失っていた訳ではなく、「いつか使ってみよう。」と思いながら、少し前(いつだったか忘れてしまったけれど…)にCORE BASIC V2.7が販売されているのを見つけたのでもう一度買い直し、目に止まった周辺機器(Unit類など)も買い揃えていっていつでも再挑戦できる状態になっていました。手元にあるUnit類は、以下の通りです。

  • Unit CardKB v1.1…タクトスイッチが並んだカードサイズのキーボード(「CardKB」と略記)
  • DSOアダプタ…M5Stackをオシロスコープとして使えるようにするアダプタ(「DSO」と略記)
  • Unit-Synth…仏dream社のSAM2695を内蔵したシンセサイザーユニット(「Synth」と略記)
  • Unit-MIDI…同じくSAM2695内蔵のMIDI音源ユニット(「MIDI」と略記)

最近のM5Stackのプログラミングは、UIFlowUIFlow2を使うことが推奨されているようで、micro:bitなどと同様に、Webアプリケーションでプログラミングをするようです。ドキュメントも充実していて、「Basicファームウェアの書き込みとプログラムのプッシュ(UIFlow)」やタイトルは同じですが「Basicファームウェアの書き込みとプログラムのプッシュ((UIFlow2)」を参考にすれば、それほど難しくはないと思います。いずれにしても「M5 Burner」をインストールしてM5Stackのファームウェアを書き換えなければならないので、それさえクリアできれば後は快適に使えると思います。(希望的観測)

と言っておきながら、今回は以前にも紹介したことがあるArduino IDEを使って4つのUnit類の動作確認をしていきたいと思います。動作確認は、いつものMacBook Proを使います。順番はどうでも良いのですが、気持ち的に購入順で一番上のCarKBからにします。

インストール済みのArduino IDE(バージョンは「2.3.6」)を起動して、「ファイル」メニューから、「スケッチ例」→「(カスタムライブラリのスケッチ例)M5Stack」→「Unit」→「CardKB」とたどってプログラムを開きます。「ボードマネージャ」から「esp32(バージョンは「3.3.0」)」を検索してインストールして、「ライブラリマネージャー」から「M5Stack」と「Arduino GroveI2C Ultrasonic」ライブラリを検索して、インストールしておきます。(ライブラリの方は、必須ではないかもしれません)

この状態で、先ほど開いたプログラムがコンパイルできるかやってみました。「ツール」メニューから「ボード:」の項目を「esp32」→「M5Core」にします。「✓(検証=コンパイルする)」ボタンをクリックしてコンパイルが通るかやってみましたが、エラーを吐いて止まってしまいます。(ライブラリ内の「pngle.c」が求める「rom/miniz.h」が見つからないと言われます)

ダメ元でGoogle先生に訊いたところ、「Fix for rom/miniz.h Compilation Error in M5Stack Arduino Sketch」というページを教えてくれました。どうやら、「esp32」をダウングレードせよという話のようです。先程インストールした「esp32」を削除して、「esp32」のバージョン「2.0.17」をインストールしました。(2.x系でインストールできる最新バージョンがこれだったので)この状態で、「ツール」メニューから「ボード:」の項目を選択して、「esp32」→「M5Stack-core-ESP32」を選択し、「✓(検証)」ボタンをクリックしてコンパイルすると、無事にコンパイルが通りました。

次に、M5StackをUSBケーブルでつないで「ツール」メニューから「ポート:」の項目を選択して、接続したM5Stack(/dev/cu.usbserial-…(LilyGo T-Display))を選択します。「LilyGo T-Display」とは何者?何故ここに?と思いましたが、このままスルーすることにして「→(書き込み=コンパイルして書き込む)」ボタンをクリックしました。コンパイルまではうまくいくようになったのですが、書き込みでエラーが発生してUploadには失敗してしまいました。

プログラムが悪いのかもしれないと思い、ネットで探していると、M5StackのGitHubにArduino IDEのサンプルプログラムがあったので使わせていただくことにしました。
しかるのちさんの「M5Stack:小型キーボードユニット CardKB」を参考にしました。

このプログラムを使っても、Uploadできない問題は解決しませんでした。なかなか手ごわい。他のものを試す前にLinuxで動くかどうかやってみようと思います。長くなってきたので、続きはまたの機会ということで。

M5Stackを使ってみる

2025年8月12日火曜日

GAOMONのS620(ペンタブレット)を使ってみる

その昔(教員になったばかりの頃)、Wacomのペンタブレットを使っていた記憶があるのですが、ちょっと奮発して買ったように思います。(型番等はすっかり忘れてしまっています)当時は、Macで絵を描いたり画面に表示したものにマークをしたりするなど、結構な頻度で使っていたと思いますが、それが壊れたか何かで使えなくなって、そのうちタッチパネルが当たり前になってきて需要が減ってしまってからは、ペンタブレットを使わない生活が長く続いていました。

そんな中、家族からの問い合わせがあり、ペンタブレットを使いたいとのことだったので、ちょっと探してみることにしました。イマドキは、iPadなどのタブレットPCもあるし、タッチパネル式のモニタもあるので、ペンタブレットの需要が高いとは思えません。Amazonで探してみると、液晶タイプのペンタブレットもあってそこそこのお値段がします。簡単には手が出ないので、今回は純粋にペンタブレットを探すことにしました。そんな中で見つけたペンタブレットがGAOMONの「S620」でした。

大きさは、6.5 inch*4 inchのもので、4つのショートカットキー(スイッチ)が付いています。ドライバーソフトは、公式のダウンロードサイトからダウンロードすることができます。(Windowsだけでなく、MacやLinuxにも対応ということで、メーカーのやる気(?)を感じます)これをダウンロードしてMacBook Proにインストールし、使い勝手を検証していきます。

ダウンロードしたドライバーソフトをインストール(アプリケーションフォルダにコピー)して、「GaomonTablet」アプリをダブルクリックで起動すると、「デバイス(ペンタブレット)が検出されません」と言われます。そこで、ペンタブレットをUSBケーブルでつなぐと、macOS自体がキーボードとして認識しようとして設定を促されます。これをキャンセルして、GaomonTabletアプリがペンタブレットを認識したので設定を進めていきます。私の環境では以下の項目について設定しました。

〈システム設定〉

  • 「プライバシーとセキュリティ」→「アクセシビリティ」
  • 「プライバシーとセキュリティ」→「画面収録とシステムオーディオ録音」

〈GaomonTabletアプリ〉

  • 「ショートカットキー」…パッドの上に並んでいる4つのキー(スイッチ)について、役割等を割り当てることができます。
  • 「作業領域」…画面上の作業領域を決めることができます。

一度設定をしてしまえば、GaomonTabletアプリを起動していなくても、設定したとおりにS620をペンタブレットとして使うことができます。絵を描くだけでなく、マウスのように使うことも可能だし、DTMソフトを使った音楽作成にも活用することができますし、動画編集やPd(Pure data)の操作などにも使えそうな気がします。

動作確認のためにGIMPGarageBandでの操作感を確認してみました。作業したいところにダイレクトに移動可能なところがペンタブレットのよさ(タッチパネルと共通する)だと思います。一方で、モニタ画面全体が、それよりも小さいペンタブレットの作業領域と同等に扱われるため、操作性がよいことばかりではありません。モニタ画面上の位置とペンタブレット上の位置が完全に対応しているので、マウスとの操作感の違いに戸惑うことはあると思います。これについては、GaomonTabletアプリの設定で、「マウスモード」にすればマウスのように使うことができますし、作業領域を設定するとペンタブレットで作業できる範囲を変更することができます。

次に、自作PCで動かしているLinux Mintでも使えるかやってみました。同じくダウンロードサイトからドライバーソフト(debパッケージ)をダウンロードして、ダブルクリックでパッケージインストーラーを起動してインストールします。インストールが終わったら、「Lm」メニューから「GaoMonTablet」を起動します。macOSのときは、はじめから日本語表示になっていましたが、Linux版は英語表示がデフォルトのようで、自分で日本語に設定を変更しました。(「歯車」の設定メニューから変更できます)MacBook Proで設定した内容は、S620本体には記録されていないようで、ショートカットキーの割当などもLinux版のデフォルトになっていました。設定を引き継ぎたい場合は、設定メニュー内の「バックアップ」メニューから「設定エクスポート」で設定を書き出して、「設定インポート」で読み込めば別のPCでも設定が引き継げます。

GIMPとPd(Pure data)で操作感を確認してみましたが、macOSのときと同じように使うことができました。少しだけ違うのは、ドライバーソフトを起動しておかないとペンタブレットが動作しないことです。これは、macOS版のGaomonTabletを初めて起動した際に、ドライバーのようなものが自動的にインストールされるため、GaomonTabletを起動しなくても使えるようになるのだと思います。Linux版のGaoMonTabletの場合は、初回起動時に特に動きがなく、ドライバーソフトを起動しているときだけ使えるようになるというような仕様になっているのではないかと思います。

2025年8月8日金曜日

FAMIC on USBの動作環境を検証する

以前の続きです。「FAMIC on USB」というMML(Music Macro Language)でプログラムできる音楽系ガジェット(小さなマイコンボード)を使ってみています。このFAMIC on USBにはUSB-C端子が載っていて、USBケーブルでPCとつないで使います。USB-Cが使えるUSBケーブルには様々なバリエーションがあって、自宅にも様々なUSBケーブルがあります。ケーブル自体に規格が明記されているものもあれば、何も書かれていないもの(こちらの方が多い)もあって、どんなUSBケーブルなら使えるのか検証をする必要があると感じました。

ということで、USBケーブルの規格を確認するために、「USBコネクタケーブルチェッカー(←Amazonの商品ページ」を使うことにします。このチェッカーは、USBケーブルのコネクタの結線状態を確認するもので、各種USB規格への対応状況を確認することができます。コネクタの形状や色だけでは判断できない場合や挙動がおかしいUSBケーブルがあった場合には、これを使って状態をチェックすることができます。

検証には、MacBook Proを使います。これには、普段から8 in 1のUSB-Cハブを挿して使っています。詳細は不明ではありますが、vigoole(←Amazonのストアサイト)と書かれていて(メーカー名?…ブランド名?…)、型番は「SC202」となっています。これを使ってMacBook ProのUSB-CポートをUSB 3.0ポート*2、USB 2.0ポート*1、4K HDMIポート*1、RJ45 Ethernet LANポート*1、100W PD充電ポート*1、SDカードリーダー/Micro SD/TFカードリーダー*各1に変換しています。今回は、このUSB-Cハブを使って動作するか確認するとともに、MacBook Proに直接つないで動作するかも確認したいと思います。

〈USB-Cハブ使用〉

  • USB-A(3.0)ポートからFAMIC on USB
    • USB-A(3.0)←→USB-Cケーブル…OK(前回の動作実験環境)
    • USB-A(2.0)←→USB-Cケーブル…OK
  • USB-A(2.0)ポートからFAMIC on USB
    • USB-A(3.0)←→USB-Cケーブル…OK
    • USB-A(2.0)←→USB-Cケーブル…OK

※このUSB-CハブのUSB-Cポートは、充電用なのでデータ通信等には使用できません

〈MacBook Pro直挿し〉

  • USB-Cポート
    • 両USB-C(SS USB10…3.1)ケーブル…OK
    • 両USB-C(2.0)ケーブル…OK

検証は、macOS版のGoogle chromeを使用して、「(FAMIC on USB)MML Playground」にアクセスしています。いずれの規格でも、使えることがわかりました。検証する中で、不具合があるUSBケーブルが数本見つかったので、いさぎよく処分しました。ケーブル類をためてしまいがちな生活をしているので、片付けられたのもよかったです。(^^;;;

〈参考〉
新たなるUSBケーブルチェッカーをレビューする

2025年8月1日金曜日

Pd(Pure data)でシンセサイザープログラミング~Linux Mintでも動くのだろうか

以前の続きです。これまでは、主にMacBook Proを使ってPd(Pure data)の動作確認作業をしていましたが、調子に乗ってLinux Mintで動かしている自作PCにもインストールして、音が出るかやってみることにしました。
#拙BlogのPd関連記事

「ソフトウエアマネージャ」からFlatpakパッケージのPd(バージョンは「0.55-2」でした)をインストールしました。動作確認をするために、Pdを起動してMacBook Proのときと同じプログラムを作って実行してみましたが、残念ながら音が出ませんでした。Pdに限らずLinux版の音楽関係アプリでは、インストールされている音楽関係システムやその設定によって音を出すのに手間がかかることが多々あります。今回のようにプログラムの作り方に間違いがなくても、Pdからの「音を出す」という命令を受け取って音を出すシステムとうまくつながっていない(うまく受け取れていない)のではないかと考えられます。ちょっとがっかり…。orz

気を取り直して、ソフトウエアマネージャでFlatpak版を削除してから通常版(バージョンは、ちょっと古い「0.52.1+ds0-1」でした)をインストールしてみました。Linuxあるあるですが、最新版よりもちょっと古いバージョンの方が動作する可能性が高いからです。通常版のPdを開くと、すべて英語表記のPdが起動しました。言語設定のやり方がわからなかった(できない可能性も…)ので、そのまま使ってみました。プログラム自体は、同じようにやってみましたが、残念ながらこれもダメでした。

ダメ元で、ソフトウエアマネージャでPd-extended(バージョンは「0.44.0」でした←サポート終了につき使用は非推奨です)を入れ直して動くかどうかやってみましたが、これもやはり音は出ませんでした。若干絶望的な状況になってきました。

仕方がないので、はじめにインストールしたバージョン「0.55-2」を入れ直して「オーディオオン(DSPオン)」にしてから、「オーディオとMIDIをテストする」の窓を開くと様々なテストをする道具が出てきます。これを使って音が出ないかどうかやってみましたが、ログ窓の方に「オーディオ I/O エラー」と出ては消える状態になってしまいます。

原因は、Pdが求める「音を出すシステム」と自作PCのLinux Mintで設定されている「音を出すシステム」が合っていないということらしいです。これらのON/OFF設定を合わせれば、音が鳴るんじゃないかと思うのですが、これが一筋縄ではいかないのがLinuxというものです。

自作PCのLinux Mintでは「PulseAudio」をメインで使っています。この環境でScratch 1.4LMMSを使うと問題なく音が出ます。(但し、Scratch 1.4は、Windowsで使っているときのように音色の変更はできません)

Pdでは、「ALSA」を使うことが求められているようです。自作PCのLinux MintにもALSAの主要なパッケージはインストール済みです。これを、Pdを起動する際に、明示的にALSAを使うよう設定する必要があるのだろうと思います。以前、どこかで似たような作業をした記憶があるのですが、どうやるんだったか…思い出せるかやってみたいと思います。

ついでに、Raspberry Pi 5Raspberry Pi OSRaspberry Pi Imager)でも確認してみました。「Add / Remove Software」から、「puredata 0.53.1+ds-2+deb12u1」やALSAをインストールして動作確認をしてみましたが、この環境でも音が出ませんでした。

ということで、私が使っているLinux系のOS環境では、Pdを動かすことができませんでした。きっとやり方があって、何かが音を出すことを邪魔しているのだろうと思います。問題は、Pdを使えるようにすることで、別のものが使えなくなるのであれば、使用頻度の高くないPdを使うことを優先するのは得策ではないということです。(実験・検証はしたいけど、普段遣いの環境を壊すのも嫌だし…)

2025年7月25日金曜日

本棚に入るドールハウスを作ってみる〜準備から作り始めた手応え

以前から、「箱庭的な世界観」には強い魅力を感じていて、それこそ「ジオラマ」は大好物な部類に入ります。しかしながら、作ったところで飾るところもないし、大好きな城のプラモデルすら組み立てられずに「大切に保管」されている有り様。作っても邪魔な大きさにならず、それでいて作り上げた満足感と出来上がったあとの実用性を兼ね備えたようなものがあればと思っていたところ、ドンピシャなものを見つけてしまいました。「Book Nook(ブックヌック)」というらしいのですが、「本棚に入るドールハウス」として一部で話題になっていたようで、Amazonで見つけて衝動買いをしてしまいました。
#「Book Nook」が一般名詞なのか商品名なのかはイマイチよくわかっていません。

これを見たとき、直感的に「フィジカル・コンピューティングに使えるのではないか。」と思いました。この本棚ドールハウスにはLEDを仕込むことができて、本棚に入れて暗くなっても中を見ることができます。ということは、Raspberry Pi Pico系のものやArduino系、micro:bitなどのマイコンボードを仕込めばもっといろいろな表現ができるのではないか、音を鳴らしてみたり、中の物を動かしてみたりと、フィジカル・コンピューティングを含む電子工作の素材や改造ベースとして使えるのではないかと思ったのでした。

とは言え、初めてのチャレンジでもあり、写真や文章だけでは情報が足りず、実物で確かめてみようと考えてAmazonでセールをしていたものをいくつか購入してみました。そのうちの1つで一番シンプルそうなもの(「Bakery Shop」風のもの)を選んで作る準備を始めました。今回購入したものは中国製で、中国から日本の代理店のようなところが輸入して販売しているようです。日本語の案内書のようなものは付属していましたが、肝心の説明書は全て中国語表記だったので、写真を見ながら想像力を働かせてどうにか組み立て作業を進めることにしました。

まずは道具の用意から。細かな作業をするためにピンセットやデザインナイフ、スチール定規、ハサミ、工作マット、木工用ボンドなどの道具を用意していきました。

シンプルとは言え、やはり小さなものを組み立てていくので、精度にはそれなりにこだわらないといけないと思います。よく考えたら、自宅にあるハサミは精密な作業に向いているものがなく、紙工作用のハサミを購入するところから始めました。今回購入したのは長谷川刃物RMF-170KDSB-100です。

さて、準備ができたので作業を開始します。説明書に従って、手始めにデクスチャーシートを木製(MDF材を含む)に貼り付けます。セメダイン社の木工用速乾ボンドを使用しました。スポンジ刷毛を使って(少々の水分を含ませて)木材側にボンドを薄く塗ってテクスチャーシートを貼り、おもしを乗せて圧をかけて接着します。テクスチャーシートとのズレは0.2~0.3mm程度でしたが、組み立てる前にハサミで切った方が良さそうでした。

次に、細かな部品の中で、フェルト生地を使って部品を作る作業をやってみました。説明書には、型紙を使ってフェルトを切り取り、別に切り取ったテクスチャーを貼り付けるような手順が書かれていました。そこで、私が考えた手順は以下の通りです。

  1. 型紙に両面テープを貼り付けて、フェルト生地に仮付けする。(「はがせる両面テープ」を使用)
  2. 型紙に沿ってフェルト生地を切り取る。
  3. 型紙をはがしてフェルト生地にテクスチャーをボンドで貼り付ける。(工作マットで上下から挟んでおもしを乗せて圧着する)

はがせる両面テープでも長時間放置するとはがれにくくなるので、切り取った後は、貼り付けた型紙をできるだけ早くはがした方がよいと思います。

実は、はじめからテクスチャーを貼り付けて切る方法でもやってみたのですが、型紙よりもテクスチャーの方が余白が広く、その分フェルト生地を多く消費してしまうという問題がありました。試しに、いくつかの部品を型紙を使わずにやってみました。やってみて思いましたが、テクスチャーの紙は型紙の紙より硬いので、フェルトに貼り付けた状態だと切りにくいという問題があるのかもしれません。

この後も様々な部品を作っていきましたが、説明書のとおりに作っていくだけなので取り立てて難しいことはなく、ひたすら地味な作業をこつこつと行っていく感じです。正直なところ、完成図を見てちょっと変更したいところもあるので、どのあたりから改造を始めるか(一度全て完成させてからとか、飾りつけを省いて大枠を作ってしまってからとか…)考え中です。続きは後日ということにします。

2025年7月18日金曜日

FAMIC on USBという音楽系ガジェット(小さなマイコンボード)を試してみる

電子工作をやっている方にはおなじみかもしれませんが、マルツ(マルツエレック株式会社)のオンラインショップ(←店舗の方にもよく行きました)で、「FAMIC on USB」というMML(Music Macro Language)でプログラムできる音楽系ガジェット(小さなマイコンボード)の取り扱いが始まったとの情報があり、使いそびれていたポイントが少し残っていたのもあって迷わず購入してしまいました。今回購入したのは、FAMIC on USB本体とデータを記録させるためのFAMIC WRITERがセットになっているもので、PRIORISという会社が開発したもののようです。

MMLについては、数年前にも当Blogで紹介したことがありました。IchigoJamを楽器のようにするプログラムを作って、キーボードで演奏したときに使ったのがMMLでした。今回は、FAMIC on USBを動かすための「(FAMIC on USB)MML Playground」を使って、ブラウザー(「Google chrome」を使用)からFAMIC on USBを操作します。MMLがよくわからなくても「MML Command Reference」が使えるので、あてにならない自分の記憶とネットの情報を探しながら使ってみることにしました。そもそも、MMLについては公式な規格が存在しないようで、MMLで動かせることを謳っていても、実装具合が微妙に違うことがあるようです。かっちりした規格があった方が安心してプログラムを作れると思う反面、ゆるさも魅力の一つではある(何なら自分でもいろいろなものに実装可能だということにもなるので)かなとも思います。

さて、本題に戻ります。FAMIC on USBに電池駆動のアンプ内蔵ステレオスピーカー(YAZAWATVR35WH)をつないで音出し実験をしてみたいと思います。chromeブラウザーを動かすのは、愛用のMacBook Proです。公式サイトには、Linuxにも対応しているようなことが書かれていましたので、自作PCLinux Mintからでも制御できると思います。PCなどと接続するためのUSBケーブルは付属していませんでしたが、FAMIC on USB側のUSBコネクタの形状は、USB-Cで接続できる形状になっています。自宅にはUSB-A←→USB-Cケーブルがいくつかありますが、電源供給用のものやUSB2.0までしか対応していないものなどもあって、どのケーブルなら使えるかわかりませんでした。とりあえず、USB3.0対応のUSBケーブルを使うことにして、動作確認をやってみることにしました。

今回は、FAMIC WRITERも同時に購入しているので、こちらも載せて一緒に動作確認していきたいと思います。ガイドとしてオフィシャルWebサイトで紹介されているYouTube動画を参考にしながら作業を進めていきました。プログラムを始める前に、FAMIC on USBにFAMIC WRITERを載せます。ピンを曲げないように気をつけて、しっかりと奥まで挿し込みました。次に、先ほど紹介したアンプ内蔵スピーカーを接続して電源をONにしておきます。あとはMacBook ProとUSBケーブルで接続すれば聞き覚えのある音(名前から想像して…)が鳴って接続されたことがわかりました。

接続した状態からchromeブラウザーを開いて、「MML Playground」にアクセスします。「Ch. 1」のところに「CDEFGAB>C」と入力して、ウィンドウの下方にある「▷(再生)」ボタンをクリックします。すると、MacBook Proにつないでいるスピーカーから音が出ました。ここで、音声出力の設定を「FAMIC WRITER」に切り替えます。(この後は、MML PlaygroundでプログラムしてFAMIC on USBに書き込んだもの以外の音を出すことはできないので要注意です)ウィンドウの上方にある「FAMIC WRITE」ボタンをクリックすると、この設定がFAMIC on USBに書き込まれて、その後は電源さえあれば設定された通りの曲が流れるようになります。

プログラムした曲を別のファイルで保存しておきたい場合は、「Download」ボタンをクリックするとjsonファイルで保存することができます。これは、「Upload」ボタンをクリックして読み込むことも可能です。また、「Examples」ボタンをクリックすると、いくつかのサンプルプログラムが選べるようになっていて、MMLの書き方を学ぶこともできるようになっています。FAMIC on USBを持っていななくてもMML Playgroundでプログラムすることはできる(その場合は、PCなどのスピーカーからも音が出せる)ので、作り込んで鳴り方を確認することができます。

活用のアイデアとしては、この環境で音楽を作ってFAMIC on USBに流し込んだら、電源とアンプ−スピーカーだけで音が出るので、「呼び込みくん」のようなものをオリジナルで作ることもできます。他のマイコンボードとも組み合わせると、更に活用の幅が広がるのではないかとも思いました。

2025年7月12日土曜日

カブトムシ飼育環境を転用してミニトマトを育ててみる

このBlogで長い間紹介してきたカブトムシ飼育でしたが、最後の報告が約2年ほど前で、去年の秋には最後の1頭が亡くなっておしまいになっていました。残ったのは、クヌギマットと腐葉土。これを何かに使えないかと思ったまま約1年が経とうとしています。そんな中、家庭菜園的なものをやってみてはどうかと思いたち、道具の準備を始めました。

もともと、「野菜のベランダ栽培」もこのBlogで紹介していた通り、職場のベランダで野菜の栽培をしていました。(趣味ではなく、「食農教育」の一環としてですよ。念の為)このときは、土を使って栽培をしていましたが、今手元にあるのはクヌギマットと腐葉土だけ。近所のホームセンターであれこれ考えながら、この環境で育てられそうなものとして選んだのが「ミニトマト」でした。

KAGOMEが製造している、「トマトの土」があって、この主成分が「ヤシガラ」と言われるものだったので、「ヤシガラでできるならクヌギでもできるんじゃない?」と思ったのでした。(深い根拠はありません)とは言え、本当にうまくできるかわからなかったので、(弱気にも)このトマトの土も購入して、一緒に使ってみることにしました。

寄せ植えができるくらいの広めの植木鉢とスタンドを用意して、その中にクヌギマットと腐葉土、そしてトマトの土を混ぜた栽培土を作り、その中にミニトマトの苗を3株植えました。ベランダ栽培の大きな問題は、ベランダ床の熱さです。特に夏場のベランダ床は熱くなりやすく、植物が熱にやられないように工夫する必要があります。そのため、植木鉢をスタンドに載せて、ベランダ床の熱が直接伝わらないようにしました。

植えたあとにしっかり水やりをして(雨も降ったけれど)、1日経ったら結構しっかりと根が張ってきた感じでした。これがうまくいくようなら、このクヌギ&腐葉土をベースにして別の野菜栽培にも挑戦していきたいと思っています。野菜ごとに必要な培養土の条件が微妙に違ったり、同じ土で連作しない方が良かったり、寄せ植えに向いていない組み合わせがあったりして考えなければならないことはたくさんあるのですが、それも含めて楽しみながらやっていきたいと思っています。

2025年7月5日土曜日

Pd(Pure data)でシンセサイザープログラミング~部品について整理してみる

前回の続きです。Pd(Pure data)という音楽に特化したプログラミング環境を使ってシンセサイザーを作っているのですが、なかなかクセの強いソフトなので一度整理しておきたいと思います。Pdでプログラミングをする際に最もよく使われるのが「配置」メニュー内の部品たち。この部品たちの役割がわかってくるとPdのプログラミングがスムーズになっていくと思います。そんな訳で、この部品たちの役割などについて整理していきたいと思います。
#今回は、Pure Data Japanの「オブジェクトの種類」を参考にしてまとめました。

オブジェクト
オブジェクト名()を入力し、様々な機能を実現する部品。
メッセージ
数値データや文字列データなど、出力するものを入れておく部品。
ナンバー
数値データを入れておく部品。実行モードでは、マウス操作で数値を変更できる。
シンボル
文字列データを入れておく部品。
コメント
コメントを入力しておく部品。日本語的には、「メモ」と言った方がわかりやすいかもしれない。
Bang(バン)
クリックでスイッチONのデータを出力する。モーメンタリースイッチのような挙動。
Toggle(トグル)
クリックでスイッチON/OFFのデータを出力する。オルタネートスイッチのような挙動。
ナンバー2
「ナンバー」部品と似ているが、プロパティの設定項目が違うので、扱える数値の幅が広い感じ。
垂直スライダ
スライダスイッチ(垂直方向)。「ナンバー」部品などの数値を操作的に変化させることができる部品。
水平スライダ
スライダスイッチ(水平方向)。挙動は「垂直スライダ」部品と同じ。
垂直ラジオボタン
ラジオボタン(垂直方向)で値を変更するスイッチ。プロパティでボタンの個数や挙動を変更できる。
水平ラジオボタン
ラジオボタン(水平方向)。挙動は「垂直ラジオボタン」部品と同じ。
VUメータ
見た目通りの「VUメータ」部品。
キャンバス
プロパティを見るとグラフ表示ができそうな部品であることがわかる。詳細はわからず…。

_noteで見つけた「puredataのオブジェクト一覧」やこじ研(小嶋研究室)さんの「Pure Data小辞典」には、さらに細かいコマンドなどの情報がありました。モジュラーシンセのように様々なモジュールを作って、それをつないで本格的なシンセサイザーを作ることができたら面白いと思いました。それに、外部からMIDIキーボードなどでコントロールするところまでできたらやってみたいと思います。

「Pd(Pure data)でシンセサイザープログラミング」

2025年6月21日土曜日

Pd(Pure data)でシンセサイザープログラミング~シンセサイザーっぽいものを作ってみる

前回の続きです。Pd(Pure data)という音楽に特化したプログラミング環境を使ってシンセサイザーのようなものを作ってみたいと思います。前回同様、今回もレシピ本「Pd Recipe Book」を参考にしています。前回は、サイン波の音を出すプログラムを作ってみましたが、モジュラーシンセサイザーをいじっているような感覚でプログラムすることがわかってきました。モジュラー自体も(お金をかけずに)簡単に作ることができるため、夢のようなプログラミング環境ではあるのですが…。(万人向けではないことだけは確かでしょうね。(^^;;;)

前回作ったサイン波を出すプログラムを拡張して、「osc~」から出てくるサイン波を加工することを目指します。「Pd Recipe Book」で紹介されていたものを再現していきながら、配置された部品の意味や役割を確認しながら作業を行いました。作業としては、部品を選んで配置して、部品の中に文字列や数値を入力して役割を決めて、機能するように線でつなぐといった手順になります。部品の種類や中に入力した内容によって、つなげられるものとつなげられないものがあるようで、部品にマウスを近づけて「○」が表示されると線を引き出す(ドラッグ)ことができて、同じく「○」が表示されるところ離す(ドロップ)と線でつながります。とは言え、つなげられるから意味のあるつながり方になっているかと思いきやそんな単純な話ではなく、モジュラーシンセサイザーでも同じですが、思ったように音を変化させることができないつなぎ方もできてしまうところがあります。

そんな感じでなかなか一筋縄ではいかないところがあるものの、攻略する面白さ(これを面白いと思える人にとっての…)はのめり込ませるだけの魅力が十分にあると思いました。ということで、レシピ本を参考にして作ってみました。

動かし方が独特なので、はじめはどうすれば音が出るのか戸惑うかもしれません。「Pitch」とラベリング(任意なので名前は何でもよい)した「ナンバー」部品をクリックして、画面上側にドラッグしていくと数値が上がっていきます。それに伴って、音が出ます。直接数値を入力して、Enterキーを押しても音が出ます。マウスを操作している間は、音が変化しながら鳴り続けますが、マウスを止めたりEnterを押して音を出したりした場合は、一定時間で音が止まります。「*~」につながっている「ナンバー」部品は、音が出ている状態と止まっている状態を表しています。音を鳴らし始めると自動的に「1」になり、しばらくすると「0」に戻ります。(リレーのような動きをします)他の「ナンバー」部品の数値を変更した場合も、「Pitch」をクリックしてしてからでないと音が出ません。このあたりの「暗黙のルール」がもう少しわかりやすいとユーザーが増える気がしますが…。

ということで、少しずつ部品の役割(挙動)がわかってきました。「ナンバー」部品は、編集モードをやめて実行モードにしても数値を変更することが可能です。(「オブジェクト」部品の中に入力した数値は、編集モードでなければ変更することはできません)つなぎ方によっては、他の数値の変更と連動して自動的に「ナンバー」部品の数値が変わることもあります。今回のシンセサイザーっぽいプログラムでは使いませんでしたが、「リスト」部品も数値などを格納することができると思われるので、もう少し詳しく調べてみたいと思っています。

「ナンバー」部品の数値を変更する方法として、マウスを使って上下にドラッグする以外に、「垂直スライダ」部品や「水平スライダ」部品を使って、スライダの出力側と「Pitch」の「ナンバー」部品の入力側をつなぐと、スライダを動かすことで数値を変更できることがわかりました。少しだけシンセサイザーを操作している感じに近くなってきました。この場合、スライダのバー(「つまみ」のようなところ)をクリックすると音が出ます。このスライダのバーを「垂直…」なら上下に、「水平…」なら左右にマウスで移動すると音が変化します。これは絶対沼るやつです。

「Pd(Pure data)でシンセサイザープログラミング」

2025年6月14日土曜日

Pd(Pure data)でシンセサイザープログラミング~はじめの一歩

だいぶ以前から気になっていたのですが、Pd(Pure data)という音楽に特化したプログラミング環境があります。ブロックプログラミングとテキストプログラミングとの中間な感じのプログラミング方式が採用されていて、一見すると色気もなくて何をどうすればよいかよくわからないと思われてしまいそうなのですが、使ってみると楽器そのものを組立てているような面白さにハマる人が多いようで、意を決してそんな世界に足を踏み入れてみることにしました。

とは言え、MacBook ProにPd-extended(すでに開発終了)をインストールしたのは記憶にないくらい前のこと。興味をもったままPd-extendedをインストールして、ほぼ何もしないまま放置して、しばらくしてまた思い出して、レシピ本「Pd Recipe Book」を購入してまたしばらく放置して…を繰り返していたので、お気付きの通り何も進んでいませんでした。

まずは自分の情報をアップデートするところから始めます。そもそもPdの開発は、Pure data (Pd) Vanillaと、それにライブラリなどをパッケージしたPd-extendedとで別々に開発・メンテナンスされていたようなのですが、現在は、もともとのPd Vanillaに統合されているようです。今回は、Pdのダウンロードサイトから最新版をダウンロードしてインストール作業(展開して出てきたアプリをアプリケーションフォルダにコピー)をするところから始めました。

Pdを起動すると、ログ窓が表示されます。作業を進めていくと、このログ窓にPdの動作ログなどが表示されます。

「ログ」の後ろの数字は、表示する内容がどの設定なのかを表す番号になっていて、「2」は「通常」のログ表示ということのようです。すべてのログを見たい場合には、「4」にします。表示する文字数の節約という意味では意図はわからなくもないのですが、ユーザーフレンドリーであるかどうかという点では微妙な感じがします。このあとの作業でも感じたことですが、使いながら意味を考えたり、本やWebサイトで調べて「省略されている文字」の意味を理解したりしながら作業することが多くて、「一見さんお断り」な雰囲気を感じてしまいます。
#音楽(音)や電子楽器の知識はあった方が良いかもしれません。

気を取り直して作業を進めていきます。今回は、先ほど紹介した「Pd Recipe Book」以外にも、「Pure Dataについて調べてみた」を参考にして作業を進めます。Pdの「ファイル」メニューから「新規」(⌘N)をクリックしてキャンバス窓を開きます。ここに様々な部品を「配置」メニューから選んで配置していきます。部品には、文字列や数値を入力できるものやマウスで操作するものなどがあります。新しくキャンバス窓を開くと「編集モード」になっているので、そのまま「配置」メニューから部品を選択してキャンバス窓に置くことができます。プログラムの動作確認をするときには、「編集」メニューから「編集モード」(⌘E)のチェックを外して実行モードで動作させます。(簡単なものであれば「編集モード」のままでも確認できることはあります)さらに部品を追加したい場合は、そのまま「配置」メニューから部品を選ぶとキャンバス窓が「編集モード」に変わってくれます。
#ログ窓とキャンバス窓は、どれか一つしか選べない仕様になっているため、その窓がアクティブか非アクティブかによって使えるメニューの内容が変わります。

つまずきどころは、部品に入力する文字が「小文字縛り」だったこと。シンセサイザー周辺の表記は「OSC(オシレータ)」とか「ENV(エンベロープ)」などと大文字で書かれるイメージがあったため、大文字で入力するものとばかり思っていました。Pdでは、すべて小文字でなければならないということで、初歩の初歩である「osc~」から「dac~」につないで音を出すところでつまずいてしまいました。orz(よく見れば、本でもWebサイトでもすべて小文字だったのだけど、「osc」って偶然にも大文字と小文字の区別がつきにくいのよね…)とりあえず、サイン波の音を出すことはできました。

「440」というのは、お察しの通り「440 Hz(A4)」の音という意味です。(このBlogでもたびたび登場しています)この数値を変えると、様々な音程のサイン波を出すことができます。これをベースにシンセサイザーっぽいものを作っていきたいと思います。続きは次回以降ということで。

「Pd(Pure data)でシンセサイザープログラミング」

2025年6月4日水曜日

ワイルドミニ四駆をiPhoneからリモートで動かす(MKZ4をiPhoneからコントロールする)

前回の続きです。秋月電子通商で購入した「MKZ4」という、タミヤワイルドミニ四駆iPhoneなどのスマホから無線で動かせるように改造するキットを使ってみるという話の3回目(最終)です。前回までで組立作業が完了して、今回はWi-Fiを利用してiPhoneからコントロールできるかやってみます。
#MKZ4は、メーカーサイトでも売り切れています。

メーカー公式YouTubeチャンネルで公開されている「スマホで操作する改造ミニ四駆製作キット「MKZ4」 [Cerevo]」を参考にしながら作業を進めました。手順をテキストで表すと以下にようになります。
#MKZ4のCN3(L字ピンヘッダ)のショートピンがB側になっていることを確認してから作業をしてください。

  1. MKZ4の電池ボックスに単4電池を3本入れてスイッチをONにする(MKZ4のLEDが点灯する)
  2. iPhoneの「設定」を開き、「Wi-Fi」の接続先に出てくる「MKZ4」をタップしてMKZ4と接続する
  3. Webブラウザーを開きアドレスバー(URLなどを入力する欄)に「192.168.4.1」と入力してMKZ4にアクセスする
  4. 「CONNECTED」という青緑色の画面が出たら準備OK
    #推奨されるWebブラウザーは「ユーザーガイド」のページに掲載されています。
  5. 青緑色の画面をスワイプしてワイルドミニ四駆を動かす

マニュアルの文書は、PDFファイルで公開されていますので、こちらも参考にしながら作業を進めました。前進は画面下方から上方にスワイプし、後進は画面上方から下方にスワイプするといった操作をします。ステアリングは、左右のスワイプで左右に傾けることができます。前後進は問題なく動作しましたが、ステアリングの動きがおかしくて、ステアリングを動かそうとするとどちら向きに動かしても右側に傾いてしまいます。動作中にMKZ4のLEDが点いたり消えたりするので、はんだ付けが不十分なところがあるのかもしれません。もう少し調整作業が必要なことがわかりましたが、とりあえず動作することだけは確認できました。
#事情により、USBでPC等に接続できるデジタル顕微鏡を職場の職員に貸し出しているので、返却されたら調整作業をやっていきたいと思います。

「ワイルドミニ四駆をiPhoneからリモートで動かす」

2025年5月23日金曜日

ワイルドミニ四駆をiPhoneからリモートで動かす(MKZ4の設定と組み上げまで)

前回の続きです。秋月電子通商で購入した「MKZ4」という、タミヤワイルドミニ四駆iPhoneなどのスマホから無線で動かせるように改造するキットを使ってみるという話です。フィジカル・コンピューティングの教材ネタとして購入したものの、いろいろとつまずいてしまって完成までに時間がかかっています。
#MKZ4は、メーカーサイトでも売り切れています。

前回は、メーカーサイトの説明書を読みながらMKZ4のはんだ付け作業を行ってきました。今回は、基板上にはんだ付けした「ESP-WROOM-02(ESP8266EX)」モジュールにプログラムを流し込んでいきます。使用するツールは、Arduino IDEです。Arduino IDEでESP-WROOM-02のプログラミングをする場合は、マイコンボードに合わせた設定を行わなければなりません。すでにArduino IDEをESP8266のプログラムに対応させているのであれば、以下の作業は必要ありません。はじめてArduino IDEでESP8266を使う場合には、以下の作業を行ってください。(Arduino IDEが起動している状態からの作業になります)

  1. 「Arduino IDE」メニューから「Preference(基本設定)…」を選択して設定画面を表示させる
  2. 「追加のボードマネージャのURL」欄に
    「https://arduino.esp8266.com/stable/package_esp8266com_index.json」
    と入力して「OK」ボタンを押す
  3. 「ツール」メニューから「ボード:… >」→「ボードマネージャ」とたどり、検索窓に「esp8266」と打ち込むとESP8266用のプログラムが表示されるので、最新版をインストールする

#MKZ4のマニュアルサイトでは、追加のボードマネージャのURLが「http://arduino.esp8266.com/stable/packageesp8266comindex.json」となっていますが、上記で示したURL(「https://…」から始まる)に変更されているようです。

ここまでで、Arduino IDEの準備は終了です。ESP-WROOM-02モジュールに書き込むプログラム(.ino)を用意します。プログラム自体はgithubの「cerevo/MKZ4」にあるので、「< > Code」ボタンをクリックして「Download ZIP」を選択してダウンロードしておきます。ダウンロードした「MKZ4-master.zip」を解凍すると、「MKZ4-master」というフォルダが現れるので、その中から「Cerevo_MKZ4」というフォルダをArduinoのプログラムを保存してあるフォルダに入れます。
#Arduino IDEを起動したときに、(任意で変更していなければ)「書類(Documents)」フォルダ内に「Arduino」フォルダが作られると思いますので、この中に入れるのが一般的だと思います。

次にボード側の作業をします。MKZ4のCN3(L字ピンヘッダ)のショートピンをD側にして、「MKZ4WK(専用の書込ツール)」をつなぎます。ここから、USBケーブルでコンピュータにつなぎます。

「ツール」メニューから「ボード:… >」→「ESP8266 Boaards(…)」とたどり、「Generic ESP8266 Module」を選択します。ポート名は環境に依存します(LinuxやmacOSでUSBシリアル接続すると「/dev/…」から始まるポート名が使われています)ので、USBケーブルで接続してみて表示されたものを選択しました。はじめは、MacBook Proで動かしているArduino IDE(2.x系と1.8.19の両方)を使いましたが、残念ながら途中でエラーを吐いてうまくプログラムを書き込めていない様子。例によって、USBシリアル通信がうまくできていないようなので、続きの作業をLinux Mintで動かしている自作PCを使ってやってみました。すると、2.x系も1.8.19も無事にコンパイルと書き込みができました。
#一度コンパイルと書き込みをしてから再び書き込む必要があった場合には、USBケーブルを抜いて接続を切って再度挿し直しをしないとエラーが出るようです。

あとは、説明書に従って走行できる状態まで組み上げていきます。MKZ4制御基板のCN3ショートピンは、B側にしておきます。

反省点は、完成までに数年かけてしまったことで、ネジ類が他のものと混ざってしまって焦ったことでした。幸い捨ててはいなかったので無事に組み立てられましたが、忘れないうちに一気に組み立てた方がよいですね。iPhoneからの動作確認は次回ということで。

〈参考資料〉

「ワイルドミニ四駆をiPhoneからリモートで動かす」

2025年5月17日土曜日

ワイルドミニ四駆をiPhoneからリモートで動かす(組み上げる前までの準備として)

忘れてしまうくらい遠い過去に、秋月電子通商で「MKZ4」というタミヤワイルドミニ四駆iPhoneなどのスマホから無線で動かせるように改造するキットを購入していました。当時は、マイコンボードでモーターを制御したり、ロボットカーのようなものを作ることに興味があったのだと思います。プログラムを流し込んでワイヤレスで制御できる「ESP-WROOM-02(ESP8266EX)」モジュールを使う改造キットだったことも興味をもった理由だったかもしれません。
#現在は、メーカーサイトでも売り切れのようです。

これが、自室の作業台の隅の方に作りかけのまま長いこと放置されていたことが突然気になり、かたをつけるつもりで完成を目指して作業を再開しました。とは言え、なぜ長いこと放置されていたかと言うと、「組み立てが面倒」(素人さんお断りな感じ)だったからでした。

購入した直後から説明書を読みながら必要なものを買いそろえて、組み立て作業をしていく中でいろいろとつまずいて、しばらく作業台の隅に放置して、ふと思い出して作業を少し進めてはまたつまずいて、といったようなことを繰り返していました。購入から何年が経っただろうと記憶が曖昧になっている状況です。

習慣として、自分の作業履歴をメモに残していたのですが、最後の作業時期は新しい家に住み始める前のことで、引越し作業の中でも気にはなっていたのですが、いつでも続きができるように目の届く範囲に置いていました。そんなわけで、何度目かの「重い腰」を上げて作業の続きをしていきたいと思います。以下、書き留めていた記録をもとに、整理してまとめていきたいと思います。

1つ目のつまずきどころとして、ワイルドミニ四駆の本体を切断しなければならないというところ。試行錯誤の末に、Pカッターとリュータ、ニッパーを使って切断作業をしました。マニュアルとにらめっこをしながら、切断する場所や効率よく切る方法を考えて切断していきます。削りカスが飛び散るので、段ボール箱に半透明なビニール袋(45L)を掛けてその中で作業をしました。材質は硬くないので切ること自体は難しくないのですが、構造が面倒なことになっていて、どのラインで切るか決めるのが難しく感じました。途中、リューターの故障などハプニングはありましたが、残りをPカッターとニッパーで切断してヤスリでバリ取りをして切断作業は終了しました。

次にMKZ4の制御基板に電子部品をはんだ付けしていきます。ESPRESSIF SYSTEMSのESP-WROOM-02モジュールを載せるのが一番大変でしたが、後はそれほど難しくないので説明書の通りにやればできると思います。表面実装部品のはんだ付けは、フラックスを塗った方がはんだが乗りやすいです。その後、無水エタノールで洗浄してキムワイプとブラシ(ナイロンのもの)で洗浄しました。簡易な顕微鏡のようなものがあると、はんだ付けの状態を確認することができるので便利です。
#私は、USB接続のマイクロスコープを使っています。

はんだ付けの手順としては、オーソドックスに背の低い部品から徐々に高い部品へと取り付けていくと良いと思います。1000pF(102)のセラミックコンデンサは、パスコンとしてモータにはんだ付けします。動作確認がしやすくなるように、制御基板の作成と配線、ミニ四駆の組立作業を進めていく感じが良いと思います。

さて、作業の記録が長くなってきてしまったので、とりあえず続きは次回ということにしたいと思います。

〈参考資料〉

「ワイルドミニ四駆をiPhoneからリモートで動かす」

2025年5月11日日曜日

リコーダー風の電子楽器を購入してみた

最近、吹奏楽器の中でも「笛」と呼ばれる形状の楽器にアンテナが高くなっています。もともと金管楽器の指導をしていた頃にも、より簡単に音が出る「笛」には興味があって、民族楽器的なものも含めて気になったものを買っていました。
#そう言えば、だいぶ昔に欲しくて欲しくて購入した「オカリナ」をすぐに落として割ってしまったかなり残念な記憶が蘇ってきました。orz

笛型の吹奏楽器の1つである「ウィンドシンセサイザー」は、私自身にとっても長年の憧れなのですが、価格の問題がブレーキになってなかなか手が出せずにおりました。もともとは「リリコン」と呼ばれた製品がありましたが、現在ではAKAIEWI(Electronic Wind Instrument)シリーズが一番有名でしょうか。この分野は昔から一定の需要があるらしく、文字通り「息の長い」製品となっています。一方、「ブレス・コントローラー」というシンセサイザーの周辺機器的なものもあって、打鍵ではなく吹奏でシンセサイザーの音を鳴らす(鍵盤は音程を選ぶだけ)ことにも需要があるようです。(こちらは「鍵盤ハーモニカ」の電子版のようなイメージです)いずれにしても、費用対効果を考えるとなかなか手が出ず、齢ばかりを重ねていました。

そんな中、Amazonで「Electric Blowpipe」という、1万円を切る価格ながらリコーダーのように演奏ができる電子楽器を見つけて衝動買いしてしまいました。英語的にはあまり楽器らしくないネーミング(Blowpipe:「吹き矢」とか「火吹竹」のような道具の意味らしい)の中華製電子楽器です。パッケージには型番らしきものはなく、一番大きく書かれているのは「MADE IN CHINA」という文字で、購入の決め手はMIDIにも対応していると謳っていたことでした。
#中華製品あるあるですが、製造元だとか正式名称だとか型番だとかを探していると、同じような製品の情報が大量に出てきて収集がつかないのに肝心の知りたいことが全くわからない状況です。

パッケージの中に入っていたのは、本体と専用の布袋、シリコンマウスピース、説明書(英語)だけで非常にシンプルです。機能もかなりシンプルで、「音を出す」ということだけであれば、電源を入れて息を吹き込めば音が出ます。指使いもシンプルだし、吹奏による音量の変化もわかりやすいと思いました。意外に思ったのは、そこそこの重量があること。筐体が金属でできているようなので、その重さがほとんどなのかもしれませんが、本物のリコーダーに比べたらかなりずっしりと重たいです。800mAhリチウムバッテリー内蔵なので、充電して使うことになります。

13の音色で演奏ができることになっていますが、音色リストは以下のとおりです。

〈Tone List〉

  • 01 Alto Saxophone(アルトサックス)
  • 02 Soprano Saxophone(ソプラノサックス)
  • 03 Morin Khuur(モリンホール)
  • 04 Clarinet(クラリネット)
  • 05 Hulusi(フルス)
  • 06 Trumpet(トランペット)
  • 07 Suona(ソーナー)
  • 08 Ocarina(オカリナ)
  • 09 Flute(フルート)
  • 10 Bamboo Flute(DIZI:ディジ)
  • 11 Recorder(リコーダー)
  • 12 Violin(バイオリン)
  • 13 Erhu(アルフー:二胡)

音色のチョイスは独特なものを感じましたが、民族楽器も好きな方なので(再現性は確かめようがないものの)嫌いじゃないと思いました。肝心の演奏感としては、吹奏楽器として吹いた感じと音の出方(反応)には、違和感はありませんでした。運指への反応も悪くない。唇を締める圧力までは感知していないので、電子リコーダーと呼べばよいでしょうか。欲を言えば、両手の親指だけで楽器を支える状態になったとき、楽器自体が重くて落としてしまいそうになるので、首にかけるストラップのようなものがあったら安心して演奏できるかなと思いました。

もう一つ難点を言うと、裏面側の操作スイッチ(押しボタン)が直感的にわかりにくいこと。電源マークのボタン以外は、1〜9の数字が刻まれているボタンに機能が割り振られているのですが、簡易な説明書を読むまではそれぞれのボタンにどんな機能が割り振られているのかわかりません。2桁の7セグLEDで何かを表現しようとしているようなのですが、数字とアルファベット2文字の略語のような表現なので、割り振られている機能を理解していないと意味がわからないと思います。そもそも1〜9の数字が刻まれている意味がなく、何か別の製品のボタンを使い回している(だから安い)のではないかとさえ思ってしまいます。

とは言え、1万円以下でこのレベルの電子楽器が手に入ることにはちょっと驚きを感じました。まだMIDIのテストはしていませんが、どんなことができるのか、期待半分怖さ半分で試していきたいと思います。

2025年5月4日日曜日

Raspberry Pi Pico 2を使ってみた〜ビジュアルプログラミング

前回の続きです。Raspberry Pi Pico 2を使ってフィジカル・コンピューティングの動作確認をしていきます。前回は、Thonnyを使ったMicroPythonプログラミングでの動作確認をしました。今回は、ビジュアルプログラミング環境での動作確認をしたいと思います。以前の記事(「Piper Make編」「BIPES編」)で、Piper MakeBIPESでの動作確認をしましたが、今回もこの2つのサイトを利用してビジュアルプログラミングの動作確認をしていきたいと思います。
#今回も動作確認に使うPCは、Linux Mintで動かしている自作PCを使用します。

〈Piper Make編〉
先ほど紹介した拙Blogの記事を参考にしながら、Piper Makeで動作確認をしてみました。まず、ChromeブラウザーでPiper Makeのサイトを開いて「CREATIVE」モードにしておきます。Piper Makeは専用のファームウェアを使用するので、「SETUP MY PICO」ボタンをクリックしてセッティングを開始します。Pi Picoを(ストレージモードで)PCに接続したときは、「RPI-RP2」という名称のUSBストレージデバイスとして認識されたのですが、Pi Pico 2では、「RP2350」という名称になっていました。とりあえず、この中にファームウェアをインストールするように選択をして、セットアップを終えました。

Pi Pico 2(RP2350)の中には、「piper_circuitpython.uf2」というファームウェアが書き込まれたようですが、自動で再起動されることはなく、手動でUSBケーブルを抜いて再度PCへ接続してみました。この状態でPi Pico 2をPCに接続しても、基本的には何も起きません。そこで、Piper Makeの「CREATIVE」モードから、過去に自分が作ったLチカプログラムを開いて動作確認を進めていきます。プログラムを開いたウィンドウの左下に「CONNECT(接続する)」ボタンがあるのでこれをクリックします。すると、シリアルポートが読み取られて接続できるPi Picoが表示されるはずなのですが、「対応デバイスが見つかりませんでした。」と表示されてPi Pico 2は認識されていないようでした。

Piper Makeを詳しく調べていくとPi Pico 2での動作についての記述が見当たらず、今後のことはわかりませんが、現状ではPi Pico 2には対応していないようでした。

〈BIPES編〉
気を取り直して、次にBIPESでの動作確認をしていきたいと思います。こちらも先ほど紹介した拙Blogの記事を参考にしながら作業を進めていきます。BIPESは、内部的にMicroPythonを使うので、動作確認に使用するPi Pico 2にはあらかじめPi Pico 2用のファームウェアを入れてセットアップをしておきます。

BIPESのサイトを開いて、接続するデバイスを選ぶところで嫌な予感がしました。「Raspberry Pi Pico 2」は、選択肢にありません。仕方がないので、ダメ元で「Raspberry Pi Pico」を選択して、デバイスの「Connect(接続)」ボタンをクリックしてみました。すると、シリアルポートに「tty」から始まる接続先が現れたので、これを選択してから「接続」ボタンをクリックしました。
#接続先のポートがわからない場合は、Pi Pico 2をつないでいるUSBケーブルを抜き差しして、消えたり現れたりするポートを確認すると、接続先のポートを見つけることができます。(ターミナルコンソールを開いて確認するより速い)

以前に作っていたLチカプログラムがそのまま残っていたので、少々ドキドキしながら「RUN(右向き三角マーク)」ボタンをクリックしてみたところ、Lチカ動作確認ができてしまいました。期待をしていなかったので、思わず「動いた!」と声を上げてしまいました。
#ここで使ったLチカプログラムも先ほど紹介した拙Blogに記載していたものです。

ということで、Pi Pico 2でビジュアルプログラミングをやりたい場合は、BIPESならできるということがわかりました。日本の小学校でこれを使いたいという場合には、やはり英語表記がネックになると思います。これをよい機会と捉えて、「英語の学習も兼ねて」なんて思ってくれる方がどのくらいいるかわかりませんが、個人ベースでなら小学生でもチャレンジしてくれる子がいてもよい気がしています。こういう攻略を楽しめる子が増えてくれると嬉しいのですが…。

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

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を使ってみた」

2025年3月20日木曜日

音声合成LSI(ATP3011とATP3012)を使ってみる〜MacBook Proからコントロールする

以前の続きです。(長くなってしまったので、2回に分けました)株式会社アクエストが開発している「音声合成LSI」を秋月電子通商で購入して、使えるように準備するところまで書きました。念の為、「音声合成LSI「AquesTalk pico LSI」」の「ATP3011」と「ATP3012」のデータシートのリンクも再掲しておきます。

前回は、この「ATP3011」と「ATP3012」がMICROCHIPAtmelを買収)のAtmega328をベースにして作られていて、Arduino(及びその互換マイコンボード)のATmega328と載せ替えれば簡単に使えるようになるという情報をもとに準備をしました。秋月電子通商で販売されているAE-Atmegaを使って作った「Diavolino」ベースの自作Arduino互換ボードを引っ張り出してきて、実験環境を整えるところまで書きました。今回は、その続きをやっていきたいと思います。

まずは自作Arduino互換ボードに元々挿していたATmega328Pを慎重に取り外して、ATP3012R5-PU(小型ロボットの音声)に挿し替えました。これをMacBook ProにつないでArduino IDEを起動して音声が出せるか実験をしていきました。大小様々なつまずきがありましたが、最終的には使えるようになりました。注意点を以下にまとめておきます。
#Arduino IDE(実験時の最新版はver.2.3.4)の起動は、配線を済ませてからの方が良いと思います。

  • スピーカーは、アンプを経由するかアンプ内蔵のものを使う。(YAZAWATVR35WHを使用)
    IchigoJam実験をしたときに作ったケーブルでアンプをつなぎました。電源なしで圧電スピーカーをつないでも動きませんでした。(シリアル通信すらできない感じ)
    →ATP3011系は、GNDとDIGITAL 6番にアンプをつなぎます。ATP3012系はGNDとDIGITAL 9番にアンプをつなぎます。
  • ボードを「Arduino Duemilanove or Diecimila」にする。
    ※動作解説動画では、Arduino UNOが使われていましたが、Diavolinoは、Duemilanoveをベースにして開発されたものなので。
  • ポートを「/dev/cu.usbserial-xxxxx(ターミナルから「ls -l /dev/cu.*」コマンドで接続されているシリアルポートを確認できる)」にする。
  • 「ツール」メニューから「シリアルモニタ」を開く。
    ※ここで、シリアル接続の確認もしてくれるので、とても便利です。
  • 改行コードは「CRのみ」を選択する。
    ※ATP3011/3012は、コマンドの最後に「CR」を送らないと実行しない仕様とのことなので。

実は、USBシリアル変換アダプターモジュールでつないだときに、ポートの設定をしようとしたところでつまずきました。元々Prolific社製のPL2303HXというUSBシリアル変換アダプターモジュールを使っていたのですが、これがMacBook Pro(macOS)からはシリアルポートとして認識されないのです。「ターミナル」を起動させて「ls -l /dev/cu.*」で確認しても、接続前と接続後で何も変わりません。しばらく使っていなかったので、ドライバが古くなっているかもしれないと思い、最新のドライバをインストールしてみましたが、認識されないのは変わりませんでした。新しいmacOSでは使えないのだろうと諦めることにしました。

仕方がないので、FTDI社製の(ド定番の)FT232RLを載せたUSBシリアル変換ケーブル(半分自作)を使うことにしました。これを使うと、シリアルポートが認識されて使えそうな感じになったので、テストのためにいくつかローマ字を打ち込んで音声を出させてみたところ、無事に音声が出てくれました。ということで、macOSではFT232RLのUSBシリアル変換ケーブルを使うことにします。
Linux MIntでは、PL2303HXでも問題なく動作してくれました。Arduino IDEは、レガシーIDE ver.1.8.19、最新版IDE ver.2.3.4の両方で動作確認しました。

試行錯誤しながらいろいろやってみましたが、とりあえず音声が出るところまではできました。配線を変更したり、コマンドでエラーが出てしまったりした場合は、無理に作業を続けようとしないでArduino IDEを終了してから、再度起動してシリアルでの接続が確認されてから作業をすると動作が確実になると思います。一つ一つ、自分がやったことを検証しながら問題を解決して行ったので、いちいち再起動するのは面倒ではありましたが、急がば回れということだと思いました。
#アクエストのオンラインデモのサイトで、日本語をAquesTalk Pico用のローマ字表記にしてもらえるのは地味に便利でした。

【前回記事】
音声合成LSI(ATP3011とATP3012)を使ってみる〜まずは基本的な準備をする