1

プロジェクトに奇妙な問題があります。SMS メッセージを送受信できますが、何らかの理由で同じプロジェクトからではありません。

この小さなものはメッセージを送信し、正常に動作しています:

#include <SoftwareSerial.h>
SoftwareSerial SIM900(7, 8);
String no = "+38762701893";
String message = "this is some message";
void setup() {
  SIM900.begin(19200);
  delay(20000);
}
void sendSMS(String number, String mess) {
  SIM900.print("AT+CMGF=1\r");
  delay(100);
  SIM900.println("AT + CMGS = \"" + number + "\"");
  delay(100);
  SIM900.println(mess);
  delay(100);
  SIM900.println((char)26);
  delay(100);
  SIM900.println();
  delay(5000);
}
void loop() {
  sendSMS(no, message);
  do {} while (1);
}

ただし、SMS メッセージを受信して​​応答する少し大きなプログラムで同じ機能を動作させたい場合は、動作しません。

これは、動作しない例の完全なコードです。

#include <SoftwareSerial.h>
SoftwareSerial SIM900(7, 8);
String no = "+122333444";           //phone number
String message = "";
char inchar;
int b = 13;
bool state = 0;

void setup()
{
  Serial.begin(19200);
  SIM900.begin(19200);
  delay(5000);
  SIM900.print("AT+CMGF=1\r");
  delay(100);
  SIM900.print("AT+CNMI=2,2,0,0,0\r");
  delay(100);
  Serial.println("Ready...");
  SIM900.begin(19200);
  delay(500);
  pinMode(b, OUTPUT);
}

void sendSMS(String number, String mess) {
  SIM900.print("AT+CMGF=1\r");
  delay(200);
  SIM900.println("AT+CMGS=\"" + number + "\"");
  delay(100);
  SIM900.println(mess);
  delay(100);
  SIM900.println((char)26);
  delay(100);
  SIM900.println();
  delay(8000);
}

void loop()
{
  if (state) {
    sendSMS(no, message);
    state = 0;
  }
  if (SIM900.available() > 0)  {
    inchar = SIM900.read();
    Serial.print(inchar);
    if (inchar == '#') {
      delay(10);
      inchar = SIM900.read();
      Serial.print(inchar);
      if (inchar == 'a') {
        delay(10);
        inchar = SIM900.read();
        Serial.print(inchar);
        if (inchar == '0') {
          digitalWrite(b, LOW);
          message = "something is off";
        } else  if (inchar == '1') {
          digitalWrite(b, HIGH);
          message = "something is on";
        }
      }
      state = 1;
    }
  }
}

このプログラムは、SMS の内容に応じて SMS を受信し、LED をオンまたはオフにしますが、何らかの理由で応答しません。どんな助けでも大歓迎です。

4

2 に答える 2