Sim900 не отправляет СМС

Gosu

✩✩✩✩✩✩✩
27 Июн 2024
6
0
Здравствуйте, у меня проблема, шилд Sim900 не управляется с UNO, аппаратно не включается. Но если его включить с кнопки, то всё равно выводит: Init error
Пытался перекинуть перемычки и в коде менял SoftwareSerial gsm(7, 8); на SoftwareSerial gsm(1, 2); Всё равно не отсылает смс. Хотя если позвонить на симку то гудок есть и лампочки в этот момент на шилде моргают.

IMG20240721171657.jpg

C++:
#include <Arduino.h>
#include <GPRS_Shield_Arduino.h>
#include <SoftwareSerial.h>

#define GSMbaud 9600
#define PHONE_NUMBER "+79********"

SoftwareSerial gsm(7, 8);
GPRS gprs(gsm);

void setup() {
  gprs.powerOn();
  Serial.begin(9600);

  while (!gprs.init()) {
    // если связи нет, ждём 1 секунду
    // и выводим сообщение об ошибке
    // процесс повторяется в цикле
    // пока не появится ответ от GPRS устройства
    delay(1000);
    Serial.print("Init error\r\n");
  }
  Serial.println("GPRS init success");
  // отправляем сообщение по указанному номеру с заданным текстом
  gprs.sendSMS(PHONE_NUMBER, "Hello!");
}

void loop() {

}
 

Gosu

✩✩✩✩✩✩✩
27 Июн 2024
6
0
Подключил пины к UART и переписал код. Команды стали проходить, и даже смог отправить смс вводя команды в Serial, но из когда программы по прежнему не отправляется.
C++:
#include <Arduino.h>
#include <SoftwareSerial.h>

// put function declarations here:
void SendSMS();

SoftwareSerial gsm(7, 8);

void setup() {
  gsm.begin(9600);
  Serial.begin(9600);
 
  //pinMode(9, OUTPUT);

  //digitalWrite(9, HIGH);
  //delay(1000);
  //digitalWrite(9, LOW);
  delay(1000);

  SendSMS();
}
void SendSMS() {

  Serial.println("Trying Send");

  gsm.print("AT+CMGF=1\r");
  delay(100);
  gsm.println("AT+CMGS=\"+79000000000\"");
  delay(100);
  gsm.println("Qg");
  delay(100);
  gsm.println((char)26);
  delay(100);
  gsm.println();

  Serial.println("2");
}
void loop() {
  if (Serial.available()) {
      gsm.write(Serial.read());
  }
  if (gsm.available()) {
      Serial.write(gsm.read());
  }
}
Вроде печатает ОК но смс не приходит. Подскажите как корректно отправить смс?
p.png
 

Gosu

✩✩✩✩✩✩✩
27 Июн 2024
6
0
@Boroda22,
Спасибо, помогло, там прикол в задержках между командами как оказалось. Только почему-то у меня отправляется 2 одинаковые смс вместо 1. Если же вторую задержку уменьшить до 100, тогда отправляется одна смс но в неё замешиваются сервисные команды. Это похоже на баг какой-то.
C++:
  gsm.println("AT+CMGF=1\r");
  delay(300);
  gsm.println("AT+CMGS=\"+79043019900\"\r");
  delay(100); // вот эта задержка
  gsm.println("Alarm! Door Open.");
  delay(100);
  gsm.write(26);
Screenshot_2024-07-22-21-20-57-96_cf3cf72bd8e53b0db7ddb0a6f2208af9.png