● 実験テーマ103

「カラーOLED_MP3_PLAYERの実験」
(102の続編。MP3デコーダ:VS1011E部を組込み、OLED MP3 PLAYERとする実験です。)

※ 2018.3.23
→ 1回目の更新です。
   使える形に、まとめようと思い、Eagleで基板設計し、基板屋さん(FusionPCB)に発注しました。
   2月24日からの記事を参照してください。


以下、この実験の顛末記です。

■ 2018.2.16
  ・何時もの、MP3プレーヤと異なる点
  ※ バック・スキップ(BACK)SWの追加
     今回は、スクロールリスト表示及び、マーカーの動きが無いので、前後のスキップ再生は可能であると思うので
     チャレンジしてみる。

  ・操作スイッチは、全4個にする。
   NEXT:RB1/CN3, BACK:RB2/CN4, VOL +:RF4/CN17, VOL -:RF5/CN18

  ・BACK SKIPの機能は以下のようにすれば良いはず。
   FileNo=0(最初の曲)の時、BACK SWが押されたら、FileNo--; の結果は、-1になるので、その時は、
   FileNo=Total-1;にして最後の曲へスキップさせる。
   その他の条件の時は、FileNo--; にする。

  ・ソース書き上げた。HEXまで準備出来る。
   まずは駄目。
    @ 初期メッセージに例のゴミ。
       但しこれは、SD未挿入時には出ない。
       これは無しでもよいが・・・(前回も無しで妥協してる。)
    A VS1011Eの初期化+VOL等の初期設定+テストサイン波:5kHz発生で止めてみたが、サイン音鳴らず。

  ・Aから追求
   久々に使った、VS1011E冶具基板が動いているか単体チェックを実施。
   PIC24Fでだが、実験テーマ1で作った「vs1011e_test_24f」を久々に動かしてみた。
   テスト仕様は以下
   SW1 ON待ち→ ON→ 約1秒間5kHzテストトーン鳴らす・・ これの繰返し。
   問題無く動いた。なので、VS1011Eは動いている。


■ 2018.2.18
  ・追チェック
   @ PIC32MX VS1011Eポート(RF, RB)入出力設定→ OK
   A PIC32MX VS1011Eポートピンと、VS1011Eコネクタ間の導通→ OK
   B VS1011E制御ポート+SPI_1ポートの単純動作(パタパタ)チェック→ 以下OK
     ・XRESET出力(RB12)
     ・XDCS出力(RB13)
     ・XCS出力(RB15)
     ・DREQ入力(RB14)

     ・SCK1出力(RF6)
     ・SDO1出力(RF3)
     ・SDI1入力(RF2)

  ・ここまでOKなので、ハード的には問題なさそう。ソフト記述を追うことに。
  ※ サインテスト・コマンドを送る前に、1秒のウエイトが必要だったようで、入れたら、PIC32MXで初めて、
     VS1011E テストSINトーン 5kHzが鳴った。

  ・ところが未だ問題が。
   CN割込みが上手く行かないようで、SW ONしてないのに、割込みルーチンにジャンプしてくる。(先に進まない)


■ 2018.2.19
  ・SWラインのプルアップ状況を確認→ OKだった。
  ※ これも結局は、ソフトの問題だった。
     RTOSで書いたMP3プレーヤの時、使っていた、MAIN RTN SW:CN11ピン。
     このSWは今回未使用なのに、CN11も、CN割込み有効に設定されていた。単なる削除忘れだった。
     このピンはオープンだった為、ノイズで割込みが入っていたようだ。
     これを直して、やっと最初の曲が再生された。

  ・ところが、音量コントロールはOKだが、NEXT, BACK SWが効かない。
   これも単純な記述ミスが原因だった。
   256バイト単位で、MP3ファイルをリードし、その結果:resultを判断して、OK(EOFでない場合)ならば、
   読み出したバイト分だけ、VS1011Eに音楽データを転送し、EOFまで繰り返すが、
   途中で、NEXT, BACK SWが押された場合は、このループを強制脱出する為、resultを強制的に、0に
   していた。
   ここの記述を、おばかなことに、判断条件で使う '=='にしてしまっていた。
   result == 0;(これでもコンパイルエラーは出ない)→ result = 0; に修正で、前後のスキップ機能が快適に
   動き出した。
   バック送りもOK。
   最初の曲再生中に、BACK SWを押すと、最後の曲再生になるのも、OK。
   そしてここから何も押さない(通常ループ再生に戻る)と、順送りになるのもOK。

  ・残る問題は、初期メッセージのゴミ(前テーマでは妥協して、この表示はさせないことで妥協しているが・・)
   調べたが、やはりはっきりした原因がつかめない。
   何故か、SDを挿入したまま、P_ONした時にこの現象が起こり、SD未実装で、P_ONの場合は、起こらない。
   SDの、SPI_2モジュールとの干渉が懸念されるが、この時点では、SPI_2モジュールは未だ動いてないはず。
   試しに、最初の、ポート設定の後で、さらに、SPI_2モジュールを無効にして、単純ポート設定に戻してから、
   初期メッセージを表示させても同じであった。
   まあゴミを気にしなけれ良いだけで実害はないが、気持ち悪いので、今回も表示させないことにした。
   今後、何か進展があったらまた記事にしたいと思います。


