ESP32のArduino IDEでBLEを試してみました

ESP32はWiFiに加えてBLEも使えるということで注目されています。Arduino IDEでは、2017年の10月頃からBLEがサポートされ始めました。

ボードも入手しやすくなってMH-ET LIVE D1 mini ESP32という小型のボードは$7.5ぐらいでAliExpressで購入できました。

https://ja.aliexpress.com/item/MH-ET-LIVE-D1-mini-ESP32-ESP-32-WiFi-Bluetooth-Internet-of-Things-development-board-based/32816658883.html?spm=a2g0s.9042311.0.0.Zbsxqj

今回はそのESP32を2個使って、サーバーとクライアントで動作させてみました。どちらもArduino IDEでプログラミングできるので楽なのではないかと思います。サーバーには照度センサーNJL7502Lがあり、クライアントが接続すると照度のデータを送ります。クライアントが接続している間はゆらゆら人形が揺れます。クライアントはデータをもらってシリアルでPCにデータを表示します。

電気回路:
3.3Vを照度センサの+側(長い足)、照度センサの-側(短い足)は10kΩでGNDに接続して、短い足の電圧をアナログ入力AI6(IO34)に接続します。データシートを見ると1000luxで3Vの出力になるようです。ゆらゆら人形はIO5とGNDに接続します。ゆらゆら人形はDaisoのソーラーゆらゆらを改造して、コイル両端を回路から外して外部に取り出します。
クライアント側はUSBでPCに接続します。

BLEライブラリの導入には以下のURLの情報を参考にしました。
「Arduino IDEでESP32 BLEライブラリを導入」
https://qiita.com/tomorrow56/items/afa06e206eec9fafcc7a

 

OLYMPUS DIGITAL CAMERA
OLYMPUS DIGITAL CAMERA

BLEライブラリはArduinoっぽくないので、「山勘で書いて、動いた」というレベルですのでもっと良いサンプルを誰かが書いてくれると思います。現状で分かっている問題点としては、サーバーが電源OFFで停止するとクライアントがハングアップして、クライアントの電源をOFF-ONしないと復帰しない点です。

 

サーバー側のスケッチ(ベースにしたのはBLE_notify)

 

クライアント側のスケッチ(ベースにしたのはBLE_client)