前回の記事では、バイクの盗難対策として、人感センサーとESP32を使った防犯システムを自作する計画を紹介しました。
目指しているのは、こんな仕組みです。
人がバイクに近づく → センサーが検知 → スマホに通知 → 防犯カメラで確認 → 必要ならスピーカーで警告
既存の防犯カメラを活用しながら、できるだけ安価に、そして自分で修理や改良ができるシステムを作りたいと思っています。
今回は、その中心となるESP32を実際に動かしてみます。
電子工作の経験は多少あるものの、ESP32のプログラミングは初挑戦。
果たして、うまく動くのでしょうか(笑)。
1.ESP32が届いた! でも、最初から問題発生
今回使用するESP32は、Wi-FiとBluetoothの機能を備えた小型のマイコンボードです。
人感センサーからの信号を受け取り、Wi-Fi経由でスマートフォンに通知する役割を担当します。
最初はAmazonでESP32を購入しました。
ところが、届いた製品を確認すると、掲載されていたものと実際のモジュールに違いがあり、国内で使用するための技適表示も確認できませんでした。
ESP32のように無線通信機能を持つ機器を日本国内で使用する場合、技術基準適合証明などの確認が重要になります。
そこで、無理に使用するのはやめて、国内の電子部品専門店「秋月電子通商」で買い直すことにしました。
購入したのは、ESP32-DevKitC-32E です。
届いた基板を確認すると、ESP32の金属シールド部分に技適に関する表示がありました。
これで、ようやく安心して開発を始められます。
※購入時には、商品名だけで判断せず、搭載されている無線モジュールと技適表示・認証情報を確認することをおすすめします。


2.まずはパソコンに接続してみる
ESP32のプログラムを書き込むために、Windows 11のパソコンとUSBケーブルで接続します。
使用した開発環境は次のとおりです。
- パソコン:Windows 11
- 開発ソフト:Arduino IDE 2.3.10
- マイコンボード:ESP32-DevKitC-32E
- 接続方法:USB(Micro USB)
- 通信ポート:COM3(今回の環境)
USBケーブルを接続すると、Windowsのデバイスマネージャーに機器が表示されました。
ところが、正常に認識されていません。
表示されていたのは、
「CP2102N USB to UART Bridge Controller」
という名前のデバイスでした。
どうやら、USB通信用のドライバーが必要なようです。
CP210xドライバーをインストール
ESP32-DevKitC-32Eには、パソコンとマイコンの間でUSB通信を行うためのCP2102Nというチップが搭載されています。
今回は、Silicon Labsの公式サイトからWindows用ドライバーを入手しました。
公式サイト:
ドライバーをインストールすると、デバイスマネージャーの表示が変わりました。
Silicon Labs CP210x USB to UART Bridge (COM3)
よし、これでパソコンからESP32を認識できました!
なお、COM番号はパソコンの環境によって異なります。

3.Arduino IDEを設定する
次は、ESP32にプログラムを書き込むための開発環境を準備します。
今回使用したのは、無料で利用できるArduino IDEです。
公式サイト:

Arduino IDEをインストールしたら、ESP32を扱えるように設定します。
ESP32のボード情報を追加
Arduino IDEの設定画面を開き、「追加のボードマネージャのURL」に次のアドレスを登録します。
https://espressif.github.io/arduino-esp32/package_esp32_index.json
続いて、ボードマネージャーで「esp32」を検索します。
表示された esp32 by Espressif Systems をインストールしました。
これでArduino IDEからESP32用のプログラムを作成できるようになります。
ボードと通信ポートを選択
今回の動作確認では、ボードに「ESP32 Dev Module」を選択しました。
そして、通信ポートは先ほど確認した「COM3」を選びます。
……実は、この通信ポートの設定が後でちょっとした落とし穴になりました(笑)。

