前回のこちらの記事の追記となります。
電子工作でPCBの製作を始めて1年ほどが経つのですが、今回製作した基板では非常に悔しいミスをしてしまいました。
オーディオチップのパッケージサイズを間違ってしまい実装ができず、音が出ないというものです・・・。
以前ESP32で動画を再生するMini RetroTVを製作しました。
レトロテレビを模した形状のケースを3Dプリンタで作成し、TinyTV(タイニーTV)のような可愛い動画再生プレイヤーとして仕上げることが出来ました!
この投稿をInstagramで見る
そして今回、上記Mini RetroTVのミニPCB版とも言えるキーホルダーサイズの小さな動画再生プレイヤーを製作してみました。
もともとはこちらの基板を先に製作する予定だったのですが、その当時の私のCADスキルが足りず製作途中で保留にしていたものとなります。
基板設計やKiCadの扱いにも少し慣れてきたので実際に形にしてみようと今回製作するに至ったのですが・・・
オーディオチップのフットプリントを間違えるという痛恨のミスをしてしまい、想定通り動作はしてくれますが音が出ないという非常に悔しい思いをしております。
この投稿をInstagramで見る
単純なミスなのでその部分を修正し再度基板を発注してリベンジしてみようと考えているのですが、その途中経過として当記事にまとめておこうと思います。
ESP32で動かすミニビデオプレイヤー基板の製作!
まずはじめに、ESP32で動画を再生させる今回のプロジェクトのコアとなる部分を公開されている先人の方々に感謝です!
具体的には動画ファイル(mp4)からあらかじめ映像ファイル(mjpeg)と音声ファイル(mp3)に分離したファイルを用意しておきSDカード内に保存、ESP32の2つのコアでそれぞれ処理し映像として再生するというものです。
詳しくはこちらの記事で紹介しているのであわせて見て頂ければと思います。
CADのイメージ
前回の記事でも少し書いたのですが、TinyTVのような構成のものを自分で作ることが出来れば楽しいだろうな・・・
そんな思いつきから調べてみると上記記事で書いたESP32を使い動画を再生させるという素晴らしいプロジェクトを見つけ、これをベースに使わせて頂くと自作PCBで動画再生プレイヤーを作ることやTinyTVのようなものを自作することが出来そうです。
PCBで製作するなら片手に収まるサイズ感、キーホルダーのような感覚で使えるサイズで作りたいという思いがあったのですが、想定する基板サイズで作ろうとすると当時の私のCADスキルでは全てのパーツを収めることが出来なかったので、まずはESP32開発ボード(Lolin D32を使いました)やSDカード・オーディオモジュールなど既存で販売されているパーツを組み合わせ、そしてレトロテレビのような形状のケースを3Dプリンタで作成しそこに収めたものをMini RetroTVとして製作しました。
非常に可愛く仕上がったと思います!
この投稿をInstagramで見る
入手しやすい既存パーツで組んでいるのでブレッドボードで動かすだけでも楽しいと思います!
この投稿をInstagramで見る
そしてある程度KiCadの扱いにも慣れてきたのでPCB版を製作してみることにしました。
上記ブレッドボードで組んだものを基板化するために各種チップやパーツをピッチ変換基板を使いバラで組んで動作テストを行い、この回路構成(パーツ数)なら1.69インチのTFTカラーディスプレイを使いイメージしていた片手に収まるサイズ感で設計&製作することが出来そうです。
この投稿をInstagramで見る
メインの基板以外に駆動用のリポバッテリーやスピーカーの配置も必要となるので、ボトムプレートをスペーサーで結合する2枚構成で作ることにしました。
基板設計
コアとなるESP32はESP-WROOM-32を使いました。
動画再生のスケッチを書き込むのにUSB-シリアル変換モジュールが必要になるのでESP32-S3-WROOM-1といった内蔵されたコアを使う手もあったのですが・・・
動画再生を行うメインスケッチをESP32に一度書き込んでしまえば、以降はSDカードに再生させたい動画 & 音声ファイルを追加するだけなので製作当初はシリアルのパッドを作り外部に接続したUSB-シリアル変換モジュールを使ってESP32への書き込みを行う構成で考えていました。
以前は0805サイズのパーツをベースに考えていましたが最近では0603サイズの実装にも慣れてきたのでパーツサイズを変更、その分スペースが出来たのでシリアル変換用のチップも組み込んでおくことにしました。
ESP32への書き込み頻度はそれほど高くなく、USB-シリアル変換チップはスペース的に小型なCH340EやCH340Nの使用を考えリセット(ENピン)やブート(IO0ピン)に繋がったスイッチを取り付け手動でスケッチの書き込みを行う構成で考えていましたが、パーツの配置を再調整するとESP32への自動書き込み(オートフラッシュ)回路も組み込むことが出来ました。
ESP32のオートフラッシュにはUSB-シリアル変換チップのDTRとRTSが必要となるので、少しチップサイズが大きくなりますがこれらが使えるCH340Cチップを使いなんとかこのボードサイズに収めることが出来ました。
これなら動画再生プレイヤーとして使う以外にも何か別用途でも使えそうです!
そして基板を発注しパーツ実装時に気付いたのですが、基板設計で大きなミスがありました。
当初I2SオーディオチップにMAX98357を使って回路設計をしていたのですが、パーツ点数を減らしESP32への配線をシンプルに出来るようにPAM8302Aに変更しオーディオ部分の回路を組み直したのですが、その際にフットプリントを誤ってしまいこのチップの実装が出来ず・・・非常に悔やまれます!
全体構成は、コアにESP-WROOM-32、USB-シリアル変換チップにCH340C、USB端子からリポバッテリーの充電を行うMCP73831を使った充電回路、PAM8302Aを使ったオーディオ回路という構成になりました。
JLCPCBに基板発注
まず今回製作したボードの全体回路構成や動画再生部分のスケッチ、また基板データ(ガーバーファイル)をご紹介したかったのですが、先述のようにオーディオチップのサイズをミスしてしまい現状音が鳴らない状況でPCBを再発注する際に変更等あるかもしれないので後日追記しておきます。
基板の発注はJLCPCBを使いました。
PCB2枚(メインボード・ボトムプレート)とステンシルも一緒に発注しました。
ステンシルサイズは通常発注すると結構大きくなり、その分送料も高くなってしまうのでサイズをカスタムして発注しています。
基板サイズが約40mm×55mmとなるのでその2倍くらいのサイズ(100mm×100mm)に指定すれば実装もしやすく送料もその分お安く発注することが出来ます。
JLCPCBでのステンシル発注方法やステンシルを使ったパーツ実装に関してはこちらの記事も参考にして下さい!
またJLCPCBの基本的な基板発注方法に関してはこちらの記事で詳しく解説しているのであわせて見て頂ければと思います。
パーツの実装
送料区分にOCS Expressを選択し発注から8日で手元に基板が届きました。
基板2枚とステンシルの同時発注ですが、ほんと毎回製造&到着が早いですね!
今回製作した基板では0603サイズのパーツをベースにしピッチの狭いチップがいくつかあり、パーツ間のクリアランスも結構攻めたのでステンシルを使うと実装が楽になります。
パッド部分に最適な量のはんだペーストを綺麗に乗せることが出来ます。
ステンシルを使った実装に関してはこちらの記事も参考にして下さい!
順調にパーツを実装していたのですが・・・
オーディオチップ(PAM8302A)でおやっと?
グランドプレーンなんて付いていないチップなのに・・・サイズも違い実装出来ないのでこの時点で音が出ないことが確定しました!
残念・・・。
PAM8302AチップにはSOP-8とMSOP-8のパッケージがあるのでサイズを間違えただけならそのサイズに合うチップを入手すれば実装は出来るのですが、全く違ったフットプリントを使っていました。
実チップは手元にあったので背面グランドプレーンが付いている時点でおかしいなと気付けばよかったのですが・・・
修正基板を発注すのに各所動作チェックはしておきたいので実装を続けることに・・・。
パーツの実装はミニリフロー装置MHP50を使いました。
ホットプレートサイズがMHP30より一回り大きくなったMiniwareさんの新製品です。(2023年末に発売)
リフロー装置としての安全設計などMHP30の良い所がすべて引き継がれ、ホットプレートサイズが大きくなりカラーディスプレイ搭載、操作性も大きく向上した非常に使いやすいミニリフロー装置です。
MHP50の詳しいレビューはMHP30の記事に後日追記しておきます。
動作確認
ステンシルを使っているので実装はブリッジ等もなく一発で完動しました!
音が鳴らないのだけが、ホント残念です。
この投稿をInstagramで見る
リポバッテリーを接続しボトムプレートを取り付け収めるとこのサイズ感です。
想定していた片手サイズに収まる可愛い動画再生プレイヤーが完成しました!
この投稿をInstagramで見る
USB端子(Type-C)からのリポバッテリー充電も問題ないようで、基板修正はオーディオチップのサイズ修正だけで問題なさそうです。
この投稿をInstagramで見る
少し余談になりますが、ボードに取り付けた電源用の緑色LEDとリポバッテリー充電中に点灯するオレンジLEDの電流制限抵抗はそれぞれ1kΩの値を使っています。
電源LEDは3.3V駆動、充電LEDは5V駆動となっているので明るさ(輝度)が少し異なっています。
これらインジケーターLEDはディスプレイの上部に設置しているのでメインのディスプレイの邪魔にならない程度に明るさを抑えるのが理想的です。
また2つのLEDの明るさも合わせたいところです。
今回は修正基板を作る予定なので電流制限抵抗の値は調整していませんが、そのようなLEDの明るさを調整し最適な抵抗値を簡単に計測できるボードがあると便利です!
最後に!
想定していたサイズ感のミニビデオプレーヤーが完成しました!
オーディオチップのサイズを間違えていた私の凡ミスなんですが、KiCadを使っているとこのようなミスは結構起こりがちだと思います。
特に私のようにようやくKiCadの扱いにも少し慣れてきて回路規模が大きなものを作る時などです。
設計途中でブロック単位で回路をごっそりと変更するといった事はよくありますが、その際のアノテーションによりリファレンスをリセットするか否か?
またその際の関連付けの事などによりパーツの配置が変わったりフットプリントが間違っていたりと、このようなミスが発生しているにも関わらず気付かないことが私はよくあるのですが、これも別記事にでもまとめてみようと考えています。
KiCadのデータを確認したところ今回はオーディオチップのサイズ間違いだけだったので修正は比較的簡単だと思います。
後日、ちゃんと音が出る完成形としてまた詳しくご紹介できればと考えています。
コメントを残す