ESP32-C3 Bluetoothの学習とテスト(1. ESP-IDFのBluetoothフレームワークを理解し、Bluetoothプロトコルスタックを理解する)

在我们前面 ESP32-C3 的教程中,从基本的外设,到wifi,到最后使用MQTT连接云平台完成了一个
简单的项目,我们已经掌握了ESP32-C3 的大部分功能了。
但是作为一款蓝牙芯片,蓝牙的使用是必不可少的,今天我们就开始对 ESP32-C3 蓝牙的使用进行学习测试。 
蓝牙部分已经不敢叫教学了,为了搞清楚ESP-IDF的那些示例程序到底是关于什么内容,
因为自己也是边学习边测试花了大量时间补充蓝牙的基本知识,希望小伙伴指出不足之处!

序文

次のESP32-C3機能テストは、自社で設計した開発ボードに基づいています。

ESP32-C3の開発ボードを自分で作成します(Lichuang EDAを初めて使用する場合)(PCBが利用可能です)

開発環境は、VScodeプラグインに基づいて構築されたEspressifの公式ESP-IDFです。

ESP32-C3 VScode開発環境が構築されています(Espressifの公式ESP-IDF-WindowsとUbuntuのデュアル環境に基づいています)

ESP32-C3のBluetoothの使用方法を学び、他の周辺機器は使用しないでください。

Bluetoothに関するESP32-C3の公式紹介を見てみましょう
ここに画像の説明を挿入
。ESP32-C3は、コード化PHY(ロングレンジ)および拡張アドバタイズメント(拡張アドバタイズメント)機能を含むBluetoothLE5.0プロトコルのサポートを追加します。FECコーデックなどのテクノロジーを導入することでデータの冗長性を高めますが、デバイスの通信距離(通常は100メートル)を大幅に増やします。さらに、ESP32-C3はBluetoothメッシュプロトコルをサポートしているため、ローカルネットワークデバイスを制御したり、他のBluetoothLE5.0センサーデバイスと直接通信したりするための有力な候補の1つになっています。

ただし、Bluetooth学習に関しては、公式ドキュメントを確認してください。Espressif公式ESP32-C3BluetoothAPIの概要
ここに画像の説明を挿入

非常に多くのBluetoothAPIがあるので、それらの使用方法を学ぶ必要がありますか?

したがって、ここでは、これらの例の意味を理解してから、基本的なアプリケーションを作成する前に、使用するAPIを学習する必要があります。

それを使用することは、学習の究極の目標です!

まずIDFのBluetoothの例を見てみようと思い、見てショックを受けました。
ここに画像の説明を挿入

とにかく読んだ後、頭が少し大きいです。NRF52832を学んでいた頃からBluetoothプロトコルについて学んでいましたが、当時はNRF52832の価格面での優位性がなかったため、中断されました。 Bluetooth 5.0のフレームワークは、実際のコードと組み合わせて深く理解されていません。

次の図に示すように、各例にはその使用目的の説明があります。
ここに画像の説明を挿入
ただし、基本的なBluetoothプロトコルの適切な名詞さえ知らなければ、それを理解することはできません。

このコラムの目的はいくつかの小さなプロジェクトを実行できるようにすることであるため、私はまださまざまな資料を参照しています。この記事の目的のために、ESP32-C3で使用されるESP-IDFのBluetoothのこれらのサンプルプログラムを明確に理解しようとしています。する。基本的な理解があれば、どの例を学び、何を使用できるかがわかります。

したがって、この記事は、自己学習テストの要約の結果に応じて、随時更新および保守する必要があります。

1.Bluetoothの基本的な紹介

この作品の紹介では、斧は弾かないし、みんなにいいと思う記事をお勧めします!Bluetoothの理論のため、適切な名詞を1つか2つの文で明確に説明することはできません。

私の別のブログ投稿には、Bluetoothの基本的な紹介があります。

Bluetooth 5.0、nRF52832BLEサンプルプロジェクトフレームワークおよび主な機能の初期化プロセスの概要

いくつかの良い記事が推奨されます:

Bluetoothコアテクノロジーの理解(Bluetoothプロトコル、アーキテクチャ、ハードウェア、およびソフトウェアに関する注意事項)

3つのBluetoothアーキテクチャ実装ソリューション(Bluetoothプロトコルスタックソリューション)

今最もホットなBluetooth5、Bluetooth Low Energy、クラシックBluetoothですが、それらの違いを知っていますか?