---<ここから、「EAGLE CADで、P板化」の記事>-------------------------------------------

■ 2018.2.24〜 2018.2.26
  ・約半年ぶりに、EAGLEをいじることに。
   なるべく小型サイズに、P板化して使える形にまとめようと思います。
   発注先は、去年から利用している、「FusionPCB」さんです。

  ・今回の設計方針をまとめてみた。
   @ 最初から入力することはしない。
   A QVGA使用の、TP_MP3_PLAYER(2016/7作成)とほぼ同じ回路と、PCBサイズなので、この時の、
      *.schと、*.boardを基にして、加工・編集しながら進めることにした。
      ※ 主な相違点
       ・QVGA LCD→ 128x128 OLED
       ・PCBサイズは少し小型に出来る→ X= 89mm→ 85mm, Y= 57mm(変更なし)
       ・OLED固定用の、バカ穴が追加される。

  ・プロジェクト名:「OLED_MP3_PLAYER」として作業開始。
   今回の新規登録部品は、OLEDソケットコネクタ: 1列11pinの、2160X11GSEのみで作成済。
   また回路図入力まで終了した。


■ 2018.2.27
  ・ここまでの、ボード状態は以下。
   この時点では、J1には、標準サイスの、MJ-179Pを使用する予定でした。

  ・ERCの結果も、全て承認出来るワーニング類だったので、OKです。
   また、ネットリスト上のチェックもOKです。


■ 2018.2.28
  ・今日から本格的にパターン引き。
   ここで問題が・・・
   去年の7月に、さんざん苦労して作った長穴スルーホール対応の、J1パッケージ:SPC4077_FUSION.pacだが、
   どうした訳か、DGNDネット(1pinのみ)が、ベタグランドに接続出来ない?
   横方向はかろうじてベタグランドに届いて見えるが、縦方向が浮いている。
   前回と異なるのは、コネクタの配置と周辺パターンとの位置関係だが、ベタグランド生成に影響するのだろうか?


■ 2018.2.29
  ・J1のFUSION向けパッケージを回路図上で、リプレースしたのだが、これを一度削除してから、新たに置いて引き直しても
   同じだった。
   私なりに試行錯誤した結果の、この方法は完全ではないようだ。
   スイッチサイエンスのページで紹介されている、長穴パッドを一つの部品(デバイス=シンボル+パッケージ)として登録する
   方法が確実なのかもしれないが、作業が面倒そうなのと、ジャックシンボルとして直観的に解りずらいのが気になっている。
   これは今後の課題にしようと思う。
   今回は、内径1.7φ・外径4φの、EIJA RC5320A TYPE2 に適合した丸ピンの、DCジャック:M04-730A0 を使うことにした。


   このサイズのジャックに適合したサイズのプラグが付いている、AC-DC5Vアダプター(ケンウッドのMDプレーヤ付属)が
   手元にあるので好都合である。


■ 2018.3.1
  ・DCジャック:M04-730A0 に置換え、電源部(3.3V+5V+ベタGND)まで終了


■ 2018.3.2
  ・今基にしている、ボードデータの、DRCは、P板.COMのものでチェックを行っている。
   FusionPCB向けの、DRCと若干差異があったことに気が付く。
   以下2点を修正する必要がある。
    @ AGNDと、DGNDベタの境界線間隔を、1.1mm以上にしないとクリアランス・エラーになる。
       なので、0.8mm→ 1.1mmに変更

   A Fusion PCBの、ガーバーCAMの場合、何も指定しないと、ビアがレジストされてしまう。
      これを回避するためには、Eagleで、ビアを置く時に、infoで、stop→ onに設定(これでビアがレジストマスクされる)すればよい。
      Chang→ stop→ onで、当該ビアをクリックしていけば効率的に変更できる。

  ・最初のオートルータまで終了。
   しかし、5本ほどエアーワイヤが残った。


■ 2018.3.3
  ・5本ほどのエアーワイヤも引き回し等修正し、「
Ratsnet Nothing to do!」になった。

  ・ここで最初の、DRCチェックを掛ける。
   TQFP64パッケージのパッド間の、パターン間隔が狭いようで、そこを中心に、28個のクリアランスエラーが発生。

  ・微調整を行い、「DRC NO errors」になる。


