Arduino ESP32モジュールを使ってみる ~ESP32ドライバ導入とBLEをスマホで確認~
久々のArduino記事です。
以前にもBLE搭載のRN4020を2台用意し通信をする実験をしました。
今回のESP32はRN4020と同様にBluetoothが搭載され、更にWiFiも実装されている優れものです(技適マーク取得済み)。また、RN4020ではArduino nanoなど別途デバイスが必要でしたが、ESP32はArduinoに対応しておりESP32開発ボード単体での評価、開発を行うことが出来ます。
この記事では、ESP32のBLEをスマートフォンで使用可能なデバイスとして認識させるまでを紹介します。
用意する物
- ESP32 開発ボード(ESP-WROOM-32)
- Arduino IDEが使えるPC
- USBケーブル
- Bluetooth搭載のスマートフォン
準備する
まずは、ESP32用にArduino IDEの環境を整える必要があります。
掲載したアマゾンのESP32にあるレビューにも載っているgithubのボードドライバとライブラリをArduino IDEに追加します。
ドライバのインストール
上記のgithubリンクにアクセスしてソースをダウンロードします。
ZIPファイルを解凍し、Arduino IDEのインストールフォルダにある「hardware」に「espressif」フォルダを作成、更にその下の階層に「esp32」フォルダを作成し「esp32」へ解凍した中身をコピーします。
コピー先:[Arduino IDE]/hardware/espressif/esp32
次に以下のディレクトリにあるget.exeを実行します。
実行:[Arduino IDE]/hardware/espressif/esp32/tools/get.exe
コマンドプロンプトが起動しファイルのダウンロードが始まりますので、完了するまでしばらく待ちます。
完了するとArduino IDEのツール>ボード一覧にESP32を搭載した多数のボードが追加されます。
この中から使用するボードを選択します。
ライブラリの追加
次にBLEのソースコードのライブラリを追加します。
ダウンロードの方法はドライバを落とした時と同じです。
入手したZIPファイルを解凍し、中身を以下のディレクトリへコピーします。
コピー先:[Arduino IDE]/hardware/espressif/esp32/libraries/BLE
これで、スケッチ例からESP32のソースコードが確認できます。
上記の方法以外にGit GUIで入れる手段もありますので参考に。
書き込む
今回はライブラリのBLE_serverを使用します。
スケッチ例のソースコードそのまま使用します。
スケッチをマイコンに書き込む際はダウンロード状態にする必要があるようです。
方法は、
1.IO0をオンにし押し続ける。
2.ENを押して離す。
3IO0をオフにする。
するとシリアルモニタに以下のメッセージを受信します。
rst:0x1 (POWERON_RESET),boot:0x3 (DOWNLOAD_BOOT(UART0/UART1/SDIO_REI_REO_V2)) waiting for download
これでダウンロード状態となりますので書き込みを実行します。
書き込む際はESP32 Dev Moduleを選択します。
後は、シリアルポートを適切なものを選択して書き込みます。
確認する
書き込むとESP32が待機状態になりスマートフォンがスキャンしデバイスを見つけられるようになります。(フラッシュのエラーが出てますが大丈夫そう?
ets Jun 8 2016 00:22:57 rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) flash read err, 1000 ets_main.c 371 ets Jun 8 2016 00:22:57 rst:0x10 (RTCWDT_RTC_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) configsip: 0, SPIWP:0xee clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00 mode:DIO, clock div:1 load:0x3fff0018,len:4 load:0x3fff001c,len:956 load:0x40078000,len:0 load:0x40078000,len:13256 entry 0x40078a90 Starting BLE work! Characteristic defined! Now you can read it in your phone!
スマートフォンで確認するとBLEDevice::init(“MyESP32”);で記載された箇所が機器名として検出できることが分かります。
これで、ESP32のBLEが動作してることが確認できました。