前任者によって書かれたESP32に関するBluetoothブログ投稿もあります。

ESP32スタディノート17のBluetooth通信-Bluetooth

esp32シリーズ(5):esp32Bluetoothアーキテクチャ学習

ここにいくつかの重要なポイントの要約があります:

1.1クラシックBluetooth(BT)およびBluetooth Low Energy(BLE)

Bluetoothは、 ClassicBluetoothBTとBluetoothLowEnergyBLEに分けられます

Bluetooth BR / EDRおよびBLEとも呼ばれます。
ここに画像の説明を挿入
従来のBluetoothとBluetoothBLEの違いを理解したい場合は、この記事の次の章「1.3Bluetoothプロトコルスタック」の内容についてもある程度理解している必要があります。または上記の推奨記事では、いくつかの基本的な理論的基礎が習得されています。

Bluetooth BR/EDRとBLEの類似点と相違点を比較します。良い出発点は、プロトコルの物理層(PHY)です。PHYには、アナログ信号を変調および復調し、それらをデジタルシンボルに変換するための回路が含まれています。BR / EDRとBLEの異なるPHYの4つの特性には、チャネルスキーム、消費電力、遅延、スループットが含まれます。

  • チャネル
    BluetoothBR/ EDRとBLEは、どちらも2.4GHz ISM帯域で通信しますが、帯域を分割するチャネルの数が異なります。Bluetooth BR / EDRは、周波数帯域を1MHz間隔の79チャネルに分割します。BLEは、より単純な送信機と受信機を使用するため、周波数帯域を2MHz間隔の40チャネルに分割します。
  • Power
    BLE Bluetooth Low Energyは、消費電力が少ないという特徴があります。消費電力の具体的な値については、新バージョンの継続的なリリースに伴い、ここでは具体的な値を示しません。
  • レイテンシー
    BLEがBluetoothBR/ EDRに対して持つもう1つの機能は、レイテンシーです。Bluetooth BR / EDRは、データを送信する準備ができるまでに約100ミリ秒かかります。また、送信機がデータを受信して​​から受信機がデータを利用できるようになるまで、100ミリ秒の遅延があります。場合によっては、これによりかなりの遅延が発生する可能性があります。また、データの送信に余分な時間がかかるとバッテリーの消耗が増えるため、消費電力も高くなります。
    BLEはより低いレイテンシーを提供し、データを送信する準備ができるまでに3ミリ秒しかかかりません。さらに、送信機がデータを受信して​​から受信機が使用可能になるまでの待ち時間はわずか6ミリ秒です。これにより、データがより高速に送信され、電力が節約されます。
  • スループット
    最後に、従来のBluetoothには利点があります。比較的言えば、低電力Bluetoothのスループットは従来のBluetoothよりも確実に小さくなります。
    しかし、Bluetooth 5.0以降、BLEの速度は大幅に向上しました...

アプリケーション分野:

クラシックBluetooth:
1。サウンド伝送
Bluetoothヘッドセット、Bluetoothスピーカー。ヘッドホンやポータブルスピーカーなどのモバイルデバイスは、従来のBluetoothプロトコルに基づいています。

2.大量のデータを転送する
たとえば、一部の産業用制御シナリオでは、AndroidまたはLinuxマスター制御と外部Bluetoothリモート制御デバイス
を使用する場合、従来のBluetoothのSPPプロトコルをワイヤレスシリアルポートとして使用できます。速度はBLE伝送よりもはるかに高速です。
ここで注意すべきことは、iPhoneが開いていないということです

Bluetooth BLE
低消費電力、リモコン(マウス、キーボード)、センシングデバイス(ハートビートベルト、血圧モニター、温度センサー、共有自転車ロック、スマートロック、紛失防止デバイス、屋内測位)などの少量のデータ
1.健康医療用品
2.測位アプリケーション
3.近接データ収集
4.スマートホームアプリケーション
5.モバイル拡張機器
6.自動車用電子機器

デュアルモードBluetooth:デュアルモードBluetoothは、スマートTVリモートコントロール、ノイズキャンセリングヘッドホンなど
、従来のBluetoothプロトコルとBLEBluetoothプロトコルの両方を含むデュアルプロトコルモジュールです。
多くのスマートテレビには、音声を送信するために従来のBluetoothを必要とする音声認識付きのリモコンが付属しています。
元のキーボードテーブルにない機能などの複雑なボタンを実行する場合、従来のBluetoothのHIDボタンプロトコルは機能せず、BLEをプライベートプロトコルとして使用する必要があります。
多くのノイズキャンセリングヘッドホンは、APPを使用してノイズキャンセリング効果を調整します。これは、BLEを介して実装されたプライベート通信プロトコルでもあります。

