ラベル ガジェット の投稿を表示しています。 すべての投稿を表示
ラベル ガジェット の投稿を表示しています。 すべての投稿を表示

2025年11月24日月曜日

M5Stackを使ってみる〜UART接続のUnit-MIDIでドラムマシーンを動かす

以前の続きです。M5StackCORE BASIC V2.7にPORT.C(UART)を追加する「M5StackBasicLite@akita11さん設計・製作)」というベースボードをつないで(はさんで)「UNIT-MIDI(以下「MIDI」)」を動かすことができるか動作確認をしました。「MIDI」には、仏dream社のSAM2695が内蔵されていて、GitHubのサイト内にあった、「M5-SAM2695」のページからダウンロードした「piano.ino(使用時は、ファイル名を「piano_midi.ino」に変更)」を使って、Behringerの「Pro VS MINI」を鳴らすことに成功しました。

今回は、同じ「MIDI」を使って、ドラムマシーン(BehringerのRD-6)を鳴らすことができるかやってみたいと思います。GitHubの「M5-SAM2695」サイトから「drum.ino」をダウンロードして、名前を「durm_midi.ino」に変更しておきます。(理由は、冒頭にリンクした記事を参照してください)これをLinux Mint上のArduino IDE(2.3.6)で開いて、コードを確認します。すると、「piano_midi.ino」のときと同じように「M5_SAM2695.h」を使うようなので、前回使ったものと同じファイルを「drum_midi.ino」を入れているフォルダ内にコピーしておきました。この状態で、Core BasicをUSB-Cケーブルでつないで「ボード」と「ポート」の設定を「M5Stack-Core-ESP32」に合わせてから「→(コンパイル&書き込み)」ボタンをクリックすると、無事にプログラムが書き込まれました。
#例によってYAZAWATVR35WH(アンプ内蔵スピーカー)につないでdrumのプログラムがインストールされていることを確認しました。

この状態で、RD-6とCore BasicをMIDIケーブルでつないでドラムマシーンとして鳴るか確認します。つないだだけでCore Basicを起動すると、「MIDI」には通電するもののRD-6をコントロールすることができませんでした。MIDIのチャンネルが合っていない可能性があるので、RD-6側のMIDI設定を確認することにします。「FUNCTION」 ボタンを押しながら、「PATTERN GROUP」 ボタンを押すと、MIDIチャンネルの設定が変更できるようになります。デフォルトでは、MIDI INもMIDI OUT/THRUもチャンネル「1」になっています。「PATTERN GROUP」 の「Ⅰ」でMIDI OUT/THRUのチャンネルを、「Ⅱ」でMIDI INのチャンネルを設定することができます。「FUNCTION」 ボタンを押しながら、「PATTERN GROUP」 ボタンを2回押すと「Ⅱ(MIDI IN)」の設定ができるようになるので、「10」ボタンを押してチャンネル「10」に変更します。

再びMIDIケーブルで「MIDI」とRD-6をつないでCore Basicの電源を入れると、RD-6が鳴ってくれました。\(^o^)/注意点としては、「MIDI」の「I/O BYPASS」と「SEPARATE」のスイッチを「SEPARATE」側にしておく必要があります。続けて、TRS MIDIケーブルでも鳴るのかやってみましたが、こちらも問題なくRD-6を鳴らすことができました。「piano_midi.ino」でも同じことが言えるかもしれませんが、ループ再生するようなメロディやリズムをプログラムしたものをCore Basicに入れて、電子楽器をループで鳴らしておいて、そこに生の演奏を重ねるような使い方もできるかなと思いました。

余談ではありますが、今回使ったBehringerのRD-6やTD-3、このBlogでも度々登場しているRolandのPC-300(MIDiキーボード)など、電子楽器(中でもエフェクターが多いかな?)に使われるACアダプターが、「センターマイナス」が多いのが気になっていました。一般的には、「センタープラス」のものが多い気がしますが、同じBehringerでもSWING(CV/Gate&MIDIキーボード)は「センタープラス」ですし、KORGのvolcaシリーズも「センタープラス」です。手近なところで、RolandのSC-55mkII(←取説のPDF)とKORGのX5DR(←取説のダウンロードサイト)は「センターマイナス」で、メーカーでも統一されているとは限りません。理由を調べていて、「エフェクター電源はなぜセンターマイナス仕様なのか」という記事を見つけました。ご参考まで。

M5Stackを使ってみる

2025年11月8日土曜日

M5Stackを使ってみる〜CORE BASICでUART接続のUnit-MIDIを使ってみる