4.初めてのプログラムを書いてみる
最初から人感センサーを接続するのではなく、まずはESP32単体で動作するか確認します。
今回のテストプログラムは、非常にシンプルなものです。
void setup() {
Serial.begin(115200);
delay(1000);
Serial.println("ESP32 startup OK!");
}
void loop() {
Serial.println("ESP32 is running!");
delay(2000);
}
このプログラムは、ESP32が起動すると最初に、
ESP32 startup OK!
と表示し、その後は2秒ごとに、
ESP32 is running!
というメッセージを繰り返し出力します。
LEDを点滅させるテストも定番ですが、今回はシリアルモニターを使って動作を確認することにしました。
5.書き込みエラー発生! 原因は意外なところに
プログラムを入力したので、いよいよESP32へ書き込みます。
Arduino IDEの書き込みボタンをクリック!
ところが、画面にエラーが表示されました。
Failed uploading: no upload port provided
あれ?
プログラムに間違いがあるのでしょうか。
確認すると、プログラム自体のコンパイルは正常に終了しています。
つまり、プログラムの内容ではなく、書き込み先に問題があるようです。
調べてみると、原因は単純でした。
Arduino IDEで通信ポートを選択していなかったのです(笑)。
WindowsではCOM3として認識されていたのに、Arduino IDE側で選択するのを忘れていました。
そこで、
「ツール」→「ポート」→「COM3」
を選択して、もう一度書き込みを実行します。
すると、今度は無事に書き込みが完了しました!
ログには、次のメッセージが表示されました。
Hash of data verified.
Hard resetting via RTS pin...
書き込まれたデータの検証が完了し、ESP32が再起動したことを示しています。
初めての書き込み成功です!

6.シリアルモニターで動作確認!
書き込みが成功したので、次はプログラムが実際に動いているか確認します。
Arduino IDEのシリアルモニターを開き、通信速度を「115200 baud」に設定しました。
すると、画面に次のメッセージが表示されました。
ESP32 is running!
ESP32 is running!
ESP32 is running!
おおっ! 動いている!
最初に表示されたログの一部は文字化けしていましたが、その後のメッセージは正常に表示されています。
起動直後のログは、通信速度やモニターを開いたタイミングなどによって、文字化けしたり一部を見逃したりすることがあります。
今回は、プログラムで指定したメッセージが2秒ごとに繰り返し表示されているので、ESP32が正常にプログラムを実行していることを確認できました。
これで、ESP32の初期設定と単体動作確認は成功です!

7.次は人感センサー……と思ったら(笑)
ESP32が動いたので、次はいよいよ人感センサー「HC-SR501」を接続してみたいと思います。
ところが、ここで新たな問題が。
センサーとESP32をつなぐジャンパーワイヤーを用意していませんでした(笑)。
マイコンもある。
センサーもある。
プログラムも書き込めた。
でも、つなぐ線がない!
ということで、秋月電子で追加の部品を注文しました。
今回発注したのは、
- メス-メス ジャンパーワイヤー
- オス-オス ジャンパーワイヤー
- ブレッドボード
の3点です。
ブレッドボードは、ハンダ付けをせずに電子回路を試作できる便利な道具です。
今後、LEDやブザーなどを追加するときにも役立ちそうです。
部品が届いたら、HC-SR501のピン配置や出力電圧を確認したうえで、ESP32と接続してみます。
8.今回のまとめ
今回は、バイク用防犯システムの頭脳となるESP32の初期設定と動作確認を行いました。
実際にやってみると、プログラムを書くことよりも、パソコンとの接続や開発環境の準備でつまずく場面がありました。
特に今回学んだのは、次の3点です。
- ESP32は、購入時に搭載モジュールや技適表示を確認する。
- パソコンで認識されない場合は、USBドライバーを確認する。
- プログラムを書き込む前に、Arduino IDEのボードと通信ポートを確認する。
どれも基本的なことかもしれませんが、初めて使う人にとっては意外と分かりにくい部分だと思います。
今回、ESP32単体の動作確認までは無事に成功しました。
まだ人感センサーの検知も、スマートフォンへの通知もできません。
それでも、自分で書いたプログラムが小さな基板の上で動いたのは、なかなか楽しい体験でした。
次回は、HC-SR501人感センサーを接続して、実際に人の動きを検知できるか試してみます!
バイクを守るための自作防犯システム。
完成まで、まだまだ試行錯誤が続きそうです(笑)。
それでは、また次回!
※この記事は個人による試作・動作確認の記録です。実際の防犯性能や屋外での耐久性を保証するものではありません。

コメント