
本日の成果
・ブレッドボードに乗ってるMP3サウンド基板 [JQ6500] を、
・micro:bitにシリアル接続(9600bps)し、
・格納ファイル番号でMP3ファイルを演奏させた。
・A+Bボタンで演奏途中でも停止させることも出来るようになった(昨年はムリ)
・プログラムは こちら
・番号指定で再生するプログラムは こちら。
Aでーー、Bで++、A+B送信、ロゴ長タッチで順番演奏
先に作成したGPT対話のメモ記事を元に、回路を作リ直して
micro:bit側の送信をP12、受信をP2 にして演奏させてみた。
一発で動きました。感動するとともにGPT頼りになるなぁと改めて見直した1日でした。
次の写真が 昨年の苦労の成果 。その差歴然

昨年はまだChatGPTで ここまでは実現できなかった。
AIすごい進化です。
ところで、GPTがまたまた宿題を出してきた。
Busy端子をmicro:bitの入力ピンへ繋ぐと、
「音が鳴り終わったら次の演出へ」
ができる。
例えば、
1 「ゲームスタート!」音声。
2 BUSYがOFFになる。
3 その瞬間にターゲットが動き出す。
という、ゲームセンターっぽい演出が作れる。
駅の自動アナウンスとかに使うと、ますますウケ狙いが可能になるw
ただし、レベルシフタあるいは次のような分圧回路があったほうが吉
JQ6500 BUSY ──10kΩ──┬──→ micro:bit P8
│
20kΩ
│
GND
GPT君、この件を言い忘れていたようだ。アブねぇ
ところで、
※この基盤内臓のプログラムは、PC側に複写しプロパティから「Win7互換モード」設定にしたら、動き出した。
なお、書き込みボタンを押して数十秒してからプログレスバーが伸びだすので、ゆっくり待ちましょう。

なので、以前のWin7機導入は不要です。
海外からアプデされたExeを入手するまでもなかった。
(JQ6500_English_MusicDownload_V1_2a.zip)
ソース
// JQ6500 サウンド基板制御 2026/8/23
//
// micro:bit
//
// Pin1(TX) をJQ6500の RX へ
//
// Pin2(RX) をJQ6500の TX へ
//
// クロス接続する。
input.onButtonPressed(Button.A, function () {
演奏(1)
basic.showNumber(1)
})
input.onButtonPressed(Button.AB, function () {
JQ6500.stop()
basic.showIcon(IconNames.No)
})
input.onButtonPressed(Button.B, function () {
演奏(3)
basic.showNumber(3)
})
function 演奏 (曲番号: number) {
JQ6500.playFile(曲番号)
}
/**
* // JQ6500 サウンド基板制御 2026/8/23
*
* //
*
* // micro:bit
*
* //
*
* // Pin12 をJQ6500の RX へ
*
* //
*
* // Pin2 をJQ6500の TX へ
*
* //
*
* // (TX/RX クロス接続する。)
*
* Share
*
* https://makecode.microbit.org/_6mvR8H8WHUeM
*/
basic.showIcon(IconNames.EighthNote)
serial.redirect(
SerialPin.P12,
SerialPin.P2,
BaudRate.BaudRate9600
)
namespace JQ6500 {
export function play() {
serial.writeBuffer(hex`7E020DEF`)
}
export function stop() {
serial.writeBuffer(hex`7E020EEF`)
}
export function next() {
serial.writeBuffer(hex`7E0201EF`)
}
export function volume(v: number) {
let b = pins.createBuffer(5)
b[0] = 0x7E
b[1] = 0x03
b[2] = 0xA7
b[3] = v
b[4] = 0xEF
serial.writeBuffer(b)
}
export function playFile(n: number) {
let c = pins.createBuffer(6)
c[0] = 0x7E
c[1] = 0x04
c[2] = 0x03
c[3] = (n >> 8) & 0xFF
c[4] = n & 0xFF
c[5] = 0xEF
serial.writeBuffer(c)
}
}
basic.pause(500)