以前の続きです。前回では、M5StackのM5Stack CORE BASIC V2.7にPORT.C(UART)を追加する「M5StackBasicLite@akita11さん設計・製作)」というベースボードを使って、「UNIT-SYNTH(以下「SYNTH」)」を動かすことに成功しました。今回は、「UNIT-MIDI(以下「MIDI」)」が使えるか動作確認をしていきたいと思います。

「SYNTH」も「MIDI」も同じく仏dream社のSAM2695を内蔵したシンセサイザーユニットで、Arduino IDEのサンプルコード(「drum」と「piano」)も同じのものが使えるようです。Arduino IDEのコード(プログラム)をコンパイルして書き込むのは、いつものLinux Mintで動かしている自作PCを使います。

前回の動作確認で「drum」のプログラムを入れていたので、「MIDI」につなぎ替えて「MIDI」のAUDIO出力から音が出るか確認します。(「SYNTH」にはスピーカーが内蔵されていますが、「MIDI」には付いていません)これも定番になっていますが、YAZAWATVR35WH(アンプ内蔵スピーカー)につないで音が出ることを確認できました。少し歪んで聞こえたので、プリアンプ(ヘッドホンアンプ)をはさむと良いかもしれないと思いました。音を出すことに成功したので、この状態で何も手を加えずにBehringerRD-6(アナログドラムマシーン)にMIDIケーブルでつないで音が出るかやってみました。当然かも知れませんが、何の反応もありませんでした。

そもそも、これまで使っていた「drum」や「piano」のコードには、MIDIの設定らしき項目がなく、Unit-MIDIでMIDIをコントロールできるサンプルコードはないものかと探したところ、GitHubのサイト内に、「M5-SAM2695」のページを見つけました。この中に入っているサンプルコードを使えば、M5Stack Core Basicから「MIDI」を動かせるのではないかと考えて、ダウンロードしてみました。以下備忘を兼ねて、ダウンロードしたサンプルコードをリスト形式で記載しておきます。

※これ以外に、「M5-SAM2695/src/」内の「M5_SAM2695.h」が必要なようです。

この「drum.ino」と「piano.ino」は、「SYNTH」の動作確認で使った「drum.ino」「piano.ino」と同じ名前になっていますが、コードの中身が違います。フォルダ名も同じなので、その違いに気づきにくいかもしれませんが、コードの中身をよく見ると「MIDI」用の設定が追加されていることがわかりました。紛らわしいので、それぞれ「drum_midi.ino」「piano_midi.ino」と名前を変更して使うことにしました。

先程は、「drum.ino」のコードを使って動作確認を試みましたが、今度は「piano_midi.ino」のコードを使って動作確認をしてみることにします。「piano_midi.ino」を開いてコンパイルしようとすると、「M5_SAM2695.h」が見つからないと言われてコンパイルに失敗するので、「src」の中に入っていた「M5_SAM2695.h」をダウンロードして、「piano_midi.ino」ファイルと同じフォルダ内にコピーしてから「→(コンパイル&書き込み)」をクリックしてみました。すると、エラーを出さずにコンパイルが成功して、Core Basicへの書き込みもできました。
#Core BasicとArduino IDEとの接続の設定(「ボード」と「ポート」)は、前回までの記事を参考にしてください。

この状態で、Unit-MIDIにアンプ内蔵スピーカーをつなぐと、プログラムしたとおりに音が鳴ったので、SAM2695を動かすことに成功していることがわかりました。次は、MIDIのコントロールができるかを確認します。前回紹介した、Behringerの「Pro VS MINI」を使って、MIDI信号が正しく出てきているのか確認してみました。Unit-MIDIのMIDI OUTとPro VS MINIのMIDI INをMIDIケーブルでつないでから、Core Basicの電源を入れると、Pro VS MINIが鳴り始めました。これで、無事にMIDIのコントロールができることがわかりました。プログラミングの手間を考えると、1曲丸ごとプログラムしてシーケンサーのように使うという使い方は実用的ではないように思いますが、「本物の電子楽器(語彙不足…)を鳴らせる」ことに、様々な可能性を感じます。

M5Stackを使ってみる

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年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年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月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年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年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. 「file(ファイル)」メニューから「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からリモートで動かす」

2024年12月14日土曜日

7.1 ch出力対応を謳ったICUSBAUDIO7D(USB-DAC)でスピーカーシステムを組んでみる

