Модуль SIM900A больше не отправляет SMS пользователю после предыдущей работы

Я пытаюсь сделать гидропонный проект, который собирает данные с датчиков и отправляет их пользователю через SMS каждые 15 минут. Однако, когда я пытаюсь запустить тесты сейчас, насосная часть кода работает отлично, но более ранняя часть кода, которая имеет дело с отправкой SMS, не работает. Я протестировал sim-модуль сам по себе, и он работает, так что это не аппаратная проблема. В чем, по - видимому, здесь проблема?

#include <SoftwareSerial.h>
#include <DHT.h>
#include <OneWire.h> 
#include <DallasTemperature.h>
#include <EEPROM.h>
#include <GravityTDS.h>
#include <Servo.h>

#define ONE_WIRE_BUS 5
#define DHTPIN 7     
#define DHTTYPE DHT11
#define TdsSensorPin A1
#define PUMPPIN 11

SoftwareSerial mySerial(9, 10);
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
DHT dht(DHTPIN, DHTTYPE);
GravityTDS gravityTds;
Servo myservo;

char msg;
char call;

void setup()
{
  mySerial.begin(9600);   // Setting the baud rate of GSM Module  
  Serial.begin(9600);    // Setting the baud rate of Serial Monitor (Arduino)
  dht.begin();
  
  sensors.begin();
  
  gravityTds.setPin(A1);
  gravityTds.setAref(5.0);
  gravityTds.setAdcRange(1024);
  gravityTds.begin();
  
  myservo.attach(PUMPPIN);
}

void loop()
{  
  const unsigned long SECOND = 1000;
  const unsigned long MINUTE = 60*SECOND;
  const unsigned long HOUR = 60*MINUTE;
   
  delay(30L * SECOND);
  int h = dht.readHumidity();
  float t = dht.readTemperature();
  float tdsValue = 0;
  float temperature = t;
  gravityTds.setTemperature(temperature);  
  gravityTds.update(); 
  tdsValue = gravityTds.getTdsValue();  
    
  sensors.requestTemperatures(); 

  
  
  mySerial.println("AT+CMGF=1");    //Sets the GSM Module in Text Mode
  delay(1000);  // Delay of 1000 milli seconds or 1 second
  mySerial.println("AT+CMGS=\"+************\"\r"); // Replace x with mobile number
  mySerial.print(h);// The SMS text you want to send
  mySerial.print("% humidity, ");
  mySerial.print(t);
  mySerial.print(" degrees Celsius air temperature, ");
  mySerial.print(sensors.getTempCByIndex(0));
  mySerial.print(" degrees Celsius water temperature, ");
  mySerial.print(tdsValue,0);
  mySerial.print(" ppm");
  
  delay(100);
  mySerial.println((char)26);// ASCII code of CTRL+Z
  delay(1000);

  myservo.write(0);   //Clockwise maximum speed rotation
    delay(30L * SECOND);
  myservo.write(90);  
  delay(15L * MINUTE);
}

, 👍1

Обсуждение

Возможно, вы захотите [отредактировать] свой номер телефона, @Mat

может быть, вы забыли оплатить счет за мобильный телефон ... протестируйте функцию SMS без какого-либо другого кода, @jsotola

Я проверил сам модуль, и он все еще отправляет, поэтому модуль SMS сам по себе может отправлять текстовые сообщения., @GreatWhale64

Когда вы делаете"AT+CMGS="+xxxxxxxxx\r"", вы должны дождаться подтверждения возврата модулем, он отобразит приглашение">", только тогда вы сможете отправить сообщение. Если вы этого не сделаете, добавьте задержку(1000) после строки "AT+CMGS". По сути, вы отправляете данные преждевременно., @hcheung