モノのインターネットのための通信プロトコル

モノのインターネットのための通信プロトコル



コミュニケーションの目的は情報を伝えることです

デバイス間のデータ伝送を実現するには、オブジェクト間の最適な接続方法を見つけることを考慮する必要があります。これらの通信方法には独自の長所と短所があり、さまざまなアプリケーション シナリオに適しています。

IoTの通信方式は大きく以下に分類されます。

画像の説明を追加してください

モノのインターネットの有線通信は、イーサネットや光ケーブルなどの物理回線による通信方式であり、イーサネットの標準規格はIEEE802.3規格で策定されており、イーサネットはツイストペアを媒体としており、200メートルの範囲をカバーできます。有線通信は、通信の品質、遅延、コストが保証され、過酷な環境でも正常に動作することができますが、通信範囲が狭く、持ち運びに不便であるという問題は解決できません。

モノのインターネットには多くの無線通信技術があり、主に 2 つのカテゴリに分類されます。1 つは Zigbee、WiFi、Bluetooth、Z-wave などの近距離通信技術、もう 1 つは LPWAN (Low-Power Wide- Area Network、低電力広域ネットワーク)、つまり広域ネットワーク通信技術。LPWA は 2 つのカテゴリに分類できます: 1 つは、ライセンス不要のスペクトルで動作する LoRa、SigFox およびその他のテクノロジーであり、もう 1 つは、ライセンスされたスペクトルで動作し、EC-GSM、LTE などの 3GPP によってサポートされる 2/3/4G セルラー通信テクノロジーです。 Cat-m、NB-IoTなど 高速サービスは主に 3G および 4G 技術を使用し、中速度サービスは主に GPRS 技術を使用します。低料金サービスは現在、優れた携帯電話技術だけでは満足できませんが、さまざまなアプリケーション シナリオがあり、多くの場合、GPRS 技術によってのみサポートできます。

画像の説明を追加してください
ここでは、Lora と NB-IOT が非常に似ていることがわかりますが、主な違いは、Lora スペクトルは一部のセグメントでは無料 (自己構築可能) であるのに対し、NB-IOT はオペレーター上で実行する必要があることです。ビデオストリーミングを必要とする長距離伝送要件の場合、ネットワークには 4G+WIFI のみが適しています。

無線通信は、ライセンスなしのスペクトル ワイヤレス接続と、ライセンスを取得してネットワークをレンタルするライセンス付きスペクトル ワイヤレス接続に分けることもできます。
認可されたスペクトル無線接続は、当社の一般的なセルラー通信であり、オペレーターのネットワークです。
1G: AMPS
2G: TDMA、CDMA、GSM...
3G: UMTS、HSDPA、WCDMA...
4G: LTE、EC-GSM、eMTC...

アンライセンススペクトル無線接続は、さらに近距離通信と広域
通信に分類できます


広域通信
ローラ

1. UARTシリアル通信

シリアル通信の英語略称はUART(Universal Asynchronous Receiver Transmitter)で、正式名称はUniversal Asynchronous Receiver Transmitterです。

1.1 シリアル通信

画像の説明を追加してください

2 つのデバイスはワイヤで直列に接続されており、送信側は回線の一端でデータをバイナリ シーケンスに変換し、ハイ レベルとロー レベルの 01 信号を順番に送信し、受信側は信号のハイ レベルとロー レベルを読み取ります。この信号は、バイナリに変換された 01 シーケンスに対応します。これはシリアル通信の最も基本的な概念であり、

1.2 非同期トランシーバー

ここに画像の説明を挿入
上の図の 2 つのデバイスに回線を追加して、左側のデバイスが受信者にもなり、右側のデバイスが送信者にもなれるようにすると、左右のデバイスで送受信を行うことができます。 2 つが同時にオンラインになります。このとき、送信と受信は非同期です。

1.3 ボーレート

ボーレートとは、1秒間に送信する0と1の2進数で、受信側と送信側のボーレートが一致していないと文字化けが発生します。画像の説明を追加してください