これまで、2.1 chアンプ(ZK-MT21YouTube動画)を使って左右スピーカーとサブウーファーの構成でいろいろな実験的なことをしてきましたが、自作スピーカーの数も多くなってきたのでもっと多くのスピーカーを同時に鳴らすシステムを組めないものかと思い始めました。そんなことを考えながらいつものようにAmazonを徘徊していると、StarTech.comというメーカー(「Made in Malaysia」と書いてありました)が販売している「ICUSBAUDIO7D」という7.1 ch出力対応のUSB-DACを見つけました。価格も安くて試してみたいと思ったのですが、対応OSはWindowsだけとのことで、しばらく悩んだ末に結局買ってみることにしました。
#自室で使っているPCは、MacとLinuxしかありません。このUSB-DACが動けばお買い得ですが、動かなければ…。これを「人柱精神」と呼んでいただければ幸に存じます。

届いた製品には英語のマニュアルが同梱されていました。使い方はそこまで難しくなさそうですが、7.1 chに挑戦すること自体が初めてなので念の為にネットで情報を探していると、StarTech.comのサポートサイトに日本語のマニュアル(←PDF)があったのでこれをダウンロードして使い方を確認しました。

購入前にわかっていたことですが、ICUSBAUDIO7Dにはパワーアンプが内蔵されていません。各出力にパワーアンプを接続するか、多チャンネル対応のパワーアンプを購入するかして、USB-DAC→パワーアンプ→スピーカーの順につなげる必要があります。別の方法としては、パワーアンプ内臓のスピーカーを複数台用意すれば使えることになりますが、私が作っている自作スピーカーは、パワーアンプを別に用意しているので、すでに複数台のパワーアンプがあります。問題は、電源や信号線などの配線が、どうしても複雑になってしまうことでした。

いろいろと問題を感じつつ届いたICUSBAUDIO7Dを試してみます。はじめにやったことは、MacBook Proとの接続です。付属のUSBケーブルで接続するとそのままUSB-DACとして認識されて、サウンドの出力デバイスとしては「USB Sound Device」として認識されました。この状態でICUSBAUDIO7Dのヘッドホンジャックにヘッドホンを挿して音楽を流してみましたが、まったく音が出ませんでした。

ならばと思い「FRONT」と書かれた出力ジャックにパワーアンプ+スピーカーをつなぐと、音声信号が出ていてスピーカーから音が聴こえました。これで、普通のUSB-DACとしては使えることがわかりました。続いて、他の出力ジャックを試してみましたが、全く何の反応もなく音声信号が出力されていないようでした。「サウンド設定」を開いても、ICUSBAUDIO7Dからの出力について特に設定できる項目が増えることもなく、入力デバイスにLine入力やMic入力、デジタル入力などの項目が増えているものの、出力側は「USB Sound Device」1つだけでそれ以外の設定変更はできないようでした。macOSでは、ICUSBAUDIO7Dは7.1 chで動作しないことがわかりました。

ならばLinux Mintで動かしている自作PCにつないだらどうだろうかと思ってつないでみたところ、「サウンドの設定」の中にデバイスとして認識されて、USB-DACとして使えるようになりました。ここまでは、MacBook Proと同じです。さらに「サウンドの設定」を詳しくみていくと、デジタルとアナログの出力(「CM106 Like Sound Device」となっている)の設定ができるようになって、「アナログステレオ出力 ▼」から5.1 chや7.1 chが選べるようになりました。全く期待をしていなかったので、興奮しながらいろいろと試してみました。結果として、5.1 chを選ぶとICUSBAUDIO7Dの「SURROUND」や「CENTER/BASS」からも音声信号が出力されて、7.1 chを選ぶと、さらに「BACK」からも音声信号が出力されるようになりました。(ただでさえ狭い部屋の中がすごいことになってしまったので、写真は残していません)
#すごいな!Linux Mint!感動した!

「サウンドの設定」の画面をスクショしたので貼っておきます。

この自作PCでDVDやBlu-rayを再生して、映画を観たり音楽を聴いたりすることがあるのですが、ICUSBAUDIO7Dを使うと7.1 chスピーカーシステムで映画を鑑賞することができるということになります。(部屋が狭いから現実的ではありませんが…)さらには、自作HTPCのようなコンパクトなPCを作って、リビングの大きなテレビ画面+7.1 chサウンドで映画を鑑賞することも可能ということになると思います。(夢のようだ!)\(^^)/

2024年6月16日日曜日

「micro:bitでフィジカル・コンピューティング」のためにいろいろなブレイクアウトボードを使ってみる

以前から、micro:bitを使ってロボットカーを動かすなどさまざまな実験をしてきましたが、簡単にいろいろなものをつないで試用するために地味に重要なのは「ブレイクアウトボード」でした。私の場合は、以前から秋月電子通商の「micro:bit マイクロビットブレイクアウトボードキット(AE-MBIT-BREAKOUT_V)」を使っていますが、自宅には他にも同じような機能をもつブレイクアウトボードをいくつか買ってあります。今回は、それらを紹介しつつ使用感の違いなどを比べてみたいと思います。

