「I2Cスキャナ」のケースを作る

Arduino などの MCU へ簡単に周辺機器を接続する規格に I2C があります。
この I2C を使うには部品の使っているアドレスを知る必要があります。

そこで、「elektor MAG」誌のユーザフォーラムで Nickelgrass さんが公開している「Micro I2C-Scanner with 0.96″ Oled and ATtiny44」を組み立てました。
前回は、最近の 0.96 インチ OLED を使うと表示不良が発生するので、その不具合を(一時的に)修正してみました。

今回は、基板のままだと使い勝手が良くないので、いつもの Fusion 360 でケースを設計して 3D プリンタで専用ケースを作ってみます。(専用なので、穴あけなどは必要なく部品を取り付けると完成です!)
なお、「I2Cスキャナ」の前回の記事は、以下のリンク先をクリックするとご覧いただけます。

「I2Cスキャナ」の組み立て

「I2Cスキャナ」の組み立てについては、以下のリンク先でブレッドボード上で組み立てて、ファームウエアを入手し、書き込みする方法を詳細に紹介しています。

前回との違いは、「OLEDオシロスコープ」用に発注した基板の余白に、「I2Cスキャナ」用の基板も作ったので、SMD 部品を使った基板をサクッと自宅リフローしたところです。

おかげで、小型化できたので「OLEDオシロスコープ」初号機で使用した透明ケースの余った下半分を使って、ケースが作成できました。(完成した「I2Cスキャナ」)

必要な部品

「I2Cスキャナ」で使った部品です。ごくわずかです。

  • ATtiny44(14 Pin ICソケット)
  • OLED SSD1306(I2C 0.96インチ)
  • 4.7kΩ × 5(SMD 1206)
  • 0.1uF(SMD 1206)
  • 10uF
  • 2p端子(電源用)使用せずに電源配線を直付け
  • 4p端子 × 2
  • 6p端子(ファームウエア書き込み用)
  • 電源用 USB 端子
  • I2C 計測用ケーブル(4p端子)

基板の切り出し

「OLEDオシロスコープ」と共にオーダーした基板から「I2Cスキャナ」基板を切り出します。
基板の切り出しには、糸鋸から改造した「丸のこ」が大活躍しました。

オーダーした基板の全体図です。
最下段が「I2C スキャナ」用の基板です。

これを切り出します。
よく見ると、U1 の型番が「ATtiny44」ではないですね。(多分 IC ソケットの型番?)

また、電源部分のコンデンサとプログラムコネクタの位置を、もう少し工夫すれば基板サイズは、さらに小さく出来そうですが、10 cm × 10 cm の基板サイズの余白を埋める目的で作ったので、このサイズになりました。

そして、自宅リフローの前に、一応、電源ラインの導通確認を行ったら、J2(OLED)とJ3(プログラム用)の端子の向きが180度反転しているのに気づきました。
プログラムコネクタは普段使わないので、動作確認には問題ありませんが、OLED端子は困りました。

とりあえず、逆に刺せば動作確認はできるのですが、ケースに入らないので、リフロー後に配線を削ってジャンパで応急処置を行います。

自宅リフロー

自宅リフローの手順は、別記事に詳細手順をまとめるので、今回は寂しいですが写真なしです。
手順のみ紹介します。

他記事の「OLEDオシロスコープ」基板の組み立ての時にカッティングマシンで作った、OHP シートのステンシルを使って、低温クリームはんだを「転写」します。(「転写」前に基板をアルコールで拭くことを、おススメします。)

SMD 1206 サイズの抵抗とコンデンサを基板に乗せます。
そして、ヒートプレートで数分温めれば、基板の出来上がりです。

あとは、IC ソケット、端子4つ、電解コンデンサをを手半田で半田付けします。

リフローにも慣れたので、ここまでの組み立て時間は1時間少々ですね。

基板の修正

またまた、ダイソーの「精密ケガキ針」が活躍します。
カリカリと間違った配線を削り取ります。
グランド配線も間違っていたので、削るのに時間がかかりました。

今回は電源ラインの「VCC」も「GND」も間違っていたので、確実に配線が削れているか確認します。
導通試験には、「ChaN」さんが製作された「回路内導通チェッカ」を使うと便利です。
軽量で導通を音で知らせてくれます。(導通の抵抗値で音程も変わります。)
「回路内導通チェッカの組み立て」の記事は、以下のリンクをご覧ください。

ケースの製作

