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スキャナ」)
![](https://me-yoh.com/wp-content/uploads/2024/05/I01.jpg)
必要な部品
「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スキャナ」基板を切り出します。
基板の切り出しには、糸鋸から改造した「丸のこ」が大活躍しました。
![](https://me-yoh.com/wp-content/uploads/2024/05/M20.jpg)
オーダーした基板の全体図です。
最下段が「I2C スキャナ」用の基板です。
![](https://me-yoh.com/wp-content/uploads/2024/05/K01-1.jpg)
これを切り出します。
よく見ると、U1 の型番が「ATtiny44」ではないですね。(多分 IC ソケットの型番?)
また、電源部分のコンデンサとプログラムコネクタの位置を、もう少し工夫すれば基板サイズは、さらに小さく出来そうですが、10 cm × 10 cm の基板サイズの余白を埋める目的で作ったので、このサイズになりました。
![](https://me-yoh.com/wp-content/uploads/2024/05/K03-1.jpg)
そして、自宅リフローの前に、一応、電源ラインの導通確認を行ったら、J2(OLED)とJ3(プログラム用)の端子の向きが180度反転しているのに気づきました。
プログラムコネクタは普段使わないので、動作確認には問題ありませんが、OLED端子は困りました。
![](https://me-yoh.com/wp-content/uploads/2024/05/I16-1.jpg)
とりあえず、逆に刺せば動作確認はできるのですが、ケースに入らないので、リフロー後に配線を削ってジャンパで応急処置を行います。
自宅リフロー
自宅リフローの手順は、別記事に詳細手順をまとめるので、今回は寂しいですが写真なしです。
手順のみ紹介します。
他記事の「OLEDオシロスコープ」基板の組み立ての時にカッティングマシンで作った、OHP シートのステンシルを使って、低温クリームはんだを「転写」します。(「転写」前に基板をアルコールで拭くことを、おススメします。)
SMD 1206 サイズの抵抗とコンデンサを基板に乗せます。
そして、ヒートプレートで数分温めれば、基板の出来上がりです。
あとは、IC ソケット、端子4つ、電解コンデンサをを手半田で半田付けします。
リフローにも慣れたので、ここまでの組み立て時間は1時間少々ですね。
基板の修正
またまた、ダイソーの「精密ケガキ針」が活躍します。
カリカリと間違った配線を削り取ります。
グランド配線も間違っていたので、削るのに時間がかかりました。
今回は電源ラインの「VCC」も「GND」も間違っていたので、確実に配線が削れているか確認します。
導通試験には、「ChaN」さんが製作された「回路内導通チェッカ」を使うと便利です。
軽量で導通を音で知らせてくれます。(導通の抵抗値で音程も変わります。)
「回路内導通チェッカの組み立て」の記事は、以下のリンクをご覧ください。
ケースの製作
まずは、基板の概略のサイズを定規で計ります。
ケースのフタ部分は透明でないと OLED が見えないので、良いサイズの物をジャンク箱から探します。
ちょうど、「OLEDオシロスコープ」初号機で使った透明ケースの下部分が余っています。
セリアの「Travel Case SS」(No.1431)です。製造会社のHPです。
![](https://me-yoh.com/wp-content/uploads/2024/05/I17-1.jpg)
次は、基板と OLED、端子などのサイズを計ります。
ここで、KiCad から 3D データを持ち出せることを思い出しました。
KiCad の PCB エディターで「ファイル」の「エクスポート」で「STEP」を選びます。
![](https://me-yoh.com/wp-content/uploads/2024/05/I05.jpg)
3Dソフトの Fusion 360 で、このファイルを読み込みます。
その前にソフトの更新をしたら、Fusion 360 が立ち上がらなくなりました。
起動途中で停止する場合は、「C:\Users\〇〇\AppData\Local\Autodesk\Web Services」内の「loqinstate.xml」を削除すると正常に動作します。
![](https://me-yoh.com/wp-content/uploads/2024/05/I06.jpg)
この基板の 3D データと、蓋に使用する透明ケースのサイズを使ってケースを設計しました。
(下の図形は最終バージョンです。)
![](https://me-yoh.com/wp-content/uploads/2024/05/I02.jpg)
失敗作の数々です。今回は蓋が回転して開閉するのに対応したので、「しっかり閉まる」と「自由に回転する」を両立するのが大変でした。
![](https://me-yoh.com/wp-content/uploads/2024/05/I03.jpg)
横から見るとよく分かりますが、3D プリンタは樹脂を横向きに積んでいくので、途中で「穴」と「段差」が同じ高さにあると「割れ」が発生しました。
また、回転部分を薄くすると簡単に破損するので、丸い部分を追加して厚みを確保しました。
![](https://me-yoh.com/wp-content/uploads/2024/05/I04.jpg)
最終的には、基板とOLED がきっちり入るケースが完成しました。
![](https://me-yoh.com/wp-content/uploads/2024/05/I07.jpg)
ちなみに、電源端子は、「ラジオペンチ」さんの「FFTアナライザー」を組み立てた時に使った「USBメスCタイプケーブル」を使用しました。
(今回はノイズ対策のフェライトは、不要だと判断して組み込んでいません。)
![](https://me-yoh.com/wp-content/uploads/2024/05/I15-1.jpg)
「FFTアナライザー」の組み立てとノイズ対策は、以下のリンクをご覧ください。
このままでも十分実用的なのですが、スケルトンなケースは20世紀のアップルのパソコンで採用済みなので、塗装を行います。
ケース蓋の塗装
まず、0.96 インチの OLED の表示部分のマスキングを準備します。
マスキングテープを表示部分のサイズにカットして、透明ケースに貼り付けます。
![](https://me-yoh.com/wp-content/uploads/2024/05/I08.jpg)
透明ケースを取り外して、スプレー塗装を出来る場所(晴れた適度な風の吹く屋外が最適です。)で塗装します。
塗装する下には、いらない紙などを敷きましょう。
塗装には、ダイソーの艶消し黒のスプレー「マットブラック」を使いました。
![](https://me-yoh.com/wp-content/uploads/2024/05/I10-1.jpg)
スプレーは少し離れて薄く数回に分けて塗りましょう。
一度に厚く塗ると、液だれして仕上がりが汚くなります。
十分乾燥させます。
![](https://me-yoh.com/wp-content/uploads/2024/05/I11.jpg)
マスキングテープを剥がすと・・・
蓋の塗装が完成しました。
![](https://me-yoh.com/wp-content/uploads/2024/05/I12-1.jpg)
動作確認
塗装が終了した透明ケースのふたを、3D プリンタで作成したケースにパチッとはめて、モバイルバッテリーから電源を供給します。
スキャン先には、いつもの OLED をつないでいます。
塗装する前には、内部が見えていたのでスキャン結果が見づらい感じでした。
しかし、黒で他の部分をカバーすることで、良い感じにアドレスの情報だけが目に入ってきます。
![](https://me-yoh.com/wp-content/uploads/2024/05/I13.jpg)
改良したいところ
Nickelgrass さんの設計された「I2C スキャナ」は、大変スマートな表示方法を採用しています。
ドット数の少ないディスプレイ(128 × 64 ドット)を使いながら、一覧でアドレスを表示出来ています。
(下の写真は「I2C スキャナ」の表示例です。上列の「7」と横軸の「8」の交点が反転しているので、この I2C アドレスは 16進数の「78」です。)
![](https://me-yoh.com/wp-content/uploads/2024/05/I14-1.jpg)
また、少ないメモリで2つの独立した I2C チャンネルを使用することを、小さな ATtiny 上で実現しています。
同じ I2C チャンネルを使うと、表示に使っている OLED と同じアドレスの I2C の部品のアドレスは調べることが出来ません。
ところが、唯一の困ったところが、Arduino のスケッチで指定するアドレスではなく、左シフトされた値が表示されるところです。
OLED なら「0x3C」と表示して欲しいところですが、「0x78」部分が「■」で表示されます。
Arduino IDE へ入力する時には計算すれば済むことですが、人間がやらなくても良いところは、機械にやってもらいたいところです。
これを改造しようとして、元のプログラムを色々と触ってみたのですが、現在の私の実力では修正することが出来ませんでした。
まだ、Arduino IDE を使って、やっと OLED に文字を表示する程度の能力では、そこまでは届かないようです。
引き続きプログラムを勉強して、先の話になると思いますが、この機能が実現したら記事にまとめますね。
コメント