1つ目は、先ほど紹介した秋月電子の「AE-MBIT-BREAKOUT_V」ですが、1個650円で購入しました。縦型で安定感もあり、一番良く使っています。ブレイクアウトボードとして完成されている感があるので、ロボットの中に組み込むことはあまり想定されていない設計になっているように思います。私は、樹脂製のワンタッチスペーサをつけて使っていますが、スペーサではなくネジ止めで固定することも可能です。

このブレイクアウトボードは、micro:bitを挿して前面と背面にピンコネクタなどが接続できるようになっています。前面側には、「0」「1」「2」「3V」「GND」の二極ネジ端子台(ターミナルブロック)があり、背面側には、「P3」〜「P16」「3V」「P19」「P20」「GND」のピンソケットがあります。それぞれ二極ずつ挿せるようになっているので、接続するものの配置を工夫することもできます。(同時に2つのものをコントロールできるかどうかは試していません)

2つ目は、SparkFunの「Qwiic micro:bit Breakout」で、Switch Scienceで1個1,155円でした。シンプルで割り切ったデザインになっているので、ロボットの中に組み込むのには向いていると思います。スペーサ用の穴は2つだけなので、固定の仕方には工夫が必要かもしれません。

こちらのブレイクアウトボードは、ピンヘッダが1列についていて、左側から「GND」「GND」「3V3」「0」〜「16」「19」「20」と並んでいます。私が取り組んでいるロボットカーを動かすような用途であれば、このブレイクアウトボードが1番シンプルでわかりやすく、初学者向きなのではないかと思いました。

3つ目は、Kitronikの「Edge Connector Breakout Board for the BBC micro:bit」で、Switch Scienceで1個715円でした。エッジコネクタは自分でハンダ付けするタイプのもので、ハンダ付けが苦手でなければお買い得感はあると思います。ただ、教材としての使用を想定すると、ハンダ付けが必要な箇所が多いため、あらかじめハンダ付けされているものを選んだ方が幸せになれると思います。

こちらのブレイクアウトボードは、二極のピンヘッダがついていて、左側から「3」「0」「4」〜「7」「1」「8」〜「12」「2」「13」〜「16」「3V」「0V」「0V」と並んでいます。この並び方は、micro:bitの端子部分の並び方(入出力端子)と同じになっています。これをわかりやすい/使いやすいと思うか、そうでないかは意見が分かれるところではないかと思いました。

これらの試用をまとめている間に、「カードエッジコネクタ」だけを使えば、安価に目的に合った使い方ができることを教えてもらって、ちょっと目からウロコ状態になりました。調べてみると、いろいろなところで取り扱いがあるのですが、今回はSwitch Scienceで1個330円で購入しました。モータドライバICモジュールをカードエッジコネクタをつけてしまえば、ロボットカー作りに特化したブレイクアウトボードが出来上がってしまうのではないか、これで配線ごちゃごちゃ問題も一気に解決するのではないかと期待を膨らませています。(カードエッジコネクタのピンのピッチとユニバーサル基板の穴のピッチが合わないのが難点ですが…)

2024年5月17日金曜日

手軽に入手できるモータドライバICが「micro:bitラジコンカー」で使えるか試してみる

以前TB6612FNGを載せたモータドライバICモジュール(2個で1,499円)を使って、マブチモーター130同型のDCモータを動かしてラジコンカーを作ってみましたが、今回は、もっと安価なモータドライバーICモジュールをAmazonで見つけたので試してみることにしました。
#今回は、FT-DC-002タミヤユニバーサルプレートダブルギヤボックスで作った自作ロボットカーベースで動作確認しています。

micro:bitのプログラムは、ロボットカー側が以前に作ったものから「最初だけ」のアナログ出力を取り除いたものを使いました。これは、今回使うモータドライバICモジュールに、アナログ出力を受け入れるところがなく、電源入力が1系統(おそらくモータドライバICを動かす電源とモータを動かす電源が共通になっている)しかなかったためです。ラジコン側は、何も変更せずに同じものが使えます。電源は、micro:bitからの3Vは使えず、単4電池2本の電池ボックスを使って3Vを作り、モータドライバICモジュールにつなぎました。

1つ目に試したモータドライバICモジュールは、TC1508AというデュアルHブリッジドライバーICを載せたモジュールで、3個で599円(1個約200円)で購入しましたものです。
#後日、同設計でMX1508というICに載せ替えたものも見つけました。価格は12個で1,520円(1個約127円)でした。