トランシーバーのボーレートを毎回一定にするのは不便であるため、I2C バス プロトコルや SPI バス プロトコルなどの一部のクロックベースの通信プロトコルでは、クロック ラインを使用して情報の送受信の同期を確保します。

1.4 シリアル通信プロトコルのデータフレーム

シリアル通信では、最も基本的なデータ フレームには少なくともスタート ビット + データ ビット + ストップ ビットが含まれます (チェック フレームはオプション)。
データの送信方向は一般に最上位ビットのMSBで、
UARTシリアルポートではRXが情報の受信側、TXが情報の送信側を表します。

1.5 メリットとデメリット

1.5.1 利点

(1) シンプルなハードウェア
(2) 低遅延
(3) ダイレクト接続

1.5.2 欠点

(1) ポイントツーポイント通信、複雑なネットワーク通信には適さない
(2) 通信距離と通信速度はシリアル ケーブルの長さと品質によって制限される
(3) 合意がないため、通信当事者は独自の定義を行う必要があるメッセージ形式と分析ルール

二、I2C

2.1 I2C _

I²C (Inter-integrated Circuit) は、1982 年にフィリップスによって開発および設計されたバス プロトコルです。I²C バスはデバイス間の短距離通信をサポートし、プロセッサと一部の周辺デバイス間のインターフェイスに使用され、情報交換を完了するには 2 本の信号線のみが必要です。

2.2 I2C _

画像の説明を追加してください

I²C は非同期シリアル ポートと同様に少なくとも 2 つの回線を必要としますが、複数のスレーブ デバイスをサポートできます。SPI とは異なり、I²C はマルチマスター (マルチマスター) システムをサポートし、複数のマスターと各マスターがすべてのスレーブ (マスター) と通信できます。 I²C を介して通信することはできず、各マスターは I²C バスを順番にのみ使用できます)。マスターとは、データ送信を開始し、送信を駆動するためにバス上にクロック信号を生成するデバイスを指しますが、アドレス指定された通信デバイスはすべてスレーブです。

I²C 通信に必要な双方向バスは 2 つだけです: シリアル データ ライン SDA とシリアル クロック ライン SCL

2.3 データの有効性

SDA ライン上のデータは、クロックの High 期間中は安定している必要があり、SDA の High または Low 状態は、SCL ラインのクロック信号が Low の場合にのみ変更できます。

2.4 スタートコンディションSとストップコンディションP

開始条件 S: SCL が High の場合、SDA は High から Low に遷移します。

ストップコンディション P: SCL が High のとき、SDA は Low から High に遷移します。

画像の説明を追加してください

開始条件と停止条件は通常、ホストによって生成されます。バスはスタート コンディションの後はビジー状態になり、ストップ コンディションの後一定時間が経過すると再びアイドル状態になります。

2.5 データ形式

I2C によって送信されるデータはバイト単位であり、各バイトは 8 ビットである必要があり、任意の数のバイトを送信できます。I2C のデータ形式には次の特徴があります。

(1) 各バイトの後には応答ビット ACK ( 画像の説明を追加してください
SCL 上の ACK) が続く必要があるため、実際に 1 バイト (8 ビット) のデータを送信するには 9 ビットかかります。

(2) SDA ではバイトの最上位ビットが最初に送信されます 上図より、桁数の送信順序は左から右に Bit7 ~ Bit0 であることがわかります。

送信されたデータを1バイト受信した後、データの受信側は応答する必要があり、このとき9クロック目で送信側はSDAラインの制御権を解放し、SDAをHレベルにして受信側に制御されます。受信機は8ビット1バイトのデータを正常に受信したことを示し、SDAをローレベル、つまりACK信号にして応答を示します。

2.6 プロトコルデータユニット PDU

画像の説明を追加してください

2.7 メリットとデメリット

2.7.1 利点

(1) I 2 C バスは、アドレス指定に一意のアドレスを使用して複数のデバイスを接続できます
(2) 中速度の通信要件に適しています
(3) ハードウェア リソースの占有が少ない

2.7.2 欠点

(1) I2C通信は距離制限があり、近距離通信に適しています
(2) デバイスの I2C アドレスを設定する必要があります
(3) リアルタイム性が低い

