Официальный сайт компании Arduino по адресу arduino.cc
GSM модуль SiM 800L
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Пнд, 17/06/2019 - 17:08
Привет, немогу разобратся с модулем 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); }
Схема подключения?
Прошу не бить ногами код сырой)) Частично из инета
Схема правильная, через делител как положенно
Он почемуто отказывается слать смс через внешнее питание. Но если воткнуть в комп, потом обратно во внешнее, то все работает до того времменни пока сам модуль не перезагрузишь
Схема правильная, через делител как положенно
Ну, раз правильная, значит всё должно работать правильно.
Схема правильная, через делител как положенно
вам хотел помочь человек, который компетентен и самый авторитетный на этом форуме.
а вы просто берёте и отбрасываете его помощь.
это , по крайней мере, глупо.....
Если кому интересно, я решил проблему. Я поставил delay 5000 в void setup. Чтоб При запуске ардуинка подождала 5 секунд, а Sim 800l Усвоил АТ команды при старте. И они тогда в ногу идут как солдаты)))) Удачи всем. Спасибо!!!
А нафига так много-то? Если от юсб работает, значит достаточно на время работы загрузчика.
Методом "тыка" Подобрал время)) С пяти секундами почемуто стабильно работает.
Две должно за глаза хватать.