この配線でFT-DC-002も自作ロボットカーベースも両方とも問題なく駆動させることができました。

2つ目は、1つ目のTC1508Aのモジュールと同じ設計で、HブリッジドライバICだけMX1616Hに載せ替えたモジュールで、6個で699円(1個約117円)で購入しましたものを使いました。
#datasheetが中国語しか見つからなかったので、Google翻訳で翻訳してもらって読みました。「MX」は、中国のMixicというメーカーが作った半導体であることを意味しているようです。

こちらも、問題なく駆動させることができました。

3つ目は、FBで教えていただいた、L9110SというHブリッジドライバICを2つ載せたモータドライバICモジュールで、5個で795円(1個159円)で購入しました。IC自体のデータシートは見つけることができましたが、このモジュールの情報が少なく画像データを見ながら試用しました。

見た目と構造が上2つとは違いますが、こちらはシングルHブリッジドライバーICを2つ載せたモジュールで、理論的には上2つと同じように使うことができるはずです。入力側のシルク印刷が「どうしてこうした?」な感じもしますが、問題なく駆動させることができました。

試用した3つのモータドライバICモジュールは、すべて問題なく使うことができました。今回もmicro:bitは、ブレイクアウトボード(以前から使っている秋月電子通商micro:bit マイクロビットブレイクアウトボードキット(AE-MBIT-BREAKOUT_V)」)に載せましたが、モータドライバICモジュール側の接続が簡素化されたため、線の数が減ってごちゃごちゃ感が多少改善されました。

課題として見えてきたのは、MOTOR-AとMOTOR-Bのつなぎ方をどう決めるかということ。「赤」を「+」、「黒」を「-」として考えた場合、モータ側の配線が、あらかじめ右用と左用のように線を逆にして配線しておくか、それとも左右関係なく同じ向きで配線しておくかによって、モータドライバICモジュール側へのつなぎ方を変えないと意図とは異なる動作になります。単純にどちらが良いと言えるものでもなさそうなので、どう決めていくか(あるいは決めないで試行錯誤のネタにするか)を考えなければならないと思いました。

2024年4月22日月曜日

安価なアンプICモジュールの使用感や音の違いを比べてみる

別のことで時間を使っていたために少し前のことになりますが、以前から取り組んでいたアンプICモジュールを使ったいろいろな実験の続きです。これまでは、安価なアンプICモジュールとしては定番とも言えるPAM8403(←Datasheet)が使われているものを主に使用していました。
#私が使っているものは、Amazonで見つけたかなり安価なアンプICモジュールで、6個入り999円(1個約167円)でした。

Amazonでは、PAM8403の他にも似たようなアンプICを使ったモジュールが販売されていて、使用感や音の違いを調べてみたいと思いました。今回購入したものは、PAM8610(←Datasheet)とTDA2822Mのそれぞれを載せたアンプICモジュールです。

PAM8403のときは、USB電源から5Vを供給していましたが、今回の2つを使うにあたって、電圧の違いによって動作が変化するのかも確認しようと思いました。そこで、かなり以前に購入していたYAZAWA(YZW)のACM1000という出力電圧を変えられるACアダプタがあったので、これを使って確認することにしました。ということで、比べてみた感想をまとめておきます。音源は、Linux Mintで動かしている自作PCからYouTubeの検証系動画で使われている音源を使いました。

〈PAM8403〉

  • 増幅された音量は、今回比べた3つの中で真ん中くらい。
  • 出力側の音量を上げすぎると、音がとぎれとぎれになって実用に耐えない。
  • 総評としては、使えなくはないけど、好んで聴くレベルのアンプではない感じ。
    ※音質的には残念なところはあるが、音の出方を確かめるという点ではそこまで悪くない。
  • チープなスピーカーと組み合わせて使うなら十分に役に立つ。
    ※そもそも安い(1個約167円)のだから多くを期待するべきではない。

〈PAM8610〉

  • 増幅された音量は、今回比べた3つの中で一番大きい感じ。
  • 1,000円を超えるアンプユニット(詳細は後日)と音量的には遜色がない。
  • 7.5V〜12V(7.5V〜15V対応)で安定して使うことができた。
    ※5V程度では、全く音が出ない。今回使ったACアダプタの上限が12V。
  • アンプICにはヒートシンク付いていて、動作時はほんのり温かいくらい。
  • ボーカルやトークの声ははっきりしているものの、低音域はあまり強く聞こえず、低音がしっかり聞こえるまで音量を上げると、今度は高音成分がきつく感じるようになる。
  • 総評としては、ぎりぎり常用可能なレベルだが、音楽を聴くのには向いていない。
  • 基板には、シルク印刷で「HW-210」とあり、様々なところで類似品が作られている。Amazonで2個998円(1個499円)だった。
    【参考】「EasyWordMall PAM8610」など

