ラズパイ Picoで 自作のUART MIDI I/Fをテストする
こんばんは!!
蒲郡のラグーナテンボスに行きました
いよいよ梅雨明けですね!!
それでは本題です
今回の目的
自作 1 のMIDIインターフェース 2・3 の動作確認をする
はじめに
以降のチェックでハードウェアに不具合が見付かれば 物を確認・修正して ステップ1に戻って確認を進める
チェックの過程で Pico を壊すこともあるかもしれない
それも疑いながら進める
ステップ1:ハードウェアのチェック
Picoにつなげる前に はずしやすい部品 4 を はずしておく 5
- 目視 6 で配線ミス・ハンダ付け不良(オープン、ショート)のチェック
- テスターで配線ミス・ハンダ付け不良(オープン、ショート)のチェック
- 5V電源ライン、3.3V電源ラインとGND間のショートなきことをチェック
を実施する
1,2は 全部のチェックはやりきれないので 目視で見える範囲、テスタープローブで触れる範囲をチェックする
3はPicoを壊してしまうかもしれないので念入りに
ステップ2:テストプログラムの準備
テストプログラム 7 を書いて ノーエラーでビルドできるまでコードのデバッグを実施する
ステップ3:UART TX-RX ループバックテストでプログラムのデバッグ
MIDI I/F基板は接続せず 8 に UART1 の TXピン(GPIO4)とRXピン(GPIO5)をジャンパーワイヤで接続してテストプログラムを実行する
テストプログラムのキャラクターコンソール 9 表示
MIDIデータ表示行 先頭の8桁の数字は RP2040の64bitフリーランカウンター 10 の下位32bitを読み出して 100us 11 の桁に切り上げて表示している
プログラムの動作が止まっていないか 時間表示の更新の有無で判断する
上は 音名C(ノート番号 0x30) D(0x32) E(0x34) F(0x35) G(0x37) のノートオン・ノートオフを受信して表示している例である
疑似的なMIDIデータの送信は 音名を割り付けたキーボードのキー(z
x
d
c
f
v
b
h
n
j
m
,
)を押すとノートオンが送出される
スペースキー
を押すと 最後の音のノートオフが送出される
この UART TX-RX ループバックテストで プログラムのデバッグを十分にしておく
ステップ4:MIDI I/Fを Pico に接続する
3.3V電源ラインの電圧 12 をテスターで測定しながら I/F基板を接続・組み立てをする
一回一回 Picoの電源を切って(USBケーブルを抜いて)基板・フォトカプラ・MIDIコネクタを各々に取り付けながら 電源電圧チェック 13、テストプログラム起動チェック 14 を繰り返す
I/F基板上で UART TX-RX を接続してループバックテストもしておく
最後に ジャンパプラグ 15 を取り付ける
ステップ5:MIDI出力で音源モジュールを鳴らす
DIN 5pinのMIDIケーブルで I/FのMIDI OUTから音源モジュールに接続する
結果
音名を割り付けたキーボードのキーを押すと 送信データの通りに音源モジュールが発音した
MIDI送信回路は動作しているようである
ステップ5:MIDI DIN 5pinケーブルでループバックテスト
I/FのMIDI OUTからMIDI INにループバック接続する
結果
送信データの通りにキャラクターコンソールに受信データが表示された
MIDI受信回路は動作しているようである
参考:MIDI受信回路の出力波形
ちゃんとしたオシロではない 16 ので 参考程度に見てください 17
UART信号からの受信データのデコードをハンドでざっくり実施
結果のまとめ
今回制作した自作のMIDI I/F は 送信回路・受信回路ともに動作している 18
次回は テストプログラムの説明
ソースコードおよび関連ファイルを示す
- パーツ箱の手持ちの部品を使って組み立てたもの(フォトカプラと変換基板は新規に調達)↩
- MIDI I/Fのハードウェアは別記事で説明する↩
- MIDI I/F用に UART1 を使用(UART0 は 標準入出力に割り当て)↩
- フォトカプラ、DIN5pinコネクタとジャンパープラグ2個↩
- 不具合時に切り分けがし易いようにする またテスターの抵抗値測定でフォトカプラに電圧がかかるのを避けたい↩
- 視力の低下で細かいところが見えづらいので 拡大鏡を使用↩
- ソースコードや関連ファイルは別記事で投稿する↩
- 自作ハードウェアはきちんと動くかはまだわからないので プログラムデバッグ時の問題切り分けのため↩
- VS Codeのシリアル モニター または Tera Term が使える↩
- RP2040 Datasheet (p.537) 4.6. Timer↩
- MIDIデータ(31250 kbps, データ長=8 bit, Startビット=1 bit, Stopビット=1 bit, non-parity)は 320usで1byte送出なので 100us単位くらいで表示すれば MIDIデータの受信時間の目処が付くはず↩
- ここで使っている Pico の 3.3V電源電圧は テスター読みで 3.25V だった↩
- 電源電圧値が異常であったら すぐにPicoの電源を切る(USBケーブルを抜く)↩
- テストプログラムの初期画面が表示されなかったり 時間表示の更新が止まっていたら すぐにPicoの電源を切る(USBケーブルを抜く)↩
- ジャンパプラグは UARTのTXピン(GPIO4 or GPIO8)、RXピン(GPIO5 or GPIO9)の接続を選択するスイッチにしてある↩
- 新しいオシロスコープも欲しいが これで十分なのかもしれない↩
- 水色の線が見たい信号 (ピンク色の線は表示が消せなくて困っている)↩
- 今回のテスト条件下での動作確認であって 他のMIDIデバイスとの互換性は追加確認要↩