Spresenseで電子工作の幅を広げよう

Spresenseで電子工作の幅を広げよう!
第2回:Spresenseでハイレゾ音楽プレーヤーをつくってみよう!

こんにちは、ヨシケンです!
ソニーのSpresenseを使った電子工作の第2回、今回からはいよいよSpresenseならではの機能を使って、面白いモノをつくっていきたいと思います。
まずは、ソニーが出しているのですから、オーディオ関連のハイレゾ音楽プレーヤーをサクっとつくっていきたいと思います!
前回の記事はこちら:第1回 Spresenseとは?
 
1

今回の記事で必要な物一覧

・Spresenseメインボード
Spresense

・Spresense拡張ボード
spresense2

・小型スピーカー、又はイヤフォン、ヘッドフォン
(イヤフォン・ジャックで使えるアンプ付きのこちらを使っています。)

・小型リチウムポリマーバッテリー(860mAn)と電源ソケット
(※注意:取り扱いに十分気をつけて自己責任でお使いください)
b

・Micro USBケーブル
・Micro SDカード

 

今回の記事の流れ

1. Spresense 拡張ボードとの接続
2. ハイレゾデコーダ、サンプルスケッチでの音楽再生
3. 小型音楽プレーヤー風にしてハイレゾを聴いてみる
4. まとめ

1.Spresense拡張ボードとの接続

前回は Spresenseの基本、メインボードを使いましたが、今回はオーディオ関連を扱うために拡張ボードを接続します。拡張ボードは、メインボードに載っていない、オーディオジャックとSDカードスロットを装備しています。

2

それでは、拡張ボードのコネクタ部分にメインボードを載せて、付属のピンで固定します。これだけでメインと拡張部分を連携して動かす事ができます。
3

コネクタ及びピンがカチっというまで留めると、このようにメインボードと拡張ボードが一体化して相互につながるようになります。
4

次に必要機器を拡張ボードにセットしていきます。
まずは小型スピーカーのプラグを、拡張ボードの3.5mmジャックに差します。
次にMicro SDカードを用意します。SDカードに、ハイレゾ音源の音楽ファイルを保存するため、パソコンに差します。
5

Spresenseが再生できるハイレゾ音源は、現在のところWAVフォーマットになります。テストで再生してみるためにそのサンプルを入手しましょう。例えばこちらのONKYOのサイトで、ハイレゾ音源の各フォーマットのサンプルをダウンロードできるので、好きな音源を取得してみてください。
e-onkyoの無料ハイレゾ音源サンプル
6

とりあえず、このマーラーさんの交響曲のWAVフォーマットをダウンロードし、HiRes1.wavという名前を付けてSDカードの直下に保存します。
7

ファイルをSDカードに保存できたら、拡張ボードのSDカードスロットに差し込みます。そしてパソコンとメインボードをUSBケーブルでつなぎます。
8

まず、パソコン側でArduino IDEを立ち上げて、ファイル > スケッチ例 > Spresense用のスケッチ例内のSDHCI から、UsbMscというスケッチを選びます。
これはSpresense上のSDカードを認識するスケッチですので、これをSpresenseに書き込みます。
書き込みが完了したら、シリアルモニタを立ち上げます。するとそこに、”USB MSC Prepared!”のメッセージが出たら、SpresenseでSDカードが認識できている証しです。
9

その後、一度メインボードからUSBケーブルを抜いて、拡張ボード側のUSBポートとパソコンをつなぎます。
そうすると、Spresense拡張ボード経由でSDカードをディスクとして認識し、中を見る事ができるようになります。
10

これでSDカード内のファイルが確認できると(写真ではパソコン側のSDというディスク内)、メインボード、拡張ボード、SDカードが互いに接続できているのが分かります。

2. ハイレゾ・デコーダ、サンプルスケッチで音楽再生

次に、SpresenseでハイレゾWAVファイルを再生できるように、デコーダをインストールします。
と言っても、Spresense Arduino Libraryの中にあらかじめデコーダが用意されているので、それを選んでSDカードに書き込むだけです。

拡張ボードにUSBケーブルが接続されてる方は、メインボードの方につなぎ直します。
Arduino IDEから、ファイル > スケッチ例 > Audio > dsp_installer の中に、wav_dec_installerがあるので、これを適用します。
11

Spresenseへの書き込みが完了したら、シリアルモニタを立ち上げます。
モニタ中にメッセージ“Select where to install WAVDEC?”が出るので、デコードファイルの書き込み先を、[1] SD Cardを選びます。
12

そうするとWAVDECというデコードファイルが、SDカードの中に書き込まれます。(後でSDカードの中を見てみるとこのようになっています。)
13