まずは、基板の概略のサイズを定規で計ります。
ケースのフタ部分は透明でないと OLED が見えないので、良いサイズの物をジャンク箱から探します。
ちょうど、「OLEDオシロスコープ」初号機で使った透明ケースの下部分が余っています。
セリアの「Travel Case SS」(No.1431)です。製造会社のHPです。

次は、基板と OLED、端子などのサイズを計ります。
ここで、KiCad から 3D データを持ち出せることを思い出しました。

KiCad の PCB エディターで「ファイル」の「エクスポート」で「STEP」を選びます。

3Dソフトの Fusion 360 で、このファイルを読み込みます。

その前にソフトの更新をしたら、Fusion 360 が立ち上がらなくなりました。
起動途中で停止する場合は、「C:\Users\〇〇\AppData\Local\Autodesk\Web Services」内の「loqinstate.xml」を削除すると正常に動作します。

この基板の 3D データと、蓋に使用する透明ケースのサイズを使ってケースを設計しました。
(下の図形は最終バージョンです。)

失敗作の数々です。今回は蓋が回転して開閉するのに対応したので、「しっかり閉まる」と「自由に回転する」を両立するのが大変でした。

横から見るとよく分かりますが、3D プリンタは樹脂を横向きに積んでいくので、途中で「穴」と「段差」が同じ高さにあると「割れ」が発生しました。
また、回転部分を薄くすると簡単に破損するので、丸い部分を追加して厚みを確保しました。

最終的には、基板とOLED がきっちり入るケースが完成しました。

ちなみに、電源端子は、「ラジオペンチ」さんの「FFTアナライザー」を組み立てた時に使った「USBメスCタイプケーブル」を使用しました。
(今回はノイズ対策のフェライトは、不要だと判断して組み込んでいません。)

「FFTアナライザー」の組み立てとノイズ対策は、以下のリンクをご覧ください。

このままでも十分実用的なのですが、スケルトンなケースは20世紀のアップルのパソコンで採用済みなので、塗装を行います。

ケース蓋の塗装

まず、0.96 インチの OLED の表示部分のマスキングを準備します。
マスキングテープを表示部分のサイズにカットして、透明ケースに貼り付けます。

透明ケースを取り外して、スプレー塗装を出来る場所(晴れた適度な風の吹く屋外が最適です。)で塗装します。
塗装する下には、いらない紙などを敷きましょう。
塗装には、ダイソーの艶消し黒のスプレー「マットブラック」を使いました。

スプレーは少し離れて薄く数回に分けて塗りましょう。
一度に厚く塗ると、液だれして仕上がりが汚くなります。
十分乾燥させます。

マスキングテープを剥がすと・・・
蓋の塗装が完成しました。

動作確認

塗装が終了した透明ケースのふたを、3D プリンタで作成したケースにパチッとはめて、モバイルバッテリーから電源を供給します。
スキャン先には、いつもの OLED をつないでいます。

塗装する前には、内部が見えていたのでスキャン結果が見づらい感じでした。
しかし、黒で他の部分をカバーすることで、良い感じにアドレスの情報だけが目に入ってきます。

改良したいところ

Nickelgrass さんの設計された「I2C スキャナ」は、大変スマートな表示方法を採用しています。
ドット数の少ないディスプレイ(128 × 64 ドット)を使いながら、一覧でアドレスを表示出来ています。
(下の写真は「I2C スキャナ」の表示例です。上列の「7」と横軸の「8」の交点が反転しているので、この I2C アドレスは 16進数の「78」です。)

また、少ないメモリで2つの独立した I2C チャンネルを使用することを、小さな ATtiny 上で実現しています。
同じ I2C チャンネルを使うと、表示に使っている OLED と同じアドレスの I2C の部品のアドレスは調べることが出来ません。

ところが、唯一の困ったところが、Arduino のスケッチで指定するアドレスではなく、左シフトされた値が表示されるところです。
OLED なら「0x3C」と表示して欲しいところですが、「0x78」部分が「■」で表示されます。
Arduino IDE へ入力する時には計算すれば済むことですが、人間がやらなくても良いところは、機械にやってもらいたいところです。

これを改造しようとして、元のプログラムを色々と触ってみたのですが、現在の私の実力では修正することが出来ませんでした。
まだ、Arduino IDE を使って、やっと OLED に文字を表示する程度の能力では、そこまでは届かないようです。
引き続きプログラムを勉強して、先の話になると思いますが、この機能が実現したら記事にまとめますね。

コメント