30年ぶりに復活した隊長の電子工作指令本部
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
【ソース/バイナリ】
ソース: MPLAB Project files (HoneyRadio2Src.zip) 2012/09/08
HEX: HoneyRadio2Hex.zip 2012/09/08
SDCard: SDCardSample2.zip
SDカードには、上記 'SDCardSample2' を解凍して丸ごと入れてください。
設定ファイル(SETTING.INI)にはサンプル値が入っているので、必要な通信設定を記述して下さい。音響設定はお好みに合わせて変更して下さい。
音楽ファイル(*.MP3)は、MUSICディレクトリの下に、アルバム毎にディレクトリ作って、その中に音楽ファイルを置いて下さい。ファイル名は8文字までしかサポートしていません。
【開発環境】
MPLAB v8.83 + C32 v2.02 マイクロチップテクノロジージャパン株式会社
全て無料の環境で開発する事が出来ます。
【ライタ&デバッガ】
PICkit 3 または 対応ライタ
【ライブラリ】
下記のライブラリを使用しております。上記ソースに全て同梱していますので、別途ダウンロードする必要はありません。
・Application Librarys v2012-04-03
・FatFs R0.09
Application Librarys には色んな機能が含まれていますが、本作では、 Microchip TCPIP Stack の中でも、必要なファイルのみを同梱しています。利用する機能も必要最小限にとどめています。
尚、オリジナルに対して下記の修正/置換を行いました。
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 に対して必要な
修正を、わずかですが行いました。
【FTPサーバーについて】
実装している、FTPサーバー機能は、FTPクライアントから使えるよう、最低限の機能を実装しています。しかし、現在メジャーとされるフリーのFTPクライアントは、どれも妙な癖をもっており、RFCで規定されている動きをしないものさえ存在します。
本作で動作確認したクライアントは、FFFTP ですが、このクライアントも、サブディレクトリを持っているディレクトリをドラッグしてアップロードしようとすると、なぜだかわかりませんが、連続してコネクションの接続と切断を繰り返されるので、microchip のTCP/IPスタックがそれについていけず、うまくいきません。幸い、それ以外の操作では問題ないので、困る事はないのですが、この、変な癖対策は行っていません。
他のクイアントでうまくいかない場合、FFFTP を使ってみてください。
【割込みと優先順位】
【クロック切り換えについて】
PICは、最大80MHz で駆動できますが、電池を無駄に消費しないように、各機能において必要最小なクロックで動作するようにしています。下記は、その一覧です。
NR:8MHz
MP:8MHz
FTP:32.768kHz、WiFi接続時 40MHz
上記以外(起動直後等):40MHz
【充電について】
充電開始トリガーは、ケータイと似たような感じです。
・ACアダプタを挿入した時、電池電圧が低ければ充電
・電源ON中に、電池電圧が下がってくれば充電(レベル1以下になるとで充電)
充電中は、PICの電源はONになっており、電圧や時間の監視を行っています。
電圧が所定の電圧に達したとき、または、12時間を経過した時のどちらかで終了するようになっています。
【データの保存について】
プログラムは、最後に選択したモードやチャンネル等のデータを、microSD へ保存するようになっています。調子が悪い、プログラムを変更した等の理由で初期化する場合は、ルート直下にあるファイル 'SETTING.DAT' を、FTPを使う等して削除して下さい。
【ディスプレイ表示】
右上は、各モード共通のインジケーター表示領域になっています。下記の表示を行います。
1) オフタイマー残分: #15 等
2) 電池残量: F(フル)、3(高)、2(中)、1(低)、L(ロー)、E(エンプティー)
3) 充電中: 充電中は、→矢印が現れます
4) ACアダプタ挿入: 'P' を表示
尚、前面LEDは、電源OFF中の充電時は点滅します。
【ブザー音】
1) 電源ON、一般操作:「ピッ」
2) 充電開始: ACアダプタを挿入すると、「プッ」
3) 電源OFF:「ブッ」
4) 電池が空:「ブー」
【ラウドネス・音場拡大】
本作では、VS1053b に備わる高音低音ブースト機能、及び、音場拡大機能を使えるようにしてみました。
設定ファイルにて、ON/OFFや、効果の度合いを設定する事が出来ます。
ラウドネスは、ボリュームに応じて強調度合いを(簡単な比例方式ですが)変化させるようにしました。音が小さくなるほど高音と低音が強調されます。
音場拡大機能は、ヘッドホン時の音場感を改善します。ヘッドホンモード時に有効になるようにしました。
【その他】
・PING 及び NetBIOS に対応しています。例えば、'ping honeyradio2' に応答します。
・黄色いボタン(Function)を長押しすると、フェードアウトオフタイマーが設定できます。
・FTP モードでは、40MHzクロック動作になり、WiFi接続してFTPアクセスを行えます。
・軽いファイルアクセスならば、NRモードで音楽視聴時でも問題なく可能です。
ソース: MPLAB Project files (HoneyRadio2Src.zip) 2012/09/08
HEX: HoneyRadio2Hex.zip 2012/09/08
SDCard: SDCardSample2.zip
SDカードには、上記 'SDCardSample2' を解凍して丸ごと入れてください。
設定ファイル(SETTING.INI)にはサンプル値が入っているので、必要な通信設定を記述して下さい。音響設定はお好みに合わせて変更して下さい。
音楽ファイル(*.MP3)は、MUSICディレクトリの下に、アルバム毎にディレクトリ作って、その中に音楽ファイルを置いて下さい。ファイル名は8文字までしかサポートしていません。
【開発環境】
MPLAB v8.83 + C32 v2.02 マイクロチップテクノロジージャパン株式会社
全て無料の環境で開発する事が出来ます。
【ライタ&デバッガ】
PICkit 3 または 対応ライタ
【ライブラリ】
下記のライブラリを使用しております。上記ソースに全て同梱していますので、別途ダウンロードする必要はありません。
・Application Librarys v2012-04-03
・FatFs R0.09
Application Librarys には色んな機能が含まれていますが、本作では、 Microchip TCPIP Stack の中でも、必要なファイルのみを同梱しています。利用する機能も必要最小限にとどめています。
尚、オリジナルに対して下記の修正/置換を行いました。
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 に対して必要な
修正を、わずかですが行いました。
【FTPサーバーについて】
実装している、FTPサーバー機能は、FTPクライアントから使えるよう、最低限の機能を実装しています。しかし、現在メジャーとされるフリーのFTPクライアントは、どれも妙な癖をもっており、RFCで規定されている動きをしないものさえ存在します。
本作で動作確認したクライアントは、FFFTP ですが、このクライアントも、サブディレクトリを持っているディレクトリをドラッグしてアップロードしようとすると、なぜだかわかりませんが、連続してコネクションの接続と切断を繰り返されるので、microchip のTCP/IPスタックがそれについていけず、うまくいきません。幸い、それ以外の操作では問題ないので、困る事はないのですが、この、変な癖対策は行っていません。
他のクイアントでうまくいかない場合、FFFTP を使ってみてください。
【割込みと優先順位】
優先度 | 割込みハンドラ | 用途 |
1 | _T3Interrupt() | オフタイマー・充電タイマー |
2 | _CNInterrupt() | SW入力 |
3 | _WFInterrupt() | MRF24WB0M |
4 | _T2Interrupt() | ビープ音生成 |
7 | _T1Interrupt() | Tickカウンタ |
【クロック切り換えについて】
PICは、最大80MHz で駆動できますが、電池を無駄に消費しないように、各機能において必要最小なクロックで動作するようにしています。下記は、その一覧です。
NR:8MHz
MP:8MHz
FTP:32.768kHz、WiFi接続時 40MHz
上記以外(起動直後等):40MHz
【充電について】
充電開始トリガーは、ケータイと似たような感じです。
・ACアダプタを挿入した時、電池電圧が低ければ充電
・電源ON中に、電池電圧が下がってくれば充電(レベル1以下になるとで充電)
充電中は、PICの電源はONになっており、電圧や時間の監視を行っています。
電圧が所定の電圧に達したとき、または、12時間を経過した時のどちらかで終了するようになっています。
【データの保存について】
プログラムは、最後に選択したモードやチャンネル等のデータを、microSD へ保存するようになっています。調子が悪い、プログラムを変更した等の理由で初期化する場合は、ルート直下にあるファイル 'SETTING.DAT' を、FTPを使う等して削除して下さい。
【ディスプレイ表示】
右上は、各モード共通のインジケーター表示領域になっています。下記の表示を行います。
1) オフタイマー残分: #15 等
2) 電池残量: F(フル)、3(高)、2(中)、1(低)、L(ロー)、E(エンプティー)
3) 充電中: 充電中は、→矢印が現れます
4) ACアダプタ挿入: 'P' を表示
尚、前面LEDは、電源OFF中の充電時は点滅します。
【ブザー音】
1) 電源ON、一般操作:「ピッ」
2) 充電開始: ACアダプタを挿入すると、「プッ」
3) 電源OFF:「ブッ」
4) 電池が空:「ブー」
【ラウドネス・音場拡大】
本作では、VS1053b に備わる高音低音ブースト機能、及び、音場拡大機能を使えるようにしてみました。
設定ファイルにて、ON/OFFや、効果の度合いを設定する事が出来ます。
ラウドネスは、ボリュームに応じて強調度合いを(簡単な比例方式ですが)変化させるようにしました。音が小さくなるほど高音と低音が強調されます。
音場拡大機能は、ヘッドホン時の音場感を改善します。ヘッドホンモード時に有効になるようにしました。
【その他】
・PING 及び NetBIOS に対応しています。例えば、'ping honeyradio2' に応答します。
・黄色いボタン(Function)を長押しすると、フェードアウトオフタイマーが設定できます。
・FTP モードでは、40MHzクロック動作になり、WiFi接続してFTPアクセスを行えます。
・軽いファイルアクセスならば、NRモードで音楽視聴時でも問題なく可能です。
隊長
カテゴリー
PR