〈TDA2822M〉

  • 増幅された音量は、今回比べた3つの中で一番小さい感じ。
  • シルク印刷で1.8V〜12V対応となっているが、電圧の差で動作変化はあまりない。
    ※電圧が高いと、アンプICが非常に熱くなるので4.5V前後のあたりが一番良い感じ。
  • 初めて使用した際、+−を逆につないでしまってアンプICを焼きかけて、かなり焦った。(余談だね)
  • 実装されている部品点数がPAM8610のアンプICモジュールよりかなり少なく、表面実装部品が使われていない。
    ※改造ベースとして使っても面白いかもしれない。
  • 出力側の音量を上げると、音の輪郭がはっきりする(ボーカルやトークが聴きやすくなる)。低音域もしっかり聴こえるようになってバランスが良いと感じる。
  • 総評としては、音量の小ささに目をつぶれば、普段使いで問題なく使える。
  • 参考になるようなよい活用事例を見つけることができなかった。Amazonで1個732円だった。

ということで、実際に比べてみた感想でした。徐々に沼にハマっていく予感しかしないのですが、実際にもう少し実用的なアンプを購入してしまっています。オーディオ関係の価格は青天井なので、価格が高いものは無理だとしても、身の丈にあった価格帯でより良いものを探したり試したり作ったりしながら、もう少し楽しんでみたいと思います。

2024年4月13日土曜日

micro:bitからモータドライバモジュール(TB6612FNG)を使ってDCモータ(マブチ130同型)を動かせるかやってみる〜プログラムを作って完成

前回の続きです。FT-DC-002や自作ロボットカーベースをラジコンカーに仕立てて、モータドライバICモジュール(TB6612FNG)とmicro:bitマイクロビットブレイクアウトボードキットを使用)でラジコンカーを作るところまでは終わりました。

今回は、2つのmicro:bitにそれぞれ「ラジコンカー」と「コントローラ」のプログラムを流し込んでみます。MakeCodeを使って作ったプログラムは、以下のとおりです。備忘も兼ねて少し解説も加えておきます。

〈ラジコンカーのプログラム〉

モータドライバICでモータを制御するために、micro:bitからPWMでアナログ出力をしておく必要があります。それから、どちら向きに電気を流すか、または、流さないかを制御しています。デジタルで「1」は、電気を流すことを表し、「0」は、電気を流さないことを表しています。この電気を流すことによって、モータドライバICのモータ側の電気のON/OFFや正逆回転が制御されることになります。

〈コントローラのプログラム〉

micro:bitの傾きを検知して、停止、前進、後退、右回、左回の5つを制御するプログラムにしました。同時に、現在の状態を示す矢印(「↑」…前進、「↓」…後退、「←」…左回、「→」…右回、「−」…停止)を5*5LEDマトリクスで表示するようにしました。こちらのプログラムは、サーボモータで動かしたい場合でも共通して使うことができます。

FT-DC-002と自作ロボットカーベースで試してみましたが、問題なく動作してくれました。強いて問題点を上げるとすれば、やはり配線の複雑さですね。サーボモータのときのようにmicro:bitから直接制御できず、モータドライバICを挟まなければならないため、どうしても配線は複雑になります。モータドライバICが組み込まれたブレイクアウトボードやワークショップモジュールのようなものが出来上がるとラジコンカーを簡単に作ることができそうです。せめてもの対策として、ユニバーサル基板にモータドライバICモジュールを載せて、micro:bitのブレイクアウトボードに簡単に接続できるように工夫してみたいと思います。

2024年4月7日日曜日

micro:bitからモータドライバモジュール(TB6612FNG)を使ってDCモータ(マブチ130同型)を動かせるかやってみる〜ラジコンカーの作成

前回の続きです。FT-DC-002や自作ロボットカーベースをラジコンカーに仕立てます。組立・配線作業をする前に、DCモータ(マブチモーター130同型を使用←黄色のギヤボックスにはまっている、よくあるギヤ付きモータ)にバイパスコンデンサ(パスコン)をはんだ付けします。今回は、0.1μFのセラミックコンデンサを使いました。モータドライバICモジュール(TB6612FNG)とmicro:bitマイクロビットブレイクアウトボードキットを使用)の配線は以下のとおりです。

実際の配線は、以下の写真のようになっています。線が多くてどうしてもごちゃごちゃした感じになってしまいますが、わかりやすくする工夫は今後の課題だと思っています。

