Почему не отсылается СМС ???

nif___naf
Offline
Зарегистрирован: 08.05.2016
int sensorPin = 0; // Пин, на котором у нас висит сенсор газа аналоговый вход 0
int redled = 2;    // Пин с красным светодиодом цифровой выход 2
int yelowled = 3;  // Пин с желтым светодиодом  цифровой выход 3
int greenled = 4;  // Пин с зеленым светодиодом цифровой выход 4
int gas = 0;       // Переменная для хранения значения газового сенсора
int rele = 5;      // Пин для реле клапана
unsigned long SMSlastsenttime = 0;

void setup() {
  Serial.begin(9600); // Инициализируем серийный порт будем слать в него данные измерения
  Serial.println("AT+CMGF=1\r"); // устанавливает текстовый режим смс-сообщения
  Serial.print("AT+IFC=1, 1\r"); // устанавливает программный контроль потоком передачи данных
  delay(300);
  Serial.println("AT+CNMI=1,2,2,1,0\r"); // Настройка вывода смс в консоль. У вас может отличатся!
  delay(500);

  pinMode(greenled, OUTPUT); // Объявляем 2,3,4 и 5 пины, как выходы
  pinMode(yelowled, OUTPUT);
  pinMode(redled, OUTPUT);
  pinMode(rele, OUTPUT);

  gas = analogRead(sensorPin);

  digitalWrite(greenled, HIGH);
  digitalWrite(yelowled, LOW);
  digitalWrite(redled, LOW);
  delay (800);

  digitalWrite(greenled, LOW);
  digitalWrite(yelowled, HIGH);
  digitalWrite(redled, LOW);
  delay (800);

  digitalWrite(greenled, LOW);
  digitalWrite(yelowled, LOW);
  digitalWrite(redled, HIGH);
  delay (800);


  tone(10, 900, 200);
}
void loop() {
  gas = analogRead(sensorPin); // Получаем значения от датчика газа

  if (gas <= 350)
  {
    digitalWrite(greenled, HIGH);
    digitalWrite(yelowled, LOW);
    digitalWrite(redled, LOW);

  }

  else if (gas > 350, gas <= 400)
  {
    tone(10, 900, 200);
    digitalWrite(greenled, LOW);
    digitalWrite(yelowled, HIGH);
    digitalWrite(redled, LOW);

  }

  else if  ((gas >= 400) && ( millis() - SMSlastsenttime > 10000 || SMSlastsenttime == 0 ) )
  {

    tone(10, 740, 200);
    digitalWrite(rele, HIGH);
    digitalWrite(greenled, LOW);
    digitalWrite(yelowled, LOW);
    digitalWrite(redled, HIGH);

    Serial.println ("AT + CMGS = \"+375336873525\""); // укажите свой номер!
    delay(100);
    Serial.println("ALLARM gas");
    delay(100);
    Serial.println((char)26);
    delay(100);
    
    SMSlastsenttime = millis();

  }

  Serial.print("Pokazaniya datchika MQ-9 = ");
  Serial.println(gas);



  delay(1000);
}

 

nif___naf
Offline
Зарегистрирован: 08.05.2016

Помогите почему не отсылаеться СМС сообщение ???

nif___naf пишет:

int sensorPin = 0; // Пин, на котором у нас висит сенсор газа аналоговый вход 0
int redled = 2;    // Пин с красным светодиодом цифровой выход 2
int yelowled = 3;  // Пин с желтым светодиодом  цифровой выход 3
int greenled = 4;  // Пин с зеленым светодиодом цифровой выход 4
int gas = 0;       // Переменная для хранения значения газового сенсора
int rele = 5;      // Пин для реле клапана
unsigned long SMSlastsenttime = 0;

void setup() {
  Serial.begin(9600); // Инициализируем серийный порт будем слать в него данные измерения
  Serial.println("AT+CMGF=1\r"); // устанавливает текстовый режим смс-сообщения
  Serial.print("AT+IFC=1, 1\r"); // устанавливает программный контроль потоком передачи данных
  delay(300);
  Serial.println("AT+CNMI=1,2,2,1,0\r"); // Настройка вывода смс в консоль. У вас может отличатся!
  delay(500);

  pinMode(greenled, OUTPUT); // Объявляем 2,3,4 и 5 пины, как выходы
  pinMode(yelowled, OUTPUT);
  pinMode(redled, OUTPUT);
  pinMode(rele, OUTPUT);

  gas = analogRead(sensorPin);

  digitalWrite(greenled, HIGH);
  digitalWrite(yelowled, LOW);
  digitalWrite(redled, LOW);
  delay (800);

  digitalWrite(greenled, LOW);
  digitalWrite(yelowled, HIGH);
  digitalWrite(redled, LOW);
  delay (800);

  digitalWrite(greenled, LOW);
  digitalWrite(yelowled, LOW);
  digitalWrite(redled, HIGH);
  delay (800);


  tone(10, 900, 200);
}
void loop() {
  gas = analogRead(sensorPin); // Получаем значения от датчика газа

  if (gas <= 350)
  {
    digitalWrite(greenled, HIGH);
    digitalWrite(yelowled, LOW);
    digitalWrite(redled, LOW);

  }

  else if (gas > 350, gas <= 400)
  {
    tone(10, 900, 200);
    digitalWrite(greenled, LOW);
    digitalWrite(yelowled, HIGH);
    digitalWrite(redled, LOW);

  }

  else if  ((gas >= 400) && ( millis() - SMSlastsenttime > 10000 || SMSlastsenttime == 0 ) )
  {

    tone(10, 740, 200);
    digitalWrite(rele, HIGH);
    digitalWrite(greenled, LOW);
    digitalWrite(yelowled, LOW);
    digitalWrite(redled, HIGH);

    Serial.println ("AT + CMGS = \"+375336873525\""); // укажите свой номер!
    delay(100);
    Serial.println("ALLARM gas");
    delay(100);
    Serial.println((char)26);
    delay(100);
    
    SMSlastsenttime = millis();

  }

  Serial.print("Pokazaniya datchika MQ-9 = ");
  Serial.println(gas);



  delay(1000);
}

 

Araris
Offline
Зарегистрирован: 09.11.2012

Есть ли у Вас возможность "перевесить" GSM-модуль с пинов 0,1 на другие пины и работать с ним через SoftwareSerial ? Так будет гораздо удобнее решать проблемы, поскольку сейчас Вы не можете даже видеть, принимает ли GSM-модуль команды, что он отвечает и т.п.

Если возможность "перевесить" есть, почитайте тему http://arduino.ru/forum/programmirovanie/rabota-s-sim900-0, там приводится вполне рабочий код отправки SMS. 

UPD: А какая, собственно, модель Ардуино у Вас ? Не Mega случайно ?

nif___naf
Offline
Зарегистрирован: 08.05.2016

Arduino uno

Araris
Offline
Зарегистрирован: 09.11.2012

Ну тогда, повторюсь, стоит подумать о SoftwareSerial, а Serial освободить для получения отладочной информации с GSM-модуля.