3.SPI

3.1 SPI

SPIとはSerial Peripheral Interface(シリアル・ペリフェラル・インターフェース)の略称です。これは、モトローラによって導入された同期シリアル インターフェイス テクノロジであり、高速、全二重、同期通信バスです。SPI プロトコルは主に短距離通信システム、特に組み込みシステムで使用されており、LED ディスプレイ ドライバー、I/O インターフェイス チップ、UART トランシーバーなどの多くのチップ周辺機器で SPI バス プロトコルが広く使用されています。

3.2 通信原理

SPI の通信原理は非常に単純で、マスター/スレーブ モードで動作します。このモードには通常、マスター デバイスと 1 つ以上の
スレーブ デバイスが含まれます。英語では、マスター デバイスは通常 Master と呼ばれ、スレーブ デバイスは Slave と呼ばれます。SPI は
画像の説明を追加してください
理論的には、双方向データ伝送には 4 線、単方向伝送には 3 線が必要です。SPI
の理論上の 4 線は次の 4 種類です。
画像の説明を追加してください

3.3 データの有効性

画像の説明を追加してください

3.4 メリットとデメリット

3.4.1 利点

(1) 全二重通信をサポートし、データの送信と受信を同時に実行できます。
(2) 簡単な通信
(3) 高速なデータ転送速度

3.4.2 欠点

(1) 配線が複雑で最低4本の配線が必要
(2) 複数のスレーブの場合、各スレーブをCSチップ選択信号線に接続する必要があり、チップのIOリソースを無駄に消費する。

4. ソケット通信

4.1 ソケット

ソケットはアプリケーション層とトランスポート層の間の抽象化層であり、TCP/IP 層の複雑な操作をいくつかの単純なインターフェイスに抽象化し、アプリケーション層がネットワーク内のプロセスの通信を実現するために呼び出すことができます。ソケットは UNIX で生まれました。UNIX ではすべてがファイルであるという考えのもと、プロセス間通信はファイル記述子 (ファイル記述子) と呼ばれます。ソケットは「オープン、読み取り、書き込み、クローズ」モードを実装したものです。クライアント 両端は「ファイル」を保持し、接続が確立されて開かれた後、相手が読み取れるようにコンテンツをファイルに書き込むか、相手のコンテンツを読み取って、通信が終了したらファイルを閉じることができます。

また、よく話題になるSocketの位置は以下の通りです。
画像の説明を追加してください

4.2 TCP と UDP

世の中には、DARPA インターネット アドレス (インターネット ソケット)、ローカル ノードのパス名 (Unix ソケット)、CCITT X.25 アドレス (X.25 ソケット) など、さまざまな種類のソケットが存在します。ここでは、最初のタイプのソケット、つまり最も代表的で古典的で最もよく使用されるインターネット ソケットのみを紹介します。今後、ソケットというときは、インターネット ソケットを指します。データの転送方法に応じて、インターネット ソケットは 2 つのタイプに分類できます。

4.2.1 ストリームフォーマットソケット SOCK_STREAM

「接続指向ソケット」としても知られるストリーム ソケット (ストリーム ソケット) は、信頼性の高い双方向通信データ ストリームであり、データはエラーなく別のコンピュータに到達でき、破損または紛失した場合でも再起動できます。 。特徴としては、
(1) 送信中にデータが消失しない、
(2) データが順番に送信される、
(3) データの送受信が非同期である(チュートリアルによっては「データの境界がない」とも書かれている)。
これは TCP プロトコル (伝送制御プロトコル、伝送制御プロトコル) を使用しており、TCP プロトコルはデータが順番に到着するように制御し、エラーは発生しません。
ブラウザで使用される http プロトコルは、データが正しいことが保証されなければならないため、接続指向のソケットに基づいています。そうでないと、ロードされた HTML が解析されません。

4.2.2 データグラム形式ソケット SOCK_DGRAM

