ラズベリーパイモデルB(ラズパイ1)をアリエクスプレスから入手しました。
ラズベリーパイは、最近はやりのリナックスが動くマイコンチップで、リナックスマシンとして動作します。
私は、トランジスタ技術2015/9のVOLUMIOというリナックスベースのソフトの記事を見て、やる気になったのです。
トラ技によれば、今は量産していないラズベリーパイモデルB(700MHZ,512KBのタイプ)は、
電源がスイッチング電源でなく、リニア電源を搭載しているので、ノイズが少ないのだとか。
そのモデルは、後述④の文献(トラ技)では、そのモデルではいまだI2Sに対応していなかったかのような書きぶりですが、I2Sというオーディオ規格に対応しています。ただし、それを使うにはヘッダーピンをはんだ付けする必要があります。
I2Sは要するにDACに送るデータ形式のことで、3本のパルス、1本のシリアルデータの信号をどのタイミングで送るかという規格です。以前デジタルオーディオレシーバーDAIというICがDACの基板に必ず乗っていましたが、それと同様、そのDACの要求する信号を、ラズベリーパイがその規格通りに作ってくれます。
ただし、ラズベリーパイの12S出力は、24.576MHZなどのサンプリングクロックの出力は作ってくれません。その制限により、使えるDACは、そのクロックを内部のPLLで生成してくれるもののみとなり、ネットではその信号の欠落についてそれなりに大騒ぎをしているように思えます。マイコン内部のクロックを分周して作ってみたりする記事もあります。
しかしながら、そのマイコンのペリフェラル(入出力)仕様書をよく読むと、もう一つのクロックであるデータを乗せるクロックのほうは、スレーブモードといって、出力のみならず外部から入力を受け付けて、そのタイミングで、データのFIFOを基準クロックに同期して正確に出力するモードがあります(FIFOは、ファーストインファーストバッファであって、要するにバッファであって、入力と出力の速度の差がある場合に用いられ、オーディオ的には出力側から絶え間なく信号を出すための仕組みになります。)。サンプリング周波数を分周して、このスレーブモードを使えば、FIFOの出力側につき、すべて正確な時間間隔で音声を出力できるのにと思いながら・・これをするには、デバイスドライバをいじらなくてはなりません。
デバイスドライバの参考書としては、①「お手軽ARMコンピュータラズベリーパイでI/O」(入門)
②「raspberryで学ぶARMデバイスドライバープログラミング」(本格派)
その他、ラズベリーパイのオーディオ紹介記事として
③「interface2014/9 ハイレゾ本格デビューLINUX」
④「トランジスタ技術2015/9 アナログ仕上げラズパイ・オーディオ」(VOLUMIOの設定方法の記事)
前置きはこれぐらいにして・・・
上記のとおり、ラズベリーパイとして、初代ラズベリーパイのモデルB(ver2、B+ではない)を買いました。
必要ないしあったほうが好ましいものとしては、①SDカード(マイクロSD+カードアダプタが安くてお勧め)、②マイクロUSBのケーブル(100円ショップ)、③USB電源(100円ショップにもあったような)ないし、充電池(USB出力タイプのリチウム電池)、④HDMIケーブル(ダイソーで324円)、⑤DVI⇔HDIMI変換ケーブル(近くの量販店は高いので、アマゾンがお勧め)、⑤LANないしwifiの環境、⑥クロスLANケーブル(近くの量販店でも350円ぐらい)です。
①②⑥は必須です。③はパソコンのUSB端子を過電流で痛めないために、できればあった方がいいです。④があれば、テレビに出力できます。PCに出力するには、⑤が必要になる。④⑤は、VOLUMIOをそのまま使うのにはいらないとされていますが、本体をいじりたい(特に後述のSSHをPCと確立するとき)という場合には、本体にキーボードをつなげていじる必要があります。
①のSDカードには、パソコンから、volumioの出来上がったデータイメージを、特定のソフト(Win32DiskImager.exe)で入れます。
SDカードを挿入して、電源を入れると、いきなりリナックスが立ち上がることになります。このソフトは、リナックスベースの、ウィンドウズでいうところのメディアプレーヤーのようなものを、リナックスのシステムに付加してだれでも音楽を楽しめるようにしたものであって、基本はリナックスというOSですから、リナックスのコマンドを使うこともできるし、足りなければ他のリナックス上で動くソフトをインストールすることもできます。開発のためには、別途C言語のコンパイラをダウンロードすることになります。
以下、ラズベリーパイで気づいた、注意すべきことについて述べます。
①volumioは、基本はネットワークを介して操作することを予定しているので、操作するには、インターネットエクスプローラーなどのウェブ閲覧ソフトが必須になり、ルーターの閲覧のように192.168.xx.xxをネット上のIPアドレスに直打ちして、閲覧する必要があり、したがってwifiないしLANが必須になります。スマホでも操作できます。
スタンドアローンという方法もできなくはないですが、ラズベリーパイはマイコンボードにすぎず、操作ボタンなどはないので、それは高度に別途GPIOをいじって、スイッチを別途設けて開発する必要があるという、例外的な方法になります。
②VolmioをSDカードに焼くと、16Gのカードであっても、ウィンドウズからは見かけ70Mbになってしまいます。それは驚いてはいけなくて、そういうものだと考えましょう。ウィンドウズでその焼いたSDカードを操作すると、不安定となり、ウインドウズはなんどもエラー修正をしようとしたりします。
ウインドウズからは見えませんが、リナックス上では3つぐらいに分割パーティションが切られており、最後の領域はかなり大きいのにまったく使われておらず、フォーマットもされていません。そこには上記④の記事や、ネット上にもたくさん紹介されておりますが、その領域を、音楽データの格納に使います。そのためにはリナックス上で別途にフォーマットなどの指示を出す必要があり、ウインドウズからSDカードを焼いておしまいというわけにはいきません。
③ラズベリーパイの操作は、直接操作するよりも、SSHという通信ソフトで、PC上から指示を出すことのほうが一般的なようです。SSHは、以前テルネットというPCとマイコンとの通信方法がありましたが、それにセキュリティを付けたようなイメージのものと理解しています?!
そのような間接的なログインの操作の、実際上の意義がどうなるかというと、
PC上で得たネット上の情報をコピペするのに便利ということになります。
volumioのリナックスは、外部から操作することを予定しているので、最小限の機能しか載せておらず、コマンドラインしか入っておらず、外部情報なしには開発が非常に厳しいことになります。コマンドラインしかありませんから、2入力のディスプレイを切り替えていましたが、ネットを参照するにはディスプレイを切り替える必要があり、かなりの能率ダウンです。
有線LANの根本のハブにつなげれば簡単に通信を確立することが出来ますが、常用のパソコンが無線LANでそのハブにつながっていると、ラズベリーパイではGPIOとか入出力を扱いますから、手元にラズベリーパイのボードがないと、大変面倒なことになります。
そこで、クロスLANケーブルを使ったり、GPIOのピンを使って、シリアル通信をしたりして、PCと直接接続する方法があります。また、SSIDというパスワードを使って無線LANを使ったりする方法がありますが、LANのクロスケーブルを使うのが、一番すっきりし、安くて確実だと思いました。シリアル通信だとGPIOのピンが抜ける場合があり、かつ線がたくさん出て、すっきりしないのです。
なお、PC直接で接続しただけだと、外界のLANにつながっておらず、新たなソフトをネットで調達し、ラズベリーパイにインストールするのが難しくなります。これは、ネットワークブリッジを使うことになりますが、これも次回書いていきます。
私は、LANとか通信の知識は苦手で、今回も大変に手を焼きました。
通信だとどちらが悪いのか分からず、直さないといけない検討対象が多くて大変なのですね。
次回それについて、書いていきます。