30年ぶりに復活した隊長の電子工作指令本部
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
【ソース/バイナリ】
ソース: MPLAB Project files (HoneyAmpSrc.zip) 2013/01/16 (ビルド済みHEX 込み)
※VS1053bの制御について参考にされる場合は、不具合修正や性能改善を行っているこちらの方をお勧めします。Decoder.c/h をそのまま持ってきて#define を適切に設定すればそのまま差し替えも出来るハズ・・です。
ソースには、メイン側(PIC32MX695F512H)と、サブ側(PIC16F1823) 両方のソースが入っています。
【開発環境】
MPLAB v8.86 + C32 v2.02a & XC8 v1.12
全て無料の環境で開発する事が出来ます。
余談ですが、当初は、最近 Microchip から出ている次世代開発環境 MPLAB X を使って開発していました。
これまでの MPLAB より充実している IDE なので、なかなか便利です。といいますか、Visual Studio に慣れている者としては MPLAB が使いにくすぎです。
というわけで、最初は喜んで使っていたのですが・・・
な~んとなくもっさりしています。「最近は早いので気にならないJava環境」と言われてはいますが・・。いやいや、やっぱり微妙に遅いです。。(MPLAB X => NetBeans(Java))
そして、よく落ちます。何の前触れもメッセージも出ず、突然落ちてしまうんです。
まぁ、たま~にだったので、最初は我慢して使っていました。しかし、デバッグしてみると、、、さらに落ちやすくなり、そして一度落ちると PickKit を接続したままだと起動しないので、抜いて起動して挿すという事をやらなければなりません。
さすがにこれには嫌気がさしてしまいましたので、いつもの MPLAB に戻ったという次第です。
これから先、多分 MPLAB → MPLAB X に置き換わっていくと思われるので、このような不具合がなくなる事を願うのみです。
【ライタ&デバッガ】
PICkit 3 または 対応ライタ
【ライブラリ】
下記のライブラリを使用しております。上記ソースに全て同梱していますので、別途ダウンロードする必要はありません。
・Application Librarys v2012-10-15
・FatFs R0.09a
Application Librarys には色んな機能が含まれていますが、余計なものを入れたくないので、本当に必要な最低限のファイルのみを使用しています。
利用しているの機能は、TCPIP Stack と USB Framework で、それらの中でも必要なもののみを使っています。
尚、オリジナルに対して下記の修正/置換を行いました。
1) StackTsk.h
APP_CONFIG構造体のnetworkType宣言誤りの修正
2) Tick(.c/.h)の品質が悪いので自作して置き換えました
Microchip製のTickは、効率も悪く不具合もあり、良いソースとはいえません。
特に、TickGet()は頻繁に呼び出すため、シンプルで性能の良いコードが求められます。
簡単な3つの関数とマクロを用意すれば良いだけなので自作しました。
3) FTP(.c/.h) は使えないので自作して置き換えました
オリジナルのものは、殆どのコマンドをサポートしておらず、使えません。また、MPFS2を
中途半端に使おうとするので、リンクエラーが出たりします。
FTP(.c/.h)を自作して置き換えるとともに、TCPIP.h や StackTsk.c に対して必要な
修正を、わずかですが行いました。
【設定について】
設定ファイル: HoneyAmpSettings.zip
設定ファイル(SETTINGS.INI)にはサンプル値が入っているので、必要な通信設定を記述して下さい。音響設定はお好みに合わせて変更して下さい。
なお、この設定ファイルは、ネットワークに接続してからFTPクライアントを使ってターゲットに転送します。(後述)
なので、最初のネットワーク接続設定は何?という事になりますが、ソースにデフォルト値として直に書かれている設定がそれになります。(Main\Network\TCPIPConfig.h 及び WF_Config.h)
このデフォルト設定でダメな場合は、該当ファイルを編集してビルドし直して下さい。
【FTPサーバーについて】
本機に組み込んである FTPサーバーは、32KB EEPROM(24FC256)へのアクセス手段を提供します。
とはいうものの、容量が小さいのでファイルシステムを構築している訳ではなく、単にファイルのように見せかけてアクセス出来るようにしているだけです。なので、ディレクトリを作ったりとかは出来ません。
・SETTINGS.INI : 設定ファイル。読み書きしたり削除したり出来ます。
・SETTINGS.DAT: 内部保存データ。削除のみ可能です。(初期化したい時)
実装しているFTPサーバー機能は、FTPクライアントから使えるよう、最低限の機能を実装しています。しかし、現在メジャーとされるフリーのFTPクライアントは、どれも妙な癖をもっており、RFCで規定されている動きをしないものさえ存在します。
本作で動作確認したクライアントは、FFFTP ですが、このクライアントも、サブディレクトリを持っているディレクトリをドラッグしてアップロードしようとすると、なぜだかわかりませんが、連続してコネクションの接続と切断を繰り返されるので、microchip のTCP/IPスタックがそれについていけず、うまくいきません。幸い、それ以外の操作では問題ないので、困る事はないのですが、この、変な癖対策は行っていません。
他のクイアントでうまくいかない場合、FFFTP を使ってみてください。
【基本操作】
本体側では、下記の操作しか出来ません。(リモコン前提で設計しています)
・電源ON: ボリュームノブを右に回す
・電源OFF: ボリュームノブを左に一定時間回し続ける(ボリューム位置の保存はされない)
・普通のボリューム操作
【リモコンについて】
ボリューム、入力切替、FilePla y時の Prev/Next、InternetRadio 時の Prev/Next にて、長押し操作が出来ます。(Prev = W, Next = T)
後、入力切替の操作方法がちょっと変わっています。
ボリュームが表示されている間に Prev/Next を押すというものです。
というのも、選んだリモコンの、とあるボタンに入力切替を割り当てようと思っていたのですが、そのボタンが別の機能のためのもので、普通のボタンと違っていたためです。他にボタンがないので仕方なくこのようになっています。
本作で使用している以外のリモコンを使う場合は、サブ側(PIC16F1823)のソースを変更する必要がありますが、殆どのリモコンではNEC フォーマットになっているので(そうでないリモコンを探す方が難しい)、信号を解析する部分は変更する必要は無いです。
ちなみに、家にある色んなリモコンを試してみましたが全て認識されました。(カスタマーコードが違うので当然無視されますが)
なので、カスタマーコードと、ボタンのコードを変更する程度で済むでしょう。より多くのボタンをサポートしたい場合は、メイン側も合わせて改良すれば色々出来ると思います。
【USBメモリ】
音楽ファイル(*.MP3, *.AAC, *WMA 等)を、ルート直下にアルバム毎にディレクトリを作って、その中に置いて下さい。ファイル名は8文字までしかサポートしていません。
【クロック切り換えについて】
PICは最大80MHzで駆動できますが、無駄に電力消費しないように、各機能において必要十分なクロックで動作するようにしています。
・Internet Radio : 20MHz
・File Player : 20MHz
・Input(USB Audio, Digital1/2) : 8MHz
・上記以外(起動直後等):40MHz
【ブザー音】
1) 電源ON、一般操作:「ピッ」
2) 電源OFF:「プッ」
【ラウドネス・音場拡大】
本作では、VS1053b に備わる高音低音ブースト機能、及び、音場拡大機能を使えるようにしてみました。
設定ファイルにて、ON/OFFや、効果の度合いを設定する事が出来ます。
ラウドネスは、ボリュームに応じて強調度合いを(簡単な比例方式ですが)変化させるようにしました。音が小さくなるほど高音と低音が強調されます。
音場拡大機能は、ヘッドホン時の音場感を改善します。ヘッドホンモード時に有効になるようにしました。
【表示例】
起動画面
入力選択中
InternetRadio バッファリング中
File Play 中
ボリューム操作中
DIR9001 の ERROR ピンを利用してエラー表示
【その他】
・PING 及び NetBIOS に対応しています。例えば、'ping honeyamp' に応答します。
・InternetRadio にて、混雑していて再生が途切れる等、ストリームの調子が悪い場合
同じ放送の別のストリームに自動的に切り換える機能を搭載しました。
ソース: MPLAB Project files (HoneyAmpSrc.zip) 2013/01/16 (ビルド済みHEX 込み)
※VS1053bの制御について参考にされる場合は、不具合修正や性能改善を行っているこちらの方をお勧めします。Decoder.c/h をそのまま持ってきて#define を適切に設定すればそのまま差し替えも出来るハズ・・です。
ソースには、メイン側(PIC32MX695F512H)と、サブ側(PIC16F1823) 両方のソースが入っています。
【開発環境】
MPLAB v8.86 + C32 v2.02a & XC8 v1.12
全て無料の環境で開発する事が出来ます。
余談ですが、当初は、最近 Microchip から出ている次世代開発環境 MPLAB X を使って開発していました。
これまでの MPLAB より充実している IDE なので、なかなか便利です。といいますか、Visual Studio に慣れている者としては MPLAB が使いにくすぎです。
というわけで、最初は喜んで使っていたのですが・・・
な~んとなくもっさりしています。「最近は早いので気にならないJava環境」と言われてはいますが・・。いやいや、やっぱり微妙に遅いです。。(MPLAB X => NetBeans(Java))
そして、よく落ちます。何の前触れもメッセージも出ず、突然落ちてしまうんです。
まぁ、たま~にだったので、最初は我慢して使っていました。しかし、デバッグしてみると、、、さらに落ちやすくなり、そして一度落ちると PickKit を接続したままだと起動しないので、抜いて起動して挿すという事をやらなければなりません。
さすがにこれには嫌気がさしてしまいましたので、いつもの MPLAB に戻ったという次第です。
これから先、多分 MPLAB → MPLAB X に置き換わっていくと思われるので、このような不具合がなくなる事を願うのみです。
【ライタ&デバッガ】
PICkit 3 または 対応ライタ
【ライブラリ】
下記のライブラリを使用しております。上記ソースに全て同梱していますので、別途ダウンロードする必要はありません。
・Application Librarys v2012-10-15
・FatFs R0.09a
Application Librarys には色んな機能が含まれていますが、余計なものを入れたくないので、本当に必要な最低限のファイルのみを使用しています。
利用しているの機能は、TCPIP Stack と USB Framework で、それらの中でも必要なもののみを使っています。
尚、オリジナルに対して下記の修正/置換を行いました。
1) StackTsk.h
APP_CONFIG構造体のnetworkType宣言誤りの修正
2) Tick(.c/.h)の品質が悪いので自作して置き換えました
Microchip製のTickは、効率も悪く不具合もあり、良いソースとはいえません。
特に、TickGet()は頻繁に呼び出すため、シンプルで性能の良いコードが求められます。
簡単な3つの関数とマクロを用意すれば良いだけなので自作しました。
3) FTP(.c/.h) は使えないので自作して置き換えました
オリジナルのものは、殆どのコマンドをサポートしておらず、使えません。また、MPFS2を
中途半端に使おうとするので、リンクエラーが出たりします。
FTP(.c/.h)を自作して置き換えるとともに、TCPIP.h や StackTsk.c に対して必要な
修正を、わずかですが行いました。
【設定について】
設定ファイル: HoneyAmpSettings.zip
設定ファイル(SETTINGS.INI)にはサンプル値が入っているので、必要な通信設定を記述して下さい。音響設定はお好みに合わせて変更して下さい。
なお、この設定ファイルは、ネットワークに接続してからFTPクライアントを使ってターゲットに転送します。(後述)
なので、最初のネットワーク接続設定は何?という事になりますが、ソースにデフォルト値として直に書かれている設定がそれになります。(Main\Network\TCPIPConfig.h 及び WF_Config.h)
このデフォルト設定でダメな場合は、該当ファイルを編集してビルドし直して下さい。
【FTPサーバーについて】
本機に組み込んである FTPサーバーは、32KB EEPROM(24FC256)へのアクセス手段を提供します。
とはいうものの、容量が小さいのでファイルシステムを構築している訳ではなく、単にファイルのように見せかけてアクセス出来るようにしているだけです。なので、ディレクトリを作ったりとかは出来ません。
・SETTINGS.INI : 設定ファイル。読み書きしたり削除したり出来ます。
・SETTINGS.DAT: 内部保存データ。削除のみ可能です。(初期化したい時)
実装しているFTPサーバー機能は、FTPクライアントから使えるよう、最低限の機能を実装しています。しかし、現在メジャーとされるフリーのFTPクライアントは、どれも妙な癖をもっており、RFCで規定されている動きをしないものさえ存在します。
本作で動作確認したクライアントは、FFFTP ですが、このクライアントも、サブディレクトリを持っているディレクトリをドラッグしてアップロードしようとすると、なぜだかわかりませんが、連続してコネクションの接続と切断を繰り返されるので、microchip のTCP/IPスタックがそれについていけず、うまくいきません。幸い、それ以外の操作では問題ないので、困る事はないのですが、この、変な癖対策は行っていません。
他のクイアントでうまくいかない場合、FFFTP を使ってみてください。
【基本操作】
本体側では、下記の操作しか出来ません。(リモコン前提で設計しています)
・電源ON: ボリュームノブを右に回す
・電源OFF: ボリュームノブを左に一定時間回し続ける(ボリューム位置の保存はされない)
・普通のボリューム操作
【リモコンについて】
ボリューム、入力切替、FilePla y時の Prev/Next、InternetRadio 時の Prev/Next にて、長押し操作が出来ます。(Prev = W, Next = T)
後、入力切替の操作方法がちょっと変わっています。
ボリュームが表示されている間に Prev/Next を押すというものです。
というのも、選んだリモコンの、とあるボタンに入力切替を割り当てようと思っていたのですが、そのボタンが別の機能のためのもので、普通のボタンと違っていたためです。他にボタンがないので仕方なくこのようになっています。
本作で使用している以外のリモコンを使う場合は、サブ側(PIC16F1823)のソースを変更する必要がありますが、殆どのリモコンではNEC フォーマットになっているので(そうでないリモコンを探す方が難しい)、信号を解析する部分は変更する必要は無いです。
ちなみに、家にある色んなリモコンを試してみましたが全て認識されました。(カスタマーコードが違うので当然無視されますが)
なので、カスタマーコードと、ボタンのコードを変更する程度で済むでしょう。より多くのボタンをサポートしたい場合は、メイン側も合わせて改良すれば色々出来ると思います。
【USBメモリ】
音楽ファイル(*.MP3, *.AAC, *WMA 等)を、ルート直下にアルバム毎にディレクトリを作って、その中に置いて下さい。ファイル名は8文字までしかサポートしていません。
【クロック切り換えについて】
PICは最大80MHzで駆動できますが、無駄に電力消費しないように、各機能において必要十分なクロックで動作するようにしています。
・Internet Radio : 20MHz
・File Player : 20MHz
・Input(USB Audio, Digital1/2) : 8MHz
・上記以外(起動直後等):40MHz
【ブザー音】
1) 電源ON、一般操作:「ピッ」
2) 電源OFF:「プッ」
【ラウドネス・音場拡大】
本作では、VS1053b に備わる高音低音ブースト機能、及び、音場拡大機能を使えるようにしてみました。
設定ファイルにて、ON/OFFや、効果の度合いを設定する事が出来ます。
ラウドネスは、ボリュームに応じて強調度合いを(簡単な比例方式ですが)変化させるようにしました。音が小さくなるほど高音と低音が強調されます。
音場拡大機能は、ヘッドホン時の音場感を改善します。ヘッドホンモード時に有効になるようにしました。
【表示例】
起動画面
入力選択中
InternetRadio バッファリング中
File Play 中
ボリューム操作中
DIR9001 の ERROR ピンを利用してエラー表示
【その他】
・PING 及び NetBIOS に対応しています。例えば、'ping honeyamp' に応答します。
・InternetRadio にて、混雑していて再生が途切れる等、ストリームの調子が悪い場合
同じ放送の別のストリームに自動的に切り換える機能を搭載しました。
隊長
カテゴリー
PR