- ESP32Bluetoothの使用を開始する
- Bluetooth Low Energy(BLE)およびESP32クラシックBluetoothを理解する
- ESP32用のArduinoIDEの準備
- ESP32用のシリアルBluetoothプログラム
- ESP32を使用したシリアルBluetoothのテスト
HC-05やHC-06などのBluetoothモジュールは、セットアップが簡単で、Arduino IDEですばやく使用できますが、高消費電力などの独自の制限があり、古いBluetoothV2.0で動作します。また、最近私は新しいESP32 DEVキットを手に入れました。これらのモジュールには、組み込みのWi-FiとBluetooth、十分なADCピンとDACピン、オーディオサポート、SDカードサポート、ディープスリープモードなどの機能が豊富にあります。 IoTプロジェクトを構築するためのすべて。
そして、愛好家なら誰もが気に入るはずですが、ESP32はArduinoIDEによって正式にサポートされるようになりました。以前はNeilKolbans Libraryで大規模な回避策を講じる必要がありましたが、今ではこの男のハードワークのおかげで、ArduinoIDEを使用してESP32をプログラミングすることが簡単になりました。そのため、Arduino IDEを起動し、BLEプログラムの例をいくつか試しましたが、何も理解できませんでした。長い間サーフィンとユーチュービングを行った後、ESP32を使用してBluetooth Low Energy(BLE)を使用する必要がある場合、理解すべきことがもっとたくさんあることに気付きました。BLEについては別の記事で説明することにしたので、ここではESP32のクラシックシリアルBluetoothを使用して、スマートフォンを使用してLEDを切り替えます。。BLE機能の使用方法を確認したい場合は、ESP32BLEサーバーとESP32BLEクライアントに関するこの記事を確認してください。
ESP32Bluetoothの使用を開始する
私が最初に試したかったプログラムは、古き良きHC-05の時代のように、携帯電話のBluetoothターミナルアプリケーションからLEDをオンまたはオフにできる単純なプログラムでした。しかし、Bluetooth Low Energy(BLE)はそのためにインデントされていないことがわかりました。また、ESP32モジュールには2種類のBluetoothがあることも発見しました。1つはクラシックBluetoothで、もう1つはBLE Bluetooth LowEnergyです。わかりましたが、なぜですか?….なぜ2種類のBluetoothがあり、プロジェクトに何を使用する必要があるのですか?
Bluetooth Low Energy(BLE)およびESP32クラシックBluetoothを理解する
Bluetooth Low Energyは、その名前が示すように、従来のBluetoothよりも消費電力が少なくなっています。これは、事前定義された定期的な更新で必要に応じてデータを送信することによって実現されます。ただし、従来のBluetoothとは異なり、ファイルや音楽の転送には使用されません。ペアリングしたBluetoothデバイスがオーディオデバイスまたはラップトップまたは電話であることを電話が自動的に識別する方法を疑問に思ったことはありませんか?ワイヤレスオーディオプレーヤーまたはフィットネスバンドのバッテリーレベルがのステータスバーに自動的に表示されることもあります。あなたの端末; これらはすべて、BLEデバイスの特性で可能です。BLEデバイスは、と連携のBluetooth V4.0およびサーバーまたはクライアントとして行い、低消費電力で動作することができますBLEは、ビーコン、スマートウォッチ、フィットネスバンドなどに最適です。
一方、クラシックBluetoothは、ファイルやその他のデータの転送に使用する単純な古いBluetoothです。ほとんどすべてのBLEデバイスには、クラシックBluetooth機能が関連付けられています。HC-05などのモジュールで使用されるBluetoothは、Bluetooth SSP(シリアルポートプロトコル)と呼ばれる従来のBluetoothのバージョンです。つまり、Bluetoothは標準のシリアルプロトコルに準拠しているため、オーバーヘッドをあまりかけずにデータを簡単に送受信できます。このチュートリアルの最後に、ESP32でシリアルBluetooth機能を使用する方法を学習します。
この記事では、ESP32のシリアルBluetooth機能を使用してスマートフォンとペアリングし、Playストアの既存のBluetoothターミナルアプリを使用してESP32にコマンドを送信し、それに応じてオンボードLEDを切り替えます。
後の記事では、ESP32BLEをサーバーおよびクライアントとして取り上げます。BLEサーバーは通常BLEデータを他のBluetoothデバイスに送信するために使用され、BLEクライアントは他のBLEデバイスをスキャンするために使用されるためビーコンとして機能します。
ESP32用のArduinoIDEの準備
ArduinoIDEはデフォルトでESP32ボードをサポートしていないことに注意してください。ボードマネージャーを使用してダウンロードしてインストールする必要があります。これがESP32を使用する最初のプログラムである場合は、この入門チュートリアルに従ってESP32ボードをArduinoに追加し、テストスケッチをアップロードしてください。
さらに、マイクロコントローラーを使用せずに、ESP32でより多くのプロジェクトを実行できます。
ESP32用のシリアルBluetoothプログラム
ESP32 Bluetoothを使用してLEDを切り替える完全なプログラムは、このページの最後にあります。この見出しの下で、コードを小さなスニペットに分割して理解してみましょう。HC-05などの他のBluetoothモジュールをすでに使用している場合は、このESP32 BluetoothClassicサンプルプログラムが非常に似ていることがわかります。
このプログラムのアイデアは、ESP32を使用してシリアルBluetooth接続を初期化し、ペアリングされたデバイスからのデータをリッスンすることです。着信データが「1」の場合はLEDをオンにし、「0」の場合はLEDをオフにする必要があります。プログラムは、ESP32BluetoothをBluetothSSPとして機能させるヘッダーファイル BluetoothSerial を追加することから始めます。
#include "BluetoothSerial.h" //シリアルBluetoothのヘッダーファイルは、デフォルトでArduinoに追加されます
このライブラリの背後では多くのことが行われていますが、単純にするために、ライブラリに深く入り込まないことを選択しました。次に必要なのは、Bluetooth関連の操作用のオブジェクトです。ここで私は ESP_BT という名前を付け ましたが 、任意の名前を選択できます。
BluetoothSerial ESP_BT; // Bluetoothのオブジェクト
次に、 void setup() 関数内。ボーレート9600でシリアル通信を開始し、Bluetooth信号を名前で初期化します。ここでは、 「ESP32_LED_Control 」という名前を付けました。これは、ペアリングしようとしたときに電話で見つかる名前になります。最後に、Bluetooth信号に基づいて切り替えるため、内蔵LEDピンを出力ピンとして宣言しました。
void setup(){ Serial.begin(9600); // 9600でシリアルモニターを開始します ESP_BT.begin( "ESP32_LED_Control"); // Bluetooth信号の名前 Serial.println( "Bluetoothデバイスはペアリングの準備ができています"); pinMode(LED_BUILTIN、OUTPUT); // LEDピンが出力されることを指定します }
無限 ボイドループ 関数内で、Bluetoothモジュールから入ってくるデータがあるかどうかを確認します。ある場合は、データが読み取られ、変数 incomingに 格納されます。また、Arduinoが受信しているものをクロスチェックするために、この値をシリアルモニターに出力します。
if(ESP_BT.available())// Bluetoothから何かを受信したかどうかを確認します { incoming = ESP_BT.read(); // 受信したものを読み取りますSerial.print( "Received:"); Serial.println(着信);
これで、受信したデータはすべて、 incoming 変数に格納されるため、この変数を期待値と直接比較して、必要なアクションを実行できます。ただし、Bluetoothから送信される値は 文字 形式になり、Arduinoは電話から送信される文字の10進値を読み取ります。この場合、char '0'の場合は10進値は48になり、char '1'の場合は10進値は49になります。ASCIIチャートを参照して、すべての文字の10進値を理解できます。
ここでは、入力変数を48と49と比較して、それぞれ0と1をチェックしました。1の場合は、LEDをオフにし、LEDがオフになったことを示す確認メッセージをBluetoothに出力します。また、0の場合はその逆になります。
if(incoming == 49) { digitalWrite(LED_BUILTIN、HIGH); ESP_BT.println( "LEDがオンになりました"); } if(incoming == 48){ digitalWrite(LED_BUILTIN、LOW); ESP_BT.println( "LEDがオフになりました"); }
ESP32を使用したシリアルBluetoothのテスト
ESPをArduinoIDEに接続し、チュートリアルの開始で説明したように、正しいボードとポートを選択します。それが3であるので番目のパーティボードマネージャは、コードにコンパイルして、アップロードを取得するために少し時間がかかるかもしれません。アップロードしたら、シリアルモニターを起動し(デバッグ用)、電話でBluetooth設定を開きます。 ESP32_LED_Control という名前のBluetoothデバイスがペアになっているはずです。
これで、スマートフォンで任意のBluetoothターミナルアプリを開くことができます。GoogleAppStoreからダウンロードした「Bluetoothターミナル」という名前のアプリを使用しています。Bluetoothアプリケーションをペアリングしたばかりのデバイスに接続し、1と入力して、送信を押します。
ESP32モジュールはそれを受信し、プログラムに従ってLEDをオンにします。また、上記のスクリーンショットのように、LEDがオンになったことを示す確認メッセージを表示します。また、ESP32 Bluetoothによって受信されているデータを10進形式で表示するシリアルモニターを確認することもできます。これは、前述のように、Arduinoが0の場合は48、1の場合は49を読み取ります。ターミナルウィンドウのスナップショットを以下に示します。
同様に、モバイルアプリケーションから0を送信することで、LEDをオフにできるはずです。完全な動作は、以下のビデオに示されています。チュートリアルを理解し、役立つことを学んだことを願っています。疑問がある場合は、下のコメントセクションに残しておくか、フォーラムを使用して他の技術的なヘルプを参照してください。