NB-IoTモジュール(BCシリーズ—BC95)
0. NB-IoTの概要
NB-IoT (狭帯域モノのインターネット) は、低消費電力、低データ レート、大規模接続を備えた IoT アプリケーション向けに設計された低電力ワイドエリア モノのインターネット (LPWAN) テクノロジーです。狭帯域幅チャネルと複雑度の低い変調方式を使用して、長距離伝送、屋内および屋外の広いカバレッジ、および強力な堅牢性を実現します。
技術原理
- NB-IoT は、LTE (Long Term Evolution) 技術標準に基づく狭帯域 IoT 技術であり、LTE ネットワークの空きリソースを利用して既存の LTE インフラストラクチャ上に展開し、低電力、長距離通信ソリューションを提供します。
- NB-IoT は、それぞれの帯域幅がわずか 180 kHz の狭帯域チャネルを使用するため、建物や障害物をよりよく透過し、広範囲をカバーできます。
- NB-IoT は、複雑度の低い変調およびコーディング方式を採用して端末デバイスの消費電力を削減し、同時に多数のデバイスを接続できる大規模接続をサポートします。
機能と利点
- 低消費電力: NB-IoT はスタンバイ状態と通信状態の両方で低消費電力特性を備えているため、デバイスのバッテリー寿命を延ばすことができます。
- 長距離伝送: NB-IoT は伝送性能が高く、長距離通信が可能であり、広域カバレッジのアプリケーションシナリオに適しています。
- 屋内および屋外の広いカバレッジ: NB-IoT 信号は強力な透過能力を備えており、屋内および屋外の環境を効果的にカバーし、IoT アプリケーションに包括的なカバレッジを提供します。
- 低コスト: NB-IoT は既存の LTE インフラストラクチャを導入に利用するため、別の IoT ネットワークを確立する必要がなく、ネットワークの導入コストと運用コストが削減されます。
- 大規模接続: NB-IoT は大規模なデバイス接続をサポートしており、各基地局は同時に多数のデバイス接続要求を処理できるため、インターネットにおける多数のデバイスのアプリケーション シナリオに適しています。もの。
応用分野
-
都市インテリジェンス: NB-IoT は、スマート照明、スマート交通機関、スマート パーキングなどのスマート シティ プロジェクトに適用できます。
-
産業オートメーション: NB-IoT は、産業機器、機械の状態監視、環境監視などの監視と制御に使用できます。
-
農業・環境モニタリング:NB-IoTは、農業分野では土壌水分モニタリング、気象データ収集、作物灌漑管理などに活用できるほか、環境モニタリング分野では大気質モニタリング、水質モニタリングにも活用できます。
-
物流・サプライチェーン管理:NB-IoTを物流追跡・監視に活用し、貨物追跡、温度・湿度監視、輸送中の安全監視を実現します。
-
スマート メーターとエネルギー管理: NB-IoT は、スマート メーターのリモート検針とエネルギー消費監視に使用でき、正確な電力消費データとエネルギー管理機能を提供します。
-
ヘルスケア:NB-IoTは、遠隔心拍数モニタリング、血圧モニタリングなどの健康モニタリング機器に適用し、遠隔治療や健康管理を実現します。
-
セキュリティ監視: NB-IoT は、リモートビデオ監視、インテリジェントアクセス制御などのセキュリティ監視システムに使用して、セキュリティ監視とアラーム機能を実現できます。
1. よく使われるNB-IoTモジュール
-
Quectel BC95: Quectel BC95 は、グローバル マルチバンドをサポートし、屋内および屋外の優れたカバレッジ パフォーマンスを備えたコンパクトで低消費電力の NB-IoT モジュールです。UART インターフェイスと標準 AT コマンド セットを提供し、主制御デバイスとの通信と制御を容易にします。
-
SIMCom SIM7020: SIMCom SIM7020 は、小型、低消費電力、高感度を特徴とする高度に統合された NB-IoT モジュールです。世界中のアプリケーション向けにグローバル マルチバンドをサポートします。SIM7020 は UART および USB インターフェイスを提供し、標準の AT コマンド セットと豊富な機能をサポートします。
-
u-blox SARA-N2: u-blox SARA-N2 は、低消費電力で広いエリアをカバーするコンパクトな NB-IoT モジュールです。世界中のアプリケーション向けにグローバル マルチバンドをサポートします。SARA-N2 は、UART インターフェイスと標準 AT 命令セットを提供し、豊富な機能と統合しやすい設計をサポートします。
-
Huawei ME309: Huawei ME309 は、優れた伝送性能と安定性を備え、グローバルなマルチバンドとマルチモードをサポートする高性能 NB-IoT モジュールです。UART インターフェイスと標準 AT コマンド セットを提供し、主制御デバイスとの通信と制御を容易にします。
-
Nordic Semiconductor nRF9160: Nordic Semiconductor nRF9160 は、NB-IoT と LTE-M 機能を統合するマルチモード ワイヤレス SoC です。低消費電力かつ高集積化が特徴で、IoT機器の設計に適しています。nRF9160 は、柔軟なアプリケーション開発をサポートする豊富なハードウェア インターフェイスとソフトウェア開発ツールを提供します。
2. BCシリーズ—BC95
技術仕様
- 寸法: 23.6mm × 19.9mm × 2.2mm、SMTパッケージ、小型デバイスの統合に適しています。
- 通信周波数帯域:グローバルマルチバンドをサポートし、さまざまな地域での無線通信に適しています。
- ネットワーク モード: NB-IoT ネットワーク モードをサポートし、広範囲のカバレッジと屋内への深い浸透機能を備えます。
- 通信インターフェイス: UART インターフェイスを提供し、データ送信と AT コマンド制御をサポートします。
- 電源電圧: 3.0V~4.3Vの広い動作電圧範囲で、さまざまな電源要件に適応します。
- 低消費電力: PSM (省電力モード) に入ると、消費電力は数マイクロワットに削減されます。
- データ伝送速度: 最大 15.625kbps のアップリンクおよび 100kbps のダウンリンクのデータ伝送速度をサポートします。
特徴
- 低消費電力: BC95 モジュールは低消費電力設計を採用しており、長期間の動作を実現し、デバイスのバッテリー寿命を延ばす電源管理機能をサポートしています。
- 強力なカバレッジ: BC95 モジュールは広範囲のカバレッジをサポートし、屋内および屋外の良好な信号カバレッジを備え、複雑な環境でも安定した通信接続を提供できます。
- 高度に統合: BC95 モジュールは、NB-IoT 通信モジュール、ベースバンド プロセッサ、内蔵電源管理、センサー インターフェイスなどの機能を統合しているため、周辺コンポーネントの必要性が減り、設計と統合プロセスが簡素化されます。
- AT コマンド制御: BC95 モジュールは標準の AT コマンド セットをサポートしており、開発者はシリアル ポートを介してモジュールと通信および制御し、データ送信、ネットワーク接続、構成などの操作を実現できます。
- 豊富なアプリケーション インターフェイス: BC95 モジュールは、外部デバイスとのデータ対話や拡張機能を容易にするために、UART、GPIO、ADC などのさまざまなインターフェイスを提供します。
3. STM32 は BC95 を使用します
方法
-
ハードウェアを接続します。
- BC95 モジュールを STM32 マイクロコントローラーに接続します。BC95 モジュールは UART インターフェイスを使用してマイクロコントローラーと通信するため、BC95 モジュールの TX ピンを STM32 の RX ピンに接続し、BC95 モジュールの RX ピンを STM32 の TX ピンに接続する必要があります。同時に、共通のアース接続を確保してください。
-
シリアルポートを初期化します。
- STM32 のシリアル ポートを初期化し、BC95 モジュールと通信するためのボー レート、データ ビット、ストップ ビット、パリティ ビットなどの適切なパラメータを設定します。
-
AT コマンド制御コードを書き込みます。
- STM32 のシリアル ポートを使用して AT コマンドを BC95 モジュールに送信し、モジュールから返された応答を受信して分析します。シリアル ポート送信機能 (例:
HAL_UART_Transmit()
) を使用して AT コマンドを送信したり、シリアル ポートを使用して割り込みまたはポーリング メソッド (例:HAL_UART_Receive()
) を使用してモジュールからの応答を受信したりできます。
- STM32 のシリアル ポートを使用して AT コマンドを BC95 モジュールに送信し、モジュールから返された応答を受信して分析します。シリアル ポート送信機能 (例:
-
AT コマンドの応答を解析します。
- BC95モジュールから返されるATコマンドのレスポンスを解析し、コマンドの実行結果を判定し、返されたデータを取得します。AT 命令セットのドキュメントに従って、モジュールの応答メッセージを解析し、必要に応じて関連データを抽出します。
-
機能を実現します。
- プロジェクトの要件に応じて、機能を実現するための適切なコードを記述します。これには、BC95 モジュールとのデータ通信、ネットワーク接続、データの送受信などが含まれる場合があります。AT コマンド セットのドキュメントに従って、適切な AT コマンドを使用してタスクを完了します。
-
デバッグとテスト:
- 実際のアプリケーションでは、デバッグとテストを通じて、BC95 モジュールと STM32 間の通信が正常であり、機能が期待どおりであることが確認されます。デバッガやシリアルデバッグアシスタントなどのツールを使用して、シリアル通信やATコマンドのやりとりの詳細を確認し、データ転送やネットワーク接続が正常かどうかを確認できます。
BC95のATコマンド
以下は、モジュールとの通信と制御のために BC95 モジュールで一般的に使用される AT コマンドの一部です。
-
AT: モジュールが正常に動作しているかどうかを確認するために使用されるテスト コマンド。モジュールは「OK」を返す必要があります。
-
AT+CGMI: モジュールの製造元情報を取得します。
-
AT+CGMM: モジュールのモデル情報を取得します。
-
AT+CGMR: モジュールファームウェアのバージョン情報を取得します。
-
AT+CGSN: モジュールの IMEI 番号を取得します。
-
AT+NBAND: 動作周波数帯域を設定または照会します。
-
AT+CFUN: モジュール機能モードを設定または照会します。
-
AT+CSQ: 信号品質をクエリし、現在の信号強度と信号対雑音比を返します。
-
AT+CEREG: ネットワークの登録ステータスを問い合わせます。
-
AT+COPS: 演算子の選択を設定またはクエリします。
-
AT+CGATT: ネットワークを接続または切断します。
-
AT+NCONFIG: モジュールパラメータを設定します。
-
AT+NSOCR: UDP または TCP ソケットを作成します。
-
AT+NSOST: データをリモート サーバーに送信します。
-
AT+NSORF: リモートサーバーからデータを受信します。
-
AT+NSOCL: ソケットを閉じます。
サンプルコード
#include "stm32f4xx_hal.h"
#include <stdio.h>
#include <string.h>
UART_HandleTypeDef huart2;
void UART_TransmitString(const char* str) {
HAL_UART_Transmit(&huart2, (uint8_t*)str, strlen(str), HAL_MAX_DELAY);
}
void UART_ReceiveString(char* buffer, uint16_t length) {
HAL_UART_Receive(&huart2, (uint8_t*)buffer, length, HAL_MAX_DELAY);
}
void BC95_SendATCommand(const char* atCommand) {
UART_TransmitString(atCommand);
UART_TransmitString("\r\n");
}
void BC95_ReceiveResponse(char* responseBuffer, uint16_t bufferSize) {
memset(responseBuffer, 0, bufferSize);
UART_ReceiveString(responseBuffer, bufferSize - 1);
}
int main(void) {
char response[256];
HAL_Init();
// 初始化UART2等操作,具体根据STM32F407的硬件资源和开发环境进行设置
// 配置UART2的波特率、数据位、停止位等参数
huart2.Instance = USART2;
huart2.Init.BaudRate = 9600;
huart2.Init.WordLength = UART_WORDLENGTH_8B;
huart2.Init.StopBits = UART_STOPBITS_1;
huart2.Init.Parity = UART_PARITY_NONE;
huart2.Init.Mode = UART_MODE_TX_RX;
huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
huart2.Init.OverSampling = UART_OVERSAMPLING_16;
HAL_UART_Init(&huart2);
// 发送AT指令并接收响应
BC95_SendATCommand("AT");
BC95_ReceiveResponse(response, sizeof(response));
printf("Response: %s\n", response);
// 其他AT指令操作...
while (1) {
// 主循环
}
}
上記のサンプルコードでは、BC95 モジュールと通信するためのシリアル ポートとして USART2 が使用されています。ハードウェア リソースとニーズに応じて調整できます。UART の関連パラメータを正しく初期化し、設定してください。メイン ループでは、AT コマンド操作をさらに追加し、必要に応じてモジュールの応答を解析して処理できます。