ESP32-C3チップでは、従来のBluetoothとBLEの両方をサポートしています。

1.2BluetoothメッシュとBluetoothBLE

Bluetoothメッシュはネットワークテクノロジーです。BluetoothメッシュネットワーキングはBluetoothBLEに依存しています。
Bluetooth Low Energyテクノロジーは、BluetoothMeshで使用されるワイヤレス通信プロトコルスタックです。

BluetoothメッシュはBluetoothBLE低エネルギーブロードキャストに基づいています

Bluetooth Meshは、Bluetooth Low Energyブロードキャストを使用して情報を送受信し、ネットワーク内のノードから宛先ノードに情報を転送します。BluetoothMeshネットワーキングでは、このブロードキャストモードはネットワークフラッディングとも呼ばれます。

ESP32-C3チップでは、ESP-IDFはBluetoothメッシュネットワークのAPIを提供し、直接適用できます。

1.3Bluetoothプロトコルスタック


ここに画像の説明を挿入
また、別のブログ投稿でBluetoothプロトコルスタックを紹介しました。これは、Bluetoothについての知識がさらに深まるためです。ここでは、BLEを今後のアプリケーションで使用する必要があるため、ここでもう一度説明します。BLEプロトコルについて説明します。より直感的に見えるテーブルでそれを:
ここに画像の説明を挿入

1.4Bluetoothチップソリューションの実装

Bluetoothプロトコルスタックの内容と上記の推奨記事「3つのBluetoothアーキテクチャ実装ソリューション(Bluetoothプロトコルスタックソリューション)」と組み合わせて、一般的なメーカーのBluetoothソリューションがどのように設計されているかを説明できます。

BR / EDR Bluetoothデバイスタイプの場合、コントローラーには通常、無線処理、ベースバンド、リンク管理、およびオプションのHCIインターフェイスレイヤー
が含まれます。LEコントローラーに対応するものには、主にLE PHY、リンクレイヤー、およびオプションのHCIが含まれます。

BR / EDRコントローラーとLEコントローラーが1つのコントローラーに設計されている場合、それは私たちがしばしばデュアルモードBluetoothと呼ぶものです。

次の図に示すように
ここに画像の説明を挿入
、シングルチップソリューションでは、コントローラーとホスト、プロファイル、およびアプリケーション層はすべて同じチップ
内にあります。ネットワークコントローラーモードでは、ホストとコントローラーは一緒に実行されますが、アプリケーションとプロファイルは、UARTやUSBを介して操作できるPCやその他のマイクロシステムなどの別のデバイス上にあります。
デュアルチップモードでは、コントローラーは1つのコントローラーで実行され、アプリケーションレイヤー、プロファイル、およびホストは別のコントローラーで実行されます。

私たちのESP32-C3チップは、下の写真のようだと思います(エラーがはっきりと指摘されています!!)
ここに画像の説明を挿入

上記の推奨資料をすべて読んだ後でも、多くの学生はまだ混乱しています。多くの概念とプロトコルがあります。どのコードを使用および変更することを学ぶ必要がありますか?これについて心配する必要はありません。ESP-IDFBluetoothフレームワークを見てみましょう。

2. ESP32-C3ESP-IDFBluetoothフレームワーク

使用する必要のあるESP-IDF自体に戻ると、BluetoothAPIの公式な説明は次のとおりです。
ここに画像の説明を挿入

上記の多くの理論的知識のバプテスマの後、ESP-IDF Bluetooth API
ここに画像の説明を挿入
を振り返ってみましょう。全体的な構造はほぼ理解できるので、ESP-IDFの例のルーチンから実際のルーチンを見てみましょう。

2.1Bluedroidに基づく例

Bluedroidスタックのble部分の最初の部分:
ここに画像の説明を挿入
前述したように、GATTは属性のデータコンテンツを標準化するために使用され、グループ(グループ化)の概念を使用して属性を分類および管理します。マスター/スレーブデバイスの相互作用データのプロファイル、サービス、特性などの概念の抽象化と管理を提供します。したがって、このサンプルプログラムには、GATTの例がたくさんあります。

