Поправьте, если путаю, модуль Neoway m590 тоже ведь умеет выходить в интернет, но (в отличие от SIM800L) не поддерживает AT комнанды на определение координат? Или я опять заблуждаюсь?
ну и к чему те все танцы с бубном, если в сим800 всего три ат команды нужно использовать и получаете сразу координаты в gps значениях широту и долготу и потом в карту можно вставить???
Вы чего лесапед изобретаете.. Цепляешь sim800 к ардуино и туда же цепляешь gps модуль. Вот вам и трекер с отправкой куда угодно, хоть по sms хоть в Интернет. Кстати, щас делаю сервер для приема данных с разных датчиков, замков и сигнализаций. Заказал vps. Вот думаю, нарно через MQTT буду слать и принимать.
ну и к чему те все танцы с бубном, если в сим800 всего три ат команды нужно использовать и получаете сразу координаты в gps значениях широту и долготу и потом в карту можно вставить???
Это просто ради интереса)
dioxin пишет:
Вы чего лесапед изобретаете.. Цепляешь sim800 к ардуино и туда же цепляешь gps модуль. Вот вам и трекер с отправкой куда угодно, хоть по sms хоть в Интернет. Кстати, щас делаю сервер для приема данных с разных датчиков, замков и сигнализаций. Заказал vps. Вот думаю, нарно через MQTT буду слать и принимать.
Так это получается покупать лишний модуль. Лишние затраты, лишнее занимаемое пространство. Если sim800L умеет выходить в интернет и получать координаты, то зачем лишний модуль?
Вы чего лесапед изобретаете.. Цепляешь sim800 к ардуино и туда же цепляешь gps модуль. Вот вам и трекер с отправкой куда угодно, хоть по sms хоть в Интернет. Кстати, щас делаю сервер для приема данных с разных датчиков, замков и сигнализаций. Заказал vps. Вот думаю, нарно через MQTT буду слать и принимать.
сим800 уже сам является гпс модулем одноврнменно.. только точность меньше.
но ведь не всегда обязательно до метра знать где, часто нужно например насленный пункт знать и все.
AGPS плюс\минус километр, а то и более в городе, координаты по сигналам с вышек хз даже кому может понадобиться такое ориентирование на местности, полноценный gps модуль стоит ~5ОО-6ОО рэ вроде, зато точность в метрах, опять же под определенные задачи.
Да, сегодня попробовал: в сетапе настройки GPRS, а далее в основной проге три команды, и сообщение с координатами в мониторе) Правда в моём случае погрешность оказалась больше километра....
Попутно созрел вопрос - кто нибудь пользуется ресетом на плате модуля в готовых проектах? Является ли он эквивалентом сброса питания? В мануале я нашел только то, что использовать этот ресет нужно, когда программный не помогает, причем программный ресет предполагает отключение питания, насколько я понял.
Напишу про первый опыт с sim800l, может кому то будет полезным. Подключал sim800l через DC-DC преобразователь на 3а, выставлял напряжение 4в. В качестве блока питания использовал китайский с USB выходами, заявленный ток 2,1а. Использовал нанку как мост UART-USB и мучил модуль через терминальную программу с компа АТ командами.
С первого раза модуль отказался искать сеть. Причем с разными SIM картами пробовал. При наличии сигнала сети в AT+CSQ, на команду AT+CREG? отвечал 0,0 - типа не зарегистрирован и сеть не ищет.
Предположил, что не видит SIM карту. Прозвонка ножек держателя SIM выявила короткое замыкание между первой и второй ногой, причем похоже, где то под самим держателем припой попал. Пришлось отпаивать держатель и припаивать заново. После этого проблема ушла - модуль стал стабильно регистрироваться в сети. Причем у меня он регистрируется как при питании от блока питания, так и от USB. Хотя при USB питании процесс регистрации в сети идет дольше.
Резюме - если не регистрируется в сети имеет смысл проверить пайку держателя. Ножки не должны иметь контакт друг с другом. Предпоследняя ножка держателя не припаяна - это нормально.
Есть вопрос по допустимым напряжениям на TX RX модуля. В доках прочитал, что там вообще меньше 3в максимальное напряжение высокого уровня и типо для подключения к 5в модулю нужно согласователь уровней городить. Китайцы в Али вроде пишут, что напрямую можно подключать... Нужно уровни согласовывать или нет? Кто как делает?
Возник вопрос по контролю состояния sim800l и перезагрузки модуля.
Использую AT команды, связка Мега2560 и Sim800l. Хотелось бы контролировать состояние sim800l и если он завис(нет ответа и т.д.) можно было перезагрузить Sim800l.
Возник вопрос по контролю состояния sim800l и перезагрузки модуля.
Использую AT команды, связка Мега2560 и Sim800l. Хотелось бы контролировать состояние sim800l и если он завис(нет ответа и т.д.) можно было перезагрузить Sim800l.
Возможно такое организовать?
Спасибо
Рабочий урезаный код моей проги, работает у меня уже более года)
Код для проверки работоспособности системы без каких либо часов реального времени, ну и чуть-чуть кода для отправки смс на номер( номер указан в начале кода).
Я люблю работать с памятью ардуины, т.к. хочу управлять сам своим ус-вом
В данном примере нет работы с памятью.
#include <SoftwareSerial.h>
SoftwareSerial gsm(2, 3); // 2-txd, 3-rxo
#define led 13 // светодиод
String NBoss = "79817425566";
int i = 0;
int Automatic = 0;
int StartGSM = 0;
// Переменные для чтения смс
String currStr = "";
String dataSmsN = "";
int flag1 = 0;
int flag2 = 0;
String currStrN = "";
char currSymb = 0;
String dataSms = "";
String dataBalance = "";
//String dataBalanceNumber = "";
String dataBalanceTemp = "";
String val = "";
int ch = 0;
char data = 0;
// Переменные для обработки смс +CSQ
int intNumberLevelFirst = 0;
int intNumberLevelSecond = 0;
int IntSignalLevel = 0;
int FlagSignal = 0;
int countLed = 0;
long counter = 0;
long timerForSignalGSM = 1000000;
int timerSearchGSM = 20;// таймер для регистрации сети GSm 20*2000=40 сек
int tempBalans = 0; // переменная, хранящая метку о запросе баланса
int tempZaprosBalansa = 0; // переменная, хранящая метку о запросе каждый день баланса
int SendSmsDeviceOn = 0;
void setup() {
// Мигание светодиода на плате, говорит о работоспособности системы
pinMode(led, OUTPUT); digitalWrite(led, LOW);
// Читаем из памяти данные о состоянии системы
Automatic = 1;//EEPROM.read(0); // Убрал для примера
// делаем задержку на поиск сотовой сети
for (i=0; i<=timerSearchGSM; i++){
if (Automatic == 1){digitalWrite(led, HIGH);delay(250);}
if (Automatic == 1){digitalWrite(led, LOW);delay(250);}
}
}
void loop() {
// Запускаем GSM
if (StartGSM == 0){
gsm.begin(9600);
gsm.write("AT+CMGF=1\r"); // устанавливает текстовый режим смс-сообщения
delay(300);
}
if (StartGSM == 1){
gsm.write("AT+IFC=1, 1\r"); //устанавливает программный контроль потоком передачи данных
delay(300);
}
if (StartGSM == 2){
gsm.write("AT+CPBS=\"SM\"\r");//открывает доступ к данным телефонной книги SIM-карты
delay(300);
}
if (StartGSM == 3){
gsm.write("AT+CNMI=1,2,2,1,0\r");// включает оповещение о новых сообщениях, новые сообщения
delay(500);
}
if (StartGSM == 4){
gsm.write("AT+GSMBUSY=1\r\n"); // запрет всех входящих звонков.
delay(300);
}
if (StartGSM == 5){
gsm.write("AT+CMGDA=DEL ALL\r\n"); // команда удалит все сообщения
delay(500);
}
if (FlagSignal == 0 && StartGSM == 6){
gsm.println("AT+CSQ");// Проверяем уровень сигнала
delay(800);
}
// Работоспособность системы
countLed++;
if (countLed >= 500){
digitalWrite(led, HIGH);
}
if (countLed >= 1000){
digitalWrite(led, LOW);
countLed = 0;
}
// Проверяем включено ли было устройство, если система на охране или снята с охраны и сеть есть
if (Automatic <=1 && SendSmsDeviceOn == 1 && FlagSignal == 1 && StartGSM == 6){
smsSendAlarm("Hi, Device on!");
SendSmsDeviceOn = 0;
}
// Проверка уровня сигнала во время работы системы каждые 20сек(400000)
// Смысл этой процедуры: проверка по таймеру и если уровень сигнала нормальный и вроде бы сиситема работает нормально,
// делаем проверку уровня сигнала для проверки работоспособности системы, если сигнала нет, смотрим код, где все начинается заново
counter++;
if (counter >= timerForSignalGSM && FlagSignal == 1 && StartGSM == 6){
gsm.println("AT+CSQ");
delay(300);
// Обнуляем счетчик
counter = 0;
}
//*********************
if (gsm.available()) { //есть данные от GSM модуля
currStr = ""; //выждем, чтобы строка успела попасть в порт целиком раньше чем будет считана
currStrN = "";
dataBalanceTemp = "";
dataSms = "";
val = "";
flag1 = 0;
flag2 = 0;
while (gsm.available()) { //сохраняем входную строку в переменную val
ch = gsm.read(); //int
val += char(ch); // String
data = ch; // char = int
if ('\r' == data) {
currStr = "";
} else if ('\n' != data) {
currStr += String(data);
dataSms = currStr;
}
//+CMT: "+79819998877","","16/04/18,20:25:08+12"
if (data == '+' && flag1 == 0){flag1 = 1;}
if (data == 'C' && flag1 == 1){flag1 = 2;}
if (data == 'M' && flag1 == 2){flag1 = 3;}
if (data == 'T' && flag1 == 3){flag1 = 4;}
if (data == '+' && flag1 == 4){currStrN = "";flag1 = 5;}
if (data != '"' && flag1 == 5){currStrN += String(data); dataSmsN = currStrN;}
if (data == '"' && flag1 == 5){flag1 = 6;}
//+CUSD: 0, "Balance:117,27r ", 15
if (data == 'U' && flag1 == 2){flag2 = 3;}
if (data == 'S' && flag2 == 3){flag2 = 4;}
if (data == 'D' && flag2 == 4){flag2 = 5;}
if (data == ':' && flag2 == 5){flag2 = 6;}
if (data == '"' && flag2 == 6){dataBalanceTemp = ""; flag2 = 7; goto c;}
if (data != '"' && flag2 == 7){dataBalanceTemp += String(data); dataBalance = dataBalanceTemp;}
if (data == '"' && flag2 == 7){flag2 = 8;}
// if (data == ':' && flag2 == 7){dataBalanceTemp = ""; flag2 = 8; goto c;}
// if (data != ':' && flag2 == 8){dataBalanceTemp += String(data); dataBalanceNumber = dataBalanceTemp; flag2 = 9;}
}
// Смотрим данные полученные //режим кодировки СМС - обычный (для англ.)
if (val.indexOf("+CMGF") > -1){
if (dataSms.indexOf("OK") > -1) {
StartGSM = 1;
}
}
// Смотрим данные полученные //устанавливает программный контроль потоком передачи данных
if (val.indexOf("+IFC") > -1){
if (dataSms.indexOf("OK") > -1) {
StartGSM = 2;
}
}
// Смотрим данные полученные //открывает доступ к данным телефонной книги SIM-карты
if (val.indexOf("+CPBS") > -1){
if (dataSms.indexOf("OK") > -1) {
StartGSM = 3;
}
}
// Смотрим данные полученные //включает оповещение о новых сообщениях, новые сообщения
if (val.indexOf("+CNMI") > -1){
if (dataSms.indexOf("OK") > -1) {
StartGSM = 4;
}
}
// Смотрим данные полученные //запрет всех входящих звонков.
if (val.indexOf("+GSMBUSY") > -1){
if (dataSms.indexOf("OK") > -1) {
StartGSM = 5;
}
}
// Смотрим данные полученные //команда удалит все сообщения
if (val.indexOf("+CMGDA") > -1){
if (dataSms.indexOf("OK") > -1) {
StartGSM = 6;
}
}
// Смотрим данные полученные от модуля +CSQ: 22,0
if (val.indexOf("+CSQ") > -1) {
for (i=0; i<=20; i++){
if (val[i] == 58) {
intNumberLevelFirst = val[i+2]-48;
if (val[i+3] == 44){ intNumberLevelSecond = 0;}
if (val[i+3] != 44){ intNumberLevelSecond = val[i+3]-48;}
if (val[i+3] == 44){IntSignalLevel = intNumberLevelFirst;}
if (val[i+3] != 44){IntSignalLevel = (intNumberLevelFirst*10) + intNumberLevelSecond;}
}
}
if (IntSignalLevel == 99 || IntSignalLevel == 0){
for (i=0; i<=timerSearchGSM; i++){
if (Automatic == 0){// можно что-то включить, например светодиод}
delay(1000);
if (Automatic == 0){// можно что-то выключить, например светодиод}
delay(1000);
}
FlagSignal = 0; StartGSM = 0;
}
if (IntSignalLevel <=32 && IntSignalLevel !=0){
FlagSignal = 1;
}
}
// Смотрим данные полученные от модуля пришло смс
if (val.indexOf("+CMTI:") > -1) { // +CMTI: "SM",
StartGSM = 0;
}
// Смотрим данные полученные от модуля, Получили смс с балансом, теперь отсылаем
if (val.indexOf("+CUSD:") > -1) {
if (dataBalance != "" && tempBalans == 1) {
smsSendAlarm("Hi, " + dataBalance);
tempBalans = 0;
dataBalance = "";
}
if (dataBalance[8]-48 >= 1 && dataBalance[9]-48 >= 0 && dataBalance[10]-48 >= 0){
// ничего не делаем
}else if (tempZaprosBalansa == 1){
smsSendAlarm("Hi, balance < 100r, vash balance = " + dataBalance);
tempZaprosBalansa = 0;
dataBalance = "";
}
}
//----------------------- определение факта приема СМС и сравнение номера(ов) с заданным(и)
if (val.indexOf("+CMT") > -1) {
// Здесь обрабатываем смс
}//+cmt
}
}// коней if gsm
}
}
//процедура отправки СМС
void smsSendAlarm(String text) {
// ReadNBoss(); //Читаем номер из памяти
gsm.println("AT+CMGS=\"" + NBoss + "\""); //Отправляем на GSM комманду отправка смс-номер
// NBoss = ""; //Очищаем перемунную
delay(300); //Делаем задержку на передачу комманды
gsm.print(text); //Отправляем на GSM комманду отправка смс-текст
text = ""; //Очищаем перемунную
delay(500); //Делаем задержку на передачу комманды
gsm.print((char)26); //Отправляем на GSM комманду отправка смс!
delay(5000); //Делаем задержку отправку смс
}
я бы поспорил, что там стабильно... инициализация разбита на 6 кусков с чередованием всего цикла программы??
странно.. можно (и думаю нужно) - делать инициализацию отдельно вначале одним куском, можно с вычиткой ответов - не проблема. и уже потом переходим к программе...
проверять сеть каждые 40 сек - поверьте, это очень часто, достаточно раз в 2-3 мин.
нет сети или нет ответа - перегружаем модуль..
а у вас как то получается все мухи и котлеты в одной тарелке, да и читается код без дополнительных пояснений (их просто мало) - ужасно для понимания концепции замысла программы.
я бы поспорил, что там стабильно... инициализация разбита на 6 кусков с чередованием всего цикла программы??
странно.. можно (и думаю нужно) - делать инициализацию отдельно вначале одним куском, можно с вычиткой ответов - не проблема. и уже потом переходим к программе...
проверять сеть каждые 40 сек - поверьте, это очень часто, достаточно раз в 2-3 мин.
нет сети или нет ответа - перегружаем модуль..
у меня работает полная прога уже год без глюков, ну а, если сеть теряет, то и нужны эти 6 циклов, а так при нормальной работе, они пропускаются.
Состав системы: - 2 датчика температуры-влажности(один устанавливается на улице, второй в доме)
- 2 датчика движения(устанавливаются в доме)
- 1 датчик на открытие входной двери
- сирена с маяком
- Бесперебойный бокс(при отсутствии питание ваша система всегда работает)
Управление производится посредством телефона.
Возможности:
- Постановка и снятие с охраны.
- Запрос баланса (Авто режим, если на счете м.100 руб, происходит оповещение)
- Запрос состояния системы(Состояние контроля дома, напряжение 220В, напряжение аккумулятора, температура и влажность, сигнал сотовой сети)
- Квитирование тревог
- При пропадании напряжения 220В, придет смс
- При возобновлении напряжения 220В, придет смс
- При разряде аккумулятора, придет смс
- При срабатывании по датчикам, придет смс, включится сирена
- При открывании бокса, придет смс, включится сирена
40 сек - поверьте, это очень часто, достаточно раз в 2-3 мин.
командами AT+CPAS и AT+CSQ?
А какой командой перезагрузить модуль?
если модуль реально зависает, то это проблема модуля
Его можно только по питанию передернуть
ха-ха-ха .. :) нет конечно, необязательно. есть масса причин когда у модуля проблемы возникают...
и и например разряды молнии..и обмен базы оператора с модулем когда у модуля ступор может возникнуть и не только. База за ваш телефон "забудет" и нужно заново "войти" в сеть, а для этого перегрузить модуль.
так что утверждение что это проблемы модуля - неверное совсем..
40 сек - поверьте, это очень часто, достаточно раз в 2-3 мин.
командами AT+CPAS и AT+CSQ?
А какой командой перезагрузить модуль?
если модуль реально зависает, то это проблема модуля
Его можно только по питанию передернуть
ха-ха-ха .. :) нет конечно, необязательно. есть масса причин когда у модуля проблемы возникают...
и и например разряды молнии..и обмен базы оператора с модулем когда у модуля ступор может возникнуть и не только. База за ваш телефон "забудет" и нужно заново "войти" в сеть, а для этого перегрузить модуль.
так что утверждение что это проблемы модуля - неверное совсем..
для всего этого реализованы 6 циклов, пока прога не пройдет все, система не будет работать, как только проходит последний цикл, все отрабатываем код
40 сек - поверьте, это очень часто, достаточно раз в 2-3 мин.
командами AT+CPAS и AT+CSQ?
А какой командой перезагрузить модуль?
если модуль реально зависает, то это проблема модуля
Его можно только по питанию передернуть
ха-ха-ха .. :) нет конечно, необязательно. есть масса причин когда у модуля проблемы возникают...
и и например разряды молнии..и обмен базы оператора с модулем когда у модуля ступор может возникнуть и не только. База за ваш телефон "забудет" и нужно заново "войти" в сеть, а для этого перегрузить модуль.
так что утверждение что это проблемы модуля - неверное совсем..
и нужно заново "войти" в сеть, а для этого перегрузить модуль.
заново "войти" в сеть, а для этого перегрузить модуль.
А как перегрузить модуль, можете рассказать?
Спасибо
по хорошему - ставите силовой ключ на питание gsm модуля. и ардуиной управляете этим ключом снимая питание на несколько секунд.
Это самый надежный вариант применяемый во всех проф. сигнализациях. Так как модуль может и не отвечать на ат команды вообще. поэтому только по питанию.
А вот этого нету, не делают ни в одном заводском шилде.
заново "войти" в сеть, а для этого перегрузить модуль.
А как перегрузить модуль, можете рассказать?
Спасибо
по хорошему - ставите силовой ключ на питание gsm модуля. и ардуиной управляете этим ключом снимая питание на несколько секунд.
Это самый надежный вариант применяемый во всех проф. сигнализациях. Так как модуль может и не отвечать на ат команды вообще. поэтому только по питанию.
А вот этого нету, не делают ни в одном заводском шилде.
Таким образом придется его выключать (если он конечно будет отзываться на команды АТ) командой AT+CPOWD=1, а как его после этого включить?
Именно про это я и пытался спросить в посте 417. Если я правильно понял мануал модуля, то в случае отказа АТ команд ( и соответственно невозможность перегрузить модуль командой AT+CPOWD) рекомендуют пользоваться резетом на модуле, т.е. подавать на резет минусовой импульс, из чего напрашивается вывод, что резет эквивалентен сбросу питания. Вопрос в том, как это проверить, т.к. лично у меня модули не зависали ни разу.
Я бы сделал просто и жестко. На определенный выход ардуины подал сигнал, который на 1 сек. включит миниатурное реле, которое в свою очередь разомнет и через секунду сомкнет контакты в разрыве питания модуля. Мудрите вы чет в этой теме!
Я бы сделал просто и жестко. На определенный выход ардуины подал сигнал, который на 1 сек. включит миниатурное реле, которое в свою очередь разомнет и через секунду сомкнет контакты в разрыве питания модуля. Мудрите вы чет в этой теме!
вы правы, только нужно на 5 а лучше 10сек, чтобы в самом гсм модуле все разрялилось. после 1сек может ничего не поменяться.
Я бы сделал просто и жестко. На определенный выход ардуины подал сигнал, который на 1 сек. включит миниатурное реле, которое в свою очередь разомнет и через секунду сомкнет контакты в разрыве питания модуля. Мудрите вы чет в этой теме!
можете проверять уровень сигнала, если его нет (делаем цикл, т.е. делаем 3 попытки регистрации в состовой сети), если не регистрируется gsm, то вкл. реле на 3 сек(разомкнуть питание на GSM), а дальше проходим регистрацию в сети и все остальные АТ команды для работы
Ну вы меня поняли... А какую задежку ставить легко подобрать.. Практика рулит! Дерзаем!
Проверяем в цикле есть ли сигнал, если нет даем команду сервоприводу на шевеление антенны туда-сюда, проверяем сигнал, если опять нет, шевелим контакты и тем-же сервоприводом пинаем себя, затем выключаем-включаем реле ;)
Алгоритмов куча! И вместо того, чтобы спрашивать на форумах, нужно все сперва самому проверить на практике, потом делиться этим и задавать вопросы.
Да нет проблем. Сделайте аварийную ситуацию искусственно. Понизьте питание, экранируйте антенну, соберите простенький подавитель сети в конце концов. Если уж испытывать такую вещь как сигнализация для дома, то тут нельзя пренебрегать ничем. Или вы думаете воры тупее вас?
Добрый день, никто не сталкивался при запросе NTP времени (пока юзал www.ntp-servers.net) командой AT+CNTP("AT+CNTP=\"88.147.254.227\",12") - иногда(редко) время синхронизируется неверно, например +4 или +5 часов к моему. Причем синхронизируется через минуту и все нормально. С указанного сайта я использовал ip 1 яруса, перешел на ip 2 яруса - пока не замечал глюков.
P.S. - на 2 ярусе тоже была обнаружена ошибка синхронизации - 07.02.2017 20:50:11(время до синхронизации) | 08.02.2017 01:49:47 (время после синхронизации)
скажите, а SIM800L вообще может получать координаты GPS ну хотябы используя вышки?
а даташит хоть раз прочитать. или анонсы по модулю коих в интернете валом?
а даташит хоть раз прочитать. или анонсы по модулю коих в интернете валом?
Так в том и дело, в даташите команды видел, а в видео ни одного упоминания не нашёл. Потому решил спросить на всякий случай прямо.
так не смотрите видео, все в даташиет раписано.
дподнимаете интернет на модуле, потом даете команду и в ответ получаете долготу и широту, все...
Разве без интернета он не определит координаты? Понтяно, что разброс выше будет, но всё же.
без интернета? нет конечно... база координат всех вышек мира не поместится в модуль... да и не только.
Похоже на то. Есть вариант, но не совсем удобный [https://habrahabr.ru/company/promwad/blog/223635/]
Поправьте, если путаю, модуль Neoway m590 тоже ведь умеет выходить в интернет, но (в отличие от SIM800L) не поддерживает AT комнанды на определение координат? Или я опять заблуждаюсь?
не видел я у 590 возможности выдать координаты.
ну и к чему те все танцы с бубном, если в сим800 всего три ат команды нужно использовать и получаете сразу координаты в gps значениях широту и долготу и потом в карту можно вставить???
Вы чего лесапед изобретаете.. Цепляешь sim800 к ардуино и туда же цепляешь gps модуль. Вот вам и трекер с отправкой куда угодно, хоть по sms хоть в Интернет. Кстати, щас делаю сервер для приема данных с разных датчиков, замков и сигнализаций. Заказал vps. Вот думаю, нарно через MQTT буду слать и принимать.
не видел я у 590 возможности выдать координаты.
Спасибо. Подтвердили мои наблюдения.
ну и к чему те все танцы с бубном, если в сим800 всего три ат команды нужно использовать и получаете сразу координаты в gps значениях широту и долготу и потом в карту можно вставить???
Это просто ради интереса)
Вы чего лесапед изобретаете.. Цепляешь sim800 к ардуино и туда же цепляешь gps модуль. Вот вам и трекер с отправкой куда угодно, хоть по sms хоть в Интернет. Кстати, щас делаю сервер для приема данных с разных датчиков, замков и сигнализаций. Заказал vps. Вот думаю, нарно через MQTT буду слать и принимать.
Так это получается покупать лишний модуль. Лишние затраты, лишнее занимаемое пространство. Если sim800L умеет выходить в интернет и получать координаты, то зачем лишний модуль?
Вы чего лесапед изобретаете.. Цепляешь sim800 к ардуино и туда же цепляешь gps модуль. Вот вам и трекер с отправкой куда угодно, хоть по sms хоть в Интернет. Кстати, щас делаю сервер для приема данных с разных датчиков, замков и сигнализаций. Заказал vps. Вот думаю, нарно через MQTT буду слать и принимать.
сим800 уже сам является гпс модулем одноврнменно.. только точность меньше.
но ведь не всегда обязательно до метра знать где, часто нужно например насленный пункт знать и все.
сим800 уже сам является гпс модулем одноврнменно.. только точность меньше.
Вы пробовали определять координаты с помощью sim800L? Неужели такой большой разброс?
да разброс. от 200-300-500-800 метров в городе до 0,5-1-2-3-5-15-20 км за городом. как повезет.
AGPS плюс\минус километр, а то и более в городе, координаты по сигналам с вышек хз даже кому может понадобиться такое ориентирование на местности, полноценный gps модуль стоит ~5ОО-6ОО рэ вроде, зато точность в метрах, опять же под определенные задачи.
гпс не может сразу после вкл пит найти коорд.. не может в гараже.. под капотом и т.д.. не все так просто.
Согласен. Если особая точность не нужна, то можно и по координатам вышек. Качаем базы, кидаем на сервер и пишем управляющие программы.
нафига качаем базы ?????? отправляем ТРИ!! ат команды и в ответ получаем координаты. ничего качать не нужно.
гпс модуль стоит дороже гсм модуля.
Да, сегодня попробовал: в сетапе настройки GPRS, а далее в основной проге три команды, и сообщение с координатами в мониторе) Правда в моём случае погрешность оказалась больше километра....
Попутно созрел вопрос - кто нибудь пользуется ресетом на плате модуля в готовых проектах? Является ли он эквивалентом сброса питания? В мануале я нашел только то, что использовать этот ресет нужно, когда программный не помогает, причем программный ресет предполагает отключение питания, насколько я понял.
Доброго дня всем!
Напишу про первый опыт с sim800l, может кому то будет полезным. Подключал sim800l через DC-DC преобразователь на 3а, выставлял напряжение 4в. В качестве блока питания использовал китайский с USB выходами, заявленный ток 2,1а. Использовал нанку как мост UART-USB и мучил модуль через терминальную программу с компа АТ командами.
С первого раза модуль отказался искать сеть. Причем с разными SIM картами пробовал. При наличии сигнала сети в AT+CSQ, на команду AT+CREG? отвечал 0,0 - типа не зарегистрирован и сеть не ищет.
Предположил, что не видит SIM карту. Прозвонка ножек держателя SIM выявила короткое замыкание между первой и второй ногой, причем похоже, где то под самим держателем припой попал. Пришлось отпаивать держатель и припаивать заново. После этого проблема ушла - модуль стал стабильно регистрироваться в сети. Причем у меня он регистрируется как при питании от блока питания, так и от USB. Хотя при USB питании процесс регистрации в сети идет дольше.
Резюме - если не регистрируется в сети имеет смысл проверить пайку держателя. Ножки не должны иметь контакт друг с другом. Предпоследняя ножка держателя не припаяна - это нормально.
Есть вопрос по допустимым напряжениям на TX RX модуля. В доках прочитал, что там вообще меньше 3в максимальное напряжение высокого уровня и типо для подключения к 5в модулю нужно согласователь уровней городить. Китайцы в Али вроде пишут, что напрямую можно подключать... Нужно уровни согласовывать или нет? Кто как делает?
Добрый день.
Возник вопрос по контролю состояния sim800l и перезагрузки модуля.
Использую AT команды, связка Мега2560 и Sim800l. Хотелось бы контролировать состояние sim800l и если он завис(нет ответа и т.д.) можно было перезагрузить Sim800l.
Возможно такое организовать?
Спасибо
да, возможно.
да, возможно.
1. Я нашел одну команду контроля статуса - AT+CPAS, она подойдет для этого или нужно другие использовать?
2. Каким образом нужно соединить SIM800l с мегой2560 чтобы подать команду на перезагрузку и какую команду подать для этого?
Спасибо.
Short Circuit - А можете подсказать как это реализовать?
Спасибо
Добрый день.
Возник вопрос по контролю состояния sim800l и перезагрузки модуля.
Использую AT команды, связка Мега2560 и Sim800l. Хотелось бы контролировать состояние sim800l и если он завис(нет ответа и т.д.) можно было перезагрузить Sim800l.
Возможно такое организовать?
Спасибо
Рабочий урезаный код моей проги, работает у меня уже более года)
Код для проверки работоспособности системы без каких либо часов реального времени, ну и чуть-чуть кода для отправки смс на номер( номер указан в начале кода).
Я люблю работать с памятью ардуины, т.к. хочу управлять сам своим ус-вом
В данном примере нет работы с памятью.
как то замороченно с этими -
if
(StartGSM == ....
как то замороченно с этими -
if
(StartGSM == ....
зато работает стабильно
я бы поспорил, что там стабильно... инициализация разбита на 6 кусков с чередованием всего цикла программы??
странно.. можно (и думаю нужно) - делать инициализацию отдельно вначале одним куском, можно с вычиткой ответов - не проблема. и уже потом переходим к программе...
проверять сеть каждые 40 сек - поверьте, это очень часто, достаточно раз в 2-3 мин.
нет сети или нет ответа - перегружаем модуль..
а у вас как то получается все мухи и котлеты в одной тарелке, да и читается код без дополнительных пояснений (их просто мало) - ужасно для понимания концепции замысла программы.
я бы поспорил, что там стабильно... инициализация разбита на 6 кусков с чередованием всего цикла программы??
странно.. можно (и думаю нужно) - делать инициализацию отдельно вначале одним куском, можно с вычиткой ответов - не проблема. и уже потом переходим к программе...
проверять сеть каждые 40 сек - поверьте, это очень часто, достаточно раз в 2-3 мин.
нет сети или нет ответа - перегружаем модуль..
у меня работает полная прога уже год без глюков, ну а, если сеть теряет, то и нужны эти 6 циклов, а так при нормальной работе, они пропускаются.
Состав системы:
- 2 датчика температуры-влажности(один устанавливается на улице, второй в доме)
- 2 датчика движения(устанавливаются в доме)
- 1 датчик на открытие входной двери
- сирена с маяком
- Бесперебойный бокс(при отсутствии питание ваша система всегда работает)
Управление производится посредством телефона.
Возможности:
- Постановка и снятие с охраны.
- Запрос баланса (Авто режим, если на счете м.100 руб, происходит оповещение)
- Запрос состояния системы(Состояние контроля дома, напряжение 220В, напряжение аккумулятора, температура и влажность, сигнал сотовой сети)
- Квитирование тревог
- При пропадании напряжения 220В, придет смс
- При возобновлении напряжения 220В, придет смс
- При разряде аккумулятора, придет смс
- При срабатывании по датчикам, придет смс, включится сирена
- При открывании бокса, придет смс, включится сирена
40 сек - поверьте, это очень часто, достаточно раз в 2-3 мин.
командами AT+CPAS и AT+CSQ?
А какой командой перезагрузить модуль?
- При пропадании напряжения 220В, придет смс
- При возобновлении напряжения 220В, придет смс
- При разряде аккумулятора, придет смс
Как это у Вас реализовано в коде и на физическом уровне?
40 сек - поверьте, это очень часто, достаточно раз в 2-3 мин.
командами AT+CPAS и AT+CSQ?
А какой командой перезагрузить модуль?
если модуль реально зависает, то это проблема модуля
Его можно только по питанию передернуть
40 сек - поверьте, это очень часто, достаточно раз в 2-3 мин.
командами AT+CPAS и AT+CSQ?
А какой командой перезагрузить модуль?
если модуль реально зависает, то это проблема модуля
Его можно только по питанию передернуть
ха-ха-ха .. :) нет конечно, необязательно. есть масса причин когда у модуля проблемы возникают...
и и например разряды молнии..и обмен базы оператора с модулем когда у модуля ступор может возникнуть и не только. База за ваш телефон "забудет" и нужно заново "войти" в сеть, а для этого перегрузить модуль.
так что утверждение что это проблемы модуля - неверное совсем..
- При пропадании напряжения 220В, придет смс
- При возобновлении напряжения 220В, придет смс
- При разряде аккумулятора, придет смс
Как это у Вас реализовано в коде и на физическом уровне?
При пропадании напряжения 220В, придет смс
вот кусок кода из моей проги:
При разряде аккумулятора, придет смс
У меня Бокс Бесперебойного питания, там есть индикатор(LED) о наличии питания, к нему припаеваемся, и дальше собираем схему из резисторов, ссылка тут
40 сек - поверьте, это очень часто, достаточно раз в 2-3 мин.
командами AT+CPAS и AT+CSQ?
А какой командой перезагрузить модуль?
если модуль реально зависает, то это проблема модуля
Его можно только по питанию передернуть
ха-ха-ха .. :) нет конечно, необязательно. есть масса причин когда у модуля проблемы возникают...
и и например разряды молнии..и обмен базы оператора с модулем когда у модуля ступор может возникнуть и не только. База за ваш телефон "забудет" и нужно заново "войти" в сеть, а для этого перегрузить модуль.
так что утверждение что это проблемы модуля - неверное совсем..
для всего этого реализованы 6 циклов, пока прога не пройдет все, система не будет работать, как только проходит последний цикл, все отрабатываем код
При замере напряжения! по ссылке в посте 432
Помните, что напряжение выше 55 В может вывести плату Arduino из строя!
фотки при сборке системы в бокс тут
тестил питание для gsm от 2-х разных плат питания, старые на фото имеются, но не используются
40 сек - поверьте, это очень часто, достаточно раз в 2-3 мин.
командами AT+CPAS и AT+CSQ?
А какой командой перезагрузить модуль?
если модуль реально зависает, то это проблема модуля
Его можно только по питанию передернуть
ха-ха-ха .. :) нет конечно, необязательно. есть масса причин когда у модуля проблемы возникают...
и и например разряды молнии..и обмен базы оператора с модулем когда у модуля ступор может возникнуть и не только. База за ваш телефон "забудет" и нужно заново "войти" в сеть, а для этого перегрузить модуль.
так что утверждение что это проблемы модуля - неверное совсем..
и нужно заново "войти" в сеть, а для этого перегрузить модуль.
А как перегрузить модуль, можете рассказать?
Спасибо
stambylov -спасибо, буду изучать.
А как перегрузить модуль, можете рассказать?
Спасибо
по хорошему - ставите силовой ключ на питание gsm модуля. и ардуиной управляете этим ключом снимая питание на несколько секунд.
Это самый надежный вариант применяемый во всех проф. сигнализациях. Так как модуль может и не отвечать на ат команды вообще. поэтому только по питанию.
А вот этого нету, не делают ни в одном заводском шилде.
для всего этого реализованы 6 циклов, пока прога не пройдет все, система не будет работать, как только проходит последний цикл, все отрабатываем код
это я вижу, что вы на 6 циклов разделили, то, что можно в одном исполняемом куске сделать.
Но, например гсм модуль через сутки потерял сеть и сам не находит? Что тогда?
я не заметил у вас в коде команду "AT+CPOWD=1", значит вы полагаетесь на авось пронесет?
А по закону подлости - западно случится в самый неподходящий момент, когда полезут грабить.
А как перегрузить модуль, можете рассказать?
Спасибо
по хорошему - ставите силовой ключ на питание gsm модуля. и ардуиной управляете этим ключом снимая питание на несколько секунд.
Это самый надежный вариант применяемый во всех проф. сигнализациях. Так как модуль может и не отвечать на ат команды вообще. поэтому только по питанию.
А вот этого нету, не делают ни в одном заводском шилде.
Таким образом придется его выключать (если он конечно будет отзываться на команды АТ) командой AT+CPOWD=1, а как его после этого включить?
Спасибо
Именно про это я и пытался спросить в посте 417. Если я правильно понял мануал модуля, то в случае отказа АТ команд ( и соответственно невозможность перегрузить модуль командой AT+CPOWD) рекомендуют пользоваться резетом на модуле, т.е. подавать на резет минусовой импульс, из чего напрашивается вывод, что резет эквивалентен сбросу питания. Вопрос в том, как это проверить, т.к. лично у меня модули не зависали ни разу.
Я бы сделал просто и жестко. На определенный выход ардуины подал сигнал, который на 1 сек. включит миниатурное реле, которое в свою очередь разомнет и через секунду сомкнет контакты в разрыве питания модуля. Мудрите вы чет в этой теме!
Я бы сделал просто и жестко. На определенный выход ардуины подал сигнал, который на 1 сек. включит миниатурное реле, которое в свою очередь разомнет и через секунду сомкнет контакты в разрыве питания модуля. Мудрите вы чет в этой теме!
вы правы, только нужно на 5 а лучше 10сек, чтобы в самом гсм модуле все разрялилось. после 1сек может ничего не поменяться.
Я бы сделал просто и жестко. На определенный выход ардуины подал сигнал, который на 1 сек. включит миниатурное реле, которое в свою очередь разомнет и через секунду сомкнет контакты в разрыве питания модуля. Мудрите вы чет в этой теме!
можете проверять уровень сигнала, если его нет (делаем цикл, т.е. делаем 3 попытки регистрации в состовой сети), если не регистрируется gsm, то вкл. реле на 3 сек(разомкнуть питание на GSM), а дальше проходим регистрацию в сети и все остальные АТ команды для работы
Ну вы меня поняли... А какую задежку ставить легко подобрать.. Практика рулит! Дерзаем!
Проверяем в цикле есть ли сигнал, если нет даем команду сервоприводу на шевеление антенны туда-сюда, проверяем сигнал, если опять нет, шевелим контакты и тем-же сервоприводом пинаем себя, затем выключаем-включаем реле ;)
Алгоритмов куча! И вместо того, чтобы спрашивать на форумах, нужно все сперва самому проверить на практике, потом делиться этим и задавать вопросы.
Вы всё правильно пИшите, только чтобы проверить на практике, надо чтобы модуль завис, а он сутками лежит на столе и работает...
Да нет проблем. Сделайте аварийную ситуацию искусственно. Понизьте питание, экранируйте антенну, соберите простенький подавитель сети в конце концов. Если уж испытывать такую вещь как сигнализация для дома, то тут нельзя пренебрегать ничем. Или вы думаете воры тупее вас?
по поводу аппаратного ресета, мне помагает соединение вывода RST с землей.
кстати, вот натолкнулся на подтверждение своих слов, для тех, кто еще сомневается:
http://lazysmart.ru/distantsionnoe-upravlenie/opy-t-raboty-s-gsm-modemom-sim900/
Добрый день, никто не сталкивался при запросе NTP времени (пока юзал www.ntp-servers.net) командой AT+CNTP("AT+CNTP=\"88.147.254.227\",12") - иногда(редко) время синхронизируется неверно, например +4 или +5 часов к моему. Причем синхронизируется через минуту и все нормально. С указанного сайта я использовал ip 1 яруса, перешел на ip 2 яруса - пока не замечал глюков.
P.S. - на 2 ярусе тоже была обнаружена ошибка синхронизации - 07.02.2017 20:50:11(время до синхронизации) | 08.02.2017 01:49:47 (время после синхронизации)
Ни у кого нет мыслей почему так происходит?
Потестирую на www.time.nist.gov - отпишусь позже.
Спасибо