Модуль 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);
}
@GreatWhale64, 👍1
Обсуждение0
Смотрите также:
- Как использовать SPI на Arduino?
- Как решить проблему «avrdude: stk500_recv(): programmer is not responding»?
- Как создать несколько запущенных потоков?
- Как подключиться к Arduino с помощью WiFi?
- avrdude ser_open() can't set com-state
- Как узнать частоту дискретизации?
- Что такое Serial.begin(9600)?
- Я закирпичил свой Arduino Uno? Проблемы с загрузкой скетчей на плату
Возможно, вы захотите [отредактировать] свой номер телефона, @Mat
может быть, вы забыли оплатить счет за мобильный телефон ... протестируйте функцию SMS без какого-либо другого кода, @jsotola
Я проверил сам модуль, и он все еще отправляет, поэтому модуль SMS сам по себе может отправлять текстовые сообщения., @GreatWhale64
Когда вы делаете"AT+CMGS="+xxxxxxxxx\r"", вы должны дождаться подтверждения возврата модулем, он отобразит приглашение">", только тогда вы сможете отправить сообщение. Если вы этого не сделаете, добавьте задержку(1000) после строки "AT+CMGS". По сути, вы отправляете данные преждевременно., @hcheung