できること

第70回 ESP-WROOM-32をArduinoで触ってみよう(Bluetooth-BLE接続編)

※この記事は2017年11月15日に公開した記事を再編集し、2022年2月18日に再度公開しました。

前回、ESP-WROOM-32の準備編としてArduinoで利用する方法をご紹介しました。今回は、Bluetooth(BLE)機能などを扱い、ほかのデバイスとESP-WROOM-32をつないでみます。

今回の電子工作レシピ

完成までの時間目安:60分
必要なパーツ

 

目次

  1. Bluetoothって何?
    1. 1.1. どういう風に認識・接続するの?
  2. BluetoothとBLEの違い
  3. ESP-WROOM-32でBLEを使うための準備
  4. サンプルプログラムの動作
  5. まとめ

 

1. Bluetoothって何?

keyboard_mouse_smartphone最近はイヤホン・ヘッドホン、スピーカー、カーオーディオ、マウス、キーボードetc…いろいろな機器がBluetooth(ブルートゥース)通信に対応しています。Bluetooth通信は、Wi-Fiなどの無線通信と同じとは言えませんが、よく使う方には比較的身近な通信になってきているのではないでしょうか。

そもそも、このBluetooth通信というのはいったいどのような通信なのでしょうか?なんとなく近くのものをつなぐ、遠くのものとは通信できない、という印象がありますね。ざっとBluetoothの仕組みや仕様を学んでみます。

Bluetooth
Bluetooth(ブルートゥース、ブルーツース)は、デジタル機器用の近距離無線通信規格の1つである。
数mから数十m程度の距離の情報機器間で、電波を使い簡易な情報のやりとりを行うのに使用される。 当初、エリクソン、インテル、IBM、ノキア、東芝の5社(プロモーター企業)によって策定された。その後マイクロソフト、モトローラ、3COM、ルーセント・テクノロジーの4社がプロモーター企業として加わった。現在は3COM、ルーセント・テクノロジーの2社が脱退し、アップル、およびNordic Semiconductorが加わり、9社がプロモーター企業となっている。IEEEでの規格名は、IEEE 802.15.1である。 2.4GHz帯を使用してPC(主にノートパソコン)等のマウス、キーボードをはじめ、携帯電話、PHS、スマートフォン、タブレットでの文字情報や音声情報といった比較的低速度のデジタル情報の無線通信を行う用途に採用されている。

[引用:wikipedia] https://ja.wikipedia.org/wiki/Bluetooth

wikipediaに書かれているように、基本的にはデジタル機器で利用することを想定された近距離無線通信規格がBluetoothということですね。

1.1. どういう風に認識・接続するの?

Bluetoothは実際に利用する際には、「ペアリング」・「接続」という手順が必要になります。無線LAN等だと、アクセスポイントに対してパスワードを入力して接続というのが一般的ですが、Bluetoothの場合は、どちらかのデバイスがもう片方のデバイスを検出して登録する(認証する)、というプロセスが必要です。

pealing

ペアリングとは?

例えばスマホとヘッドホンをBluetoothで利用したい場合、最初にペアリング設定が必要になります。ここでは、お互いのデバイスが接続許可するための顔合わせ(認証登録)の儀式になります。この儀式がなく、例えばBluetoothが無線LANと同じような仕組みになってしまうと自分がヘッドホンを使っている最中に、Bさんがパスワードで認証してヘッドホンとBさんのスマホを接続してしまうとBさんのスマホの音楽がヘッドホンから流れてしまう、という状況になってしまいますね。そういう問題を防ぐために、Bluetoothでは、デバイス同士の認証登録をしたうえで、実際に利用するときはその登録されている機器のみ接続ができる、という仕組みになります。
ですので、基本的にこれらのデバイスの場合は、Bluetoothを使って接続できるのは一つのBluetoothモジュールに対して同時にお互い1台となります。

 

2. BluetoothとBLEの違い

Bluetoothと合わせてBLEという表記を見たことがある方はいますでしょうか? このBLEもBluetoothの一つの種類で、デバイスの種類や用途に応じてこのBLEでの通信をするケースがあります。BLEは正式にはBluetooth Low Energyということで、通常のBluetoothよりもさらに省電力で利用できるデバイスを想定した通信方式となります。

BluetoothとBLEの違いは通信速度と消費電力、と言えるでしょう。比較的大きなデータを送る用途の場合、Bluetoothヘッドホンなどのデバイスは音声データなどを送る必要があるため、通常のテキスト情報などと違い、ある程度の通信速度や消費電力が必要になり、BLEなどは向いていません。また、単純に電源のON/OFF状態や、テキストや数値データで単純に表現できるデータであれば消費電力の少ないBLEが向いています。(※BLEはペアリングが必要ないケースもあります)

bluetooth2

ESP-WROOM-32ではBLE通信にモジュールが対応していますので、さっそく利用してみましょう。

 

3. ESP-WROOM-32でBLEを使うための準備

さっそくESP-WROOM-32でBLEを使ってみます。前回環境構築をしましたが、それだけだとすぐArduinoでBLE通信をすることができません。利用に必要なファイルをダウンロードして展開します。

8b26d025d3b87b76fcf38541eb764d5e

必要なファイル-ESP-BLE-Arduino
https://github.com/nkolban/ESP32_BLE_Arduino/tree/98cd2290d036a4e27db061a76a512b526ef1cc14

このページからファイルをダウンロード(ページ上の「Clone or download」から、ZIPファイルをダウンロードしてください)したものを、前回同様Arduinoインストール先のlibraries/BLEディレクトリに保存します。

5dc1005b21d41c3cc2e165ee36123b25

libraries/BLEディレクトリ配下にダウンロードしたファイルを展開

このファイルを設置したのち、Arduino IDEを再起動すると、スケッチ例などにESP BLE Arduinoというものが作成されますので、それが見られれば準備はOKです。

 

BLE01

 

4. サンプルプログラムの動作

では、準備ができたところでESP-WROOM-32をBluetoothデバイスとして動かしてみます。「ファイル」-「スケッチ例」-「ESP32 BLE Arduino」-「BLE_client」のプログラムを開いて、ボードに書き込みをしてみてください。

書き込みが完了した段階でBLEのクライアントとして起動されます(BLEにはクライアントに対してサーバという概念が出てきますが次回以降説明します)。

お手持ちのスマホなどでBluetoothを有効にして、周囲のデバイスを検出すると、無事ESP-WROOM-32の端末が表示されました!

Screenshot_20171115-092519

 

5. まとめ

今回、ESP-WROOM-32をBLEデバイスとして利用する準備ができました。次回は実際にこのBLE通信でスマホからESP-WROOM-32を操作したり、ESP-WROOM-32からスマホにデータを送信したりしてみたいと思います!

 

この連載の記事

アバター画像

電子工作や新しいデバイスをこよなく愛するエンジニア。日常生活のちょっとしたことを電子工作で作って試して、おもしろく過ごしたいと日々考えています。

ラズパイと液晶画面で、顔を判別してぴったりの動画を流すデジタルサイネージをつくろう!