1228265_ja-JP

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

1228265_ja-JP

1228265_ja-JP

SIM800モジュールとFreeRTOSをベースとするFRDM Kinetis® K64マイクロコントローラ・ボードを使用してTCPアプリケーションを作成

このデモについて

このデモは、UARTベースのGPRSモジュールを有利に開始するために作成されました。目標は、FreeRTOS 上にプロジェクトを構築し、タスク管理の優れた実装と、UART モジュールを使用した AT コマンドに基づく他のプロジェクトへの適応性を確保することでした。

モジュールのドキュメンテーションによると、SIMCOMからのSIM800LはATコマンドで制御されます。これらのコマンドを使用する利点は、一部のタスクを調整することで、アプリケーションを他のATコマンドベースのモジュールに使用できることです。

このデモでは、使用された主要な要素について説明し、FreeRTOS 環境での作業が追加された機能的なプロジェクトを提供します。これにより、テストされていない理由でハングしない完全に機能するアプリケーションに対して、優れた信頼性が提供されます。このプロジェクトを詳しく調べると、各優先度に応じてさまざまなタスク管理にセマフォがどのように実装されているかがよくわかります。

プロジェクトスコープ

  • このプロジェクトは、UARTを介してKinetis® K64のFreedom開発プラットフォームに接続されたSIM800Lと連携することを目的としています。
  • 一部の機能では大電流が消費されるため、SIM800モジュールには>1200mAhのバッテリーまたは>2Aの降圧コンバーターが必要です。
  • このGPRSモジュールは低コストのアイテムですが、正しく機能するには2GSIMカードが必要です。これは、一部の国では取得が複雑になる場合があります。
  • このプロジェクトは、MCUXpresso SDK の FreeRTOS UART サンプルを使用して構築されました。

便利なリンク

リンク 形容
https://mcuxpresso.nxp.com/en/builder Kinetis K64用SDKビルダ
https://www.simcom.com/product/SIM800.html SIMCOM SIM800 サイトドキュメント
https://www.freertos.org/xSemaphoreCreateBinary.html FreeRTOS

必須項目

リンク 形容
https://www.nxp.com/design/development-boards/freedom-development-boards/mcu-boards/freedom-developm... NXPのFRDMK64ボード
https://simcom.ee/modules/gsm-gprs/sim800/ SIMCOM SIM800 GPRS Module
降圧コンバータ  
最大4.3Vおよび2Aを供給する電源  
セルラーアンテナ  

ハードウェア図

  • SIM800モジュールは消費電流が大きいため、モジュールがメッセージを送信している間に2アンペアを超える電流を供給できる降圧コンバータが必要です。これは、モジュールが最大電流を消費するときです。

SIM 800L ===> FRDM K64

VCC ===> 3V9 降圧コンバータ

RX ===> TX (PTC17/J1-4)

TX ===> RX (PTC16/J1-2)

       GND    ===>    GND

Diagram1.png


デモをテストするためのステップバイステップガイド

  1. https://mcuxpresso.nxp.com/en/select から K64 SDK を入手
    1. Fabian_R_0-1612823803859.png
  2. 次のリンクを使用してMCUXpressoの最新バージョンを入手してください: https://www.nxp.com/design/software/development-software/mcuxpresso-software-and-tools-/mcuxpresso-i...
    1. Fabian_R_1-1612823917368.png
  3. SIM800 ATコマンドのドキュメントは、次のリンクから入手できます https://www.elecrow.com/wiki/images/2/20/SIM800_Series_AT_Command_Manual_V1.09.pdf
  4. K64 SDK を MCUXpresso にインストールします。
  5. このドキュメントに添付されているプロジェクトをインポートします。

添付ファイルは、このドキュメントの下部にあります。

  1. Fabian_R_3-1612824100776.png
  1. K64をUSBケーブルで接続します。
  2. 前の章「 」で示したようにSIM800Lを接続します。
  3. MCUXpresso を使用してプロジェクトをビルドおよびデバッグします。
  4. コンソールで、実行中のタスクのフローを確認できるはずです。また、UART によって送受信されているコマンド。
  5. send_taskからのTaskDelayにより、アプリケーションは10,000ティックごとに実行されます。これは完全に portTick_PERIOD_MSに依存しますが、 この場合はおよそ25秒ごとです。

