前回でNSP2340Aの概要&期待は説明しましたので、ここからは実際に使い方を確認していきます。
NSP2340Aの使い方ですが、大変ありがたいことに、以下で丁寧にまとめてくださっています。
そのため、以下は、基本的には上記のページの内容をなぞるだけになりますので、上記のページで事足りましたら、以下は特に見ていただかなくても大丈夫だと思います。差分は、動作確認で使用しているマイコンぐらいじゃないかなと思います。
まずは音声データの準備です。これまで使用してきたDFPlayerやMP3ボイスモジュールは、その名の通りMP3ファイルを使用していましたが、NSP2340AではWAVファイルを使用します。ということで、手持ちの音源をWAVファイルに変換する必要があります。ここではMac用のAudacity (ver.3.7.7) で変換します。
上記記事に依りますと、wavファイルの形式は
- モノラル
- サンプルレート16kHz
- 符号付き16-bit
である必要があるとのこと(※実際、こちらでダウンロードできるサンプルプロジェクト内のサンプルデータもこうなっている)なので、条件に合うように変換していきます。
まず、変換したい音声ファイルをドラッグ&ドロップ。
“ファイル”メニューから、”オーディオをエクスポート”。
- 形式: WAV
- チャンネル: モノラル
- サンプリング周波数: 16000Hz
- エンコーディング: Singned 16-bit PCM
に設定。
これでファイル変換はOKのはず。
続いて、NSP2340Aに音声データを書き込んでいくのですが、ここで残念なお知らせが。少なくともこの記事の執筆時点では、NSP2340Aに音声データを書き込むためのソフトウェアがWindows版しか提供されていません。私は通常Macユーザなので、これはかなり痛いです。が、奥様&子ども用にWindows PCも一台所有してはいるので、大変面倒ですが、書き込み作業だけはWindows PCで実施します。
まず、ソフトをこちらからダウンロード。”NSPPlayListEditor”を解凍したら、同封されている”セットアップ手順.txt”に記載の手順に従ってインストール。インストールが完了したら、”NSP PlayList Editor Tool”を起動。起動したら、”Create New Project”。”Chip Series”を”NSP2″にして、”Chip Item”で”NSP2340A”を選択。”Project Name”は適当に。
“OK”を押すと”Settings”の画面になるので、”Update firmware via UART”にチェックを入れて、”UART Mode”にチェックを入れて、”Baud rate”をとりあえず”115200″にしておきます。
編集画面が表示されてたら、画面左のリストに、今回書き込みたい音声データをドラッグ&ドロップ。
中央のタブが”Sound Editing”になっていることを確認して、とりあえず音声データを一つずつドラッグ&ドロップ。
こんな感じになりました。ところで、実は左のリスト、初期状態だとファイル名しか見えていませんが、リスト右端を右に引っ張ってやると、隠れていた項目が見えます。
こんな感じ。”Level0″という表示が見えていますが、ここが”Sound Quality”で、音声データの品質を決めているようです。Level0の状態で各データを書き込むことにすると、右下に出ているように、容量としては43.42%使用済みで、あと296秒分ぐらいのデータは入れられるようです。今回はこれ以上のデータを入れるつもりはないので、各音声データを”Level5″に変えてみます。とりあえず、右側に入れたものは右クリックで一旦消します。
ダブルクリックすると、品質を選べるようになります。
全部”Level5″にして右側に入れ直すと、今度は使用済み容量が75.19%で、残りが130秒分になりました。”Level0″のときと比べてデータの使用量が大きくなっているのがわかるので、品質としては”Level0″が最低、”Level5″が最高、という理解で大丈夫だと思います。
ここまでやったら、上部の”Project”メニューから”Build Project”を実行。すると、書き込み用のファイルが生成される…はずなのですが、特にどこに出力したとかも表示されず、ヌルッと終わります。
作成されたファイルは、ツールのインストール時に作成されたフォルダ内に今回のプロジェクト名称のフォルダができており、そこに入っています。
ここからはいよいよ書き込みですが、その前に、書き込み機とNSP2340Aを接続しておきます。
こんな感じ。VDDはVDDと、GNDはGNDと、TXはRXと、RXはTXと、の接続になります。繋いだら、書き込み機をUSBでPCに接続して、インストールされたソフトの一つの”NuISP UART”を立ち上げます。
こんな画面になるので、”Connection Interface”で、UARTと、書き込み機が接続されているCOMを選択。その後、右の”Connected”ボタンを押すと、接続が始まります(※なぜ”Connect”ではなくいきなり”Connected”なんだろう…)。接続が始まってから何度かNSP2340A基板のリセットボタンを押すと、以下のように接続完了表示になります(※どのタイミングでリセットボタンを押せばよいのかよくわからず)。
その後、”Load File”の”Flash”で、先ほどのBuildで作成されたファイルの一つである”VP_CpuIf_NSP2340.bin”を指定。さらに、”Config Bits”の”Setting”で、こちらも同様に作成されたファイル”VP_CpuIf_NSP2340_CONFIG.bin”を指定。場所は以下をご参照ください。
正しくロードされると、以下のような表示になります。
ここまでできたら”Start”で書き込み開始。完了すると、以下のような表示がでます。今回は3分弱で完了しました。
ここまでできたら、ソフトは終了してNSP2340Aを書き込み機から外します。
モジュールとしてはこれで準備完了のはずなので、ここからはマイコンと接続して、プログラムで音声再生可能かを確認していきます。マイコンは、できるだけ低消費電力環境にしたいので、あんまり使っている人はいないかもしれませんが、先日まで動作検証をしていたATtiny1616を使用します。サンプルプログラムは以下のようにしてみました。
#define PIN_SW PIN_PA6
#define ON LOW
#define OFF HIGH
uint8_t sw = OFF;
uint8_t prev_sw = OFF;
uint8_t num_sound = 1;
void play_sound(uint8_t num_sound){
Serial.write((uint8_t)0x7F); //再生コマンド
Serial.write((uint8_t)0x00); //音声番号(上位)
Serial.write((uint8_t)num_sound); //音声番号(下位)
Serial.write((uint8_t) ~(0x7F + num_sound));//チェックサム
}
void setup(){
Serial.begin(115200); // PB3がRX、PB2がTXになる。ボーレートはNew ProjectのSettingsで指定した値
pinMode(PIN_SW, INPUT_PULLUP);
}
void loop(){
sw = digitalRead(PIN_SW);
if(prev_sw == OFF && sw == ON){
play_sound(num_sound);
num_sound++;
if(num_sound >= 5){
num_sound = 1;
}
}
prev_sw = sw;
delay(10);
}シンプルに、ボタンを押すたびに以下がループして再生されます。ガイアメモリ作成時に用意した音声データをサンプルとして用意してみました。
- ジョーカー!
- ダブルドライバー装填音
- ダブルドライバーオープン音
- 変身音
本来は変身音の前に「ジョーカー!」が鳴るはずですが、今回はサンプルということでご容赦ください。
配線は以下のようになります。ATtiny1616のRX(PB3)をTXに、TX(PB2)をRXに接続。
ではではいざ、動作確認です。どきどき。
おおお、一発で動きました!珍しい!
ということで、「とりあえず動かす」までは辿り着きました。記録をとりながらなのでなかなか大変でしたが、慣れればそこまで大変ではなさそうです。また、ひょっとしたら、以下の専用書き込み機を使えば、手順としてはもっと簡単になるのかもしれません。知らんけど。
次回、もう少し使い方を深掘りしていきます。
コメント