■ 2018.3.4
  ・最後に、シルク位置等の微調整を行い、Eagle作業の最終版とした。


■ 2018.3.5
  ・ガーバー出力作業に移行した。
   ビューワで確認したところ、
AUTOルータで引いたビアにレジストが掛かっている。(STOP OFF) 
   
STOP ONに修正し、ガーバー出力〜 gerbvと、FUSION PCBのビューワで再確認。

 ・これでよさそうなので、正式発注を済ませる。


■ 2018.3.7
  ・前後アクリル板の加工を行った。


■ 2018.3.14
  ・FUSION PCBからの、P板待ち状態。
   本日の19:00頃、ステータスが、出荷済になり、運送業者の、FedEXにその情報が送信されたとの
   ステータス更新があった。
   データに問題は無く、無事製造してくれたようだ。


■ 2018.3.19
  ・FUSION PCBから、P板届く。
   運送業者は、FedExだが、委託ということで、郵便局員による配達だった。


■ 2018.3.20
  ・部品実装開始。
   まずは毎回難関の、TQFP64(0.5mmピッチ)パッケージの、PIC32MXのハンダ付けから行った。
   マルツへ1個だけ注文したが、業務提携している「Digi-Key社」からの取り寄せとなった。
   届いた物が下の写真のように、シリカゲルとシート状の湿度計が同封された静電防止袋に入っていて
   さらにそれが、アルミの防湿シールド・バッグに入った厳重な梱包だった。
   PIC32MX340F256Hは、秋月で販売してなく(この上位シリーズの370Fシリーズは620円で手に入るが・・)
   850円とやや値が張ったが、高い分、梱包は厳重で品質は確かなようだ。

   さてこの梱包をといて、PIC32MXいざハンダ付け。
   この手のハンダ付けは、最初の、パッドとピンとの位置決めが非常に重要だが、結果的には、1ピン〜16ピン側が
   若干だが、右へ気持ちズレてしまったが、ショートはしていないようなので、このまま通電で確認してみることに。

  ・今回の部品の中で、ちょっと特殊なのは、前面アクリル板との位置合わせの為に、シャフトの長いタクトSW
   を使ったことである。
   aitendoには、最近、タクトSWと、それ用のボタンの在庫が多く、その中から以下を選んだ。
   タクトSW→ ATD-TS6X6-D(H=18mm)
   上用ボタン→ PLSA56CP(白)

  ・全ての部品実装が済んだ。

  ・動作チェック開始。
   @ ショートチェック
     3.3V ⇔ GND, 5V ⇔ GND → OK
   A 電源チェック
     KENWOOD MDプレーヤ付属のACアダプター:DC5V 800mA出力を使った。

  ・OLED未実装・HEX未書込みの状態で
   3.3V→ 3.29V, 5V→ 5.52V→ OK

   B HEX書込み→ OK
   C 動作問題無し。
     ・イヤーフォンで聞いてもノイズ殆ど気にならず。
     ・タクトSW機能(BACK・NEXT・音量DOWN・UP)
     ・LED機能(SD未挿入時ブリンク)
     ・OLED表示OK

     ※ 再生動作時の電圧は以下
       3.28V, 5.35V 約200mA

  ・組込みを行う。
   タクトSWに、ボタンを付けてみたが、軸にテーパが掛かっている為、シャフトの先端の径は、ボタンの内径より
   細くなっており、ハメ込み感覚で固定出来ない。
   そこで、両面テープを細く切ったものを、ボタンの穴に詰め固定することにした。これでGOOD!!
   またOLEDの固定は、取り付け穴の1つを使って、M2 L=11mmの樹脂製スタッドに固定した。
   最後に、前後アクリル板を、M2.6スタッドで基板と共にサンドイッチして組立終了。

   マイクロSDスロットが、OLEDのキャリーボード裏面の左サイドに付いているが、挿入状態で基板ツラより引っ込んで
   いる為、取り出しのための切り欠きを入れたが、指だけでは取り外しは出来ても、取替えがやや、やりずらいのが難点。
   まあ、取替え頻度は少ないので良しとした。ピンセットなどで摘まんで入れれば問題無い。
   これで暫くは聞き込んでみようと思う。


<回路図>
 Eagle回路図→ 「OLED_MP3_PLAYER」

<最終ソース>

 実験テーマ102の実験版でそのまま動きます。→ OLED_MP3_PLAYER_TEST.c

※ 上メインソース以外のファイルは、実験テーマ101と同じです。


← 実験テーマ1に戻る   TOP PAGEに戻る   実験テーマ104へ →