追加のデモ情報

これらの次の手順は、開発者が基本プロジェクトから行われた変更をより簡単に理解できるようにガイドすることを目的としています。

この追加情報は、プロジェクトがどのように構築されたかをより深く理解し、このアプリケーションの実装に必要なさまざまなトピックについてさらに説明することを目的としています。

FreeRTOS の使用は必須ではありませんでしたが、オペレーティングシステムの使用により、アプリケーションの信頼性が向上し、安全にデプロイできます。実際のタスクに加えて、新しいドライバーの OTA 更新のための新しいタスク、完全に機能する応答パーサー、またはプロジェクトのニーズに応じたその他の追加を実装できます。タスクベースのプロジェクトを使用すると、多くの変更がアプリケーションの完全な再構築を必要としないため、プロジェクトの柔軟性が確保されます。前述のように、セマフォの実装は、必要な機能に応じて信頼性の高いタスク管理を提供します。

Diagram2.png

プロジェクトはfreertos_uart例から開始され、そこから 3 つの追加タスク (接続タスク、送信タスク、チェックタスク) が構築されました。ここでは、機能を完全に理解するための各タスクの簡単な説明を示します。

  1. uart_task()
    1. このタスクはわずかに変更されただけです。UARTはUART3インターフェースに変更されました。
    2. UART_RTOS_Send() 関数と UART_RTOS_Receive() 関数は、セマフォの実装がさまざまなタスクの優先度に基づいて保持の解放を行っているため、ループ内にあります。
    3. このプロジェクトでは、優先度に基づいてアプリケーションフローが影響を受けるため、優先度は非常に重要です。uart_task() の優先度が最も高いです。これにより、新しいコマンドの送信が必要になるたびに、アプリケーションは実際のタスクを保持し、uartタスクを解放します。
    4. このタスクの最後に、新しいセマフォが呼び出されます。このセマフォは、受信した文字列を予想される文字列と比較する機能を持つ check_task() を呼び出します。
  2. check_task()
    1. このタスクは、バッファが関数パラメータから予期されたバイト数を受け取った直後に実行されます。
    2. このタスクの最初のステップは、SIM800 モジュールの応答メッセージを構成する余分な文字 '\n' と '\r' を削除することです。
    3. 送信されたコマンドに応じて、タスクは応答を比較して、エラー応答または正の応答を探します。これは、コマンドによっては、単純な OK とは異なる場合があります。
  3. connect_task()
    1. このタスクは、SIM800 モジュールが切断されたときに呼び出されます。この実装は、セマフォを使用してタスク uart を呼び出し、チェックタスクが受信した文字列を比較する単純な文字列コピーです。
    2. モジュールが IP アドレスを返した後、セマフォは送信タスクを呼び出してアプリケーション フローを続行するように命令します。
  4. send_task()
    1. このタスクの優先度は最も低いですが、最初に作成されたタスクであり、送信するデータを収集する ことを目的としたsendRoutine() 関数を呼び出します。
    2. この接続タスクは、IP アドレスを予期するコマンドが ERROR 応答を返したときにトリガーされます。送信されるコマンドは、AT+CIFSR と応答比較です。アプリケーション・フローは、 connect_task() ルーチンのセマフォを呼び出す if 条件に入ります。
    3. 次に、SIM800モジュールのTCP機能を介して送信されるフレームが構築されます。
    4. 選択したプロトコルにより、SIM800モジュールはサーバーからの応答、特に200 HTTPコードを期待しています。
    5. モジュールによっては、ここでプロトコルの変更を行うことができます。

言及する価値のある点は、モジュールが2G帯域幅で動作することです。これは、エリアネットワークとモジュール間のSIMカードのバージョンに互換性がないため、一部の国で問題になる可能性があります。これがあなたの国で当てはまる場合は、SIM7080や他のNB-IoTモジュールのような4Gモジュールを探すことを強くお勧めします。これはより高価になる可能性がありますが、プロジェクトが最新のセルラーバンドの上で機能することを保証します。

 

タグ(1)
評価なし
バージョン履歴
最終更新日:
‎01-06-2026 01:15 AM
更新者: