
AliExpressで売っている1.47インチのIPS LCDを使って、現在値や履歴グラフが見れる消費電力メーターを作ってみました。電流センサーにはINA226のモジュールを使い、マイコンはM5StackのM5StampC3で制御するようにしました。
目次
・製作の目的
・最初に試したこと
・パーツ選び
・配線図
・プログラムの作成
・ケースの作成(1) ※ボツ
・オリジナル基板の作成(1) ※ボツ
・オリジナル基板の作成(2) ※採用
・ケースの作成(2) ※採用
・完成!
・余談 AIによる基板設計ってどうなの?
製作の目的
今回は10インチラックに搭載するNUCの消費電力を表示するための、電力メーターを製作していきます。10インチラックはまだ未完成なので、本記事で紹介するのは電力メーター単体になります。
最初に試したこと
もともと自作するつもりはなくて、市販のLEDデジタルパネルメーターを使う予定でした。最初に買ったのは秋月の1580円で売ってるこちらの商品。

これをたくさん付けたらかっこいいと思ってたんですが、結構値段が高いんですよね。Amazonで安いのないかなぁと探していたら、こちらの商品が2個入って680円と激安なのがありました。

これでいいじゃん!と思っていたのですが、せっかく作るんだからもっとゴージャスなのにしたい。値の変化も1秒間に2~3回程度でカクカク表示。もっと視覚的に値を見たい。アナログ電流計を付けたらかっこいいけど、あれはでかいんだよなぁ。じゃあ自分で作るしかないか。ということで自作することにしました。
パーツ選び
最初はこのデジタルパネルメーターの同じサイズで、同じようにパネルに嵌め込むタイプのものを作っていました。パネル穴の取り付けサイズは 45x26mm です。
LCDの選択
LCDはAliExpressで売ってた、1.47インチのフルカラーTFT IPSディスプレイモジュールを使用しました。モジュールの外径は 44x21mm とかなり小さいです。この小ささでありながら解像度は 172 x 320 と高くて発色がきれいです。

インターフェースはSPIで、コントローラーはST7789なので、普通にM5Stackなどから制御ができます。
電流センサーの選択
電流センサーはAliExpressで売ってた、INA226を搭載したモジュールを使用しました。INA226を搭載していて、最大20Aまで測定できます。この手のモジュールはいろいろな種類が販売されていて、最大2Aまでだったり、具体的な値が書いてない場合が多いので注意が必要です。

インターフェースはI2Cで、I2Cアドレスは0x40でした。基板上のチップ抵抗で変更できるようですが、さすがにこれを半田付けできる自信はないですね。
コントローラーの選択
コントローラーにはM5StackのM5StampC3を使用しました。非常に小型で値段も安く、使い慣れたM5Stackのライブラリが使用できるのが最大のメリットです。5個入りだと6622円なので1個あたり1324円です。

M5StampC3は表面実装とヘッダーピン、どちらでも使用できるようになっていて便利です。

今回は飽きたときにばらして再利用できるように、ピンヘッダーで運用する形にします。このロープロファイルのピンヘッダーとソケットを使うと、部品の高さが抑えられて便利です。ただしブレッドボードでは使えないでしょうね。
配線図
今回作成する電力メーターは4つのモジュールで構成されています。マイコンモジュール、電流センサーモジュール、DC-DCモジュール、LCDモジュールです。

電源は電流センサーモジュールから引っ張ってきて、DC-DCコンバーターで5Vを作ります。
プログラムの作成
簡易チェック
まずは動作確認のため、値が取れて表示できるかまでを作っていきます。

GPIOとデバイスの情報だけ伝えてAIに作ってもらいましたが、一発でちゃんと動くものができました。
メーターデザイン
せっかく172×320という高解像度のLCDがあるので、単に数字を表示するだけではもったいないですね。AIにかっこいいデザインを作ってもらいました。

なんかかっこいいのができた!試しにそのまま表示させてみます。

おおー!おぅ、微妙だな…。1.47インチのディスプレイだと細かい表現がよく見えなくて、実際に見るとごちゃごちゃしてる感じになってしまいました。小さいLCDでも見やすいデザインにしてもらいましょう。

最終的に決定したのはこちらのデザイン。ここから数字の部分を消していきます。数字はフォントで描画するためです。サイズも320×172に縮小します。GIMPで編集しました。