データグラム ソケット (Datagram Sockets) は、「コネクションレス ソケット」とも呼ばれます。コンピュータはデータを送信するだけで、データの確認はしないため、送信中にデータが破損したり、他のコンピュータに届かなかったりした場合、修復する方法がありません。つまり、データが間違っている場合は、間違っているので再送信することはできません。データグラムソケットは検証作業が少ないため、伝送効率の点でストリーム形式のソケットよりも効率的です。
(1) 送信順序よりも高速な送信を重視する、
(2) 送信データが消失または破損する可能性がある、
(3) 各データ送信のサイズを制限する、
(4) データの送受信は同期
データである、という特徴があります。パケット ソケットもルーティングに IP プロトコルを使用しますが、TCP プロトコルは使用せず、UDP プロトコル (ユーザー データグラム プロトコル、ユーザー データグラム プロトコル) を使用します。
QQ ビデオ チャットおよび音声チャットでは、通信の効率を第一に確保し、遅延を最小限に抑える必要があり、データの正確性は二の次であるため、SOCK_DGRAM を使用してデータを送信します。通常の分析であれば、せいぜいノイズやノイズが通信品質に大きな影響を与えることはありません。

4.3 ソケット通信処理

ソケットは異なるコンピュータ間の通信、つまりネットワーク通信を保証します。Web サイトの場合、通信モデルはサーバーとクライアントの間で行われます。両端で Socket オブジェクトが確立され、Socket オブジェクトを介してデータが送信されます。通常、サーバーは無限ループに陥り、クライアントからの接続を待機します。以下は、コネクション指向の TCP シーケンス図です。
画像の説明を追加してください

4.4 メリットとデメリット

4.4.1 利点

(1) ネットワーク通信に適しており、異なるデバイス間の通信が可能
(2) TCP ソケットにより、データの正確性と順序を保証する信頼性の高いデータ送信が可能
(3) 複数のプログラミング言語をサポート

4.4.2 欠点

(1) プログラミングが複雑になり、接続や切断などに対応する必要がある
(2) IP アドレスとポートの設定が必要であり、通信接続を確立するために正しく設定する必要がある
(3) 必要なネットワーク環境で使用されるため、物理ハードウェアへの直接接続には適していません。

5.MQTT

MQTT は、ハイパーテキスト転送プロトコル (HTTP) と同じレベルのアプリケーション層プロトコルです。

5.1 メッセージ キュー テレメトリ トランスポート MQTT

本来のソケット通信では情報が受信者に届くことは保証できず、リアルタイム性を含めたデータの信頼性が一定の影響を与えるため、現時点では情報の伝達と品質を保証するネットワーク通信プロトコル Protocol が必要となります。サービスの。インターネットの基本的なネットワーク プロトコルは TCP/IP です。MQTT (メッセージ キューイング テレメトリ トランスポート) は、TCP/IP プロトコル スタック上に構築されており、IoT 通信の標準となっています。

5.2 MQTT パブリッシュおよびサブスクライブ モデル

MQTT プロトコルに基づく IOT ネットワークにはいくつかの役割があります。画像の説明を追加してください
(1) パブリッシャーは、センサーがデータを収集し、現在のセンサー情報を送信するなど、メッセージをパブリッシュする責任があります。

(2) サブスクライバ サブスクライバはメッセージをサブスクライブし、取得したセンサー データに従って対応するアクションを実行します。

(3) *サーバー サーバー * 情報転送ステーション。発行者から購読者への情報の配信を担当します。

MQTT のクライアント側の実装は MQTT クライアントと呼ばれ、サーバー側の実装は MQTT ブローカーと呼ばれます。

各シングルチップマイコン (クライアント) は、PC (サーバー) との接続を長時間維持するだけで、データがあるかどうかをサーバーに通知します。他のシングルチップマイコンや、このシングルチップマイコンと通信している PC がある場合、同時に、このデータ取得プロセスは受動的であり、シングルチップ マイクロコンピュータは積極的にポーリングを行わず、プロセス全体が非同期であり、データは送信され、コールバック関数が自動的に呼び出されることにより、サーバがシングルチップマイコンと周辺機器との通信唯一のチャネルとなり、全体の処理が軽量化、効率化されます。

5.3 通信プロトコルの流れ

