はじめに
前回は、KiCadの標準ライブラリに無かった
Freenove製 ESP32-WROOM開発ボード40P
のシンボルを自作した。
関連記事:
「電子工作専用CAD「KiCad」で部品ライブラリを作成する|回路図・基板設計の準備④」
これでESP32を回路図上に配置できるようになった。
ということで、ここからいよいよ
KANA SYSTEMで実際に使う回路の動作確認
に入っていく。
最初に試すのは、
ESP32 + OLEDディスプレイ
の組み合わせ。
最終的なKANA SYSTEMでは、
- 現在温度
- 設定温度
- ファンの状態
- ヒーターの状態
- バスキングライトの状態
なんかを本体で確認できるようにしたい。
その第一歩として今回は、
OLEDの中央に「KANA SYSTEM」と表示する
ところまでやってみる。
そして今回からは、
AIをどう使って電子工作を進めたか
についても、できるだけ残していく。
① 使用する部品を選ぶ
まず必要なのは、
制御するマイコン
と、
文字を表示するディスプレイ。
とは言っても、自分は電子部品にめちゃくちゃ詳しいわけではない。
なので、
まずネットで候補を探す → ちゃっぴーに聞く
という方法で選んだ。
ESP32を選ぶ
前の記事ですでにシンボル作成してるから、既に選んでるんやけど…
ESP32はこうやって選んだ。
まず、マイコンの種類は
ArduinoやRaspberry Piと比較して、ESP32に決めた。
関連記事:
「爬虫類飼育自動化のマイコンは何がいい?Arduino・Raspberry Pi・ESP32を比較」
じゃあ、
どのESP32を買うん?
って話になる。
ネットで探していると、比較的安く売られていたのが、
Freenove製 ESP32-WROOM開発ボード 40P
やった。
ただ、
安いからこれでええやろ!
で買って、あとから使えませんでしたでは困る。(笑)
そこで商品名と写真をちゃっぴーに見せて、
【AIに聞いた内容】
爬虫類飼育の自動化装置を作りたい。
温度センサ、OLED、スイッチ、ファン、ヒーター、ミスト用ポンプなどを接続する予定。
このFreenove製ESP32-WROOM開発ボード40Pで使える?
と確認。
今回やりたい程度の制御なら問題なさそうだったので、
これを採用。
こういう、
「ネットで安いものを発見 → AIに用途を伝えて使えるか確認」
っていう使い方は、電子工作初心者にはかなり便利。
ちょっと補足やけど、ちゃっぴーに上の質問したら、色々派生した。
温度センサは何使う?ファンはAC/DCどっち?何V?みたいな。
そのあたりは今後記事にしていこうと思う。
OLEDを選ぶ
次は表示器。
最初は、
「小さい画面に温度とか表示したいけど、何使ったらええ?」
くらいの状態。(笑)
なので、これもちゃっぴーに相談した。
例えばこんな感じ。
【AIに聞いた内容】
ESP32で温度や機器の状態を表示したい。
小型で、配線が少なくて、初心者でも扱いやすい表示器は何がいい?
表示したいのは温度、設定値、ON/OFF状態など。
あと、ヒーター制御開始温度なども設定できるように、
ケージ内の現在温度表示と設定温度が変更できる画面の切り替えも簡単にしたい。
そこで候補として勧められたのが、
SSD1306を使ったOLEDディスプレイ。
OLEDを選んだ理由は、
- 小さい
- 文字表示には十分
- 消費電力も比較的小さい
- I²Cタイプなら配線が少ない
- ESP32で使用例が多い
- Arduino IDE用ライブラリも充実している
あたり。
これならKANA SYSTEMの表示器として使いやすそう。
ということでネットで安いものを探して、
YUWENW製 SSD1306 OLED
を購入。

