ポータブルミュージックプレーヤーを作る
一応完成というとこで・・・
秋月でVS1053bが格安で売られていたので、ごく普通の音楽プレーヤーを製作してみたいと思います。
手持ちの部品を多数使用している為、適当な値のインダクタやコンデンサが使用されています。
また、AVRを3.6V弱の電圧で16MHz駆動させていますので、オーバークロック状態となっております。趣味のレベルなので、これで良しとします。
更に、両面基板を作るスキルが無い為、片面基板で作成します。
LFNやWMAといったライセンスの問題がありますので、警告等がありましたなら公開を停止させて頂きます。
OLED用データファイル変換ツールは「Microsoft Visual Basic 2008 Express Edition」で作成しました。
画像データとFONTX2形式のデータをOLED用のイメージファイルに変換します。
もの凄く適当に作っていますのでプログラミングの参考にしないで下さい。
ノイズ対策の実験
プレーヤー部を作成している時には全く気にならなかったノイズですが、FMラジオモード/スピーカーモード時にノイズが気になりました。
ノイズ元は3つあり、1つはOLEDモジュールのDC-DCコンバータから出ていると思われる低い音で「ビー」と聞こえています。
このノイズはスピーカーモードでは音となって現れ、FMラジオモードでは受信感度を低下させます。
OLEDの表示をOFFにすることで無くなりますので、画面OFFタイマーを使用することで回避できます。
もう1つのノイズは、主電源で使用しているDC-DCコンバータから出ていると思われる高い音で「チリチリ」と聞こえます。
このノイズは、スピーカーモードでOLEDの表示をOFFにすると聞こえてきます。また、FMラジオモードでは電波が弱い時に音となって聞こえてきます。
掲示板でノイズ対策のアドバイスを頂きましたので、実験しました。
最初に、サブ基板とOLEDモジュールのGNDを電池の-側に直結してみました。
結果としては、ノイズの発生は抑えられませんでしたが、FMラジオの受信感度が少し良くなりましたので、このままにしておきます。
次に220uFのコンデンサをOLEDモジュールとサブ基板それぞれの電源とGND間に入れてみましたがノイズの発生は抑えられませんでした。
|
|
更に、左図にある様なフィルタをサブ基板に入れてみました。
このタイプのフィルタは除去するノイズの周波数からCとLの値を決めると思うのですが知識不足の為、適当な値で実験してみました。(C=100uF/L=100uH)
効果が無い処か、副作用としてスピーカーモード時にホワイトノイズが発生する様になってしまいましたので失敗です。
|
電源部の回路を書いている時に、音声出力にノイズが乗るのではないかと心配しておりました。心配通りの結果となってしまい、「やっぱりな・・・」という感じです。
OLEDのノイズは想定外でした。
最後に第3のノイズとしてスピーカーアンプから出ていると思われるノイズがあります。音声には乗ってこないのですが、FMラジオの受信が全くできません。
私の住んでいる地域は地形の関係上、電波を受信しにくい様です。テレビの地上波もブースターを付けても綺麗には映りません。ゴーストも5個以上の画像が重なって見えます。
もう少し電波の受信状況が良ければ、このノイズは問題にならないかもしれません。
とりあえず、スピーカーモードではFMラジオモードに入れない様にしています。
音楽プレーヤーとしてヘッドホンで聞いている分には全くと言って良いほどノイズは聞こえませんので此処で妥協することにします。
もう少しクリアな音でFMラジオが受信できれば録音機能も付けようと思っていましたが、今回は見送ります。
ボイスレコーダの機能については実装したいとは思っていますが・・・
アンテナ周りの回路を変更
ヘッドホンのグランド線をアンテナ線として機能させる方法を試した所、良好な結果を得る事が出来ました。
この回路のサブ基板を作成しnPMPに搭載する事にします。
アンテナ周りの回路だけだと寂しいので、D級アンプIC(PAM8202)を実装してスピーカー出力もできる様にしました。サブ基板単体での動作テストではノイズは気になりませんでしたが、メイン基板と組み合わせた途端に酷い状況になってしまいました。
スピーカー出力ON時はノイズの影響(アンプからもノイズが出る?)の為、FMラジオの受信は全く出来ません。
OLEDの表示をOFFにするとノイズが軽減されます。取り合えず秋月で購入した
秋月の超小型スピーカー(現在は秋月では取り扱っていません)を搭載しました。
OLEDのノイズと電源ノイズを除去することは、私の力ではどうにもなりません。
サブ基板を作成した事により、FMラジオ受信時のノイズがかなり改善されました。パスコンとインダクタの追加が効いたのかもしれません。
|
|
|
部品面ですがジャンパー線しかありません。
|
ハンダ面です。ビス固定穴の周辺に部品を実装してしまい、2箇所しかビスで固定できません。
|
アンテナ端子を無くした為ケースを作り直しました
|
|
|
|
コマンドダイヤル
倉庫の片付けをしていたら出てきました。
|
表示状態です。うまく撮影できませんでした。
|
ケース内の様子です。
サブ基板はメイン基板の下に隠れています。
|
主な仕様
1.再生可能ファイル拡張子
*.wav 44.1KHzまでのリニアPCM/IMA AD-PCM
*.mp3 MPEG1,2のオーディオ・レイヤIII(CBR,VBR,ABR)
*.ogg Ogg Vorbis
*.aac MPEG4/2 AAC-LC(PNS)およびHE-AAC v2(Level3)(SBR,PS)
*.m4a *.aacと同様
*.wma WMA 4.0/4.1/7/8/9の全プロファイル(5~384kbps)
*.mid General MIDI 1 スタンダードMIDIファイルフォーマット0
*.smf *.midと同様
2.フリーのファイルシステム「FatFs」を使用し階層ディレクトリに対応
・階層の深さは、8.3形式のファイル名で120byte程度のパス名長まで有効
・SDカード/SDHCカードに対応
・FAT16/FAT32に対応
・ディレクトリ辺り、100個までのアイテム(再生ファイル・ディレクトリ)を管理
・アイテムを8.3形式のファイル名でソート
・FatFsにLFN取得関数を追加する事により、LFNでファイル名を表示
3.フルカラーディスプレイ(OLED)を搭載
・フリーの漢字フォントを使用し日本語の表示が可能。(S-JIS / UTF-16LEに対応)
・PCM再生以外での周波数分布のグラフィカル表示機能
・再生中の曲名とアーティスト名の表示(ID3TAG対応 / WMAのタグ対応)
タグの取得がサポートされないファイルは、ファイル名とディレクトリ名のLFNを表示
(画面に表示しきれない曲名・アーティスト名はスクロール機能により表示)
4.節電機能
・分単位で設定可能な自動電源OFFタイマー機能
・秒単位で設定可能な一定時間ユーザーによる操作が無い場合、画面表示をOFFにする機能
電圧低下時、OLEDの電源をOFFにして電池寿命を少しでも延ばす試み
あまり効果が無いので削除。電圧低下で曲間にアラームを鳴らす様に変更。
5.FMラジオ受信機能
・SDカードに記録された放送局リストを使用しての選局
・手動による100KHzステップの周波数合わせ
・自動周波数合わせ
6.レジューム機能
・前回、電源OFFした時点で再生されていた曲の途中から再生
7.DSPの機能を利用したエフェクト機能
・低音(BASS)および高音(TREBLE)のコントロール機能
・音場拡大機能
8.その他
・再生モードに、通常再生の他にファイルリピート再生とディレクトリリピート再生を用意
・乾電池による駆動(アルカリ電池・エネループ)
・ぎりぎりポケットサイズ(100x61x18.5)
・スピーカー出力機能(ノイズが酷いので、おまけ程度です)
主な使用部品
記号 |
部品名称 |
品番/規格 |
購入店 |
U1 |
DC/DCコンバーター |
AS1322B |
マルツパーツ館 |
U2 |
3端子レギュレーター |
MCP1700T1802ETTCT-ND |
Digi-Key |
U3 |
AVRマイコン |
ATMEGA1281-16AU |
Digi-Key |
U4 |
MP3デコーダー |
VS1053b |
秋月電子通商 |
U5 |
デジタルアンプIC |
PAM8202 |
共立エレショップ |
S1 |
マイクロSDカードソケット |
DM3AT-SF-PEJ |
秋月電子通商 |
M1 |
フルカラーOLEDモジュール |
uOLED-96-G1 |
ストロベリー・リナックス |
M2 |
FMラジオモジュール |
SFE-WRL-08770 |
スイッチサイエンス |
X1 |
クリスタル(16MHz) |
CTX646CT-ND |
Digi-Key |
X2 |
クリスタル(12.288MHz) |
CTX660CT-ND |
Digi-Key |
L1 |
面実装用固定インダクタ(4.7μH) |
#A921CY4R7M |
マルツパーツ館 |
L2~L4 L50~L58 |
チップインダクタ |
TDK NLV25シリーズ |
マルツパーツ館 |
Q1~Q3 |
チップトランジスタ |
2SC2712 |
秋月電子通商 |
Q4~Q5 |
PチャネルMOSFET |
IRLML6402 |
秋月電子通商 |
D1 |
ショットキバリアダイオード |
RB751S-40 |
秋月電子通商 |
|
ケース |
LM-100C |
マルツパーツ館 |
CD |
コマンドダイヤル |
手持ちのロータリーエンコーダ |
|
抵抗は全て1608タイプのチップ
22pF~1uFまでは1608タイプのチップ
10uF~100uFまでは3216タイプのチップ
フォントデータ保存用にuSDカード(256MB程度)をOLEDモジュールのソケットに挿入して使用
その他にステレオジャック・感光基板・配線用錫メッキ線(0.6mm)等を使用
|
参考サイト
放課後の電子工作
VS1053bデータシート日本語訳はとても参考になりました。
それにしても、Timpyの完成度は素晴らしいです。
アンテナ周りの処理方法も教えて頂きました。
進め!モゥ~ばいるコンピューター
漢字12x10ドットフォント k12x10のデータをOLEDモジュール用に加工して使用させて頂きました。
ゆきの研究室
FMラジオモジュールの動作実験のソースに救われました。
何しろデータシートにはレジスタに割り当てられた機能のビット番号が欠落していますので試行錯誤が必要です。
KabaVM System
「FATに関する技術解説」はLFNの取得と、OLEDモジュール用のファイルシステムを構築するのに参考にさせて頂きました。
Electronic Lives Mfg.
AVRとPICのどちらを勉強しようか迷っていた時の決め手となったサイトです。
USBspiは私にとって必須アイテムです。
汎用FATファイルシステム(FatFs)を使用させて頂きました。
今後やること
・ソースの無駄すぎる部分の見直し(箇所が沢山ありすぎます)。
・表面パネルの製作(ただ切って塗装するだけ)。・・・・・ 2009/1/10 完了
・FMラジオ受信機能のノイズ対策。・・・・・ 2009/1/10完了
・FMラジオ機能の改善。(適当に作ったので不具合が結構あります)・・・ 2009/1/12 取合えず修正しました。
やるかもしれないこと
・ アンテナ線の配線方法改良。(ヘッドホンケーブルをアンテナ線として機能させたい。)・・・ 2009/1/10 完了
・小型のコンデンサマイクを搭載しボイスレコーダの機能を追加。
・薄型のスピーカーとD級アンプICによるスピーカー出力。(電池の寿命が更に縮むな・・・)・・・ノイズの対策ができずに放置?
・両面基板の設計による小型化。
・リチウムポリマー電池にも興味はあるけど発火したら怖いし・・・
|