これで背景ができたので、Lang-shipさんの画像をソースコードに変換するサイトで変換します。次は文字の位置合わせです。フォントの位置やサイズを合わせるのって結構面倒なんですが、そこはAIにやってもらいました。

数回の調整が必要でしたが、ちゃんと文字の位置が合ってくれました。しかもこのメーター部分、楕円形で可動範囲が180°を超えてるんですよね。こんなの自分じゃ絶対計算できません。
実際の動作イメージはこちら。
履歴グラフも色付きで見えるようになっていて、4分半くらいの結果を見ることができます。
プログラム
今回作成したプログラムは GitHub にアップしました。(まだしてない)
とりあえず 仮URL に置いときました。
ケースの作成(1) ※ボツ
当初は既製品のパネルメーターと同じような一体型のデザインを考えていました。正面にLCD、上にINA226電流センサーと、DC-DC電源、下にM5StampC6を配置してひとまとめにするものです。この設計は超大変でした。


実際にはこれが5個必要です。1個あたり20本くらいの配線を適切な長さに切って、被覆をむいて、はんだ付けして…と考えていたら頭がクラクラしてきました。こんなんめんどくさくてやってらんねー。ということで配線の手間を省くためのオリジナル基板を作ることにしました。
オリジナル基板の作成(1) ※ボツ
M5StampC6、INA226電流センサーモジュール、DC-DC電源を1つの基板上にまとめ、FFCケーブルでLCDモジュールと接続するようにします。
回路図

DC-DC電源には三端子DCDCレギュレーター 5V BP5293-50を使用しました。電源入力は電流センサーに入ってくるところから取り、5Vに降圧してM5StampC6で使用します。このモジュールは外付け部品なしで使えてそこそこ安いのでこれを選びました。
なお、このLCDモジュールはSPI接続ですが、SCL/SDAという紛らわしい記載があります。SCLはSCK、SDAはMOSIになります。
基板
この基板にはFFCコネクタが2つ付いています。CSはGPIO 4と9に分けられているので、2つのLCDを接続できますが、これは拡張用で今回は1個しか使いません。実はこの2つのFFCコネクタはピンの並びが逆になっています。表から取り出すときはsame sideのFFCケーブルを、裏から取り出すときはreverseのFFCケーブルを使います。(ケーブルがどっち向きでも対応できるようになってる)


今回は表から取り出します。M5StampC6はヘッダーピンで取り付けをするので、基板とモジュールの間に隙間ができます。この隙間を有効活用するわけです。もし表面実装したい場合は裏面にFFCコネクタを取り付けて、逆配線のケーブルを使うこともできます。
届いた基板

1週間くらいでJLCPCBから基板が届きました~。安価で簡単に基板が作れる素晴らしいサービスです。
結局ボツになった
しかしこの基板は不採用となりました。理由はいくつかあります。
・0.5mmピッチのFFCコネクタのはんだ付けが地獄
・USB接続したときに5VがDC-DCコンバーターに逆流する
FFCコネクタの部分は3Dプリンターでステンシルを作ったのですが、0.2mmノズルを使っても微細な加工ができませんでした。そのため手はんだに挑んだところ、はんだブリッジを起こしたり、接触不良を起こしたり、はんだ付けは困難を極めました。なんとか1つはできたものの、こんなのあと4個もやりたくない。
じゃあステンシルを再注文しようかと思ったものの、なんならPCBAで作ってもらったほうが早いと気づき、あらためてPCBAで作成することにしました。
オリジナル基板 PCBAの作成(2) ※採用
先ほどの基板はいろいろと問題があったので、あらためてPCBAで再注文することにしました。PCBAは部品の実装も含めて依頼できるサービスです。
修正内容
・DC-DCコンバーターの出力に逆流防止のダイオードを追加
・DC-DCコンバーターの入力にリセッタブルヒューズを追加
・電源入力パッドの周辺の裏のGNDベタを削除(ショート防止)
・表面実装部品のアセンブリ
回路図

LCDのコネクタは1個にしました。拡張する予定もないし、拡張するならおそらく新しい基板が欲しくなるから今入れる必要がないからです。
PCBAにするのならオーバースペックなDC-DCコンバーターなんか使わずに(手間優先で採用した)、SMD部品で作ればよかったです。しかしもう部品は買ってしまったのでそのまま使うことにしました。
基板


実装してもらう部品は3点のみという、ちょっと贅沢な基板ですね。手間と時間はお金で買えるんです。
届いた基板

