GSM модуль SiM 800L

girenko.dmitrii...
Offline
Зарегистрирован: 09.02.2016

Привет, немогу разобратся с модулем sim 800l Собрал на нем ссигнализацию, При подключении через usb с компом работает нормально, шлет смс стабильно. Как толко подключаю от пнешнего питания, sms Больше не приходят(((

Весь день ломаю голову(((

Помогите) спасите колегу))

вот сам скетч:

#include <SoftwareSerial.h> //Библиотека для работы Serial
SoftwareSerial mySerial(2, 3); // RX, TX
#define smokePin A0    // определяем аналоговый выход к которому подключен датчик Газа
int sensorThres = 200; // пороговое значение АЦП, при котором считаем что газ есть 
#define sensorPin A1  // определяем аналоговый выход к которому подключен датчик Протечки
int sensorValue = 600; //пороговое значение АЦП, при котором считаем что теч есть 
#define led 12 //Светодиод индикации
void setup() {
  Serial.begin(115200); //Запускаем сериал на скорости работы модуля GSM!!!
  pinMode(12, OUTPUT);// 12 пин как выход
  Serial.println("GSM Alarm v.1.0"); // Запись в сериал для отладки
  mySerial.begin(115200); //Установим скорость для SIM800L
  mySerial.println("AT"); // Проверочная команда датчику GSM Для отладки
  pinMode(4, INPUT); // Пин датчика движения как вход
  pinMode(5, INPUT); // PIR 2 Запасной пин
  pinMode(6, INPUT); // G 1//
  pinMode(9, INPUT); //// Пин датчика протечки как вход
  pinMode(10, INPUT); // Po 1
  pinMode(11, INPUT); // Po 2
 // настройка приема сообщений
 delay(500);
 mySerial.println("AT+CMGF=1");//Работа с GSM
 delay(500); 
mySerial.println("AT+IFC=1,0");//Работа с GSM
delay(500);
mySerial.println("AT+IPR=115200");
delay(500);
 mySerial.println('AT+CPBS="SM"');//Работа с GSM
 delay(500); 
 mySerial.println("AT+CNMI=1,2,2,1,0");//Работа с GSM
 delay(4000);//Задержка 40 секунд чтоб успеть уйти c охраняемого обьекта.

}

void loop() {
String num ="79081341358";  // Ваш номер телефона 79525429645
mySerial.println("AT");// Проверочная команда датчику GSM Для отладки
delay(100);


//если сработал датчик то...
if (digitalRead(4)==HIGH) {
Serial.println("Pin 4 High");
delay(100);
//mySerial.println("ATD"+num+";");
sms(String("Dvizenie!"),String(num));  //Шлем SMS на указанный выше номер
 digitalWrite(led, HIGH);
delay(1000); //Ждем секунду
digitalWrite(led, LOW);

};

if (digitalRead(5)==HIGH) {
Serial.println("Pin 5 High");
delay(100);
//mySerial.println("ATD"+num+";");
sms(String("Motion_detection-2!"),String(num));  //Шлем SMS на указанный выше номер
digitalWrite(led, HIGH); //Зажигаем сигнальный светодиод
delay(1000); //Ждем секунду
digitalWrite(led, LOW); //Гасим светодиод
};

if (digitalRead(6)==LOW) {
Serial.println("Pin 6 High");
delay(100);
//mySerial.println("ATD"+num+";");
sms(String("Alarm-Dver-1!"),String(num));  //Шлем SMS на указанный выше номер
digitalWrite(led, HIGH); //Зажигаем сигнальный светодиод
delay(1000); //Ждем секунду
digitalWrite(led, LOW); //Гасим светодиод
};

int val = analogRead(sensorPin);    // считываем значения АЦП с аналогового входа
if (val < sensorPin) {  // если значение больше допустимого... 
Serial.println("Alarm-Voda!");         // выводим в порт надпись, что газ есть 
delay(100);
//mySerial.println("ATD"+num+";");
sms(String("Alarm-Voda!"),String(num));  
digitalWrite(led, HIGH); //Зажигаем сигнальный светодиод
delay(1000); //Ждем секунду
digitalWrite(led, LOW); //Гасим светодиод
}
else {                             // иначе... 
  
  } 

int analogSensor = analogRead(smokePin);    // считываем значения АЦП с аналогового входа 
if (analogSensor > sensorThres) {  // если значение больше допустимого... 
Serial.println(" Gaz!");         // выводим в порт надпись, что газ есть 
delay(100);
////mySerial.println("ATD"+num+";");
sms(String("Alarm-FIRE-1!"),String(num));  
digitalWrite(led, HIGH); //Зажигаем сигнальный светодиод
delay(1000); //Ждем секунду
digitalWrite(led, LOW); //Гасим светодиод
}
else {                             // иначе... 
  
  } 



}
// Условия для отчето об отправке SMS при тревоге (для отладки)
void sms(String text, String phone) {
  Serial.println("SMS send started");
  mySerial.println("AT+CMGS=\"" + phone + "\"");
  delay(1500);
  mySerial.print(text);
  delay(500);
  mySerial.print((char)26);
  delay(500);
  Serial.println("SMS send finish");
  delay(3000);
}

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Схема подключения?

girenko.dmitrii...
Offline
Зарегистрирован: 09.02.2016

Прошу не бить ногами код сырой)) Частично из инета

girenko.dmitrii...
Offline
Зарегистрирован: 09.02.2016

Схема правильная, через делител как положенно

girenko.dmitrii...
Offline
Зарегистрирован: 09.02.2016

Он почемуто отказывается слать смс через внешнее питание. Но если воткнуть в комп, потом обратно во внешнее, то все работает до того времменни пока сам модуль не перезагрузишь

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

girenko.dmitrii@mail.ru пишет:

Схема правильная, через делител как положенно

Ну, раз правильная, значит всё должно работать правильно.

vvadim
Онлайн
Зарегистрирован: 23.05.2012

girenko.dmitrii@mail.ru пишет:

Схема правильная, через делител как положенно

вам хотел помочь человек, который компетентен и самый авторитетный на этом форуме.
а вы просто берёте и отбрасываете его помощь.
это , по крайней мере, глупо.....

girenko.dmitrii...
Offline
Зарегистрирован: 09.02.2016

Если кому интересно, я решил проблему. Я поставил delay 5000 в void setup. Чтоб При запуске ардуинка подождала 5 секунд, а Sim 800l Усвоил АТ команды при старте. И они тогда в ногу идут как солдаты)))) Удачи всем. Спасибо!!!

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

А нафига так много-то? Если от юсб работает, значит достаточно на время работы загрузчика.

girenko.dmitrii...
Offline
Зарегистрирован: 09.02.2016

Методом "тыка" Подобрал время)) С пяти секундами почемуто стабильно работает.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Две должно за глаза хватать.