2017-04-03 13 views
1

私は現在、「Internet of Things」というドメインのミニプロジェクトに取り組んでいます。 GSMモジュールを使って無線掲示板をデザインすることにしました。Embedded CのGSMモデムからメッセージを読み取る方法は?

私はプロジェクトを2つのモジュールに分割しました。まず、完全に完成したArduino-LEDボードインターフェース。

第2に、GSM-Arduinoインターフェイス。基本的には、メッセージ/ SMSが携帯電話からGSMモジュールに送信され、その後Arduinoを使用してGSMモジュールからそのメッセージを読み取らなければなりません。私はここで問題に直面しています。メッセージはGSMモデムに送信されていますが、私はそれを読み取ることができません。私は別のコードを書こうとしましたが、動作しません。メッセージは表示されていません。

私が試したコードスニペットは次のとおりです。

`#include SoftwareSerial.h 

SoftwareSerial SIM900A(2,3);// RX | TX 

// Connect the SIM900A TX to Arduino pin 2 RX 

// Connect the SIM900A RX to Arduino pin 3 TX. 


void setup() 
{ 

     SIM900A.begin(9600); // Setting the baud rate of GSM Module 

     Serial.begin(9600); // Setting the baud rate of Serial Monitor(Arduino) 

     Serial.println ("SIM900A Ready"); 

     delay(100); 

     Serial.println (" Press s to send and r to recieve "); 

} 

void loop() 
{ 

    if (Serial.available()>0) 

    switch(Serial.read()) 

    { 

     case 's': SendMessage(); 
       break; 

     case 'r': RecieveMessage(); 
       break; 

     } 

    if (SIM900A.available()>0) 

     Serial.write(SIM900A.read()); 

} 


void SendMessage() 
{ 

    SIM900A.println("AT+CMGF=1"); //Sets the GSM Module in Text Mode 

    delay(1000); // Delay of 1000 milli seconds or 1 second 

    Serial.println ("Set SMS Number"); 

    SIM900A.println("AT+CMGS=\"+91xxxxxxxxxx\"\r"); //Replace with your mobileno. 

    delay(1000); 

    Serial.println ("Set SMS Content"); 

    SIM900A.println("Hello, I am SIM900A GSM Module");// The SMS text you want to send 

    delay(100); 

    Serial.println ("Finish"); 

    SIM900A.println((char)26);// ASCII code of CTRL+Z 

    delay(1000); 

    Serial.println (" ->SMS Sent"); 
} 


void RecieveMessage() 
{ 

    Serial.println ("SIM900A Receiving SMS"); 

    delay (1000); 

    SIM900A.println("AT+CNMI=2,2,0,0,0"); // AT Command to receive a live SMS 

    delay(1000); 

    Serial.write (" ->Unread SMS Recieved"); 

}` 
+0

ハードウェアが動作しているかどうかはわかりません。ハードウェアのデバッグを手助けすることはできません。あなたはラインのスコープで何を見ますか? – ThingyWotsit

+0

ハードウェアは正常に動作します! GSMモジュールにSIMカードを挿入し、携帯電話から送信されたメッセージを受信して​​いるかどうかをテストします。受信メッセージを読み取る方法は、私が問題に直面しているところです。私はGSMからのメッセージを読むことができません。 –

+0

'Arduinoのインターフェースでデータを受信できない場合は、どのようにテストするのですか? – ThingyWotsit

答えて

0

あなたはコマンドを使用して、SIMカードに優先SMSストレージを設定する必要があるかもしれません。)また、

SIM900A.print("AT+CPMS=\"SM\"\r"); 

設定(このコマンドを移動:

SIM900A.print("AT+CMGF=1\r"); 

最後に、ノートSIM900A.println()の代わりにSIM900A.print()を使用し、各コマンドの後に '\ r'または0x0dをどのように送信したかを示します。 println()は "\ n \ r"を送信します。これにより、一部のモデムで問題が発生します。

+0

また、モデムのボーレートが9600かどうかを確認することもできます。ほとんどのモデムでこれを設定できるので、別の値に変更されている可能性があります –

関連する問題