はじめてのPCBAでしたが、ちゃんと部品が正しく乗っていました。
組み立ててみた
M5StampC3は再利用できるように表面実装はせず、ピンヘッダーで基板に接続する形にしています。そうすると基板との間にスペースができるので、そこにLCDのFFCコネクタを入れてスペースを圧縮しています。

5つの電力メーターができました!

同じものをいくつも作るのって結構大変なので、できるかぎり自分ではんだ付けする箇所を減らす工夫が必要ですね。もしまた同様の基板を作るなら、今度はINA226もDC-DCコンバーターもM5StampC3もすべて表面実装できるようにしようと思いました。
ケースの作成 (2) ※採用
いよいよ最終段階のケースの作成にとりかかります。実装方法が変わったのでケースも作り直しです。新しいケースはLCDとコントローラーを分離する形にしました。


パネルに取り付けてFFCケーブルで接続します。


コントローラー側のケースも作成しました。ケースは万が一燃えたことも考えて、難燃性のPC-FRフィラメントで作りました。お高いフィラメントなので、他のフィラメント3本と一緒に買って割引で買うのがおすすめです。

ケースのフタはパチッと閉まる構造になっているので、万が一ナットを落としても安心です。
ケースの3Dモデルはこちらにアップしました。(まだしてない)
完成!
やっと完成!

ここまでの道のりがほんと長かった!初期の開発、デバッグ、基板の設計、2度の発注、組み立て、ここまで1か月もかかってしまいました。これ、10インチラックサーバーのほんの一部のパーツに過ぎないんですよね。
でもどうしてもこだわりたくなってしまって、なかなかメインの10インチラックサーバーの製作が進みません。
余談 AIによる基板設計ってどうなの?
※この記事は今後あらためて別記事で書きたいと思ってます。まずは試してみたことを簡単にまとめておきます。
最近はAIに基板を設計させる話題を見かけることが多くなりました。AIは会話ができるし、絵も描けてプログラムも書ける。ならば基板を設計することもできるはずですね。この嫌いすぎる基板設計(特にPCBの設計)がAIにやってもらえるなら素晴らしいことです。
ためしにAIに簡単な回路設計を指示してみました。3端子レギュレーターICを使って12Vから5Vにする回路の作成です。(Fable 5の方は3端子レギュレーターICという指示無し)
Fable 5 + KiCad
一般ユーザーが使える最強クラスのAnthropicのモデル Fable 5を使ってみました。KiCadのファイルの生成と、KiCadのコマンド実行で作業したようです。


すごくないですか?これ全部AIが作ったんですよ。人間は自然言語で指示をしただけです。ただFable 5はとても高くて、これだけで2000円ほどの枠を消費してしまいました。

動くかどうかはチェックしてませんが動きそうな感じです。
Composer 2 + EasyEDA Pro + Cursor Skills
Fable 5はとても高いので、とっても安いComposer 2に作ってもらいました。ここからはEasyEDA Proを使い、CursorのスキルでEasyEDA ProのAPIにアクセスして作成をしています。やり方はこちらのページが詳しいです。スキルはCursorでも使えました。

PCB設計不能
Composer 2には厳しかったみたいですね。修正を指示しても直せませんでした。
Cursor Grok 4.5 + EasyEDA Pro + Cursor Skills
続いてCursor Grok 4.5で試してみました。これはCursorでComposer 2と同じく、別の課金枠でたくさん使えるモデルです。


今度はそれっぽい回路ができましたね。たぶん動くと思います。GNDベタができませんでしたが、どうやらAPIの方にまだその機能が実装されていないようです。
Cursor Grok 4.6 + EasyEDA Pro + Cursor Skills
先ほどのGrok 4.5を試した翌日にGrok 4.6が登場したので、同様に試してみました。


Grok 4.5のときより複雑な回路になりましたね。保護回路が入っていたり、頼んでないのにLEDが追加されていました。PCBの方はGNDベタもできました。実は当初はできなかったんですが、理由を追求したら「やっぱりできました!」と言ってきて、原因を見つけたようです。
どうやらスキルのファイルに説明がなかったり、説明の挙動と違ったり、書かれてるけど実際には実装されてないというのがあるようで、何ができるのか、ちゃんとできたかを調べながら進めていく感じでした。このような不完全な環境で遂行する能力がAIには必要そうですね。
軽く試してみた感じではまだ本格的に使うには難しいと思いましたが、AIの進化は早いですから、1年後には自然言語で基板を作るのが普通になっているかもしれませんね。