モータを動かす電源は、単4乾電池2本で3.0Vを用意しました。ブレイクアウトボード上のmicro:bitには、microUSBコネクタからも給電します。これは、micro:bit自体を動かす電源とモータを動かす電源を別に用意することで、効率よくモータを動かすことができるようにするためです。microUSBケーブルでの給電の他に、電池からの給電も可能です。その際は、電池ボックスを別途用意する必要があります。

この構成で、自作のロボットカーベース(タミヤダブルギヤボックスを使用)も問題なく動かすことができました。DCモータ自体は回転が速いので、ギヤボックスはどうしても必要になります。その点で黄色のギヤ付きDCモータはかなり安価なので、今後はFT-DC-002に付属していたもの(自宅にも在庫が豊富にある)と同様のギヤ付きDCモータを活用する方向で考えていきたいと思います。

次回は、いよいよプログラムの作り方をまとめていきます。MakeCodeを使ってプログラムを作ってmicro:bitに流し込んで完成です。

2024年4月2日火曜日

micro:bitからモータドライバモジュール(TB6612FNG)を使ってDCモータ(マブチ130同型)を動かせるかやってみる〜実験の下準備

以前から、「micro:bitでロボットカーを動かす」ことを教材化しようと個人的に研究をしていますが、これまで使ってきたものはServoモータを使用していることが多かったため、ディスカウントに限界を感じていました。安価で手に入るマブチモーター130)のようなDCモータ(自宅にも在庫が大量にある)を使うことができれば、かなりのディスカウントになります。DCモータを動かすためには、micro:bitで直接コントロールすることはできず、モータを動かすための電源とモータドライバICが必要はなずです。

過去にTA7291Sdatasheet)を使ったモータドライバICモジュールを作って、Arduinoやその互換機で動かしていましたが、このIC自体が1モータにしか対応していないため、これを2つのモータを動かすために使うとなると回路が大きくなってしまいます。(以前作ってみた1モータ+サーボステアリングなら使える可能性もありですが)そこで、たまたまAmazonで見つけたTB6612FNGという2チャンネルのモータドライバICを載せたモジュールを使ってみることにしました。
#購入時は、モジュール2個で1,499円でした。似たようなものでDRV8833というモータドライバICを載せたモジュールもあって、性能は若干落ちるようですがより安価なようです。

これを、FT-DC-002というアルミ筐体でDCモータを挟む構造になっているロボットカーキットやタミヤユニバーサルプレートダブルギヤボックス(ユニバーサルプレートと組み合わせるならツインモーターギヤーボックスの方がぴったりサイズです)とボールキャスターを組み合わせて作ったロボットカーベースに載せて動作実験をします。
#この自作ロボットカーベースは、スタジオMYUさんの「ミュウロボ」を参考にして作ったものです。

今回の作業は、サヌキテックネットさんの「DCモーターを制御する」を参考にしながら進めます。TB6612FNGモジュールは小さなブレッドボードに載せて、micro:bitはブレイクアウトボード(秋月電子通商の「micro:bit マイクロビットブレイクアウトボードキット」を使用:基板に「AE-MBIT-BREAKOUT_V」とシルク印刷されていた)に挿して、ジャンパワイヤーでつないで使うことにします。

ブレイクアウトボードに挿したmicro:bitをモータの制御に使ってラジコンカーを作り、もう一つのmicro:bitをラジコンカーのコントローラとして使います。見た目がごちゃごちゃした感じになってしまいましたので、もう少し整理してわかりやすくしていきたいと思います。

と、ここまででだいぶ情報量が多くなってしまいましたので、続きはあと2回に分けてまとめていきます。下のリンクリストからご覧ください。

2024年2月21日水曜日

ボリューム付きアンプモジュール(PAM8403使用)でいろいろなスピーカーを鳴らしてみる

以前学研大人の科学まるごと手作りスピーカーの本」で作った自作スピーカーをPAM8403(←Datasheet)というアンプモジュールで音を鳴らす実験をしました。このアンプモジュールには、ボリュームが付いていなかったので、音源側でボリューム調整をしなければなりません。ボリューム調整機能がない音源を使う場合は、予め音声信号出力の程度を測っておくか、つないだ上で覚悟を決めて音を出してみるかしかありません。(笑)

そこで、同じくAmazonで見つけた、ボリューム付きのPAM8403モジュール(GF1002)を使って自宅にあるいろいろなスピーカーを鳴らしてみることにしました。
#同じようなことをしている記事を見つけました。「PAM8403 GF1002 ミニアンプ

