● 実験テーマ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へ →