YUWENW OLEDディスプレイ 0.96インチ 2個入り OLEDモジュール I2C 128X64 4ピン ホワイト Ard uinoに対応 価格:1018円 |
今回使用するものは、
VCC / GND / SCL / SDA
の4端子タイプ。
つまり、電源2本+通信2本。
配線が少ないのもありがたい。
※SSD1306モジュールは製品によって端子の並びや仕様が違う場合があるので、実際に使う商品の表示は確認した方がいい。
② ESP32とOLEDの回路図を作る
部品が決まったら、
どうやってつなぐん?
という問題が出てくる。
ここでもAI。
ちゃっぴーに、
【AIに聞いた内容】
Freenove製ESP32-WROOM開発ボード40Pと、
4ピンI²CタイプのSSD1306 OLEDを接続したい。
ESP32側のどのピンにつなげばいい?
電源は何Vを使えばいい?
と聞く。
ESP32でI²Cを使う場合、一般的には、
SDA:GPIO21
SCL:GPIO22
を使える。
今回はこの構成で進める。
配線は、
| OLED | ESP32 |
|---|---|
| VCC | 3.3V |
| GND | GND |
| SDA | GPIO21 |
| SCL | GPIO22 |
こんな感じ。
かなり少ない。
SSD1306 OLED ESP32
VCC ─────────────→ 3.3V
GND ─────────────→ GND
SDA ─────────────→ GPIO21
SCL ─────────────→ GPIO22
OLEDには3.3Vを使うことにした。
KiCadで回路図にする
接続方法が分かったら、
KiCadでちゃんと図面にする。
ESP32のシンボルについては、前回の記事で作成済み。
関連記事:
「電子工作専用CAD「KiCad」で部品ライブラリを作成する|回路図・基板設計の準備④」
OLEDについても、必要に応じてシンボルを作成する。
今回は、
ESP32
GPIO21 ───── SDA
GPIO22 ───── SCL
3.3V ───── VCC
GND ───── GND
OLED
となるように配線。
OLED側は完成形と同じく、3.3V-GND間に0.1µFを配置。
ESP32の5V入力側には0.1µF+10µFを入れている。
これで、
「実機ではどこをつなぐのか」
が図面として残る。
やっぱり文章だけで、
GPIO21をSDAにつないで、GPIO22をSCLにつないで……
って書くより図面の方が圧倒的に分かりやすい。
そしてAIに質問する時も、この回路図を見せれば、
「この配線で合ってる?」
と確認できる。
ここが、AIとCADを組み合わせるメリットやと思う。
ちなみにコンデンサ無しで図面を描いて、AIにチェックをお願いすると、
【AIの回答】
テストだけならコンデンサ無しでも動く可能性は高い。
ただし、電源ノイズ対策としてデカップリングコンデンサを追加しておいた方が安定しやすい。
そこで今回は、完成形のKANA SYSTEMで使っている構成に合わせて、
ESP32の5V-GND間に0.1µF+10µF
OLEDの3.3V-GND間に0.1µF
を追加した。
AIの回答をそのまま採用するというより、
AIの提案を参考にしつつ、自分が実際に使う回路に合わせて決めていく。
この辺もAIを使った電子工作の面白いところやと思う。

実際に配線する
図面ができたら、ブレッドボード上で実際に配線する。

基本的にはKiCadで作った回路図を見ながら、
OLED VCC → ESP32 3.3V
OLED GND → ESP32 GND
OLED SDA → ESP32 GPIO21
OLED SCL → ESP32 GPIO22
と接続するだけ。
前回、
図面を見ずにLED回路を組んで抵抗を忘れてLEDを焼いた
ので、今回はちゃんと図面を見る。(笑)
図面、大事。
③ OLED表示用のプログラムを作る
配線ができたら、次はプログラム。
今回の目的は単純。
OLEDの中央付近に、
KANA SYSTEM
と表示させたい。
……
プログラムはどうするか。
ちゃっぴーに作ってもらう。(笑)
今回は例えば、こんな感じで依頼する。
【AIへのプロンプト】
ESP32とSSD1306 OLEDをI²Cで接続しています。
SDAはGPIO21、SCLはGPIO22です。
OLEDの中央付近に「KANA SYSTEM」と表示するArduino IDE用プログラムを作ってください。
使用するライブラリと、Arduino IDEでの導入方法も教えてください。
すると、ベースになるコードを作ってもらえる。
必要なライブラリを入れる
SSD1306 OLEDを簡単に使うために、
Adafruit SSD1306
と、
Adafruit GFX Library
を使う。
Arduino IDEのライブラリマネージャから検索してインストールする。