音源となるSDカード、再生するスピーカーが設定できたので、Spresense Libraryから音楽再生用のサンプルスケッチを使って、サクッとハイレゾ再生してみましょう。

再度Arduinoのメニューから、ファイル > スケッチ例 > Audio > application の中のplayer_hiresを選びます。
14

このスケッチ中後半に再生ファイル名を指定する所があるので、それを自分のファイル名に変更します。

myFile = theSD.open(“HiRes1.wav”);

もし音源のビットレートが、192kHz/24bitの場合には、以下も変更します。

AS_SAMPLINGRATE_192000

(e-onkyoの場合は、96kHz/24bitなので、元のままで大丈夫です。)
15

そしてこれをSpresenseに書き込み、シリアルモニタを立ち上げます。
16

そうすると、Initialization, Open! そしてPlay! となり、マーラーの交響曲が流れるではありませんか!ハイレゾ音質のクオリティかどうかは、スピーカーの関係や、聴き比べをしないと分かりづらいかもしれませんが、とにかくいい音楽が聴けました!

3. 小型音楽プレーヤー風にして聴いてみる

最後に、そのままだとあまりに無骨なので、Spresenseの空箱を使って小型音楽プレーヤー風にします。

まず全体を小型化するため、メインボードへ小型のリチウムポリマー充電池をつなげるようにします。メインボードには電源端子(左写真の右上+−の記号のある部分)があるので、そこに電源ソケットをはんだ付けします。
17

Spresenseには回路が組まれていますので、電源ソケットに電池を差し込むだけで、メイン、拡張ボードの両方に給電できています。さすが低電力のSpresenseだけあって、このような小型バッテリーでも数時間は持ちます。
18

ここから先は電子工作というよりもただの工作ですが、ちょうどよかったのでSpresenseが入っていた空箱をケースにしています。
メインボードが見えるくらいの大きさに四角く切り取って、正面からLEDやリセットボタンが見えるようにします。
箱の上には、イヤフォンジャックの穴やSDカードが抜き差しできるようなスペースを開けています。
19

あとは両面テープなどで、Spresenseメインボード、拡張ボードと、バッテリーをセットします。
USBケーブルも差せるように下にも穴を開けています。
20

表から見るとこのような形になりました。箱上部からSDカードを入れ替えたり、下部からUSBケーブルでパソコンとつなぎ、音楽を変更したりできるようにしています。

spresense

ではメインボードとパソコンをUSBでつないで、サンプルスケッチplayer_hiresを少しだけ変更します。

最初のsetup()部分で、メインボード上のLED(LED0から4まで4つ付いています)を使えるよう追加します。

void setup()
{
pinMode(LED0, OUTPUT);
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);

また中ほどの音楽生成部分(Play!と記述されている部分)に、以下のようにdigitalWriteをHIGHにしてLEDを点灯させます。

puts(“Play!”);
digitalWrite(LED0, HIGH);
delay(100);
digitalWrite(LED1, HIGH);
delay(100);
digitalWrite(LED2, HIGH);
delay(100);
digitalWrite(LED3, HIGH);
delay(100);

最後に、音楽が終わった段階(Main player File End!の部分)で、以下の様にdigitalWriteをLOWにして、音楽が鳴っている間だけLEDを点灯させる様にします。

printf(“Main player File End!\n”);
digitalWrite(LED0, LOW);
delay(100);
digitalWrite(LED1, LOW);
delay(100);
digitalWrite(LED2, LOW);
delay(100);
digitalWrite(LED3, LOW);
delay(100);

この変更をplayer_hires_ledなどと名前を変えて保存し、Spresenseに書き込みます。

さあそれでは聞いてみましょう!音楽が流れている間は、緑色のLEDが4つ光ってそれを教えます。
※以下動画は著作権保護の観点から、音声なしでお送りしています。

4. まとめ

今回はソニーのSpresense拡張ボードを使って、簡単にハイレゾ音源を再生してみました。
拡張ボードに、SDカードスロット、オーディオジャックに、ハイレゾデコーダが始めから付いているので、とても簡単にできたのではないかと思います。
Spresenseの売りは、低電力でもあるので、小さなバッテリーでもかなりの時間再生ができました。いろいろなモバイル機器をつくるのに役立てるのではないかと思います。

次回は、ロームから出ているSpresense用のアドオンボードを使ってみたいと思います。センサでの計測などSpresenseでできる事を増やして、電子工作を行なっていきたいと思います。
お楽しみに!

(ヨシケン)

電子工作マニュアル Vol.2
ヨシケン(吉田 顕一)

普通の会社に勤めるサラリーマンですが、モノ作りが好きな週末メイカーで、電子書籍MESHBOOKを出したり、ブログを書いたりしています!

http://blog.ktrips.net