さらに、よく見られるBluetoothシリアルポート透過伝送を含め、SPPプロトコルが使用されます。

Bluetooth Ibeaconモードは、Bluetoothポジショニングのビーコンとして使用されるプロトコルです。

マウスとキーボード、および他の周辺HIDデバイスの遅延も、対応する例を提供します。

2番目の部分ble_50の部分:
ここに画像の説明を挿入
例のこの部分では、説明がないため、ここではこれ以上の説明はありません。

クラシックBluetoothの3番目の部分classic_btパート:
ここに画像の説明を挿入
先に紹介しましたが、クラシックブルートゥースとブルートゥースbleのアプリケーションフィールドが導入されました:クラシックブルートゥースのアプリケーションフィールドには、ブルートゥースイヤホンとブルートゥーススピーカーが含まれ、ESPのクラシックブルートゥース部分にあります- IDF、サンプルコードのこれら2つの部分が提供されています!

Bluetoothシリアルポート、受信機、送信機に関連するSPPプロトコルもあり、すべて独自の使用例があります。

最後に、hfp_agとhfp_hfの例を使用して、スマートフォンなどのオーディオゲートウェイ(AG)デバイスと通信できます。

4番目の部分のcoex部分:
ここに画像の説明を挿入
従来のBluetoothとBLEの共存前述のように、BR / EDRコントローラーとLEコントローラーを1つのコントローラーに設計すると、デュアルモードBluetoothを実現できます。ESP32-C3には2種類のコントローラー。

2.2ESP-BLE-MESHに基づく例

上記の紹介は完了しましたが、esp_ble_meshの部分については、まだ1つずつ見ていきます。Espressif
ここに画像の説明を挿入
のIDFには、AliGenieとの直接接続の例があります。

2.3hciベースの例

ここに画像の説明を挿入
前述のように、HCIは主に、2つのMCUがBLEプロトコルスタックを実装し、2つの間の通信プロトコルとコマンドを標準化する場合に使用されます。
コントローラーとHCIに関連すること、今説明するのは簡単ではありません!

2.4ApacheNimBLEに基づく例

Apache NimBLEのスタックはBLEのみをサポートしているため、この部分はBLEに関連する例でもあります。
ここに画像の説明を挿入
この部分の説明については、ESP-IDFによって提供されるreadmeがより詳細です。おそらく、NimBLEには占有されているコード用のメモリがたくさんあるためです。と実行中。より低い要件?

2.5Bluetoothに関連するその他の例

ここに画像の説明を挿入
ヒューマンインターフェイスデバイス(HID)は、ヒューマンインターフェイスデバイスでのBluetoothのプロトコル、機能、および使用手順を定義します。典型的なアプリケーションには、Bluetoothマウス、Bluetoothキーボード、Bluetoothゲームパッドなどがあります。このプロトコルは、USBHIDプロトコルから採用されました。
Bluetooth HIDは、Bluetoothプロトコルのプロファイル(アプリケーション層)です。

エピローグ

これまでのところ、ESP32-C3の場合、ESP-IDFのすべてのBluetoothの例を簡単に確認しました。知識を学ぶには、最初に基礎を築く必要があります。Bluetoothプロトコルのような適切な名詞はたくさんあります。専門用語の知識がある場合でも、基本を学ぶのに十分な時間を費やす必要があります。

この記事は、ESP32-C3 Bluetoothの章の始まりです。これは、私たちが直面することの紹介にすぎず、自分自身を知ることができます。

ESP-IDFを使用するために、Bluetoothの章を始めるための資料はほとんどありません。私は資料を見つけるために数日間勉強してきましたが、ESP-IDFの例の紹介のしっかりした紹介さえ見つけていません。記事==!ですから、この時期は頭が大きく、Bluetoothプロトコルの理解もそれほど深くないので、ブログ記事を書くのに苦労しましたが、現在は基本的に自分の理解を書くことができません。品質をご理解ください。私は将来いつでもテキストの誤りと欠陥を更新します。同時に、Bluetoothを理解している大物がもっと多くの指針を与えることを願っています。

ESP32-C3 Bluetoothの次の学習アップデートは、以前ほど速くない可能性があります。すべての例があるため、実行してテストしてから、何に使用しますか?どのように使用されますか?意味がない?わかり次第更新しますので、よろしくお願いします!ありがとう!

おすすめ

転載: blog.csdn.net/weixin_42328389/article/details/123427950