先週行った久留米おもちゃ病院で、クリスマスおもちゃの修理用の置き換えCPU基板を要望されました。
ピエゾセンサーがあり、手を叩く等で音声が入力されると起動してモータを回し、おもちゃが動くのと同時にクリスマスソングを再生する機能があるおもちゃらしいです。
ATITNY202/402を使うとすると、つつじが丘おもちゃ病院の大泉さんの踊る獅子舞プロジェクトが
ずばり当てはまりそうです。
さきにATTINY402でオルゴール再生はテストして動いたので、先行テストとしてそのコードを使って
音声再生を試してみましょう。
まずは、大泉院長の最新のこちらのプロジェクトからプロジェクト一式をダウンロードします。
tinyAVR電子オルゴールVer1_2(tiny402をサポート)
ATTINY402に電子オルゴールの書き込みテスト の時と同じ手順で、デフォールトの設計が
外部フラッシュメモリ(W25Qxx)より音声データを読みだしてPCMで音声再生を行う設定にします。
TINY402は8ピンしかないので、電源/GNDに2ピン、メモリとのSPI IFに3線(SOとSIは共通に接続します)、音声の出力に1ピンで6ピンを消費します。
今回HV書き込みができるようになりましたので、起動用のスイッチ SW0をUPDI信号線のPA0に
アサインすると、空きピンはPA6のみになります。(このピンは後でモータ起動用に使います)
ATMEL STUDIOでダウンロードしたファイルのorgel_SW_402フォルダ内にあるorgel_SW_402.atsln
(ソルーション)ファイルを開きます。MicrosoftのVS Codeを使っているので、この辺に慣れた人は
なんとなくわかると思います。(ちなみに自分は慣れてないですw)
main.c はSLEEPとスイッチ(SW)のみEN(イネーブル)の設定です。
orgel_cfgは VOICE_S 1、 PART_N 0 に戻します。(外部フラッシュで音声再生の設定)
頭の#define BTL もデフォールトのまま、0にします(正出力のみ=シングル出力)
次に音声データの作成と音声HEXファイルのフラッシュメモリICへの書き込みです。
まずは、用意した音声データをWAV形式で変換するフォルダにコピーします。
MP3 から WAV への変換および、サンプルレートの変換はAudacityを使うと便利です。
Adafruitのこの資料に、詳細が書かれています。Convert Sound Files in Audacity
今回は、同じフォルダ階層にvoice_SANTAというフォルダを作って必要なファイルを
voice_TRUTHよりコピペしてきます。
変更が必要なのは、wavlixt.txt とwav2hex.batの2つのみです。
今回は、16bitでサンプルするので、メモリに入るのはこの3曲です。
大泉さんの説明に従って、batファイルを書き換えます。 今回 16000(16ksps) 8(8bit/データ)
に設定します。サンプルは8kより16kの方が音質はいいですが、メモリの容量とのバーターになります。
このフォルダ上で、batファイルをダブルクリックすると、音声データのHEXファイルが生成されます。
W25Q64_SANTA フォルダを開いてみると、13735KB(13MB)で、W25Q16の64Mbit =8MB
をオーバーしているように見えます。でも、インテルHEXはチェックサムやらアドレスやらの
オーバヘッドがあるので、注意が必要です。
実際の容量は下記のvos_mac.txtで分かります。vos_mac(0x390ab5,0x1396e5,16000)の0x390ab5と0x1396e5を足した値、0x4CA19A(5022106 byte ≒ 4.79MBになります。
さて、このVOS_MAC値はTINY402が複数の音声データを順次アクセスするためのINDEX値として
プログラム内に登録が必要です。
さきほどのmain.c に下記のようにvos_mac.txtの値をコピペして、Build → Rebuild Solutionでコンパイルを行います。
これで、プログラムの準備はできました。
次に、TL866II書き込み器を使って、フラッシュメモリ W25Q64JV(別の品番でもOK)に生成した音声データを書き込みます。
起動画面でSelect Device WinBond → W25Q64JVを選択します。
次に書き込みファイルを読みだします。
先ほどwav2hex.batで作成したHEXファイルは、voice_SANTAのフォルダに入っているので
それを選択して、読み出し を行います。
次に、デバイスをZIFコネクタの最上段にセットして、書き込みを行います。
書き込みを行ったら、音声データの準備は完了です。お疲れさまでした。
さて、ここからいよいよ回路をブレッドボードに組み立てて動作確認をしますよ
ブレッドボードに上に、下図にしたがって配線を行います。
ここから先は、PART2にしますね。
次回予告です。 このように出来上がりました。
動作している様子は、下記のYoutubeで確認できますよ。
本日もお疲れさまでした。