● 実験テーマ9
「PIC24F_MP3プレーヤ(録音機能付き)」の顛末記
■ 2011.03.09
<ハード案>
※ 再生系のハードは以前実験した「PIC24 MP3プレーヤ」の時と全く同じで、PIC24F基板とMP3基板も流用
しました。異なるのは、SW入力にワンショットマルチIC(74HC123)を追加した点と、PIC24F基板上に設けた
ローパス・フィルタアンプを、ライン入力用のアンプとして使っている点です。
・CPUは、PIC24FJ64GA002を使用
・記録メディアとして、SDカードを使用
・MP3ファイルのデコーダICとして、VS1011Eを使用
・デバッグ用とファイル名表示用にRS232Cポートを設ける。
・録音ソースは、音声帯域(モノラル)を前提とし、ラインアンプで増幅しPICのAD入力へ入力する。
<機能案>
・とりあえず、PICの大御所「後閑哲也氏」と親交のある、齋藤洋一氏の「YS電子工作ラボ」のページに録音付きの
記事が掲載されていたので、それに準拠する形で進め、自分のハードに合わせカスタマイズしていこうと思います。
(1) 再生モードと録音モードをモーメンタリSWで切替える。
(2) 再生は、SDカード内にある音声・音楽データを順番に再生する。
(3) 再生中に、スキップSWが押されたら次のファイルを再生する。
(3) 録音は、ライン入力から入力された音声信号を、AD変換しデータはSDカードにWAVE形式のファイルとして記録。
(4) 録音するWAVEファイル・フォーマットは下記とする。
@ 圧縮フォーマットID : リニアPCM
A チャンネル数 : モノラル
B サンプリング・レート: 22050Hz
C データ転送速度 : 44100byte/sec
D Block Align : 2byte/sample
E 量子化ビット数 : 16bit
(5) 録音ファイル名は、「VOICE.wav」固定とする。
(6) RS232C経由で、端末(TeraTerm)に再生/録音時のファイル名を出力する。
(7) 2個のステータスLEDに、録音/再生状態を表示させる。(再生時:緑LED点灯/録音時:赤LED点灯が基本)
■ 2011.03.29
・コンパイル作業開始
次のコンパイルエラーが発生する。
<発生したコンパイルエラー>
「Generic.h:56 error:nested redefinition of ・・・」
→ これは、変数型マクロ関係のヘッダファイルが2重に定義されていることによる多重定義エラーで、この前のプロジェクト
でも発生した。
SD関係のhファイルと、24F-汎用モジュールフォルダ内にあるhファイルを共有して使おうとした時発生するエラーなので
今後も注意が必要である。
つまりuart.hは、前回のエラー経験で対策済(uart.hでは、Generic.hをインクルードしているのに対し、SD関係の
hファイルではGenericTypeDefs.hをインクルードしていることによる、多重定義エラーで対策として以下を実施。
→ Generic.hは、GenericTypeDefs.hと代用できるのでuart.hをプロジェクトフォルダにコピーし、その中身の
Generic.hを、GenericTypeDefs.hに変更しプロジェクト構成に追加後、コンパイル)
しかし今回、ADCを追加したため、timer.hを使うことになった。ここでも、Generic.hをインクルードしているため
多重コンパイルエラーが発生した。uart.hと同じ処理をし解決した。
■ 2011.03.30
・One_Shot_SW基板のハードチェックを実施
→ RB0,RB1入力に1秒の負パルスが出力されていることをテスターにて確認した。
・とりあえず、再生モード+SKIP_SW+ファイル名表示はOK
■ 2011.03.31
・録音結果を、WAVファイルダンプにて確認(録音ソース:1kHz, 3Vp-pサイン波)
→ 波形データに規則性が無くデタラメである(ヘッダ情報はOK)
■ 2011.04.01
・ADC取込み生データ(temp1)が正しい値か?を確認。AN1に直流を入力してチェックした。
→ 入力電圧値に対応した10bitAD変換値を示しているので生データに関しては問題なし。
・ADC取込み後のWAV換算値(temp2)が正しい値か?を確認。AN1に直流を入力してチェックした。
→ 入力電圧値に対応した2の補数表現16bit換算値を示しているのでWAV換算値に関しても問題なし。
(オーバーレベル判断後の値もOK)
・録音ソースを、1kHz, 3Vp-pサイン波に戻しBUF1に最初の512DATAを格納した時点でBUF1のデータダンプ
を取り、確認した。
→ 格納値に増減の規則性がなくデタラメでになる。但し、サイン波入力でなく直流の固定入力にした場合は、
正しい格納値を示す。
■ 2011.04.03
・BUF1格納値に増減の規則性がなくデタラメでになるのは、波形モニター用の簡易オシロプローブが、AN1に接続されてた
せいで、ノイズを拾っていた模様。
→ プローブを外して試すと格納値に増減の規則性が認められるようになる。
■ 2011.04.11
・コンパイル時の問題と、簡易オシロプローブによるノイズの問題のみで、当初考えていた機能を満足したので、
本プロジェクトは、クローズすることにした。
<録音ファイル>
・FM東京の音声+音楽を録音した時の、WAVファイルです。PCで再生してみてください。→ 「VOICE.wav」
<回路図>
・PIC基板と、MP3基板は、「PIC24F MP3プレーヤ」の実験の時、使った物を流用したので省略します。
・今回、新たに増設した、「One Shot SW基板」の回路図です。→ 「One
Shot SW基板回路図」
<最終ソース・ファイル>
・こちらから、どうぞ→ easy_mp3_player_add_rec_24f.c
← 実験テーマ1に戻る TOP PAGEに戻る 実験テーマ10へ →