画像の説明を追加してください
通信に使用されるデータフレーム Data Frame は主にトピック ID とメッセージの 2 つの部分で構成されます。

パブリッシャーとサブスクライバーが互いの存在を直接認識する方法はなく、サブスクライバーとパブリッシャーは、データ フレーム Data Frame 内のトピック番号 Topic ID を通じて必要なデータを取得できます。

LED ライトのオン/オフをリモート制御する例を挙げると、次のようになります。

(1) ESP32とPCを同一LANに接続し、PCのIPアドレスを取得します。

(2) PC上でMQTTブローカーを起動し、サーバーモードをオンにします。

(3) ESP32 は PC の IP アドレスとポート番号を渡し、MQTT_Client を作成します

(4) ESP32 の MQTT_Client は PC 上の MQTT_Server との長い接続を作成します

(5) ESP32 の MQTT_Client がトピック LED_CONTROL をサブスクライブします

(6) PC 上で CLIENT を作成し、クライアントでローカル IP と MQTT ブローカー サービスのポート番号を渡し、PC 上でサーバーとの長い接続を確立します。

(7) PC 上のクライアント、データ フレーム送信トピック ID + コマンド、トピック ID は LED 制御

(8) データがサーバーに送信され、サーバーは ESP32 開発ボードが LED_CONTROL トピックにサブスクライブしていることを検出し、ESP32 とサーバーの間に作成された接続を通じてデータ フレームを送信します。

(9) ESP32 はこのデータ フレームを受信し、TOPIC_ID: LED_CONTROL を見つけるため、これが LED 制御に関連する命令であることを知り、MESSAGE が LED_ON であることを読み取り、ESP32 は命令 led.on() を実行し、LED が点灯します。

5.3 利点と欠点

5.3.1 利点

(1) 非同期メッセージプロトコル
(2) 永続接続指向
(3) 双方向データ送信
(4) 軽量プロトコル
(5) 受動的データ取得

5.3.2 欠点

(1) MQTTサーバーを構築する必要があり、システムが複雑になる
(2) 大規模ネットワークには向かない
(3) 通信に一定のオーバーヘッドがあり、リアルタイム性の高いアプリケーションに影響を与える可能性がある

6. まとめ

6.1 有線と無線

有線を使用できる場合は有線を使用し、データ品質が第一の保証です。

6.2 認可と不認可

2つの無線通信方式の効果に大きな差がなく、要件を満たすことができれば、お金をかけずに実現でき、後のコストを削減できます。

6.3 Bluetooth と Zigbee

なぜ zigbee ではなく、一般的な携帯電話やその他のデバイスに Bluetooth が標準搭載されるようになったのでしょうか? 1 つはコスト、もう 1 つは zigbee の兄貴分である Philips が構築したエコシステムです。ただし、Zigbee はより速く応答する必要があるため、このような需要がある場合は、Zigbee を検討してください。

6.4 RFIDとNFC

RFID は無線周波数識別技術 (識別)、NFC は近距離無線通信技術 (通信) です。

6.5 MQTT と COAP

MQTT と HTTP は TCP ベースのプロトコルであり、CoAP (Constrained Application Protocol) は UDP ベースのプロトコルです。
MQTT は永続的接続であり、CoAP プロトコルはコネクションレスです。
MQTT は中間エージェントを介してメッセージを送信する多対多のプロトコルであり、CoAP プロトコルはサーバーとクライアントの間でメッセージを送信するための 1 対 1 のプロトコルです。
MQTT は、クライアントの理解を助けるタイプやその他のタグを含むメッセージをサポートしていません。CoAP にはコンテンツ ネゴシエーションと検出サポートが組み込まれており、デバイスが相互に監視してデータ交換方法を見つけることができます。

参考記事:http://wiki.1zlab.deepsenserobot.com/wiki/micropython-esp32/mqtt/、https://www.cnblogs.com/myitnews/p/13790067.html
https://zhuanlan.zhihu.com /p/510549726
https://club.gizwits.com/thread-7555-1-1.html

おすすめ

転載: blog.csdn.net/qq_37249793/article/details/131957016