SIM800L 用の外部ライブラリを使用せずに、Texas Instrument Launchpad と MSP430G2553 マイクロコントローラを搭載したSIM800L モジュールを使用しています。
問題の説明: シンプルなテキスト メッセージ (テキスト モードの SMS) が送信され、携帯電話で空のメッセージとして受信されます。
SIM の詳細:
1. SIM 1 : 場所: インド。オペレーター: AirTel、4G 互換の SIM カード。
2. SIM 2 : 場所: インド。オペレーター:タタドコモ、3G対応SIMカード。
私がすでに知っていること:
- ファームウェアの UART ドライバーはテスト済みで、機能しており、ポーリングなしで、割り込み駆動型です。
- AT コマンドの応答を読み取る代わりに追加されたブロッキング時間遅延はありません。
<CR><LF>OK<CR><LF>
私は応答を読み、ほとんどのコマンドで肯定応答が受信された場合にのみ続行します。 - Tx-Rxピンで送受信されるデータビットをオシロスコープで確認しました。電圧レベルを含め、すべてが期待どおりのようです。
私が読んだこと:
SIM800L は 2G のみと互換性があるという非公式の情報源 (もちろんフォーラム) によるいくつかの憶測。
(ウィキペディアからの浅い読み)GSM 3.38とGSM 3.40、および適切な/関連するATコマンド(AT + CSMP)でテキストのエンコードがどのように処理されるかを理解するためのデータコーディングスキームセクションを読みました。
SIM800L モジュールが非常に一般的に使用されている arduino のフォーラムを含むさまざまなフォーラム。
Stackoverflow の関連記事:
- Raspberry Pi 2 で AT コマンドと Python を使用して空白の SMS SIM800 を受信する
- GSM モジュール SIM800 と Arduino Uno で SMS を送信するには?
- SIM800L モジュールを使用した SMS での GSM 文字セットの送信
最初の答えは彼にはうまくいったようですが、私にはうまくいきませんでした。
私が試したこと:
Docklight シリアル ターミナルのインスタンスで同じモジュールを使用しました。Docklight から送信された SMS が携帯電話で受信され、空白ではなく、期待どおりに表示されます。
0 日目に、モジュールを Launchpad ハードウェアに統合する前に、SIM800L からの予期される応答の正確なコピーを使用して、ファームウェア ステート マシン全体をテストしました。
初期構成の一部を除いて、両方の SIM カードの結果は同じですが、SMS 関連のタスクを開始する前に、両方の構成の典型的なセットを読み込みます。
私が使用する典型的な値は次のとおりです。
- エコーオフ
- CSMP: 17, 167, 0, 0 (17, 167, 0, 0 を試しましたが、うまくいきませんでした)。SIM 1 のデフォルトは 17,11,0,246 で、SIM 2 のデフォルトは 17, 255, 0, 0 です。
- CSCS: "IRA"
シリアルポートの組み合わせの失敗: (SIM 1 と SIM 2)
- CSMP: 17、11、0、246 | CSCS: "IRA" - 空の SMS を送信します
- CSMP: 17、11、0、246 | CSCS: "GSM" - 空の SMS を送信します
- CSMP: 17、11、0、246 | CSCS: "HEX" - 空の SMS を送信します
シリアルポートでの成功した組み合わせ: (SIM 1 と SIM 2)
- CSMP: 17、167、0、0 | CSCS: "IRA"
- CSMP: 17、167、0、8 | CSCS: "IRA"
- CSMP: 17、11、0、0 | CSCS:「GSM」
- CSMP: 17、167、0、0 | CSCS:「GSM」
- CSMP: 17、167、0、8 | CSCS:「GSM」
正直に言うと、どのフィールドがこれらの組み合わせの変更を反映しているかを調べる前に、これらの組み合わせで勘を働かせていました (SIM800L ユーザー ガイドには十分に記載されていません)。
ここで何が欠けているのでしょうか?それはRTFM(Read The Fat Manual)の問題であると私は考えています。