これでOLEDを動かす準備ができる。
OLEDに「KANA SYSTEM」と表示するプログラム
ベースとして使うプログラムはこんな感じ。
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_SDA 21
#define OLED_SCL 22
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
void setup() {
Wire.begin(OLED_SDA, OLED_SCL);
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
while (true);
}
display.clearDisplay();
display.setTextColor(SSD1306_WHITE);
display.setTextSize(1);
const char* text = "KANA SYSTEM";
int16_t x1, y1;
uint16_t w, h;
display.getTextBounds(text, 0, 0, &x1, &y1, &w, &h);
int x = (SCREEN_WIDTH - w) / 2;
int y = (SCREEN_HEIGHT - h) / 2;
display.setCursor(x, y);
display.println(text);
display.display();
}
void loop() {
}
今回やっていることは、
ESP32起動
↓
OLEDを初期化
↓
画面を消去
↓
“KANA SYSTEM”の文字サイズを調べる
↓
画面中央の位置を計算
↓
文字を表示
という流れ。
コード自体はちゃっぴーに作ってもらったけど、
何をやっているコードなのかは確認する。
AIを使うにしても、
そのままコピペして終わり
ではなく、
「何をしてるコードなん?」
って聞いておくと、少しずつ理解できる。
OLEDのI²Cアドレスについて
コードの、
0x3C
という部分。
これはOLEDのI²Cアドレス。
SSD1306の小型OLEDでは0x3Cがよく使われるけど、モジュールによって違う場合もある。
なので、
プログラムは書き込めたのに画面が何も表示されない
場合は、ここも確認ポイントになる。
この辺も、実際に動かしてみてからやな。
④ ESP32へ書き込んで動作確認する
配線とプログラムができたら、
いよいよ動作確認。
Arduino IDEからESP32へプログラムを書き込む。


書き込みが終わったら、
OLEDを見る。
今回期待しているのは、
┌──────────────────────┐
│ │
│ │
│ KANA SYSTEM │
│ │
│ │
└──────────────────────┘
こんな感じ。
OLED中央に「KANA SYSTEM」と表示されたら成功。
果たして一発で表示されるのか。(笑)
ここからは実機で確認してみる。

うん、やっぱりAIって優秀やな。
全然余談やけど、このブレッドボードは大きくて非常に優秀。お勧めです。
E-CALL ENTERPRISE〓 ブレッドボード EIC-106J 〓165-41-4-1060 価格:2860円 |
⑤ 今回は一発で成功
今回は、
ESP32とOLEDを接続して、「KANA SYSTEM」と表示する
というテストをやってみた。
やったことを振り返ると、
使いたい機能を決める
↓
AIに部品選定を相談
↓
AIに接続方法を確認
↓
KiCadで回路図を作成
↓
AIに回路図を確認してもらう
↓
AIにプログラム作成を依頼
↓
実機で動作確認
という流れ。
結果は、
一発で表示成功。
プログラムを一から書けるわけじゃなくても、
「何をしたいか」を決めて、AIに相談しながら実機で確認していけば、ちゃんと形にできる。
今回みたいな使い方が、KANA SYSTEMでのAI活用の基本になっていくと思う。
うん、やっぱりAIって優秀やな。(笑)
次回
次は、OLEDに文字を出すだけじゃなく、
スイッチ操作で表示内容を切り替える
ところまで進めてみる。
最終的には、
現在温度表示 ↔ 設定温度変更
みたいな画面切り替えにつなげたい。
ここから一気にKANA SYSTEMっぽくなってくる。



コメント