TinyJoypad名刺化奮闘記 No.2


2023年11月30日
前回のあらすじ
TinyJoypadをATmega328pから動かすことに成功するも、ノイズの対策が必要なことがわかりました。
特定不能なI2Cの周波数
I2Cに乗っているノイズをどうにかしたいので、I2Cの状況を知らなければどうすることもできません。
I2Cの周波数は100kHzか400kHzという規定らしいですが、 ATmega328pのデータシート を見ると、本来は
\( SCL周波数 = \frac{CPUクロック周波数}{16 + 2 \times (TWBR) \times 前置分周値} \)
となっています。しかし、私の状況はこれに当てはまりません。
何故なら、ssd1306xled.cppはI2C用にArduino用のWireライブラリなど、元からAVRにある機能は一切使っていないからです。
直にポートに向かってHIGH/LOWを出力しています。Arduinoの形式で言うなら、digitalWriteで信号を作っているのと同義です。
つまり、周波数を知りたければ、「オシロスコープで調べる」か「アーキテクチャの命令レベルまで調べる」しかないのです!
前者は、オシロスコープが無いのでできません。(学校にあるものは使えない状態だった)
後者は、労力が掛かりすぎます。(最低限アセンブラコードを調べる必要性がある)
では、ここでいまできることは何でしょう。
適当なコンデンサを挟むしかないのです!
今使っているコンデンサは12pFです。3.3Vは平気ですが5Vは乱れます。
そこで実験です。12pFを並列で2つ繋げ、実質24pFのコンデンサとして接続し、5Vで駆動してみると、左右反転してしまいました。ちらつきも直っていません。
動作不良が起こらない範囲の積層セラミックコンデンサ(20pF前後?)も買い物リスト行きです。
コイン電池の駆動も問題なさそうなので、できないことは置いといて回路の作成に移りましょう。
Autodesk Fusion 360 -TinyJoypad(ATmega版)回路作成-
名刺用の回路を組んでいきましょう。
最近はFusion 360を使っているので、これで作っていきます。

55mm x 91mmのスケッチを作成し、独立したPCBを作成します。
新しい電子デザインに必要なリンクを行い、回路図を開きます。
ATmega328PとSSD1306を引っ張ってきます。
ライブラリは以下の通りです。
SSD1306は自作しました。
これらを繋げていきます。

これが回路図です。でかくて画像に収まりません。
フットプリントを試行錯誤した結果(3時間)がこれです。

ここに電池ホルダー・電源スイッチをさらに追加します。
電源スイッチライブラリは6ピンのピンヘッダで代用しました。
その結果がこちらです。

3Dにプッシュすると、こうなります。

肝心の裏はこうなりました。

思ったより範囲が小さいですね。このままやっていきましょう。
Autodesk Fusion 360 -裏面の状態を画像として出力する-
裏面に色々と情報を載せるわけですが、貫通穴(ビア)の上はどうあっても表示されません。つまり、穴は回避して情報を載せる必要があります。
フットプリントで実際に裏面に現れる穴以外を非表示にします。

ドキュメント → 出力 からpdfに出力します。欲しいのは裏面なので反転も忘れず。

これを無理やりスクリーンショットし、画像として取り込みます。
この画像を画像加工ソフトを使って名刺としてデザインしていきます。
名刺の情報は載せられないのでこのフェーズはカットです。
今まで同様に発注をかけます。
プリント基板発注
発注先はニキシー管制作記でも利用したJLCPCBです。
pcbgogoにしようかと思ったのですが、ここよりかなり割高だったのでやめました。
例によって、ドリルデータ、ガーバーファイルを含んだzipファイルをアップロードします。

サイズは日本式名刺なので、100mm x 100mm以内に収まり、輸送が少し割安です。(そうなってるはず)
発注は30枚。厚さは名刺なので少し薄くして0.8mmにします。色は黒、シルクスクリーンは白です。表面の色はHASLを選んだので恐らく銀色です。
金ピカにしたかったらENIGを選択すればOKです。
この"PCB Specifications"の内容が珍しいものになると価格が急激に上がります。
組み合わせによって値段は都度変わるので色々試してみたいですね。

いろいろやって発注完了です。ニキシー管制作記が先の更新になりそうですが、次回実物が届き次第お会いしましょう。