回路図作成からプログラム書き込みまで
ESP32とHX711で重量計を作る ― 回路図作成からプログラム書き込みまで
📖 目次
制作の手順
今回の制作は、以下の流れで進めていきます。
- 回路図を書く
- ブレッドボードで仮の回路を作成する
- Arduino IDE を使ってプログラムを作成し、書き込みを行う
- 実際に組み立てる
順を追って進めることで、組み立てるときに迷わずに済みます。最初のステップである回路図作成は、後工程で迷わないための「地図」のような役割を果たしてくれます。
1. 回路図を書く
使用アプリ:KiCad
回路図の作成には、定番のEDAツールである KiCad を使用しました。
初めて触るツールだったので最初は使い方に戸惑いましたが、今回の回路はそこまで複雑ではなかったため、慣れてしまえばあっという間でした。基板は市販のものを利用し、主要なパーツもモジュール化されているものを使ったので、部品点数が少なかったことも大きかったと思います。
ロードセル・HX711のシンボルは自作
少しだけ手間取ったのは、今回使用するロードセルと HX711(ADCモジュール) のシンボルがKiCadに用意されていなかった点です。そのため、これらのシンボルは自分で作成しました。
一方、ESP32-DevKitC-32E(ESP32-WROOM-32E開発ボード)については、ライブラリがGitHubに上がっていたのでそちらをそのまま利用させてもらいました。
ピンの位置などは実物と少し異なっていて、最初見たときは「あれ?」と戸惑いました。
でもよく考えれば、回路図はあくまで「接続関係を明らかにするもの」。
どのピンとどのピンをつなげるのかさえ把握できれば、見た目の完全な一致までは必要ないということなんですね。
2. Arduino IDE を使ってプログラムを作成・書き込み
使用アプリ:Arduino IDE
ESP32にプログラムを書き込むために、Arduino IDE を使用します。PCとマイコンをUSBで接続して書き込みを行うのですが、ここで1つ注意点があります。
PCがマイコンを認識しないときの対処
USBで接続しても、PCがマイコンを認識してくれないケースがあります。
私も今回この現象に遭遇しました。
その場合は USB-UARTブリッジのドライバ を自分でインストールする必要があります。
今回使用した ESP32-DevKitC-32E(ESP32-WROOM-32E開発ボード)は CP2102 を搭載していたため、下記のSilicon Labs公式ページからWindows用ドライバをダウンロードしました。
ドライバをインストールすると、Arduino IDE の「ツール」→「ポート」から、差し込んだマイコンが認識されるようになります。
HX711ライブラリのインストール
次に、HX711を制御するためのライブラリをインストールします。
このライブラリって、そもそもなぜ必要なんでしょう?
仮にライブラリを使わずにHX711からデータを読もうとすると、以下のような処理をすべて自分で書く必要があります。
- CLKピンを適切な回数叩く
- DATピンのタイミングを計る
- ビットを1つずつ読み出す
- 24ビット分繰り返す
- 符号を変換する
- キャリブレーションする
- …(100行以上のコード)
これらをライブラリに任せてしまえば、
#include <HX711.h>
scale.get_units(); // これだけで重さが読める
たった2行で重量が読み出せるようになります。
今回は HX711 Arduino Library を使用します。
Arduino IDE の「スケッチ」→「ライブラリをインクルード」→「ライブラリを管理」から検索してインストールできます。
名前に「Arduino」とついているから、ESP32では使えないのでは?と一瞬思いました。
ですが詳細ページのハードウェアサポートを見るとESP32も含まれているため、問題なく利用できます。
Arduino IDE を使って感じたこと
ライブラリを利用してC++でプログラムを書いていきます。
普段は Visual Studio Code や Visual Studio を使っていて、言語ごとにコード補完やエラー表示を行ってくれるのが当たり前になっていました。
ところが Arduino IDE にはコード補完もリアルタイムのエラー表示もなく、少しやりづらさを感じました。
IDEに頼ってコードを書く癖がついてしまうと、こういう場面で途端に困ります。
改めて、基礎的なC/C++の構文を自力で書ける力の大切さを実感しました。
ただ、「プログラムを書く」という行為と「マイコンに書き込む」という行為が同じツールで完結するのは、組み込み開発の流れをイメージする上でとてもわかりやすいです。
組み込み系のプログラムを書いていると、最初のうちは「自分の書いたプログラムが実際に動いている」というイメージがどうしても掴みにくいものです。
Visual Studio のような大きなIDEを使っているとなおさらで、なんとなく「ツール側が勝手にやってくれているのでは」という感覚が先に立ってしまい、「プログラムはファイルとして存在していて、それをマイコンに置いているだけ」という初歩的な事実がイメージしづらくなってしまいます。
その点、Arduino IDE は「プログラムの作成」と「書き込み」が一連の流れでできるので、組み込みの基本的な構図を手軽に把握できます。
初心者の方は、いきなり大きなツールを触るよりも、こうしたマイコン開発でまずイメージを定着させてから挑むほうが、理解のスピードが上がるかもしれません。
まとめ
今回は、
- KiCad で回路図を作成(シンボルがない部品は自作)
- ESP32 のドライバをインストールしてPCに認識させる
- HX711ライブラリを使って重量の読み取りコードをシンプルに実装する
というところまで進めました。次回は、ブレッドボードでの仮組みと実際の組み立てについて書いていく予定です。