GF1002への配線は、音声信号にTRSケーブル、電源にUSB(5V)ケーブル、スピーカーは前回同様2ピンコネクタ(メス)ケーブルをそれぞれつなぎました。音の信号入力側の配線は前回と同様ですが、念のために以下にメモを残しておきます。

  • 赤…L側(Tip)
  • 緑…R側(Ring)
  • 銅…GND(Sleeve)

これを、適当な筐体に組み込んでみました。(完成品というより、とりあえず持ち運べる程度に収めたというだけです)

これを使って自作スピーカーから音を出してみると、問題なく音が出ました。このモジュールに使われているボリュームは、電源スイッチ付きなので、ボリュームを絞って更に回すと「カチッ」と音がして電源をOFFにすることができます。配線をつなぎっぱなしで電源をOFFにしておいて、必要なときだけ電源を入れて音を流すことができます。

これを使って自宅にあったいろいろなスピーカーを鳴らしてみます。ほとんどのものがDAISOなどで売られていたガジェットから取り出したもので、使っているうちに壊れたとか、試しに買ってみたものの使わなくて分解したとか、様々な理由で取り出したものばかりです。(元が何だったかはっきりとは覚えていません…)一応写真だけ載せておきます。

というわけで、全部音が出ました。これらをスピーカーとして使うには、むき出しのままというのもどうかと思いますので、適当にエンクロージャーを作って入れてみたいと考えています。しかも、100円ショップなどで入手できる安価なもので作れたら面白なぁと。続きはそのうち。

2024年1月27日土曜日

ワイヤレス対応の6 key+ダイヤルのミニキーボードを使ってみる

以前SIKAI CASEの4 keyミニキーボードを楽器のインターフェイスのように使ってみました(Scratchプログラムも作りました)が、このミニキーボードはUSBケーブルをつながなければならないため、楽器のインターフェイスとしての操作性(演奏性)を損なうと思い、ワイヤレスに対応しているものを探していました。否、ワイヤレスのものがあることは知っていたのですが、有線のものに比べて高額なことに頭を悩ませていたのでした。そんな折、Amazonのタイムセールで安くなっていたワイヤレス対応のミニキーボードを見つけて即買いしてしまいました。

購入したのは、Bluetooth/2.4G/USB接続に対応した6 key+ダイヤルスイッチを搭載したミニキーボードです。このメーカーのミニキーボードは、キーの設定をするのにWindowsで動く「MINI keyboard」というソフトが必要だったですが、調べてみると「SIKAI CASE マクロキーボード専用ソフトウェアの使用説明【日本語】」という記事が見つかり、その中にMac版のソフトが公開されていました。しかも、以前に使ったWindows版のソフトに比べて、格段に使いやすくなっていました。
#このミニキーボードは、いわゆるマクロキーボードでキーの設定がキーボード側に保存されます。一度設定をしてしまえば、OSの種類に関係なく使うことができます。

新しい設定ソフトを使って、各キーの設定を行うことにします。ミニキーボードをUSB-CでMacに接続し、設定ソフト(MINI keyboard)を起動します。 「Reading Device」ボタンをクリックしてデフォルトのキーキー設定を読み込んだら、「clear」もしくは「Clear All」ボタンをクリックして、元の設定を消去してから新しい設定を入力します。Mac(PCの場合も同じ)のキーボードではなく、画面上のキーボードで入力しなければならないところが注意点です。いろいろ悩んだ結果、シンプルに以下のような設定にしました。

1
2
3
- +

4

5

6
Space

以前の4 keyミニキーボードのときは「1」「2」「4」「8」に設定したので、同じように「1」「2」「4」「8」「16」「32」としようかと思いましたが、Scratchで「〈( )キーが押された〉」を使う場合には、2桁以上の数字は扱いにくくなるのでやめました。このミニキーボードには、3パターンまで設定を記憶させておくことができるので、別のパターンを記憶させておいてどのパターンが使いやすいか実験することもできそうです。
#ついでに、以前の4 keyミニキーボードもこの設定ソフトで設定ができるのか試してみましたが、残念ながら対応していないようでした。

ワイヤレス接続では、2.4G接続に対応しているとのことなのですが、MacもLinux Mintも現段階では接続がうまくいきませんでした。(2.4GのUSBドングルは、キーボードとして認識されているようなのですが…)Bluetoothでの接続は問題なくできた(昨年末に苦労した甲斐がありました)ので、ワイヤレスの方はBluetoothでやることにしました。

4 keyのミニキーボードに比べて少々重いのですが、楽器(プログラム)のインターフェイスとしてどこまで使えるか試してみたいと思います。