SIM800 не отвечает на АТ команды

Irinka
Irinka аватар
Offline
Зарегистрирован: 28.06.2017

andycat пишет:

 ну заехали вы в мертвую зону, ну скажет МК что работать не буду - дальше что? полезете на березу с антеной как партизаны во время войны?

Да я всё переживаю что в машине от вибрации может отойти сим-карта в разъёме.

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

кого оповестит? и как?

Я имела ввиду ответит +CCALR: 0?

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

Irinka пишет:

andycat пишет:

 ну заехали вы в мертвую зону, ну скажет МК что работать не буду - дальше что? полезете на березу с антеной как партизаны во время войны?

Да я всё переживаю что в машине от вибрации может отойти сим-карта в разъёме.

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

Скажите пожалуйста: зачем вытаскивать симку на ходу? вы убьете тупо разъем, подразумевается что симка навечно стоит в устройстве и никто туда не лазит. Как то же работают китайские (да и наши полукитайские) трекеры в машинах, я почти уверен что там такие же коннекторы....и ничего не отваливается....

Irinka
Irinka аватар
Offline
Зарегистрирован: 28.06.2017

Спасибо.

Votmax
Offline
Зарегистрирован: 18.06.2016

Irinka пишет:

Да я всё переживаю что в машине от вибрации может отойти сим-карта в разъёме.

 

Протестировано на 3000 км. Все держится )).

Andy
Andy аватар
Offline
Зарегистрирован: 01.01.2016

Irinka пишет:
Если нет ответа OK от АТ команды - это однозначно перезагрузка модуля.
SIM800 не всегда с первого раза отвечает. Логичнее повторить команду.

Votmax пишет:
Подрасти для начала
Расти надо тебе. Ардуино это дно.

andycat пишет:
если от АТ команды (любой) нет ответа в течении 30 секунд - перезагрузка.
Документацию не пробовал читать? Max Response Time для некоторых комманд 60, 75, 160 сек.

andycat пишет:
если я правильно помню, в МСК нет 2G сети (может быть не прав)
В МСК все операторы кроме Теле2 поддерживают 2G.

Irinka пишет:
Да я всё переживаю что в машине от вибрации может отойти сим-карта в разъёме.
Проверь наличие СИМки командой AT+CSMINS

А вообще, что бы не страдать фигней, типа "отбил у памяти 300 Бт" или "90% памяти кушает, уже ничего не впихнешь", купи нормальную плату, например такую, благо стоит дешевле, чем ардуино, поставь нормальную среду разработки, например эту, и забудь про ардуино - это шлак.

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

Да....крутые советы от супер профессионала (
Так прям и вижу: приходит директор и говорит - че-то сервер тормозит, надо исправить, а я ему говорю - а нахрена? Давай щас купим другой за десяток тыщь баксов а этот выкинем

Votmax
Offline
Зарегистрирован: 18.06.2016

Да че уж, можно и это использовать: https://www.top500.org/system/178764

 

Irinka
Irinka аватар
Offline
Зарегистрирован: 28.06.2017

Друзья, подскажите где я совершила ошибку:

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

Чтобы это проверить, я подаю питание на ардуино (SIM800 выключен), жду когда модуль не ответит несколько раз и включаю питание SIM800

//Отладка
#define DEBUG
#ifdef DEBUG
#define DEBUG_PRINT(x)       Serial.print (x)
#define DEBUG_PRINTLN(x)     Serial.println (x)
#else
#define DEBUG_PRINT(x)
#define DEBUG_PRINTLN(x)
#endif

#include <avr/wdt.h>
#include <SoftwareSerial.h>
SoftwareSerial SIM800(6, 7);//RX, TX
#define _pinreset A3//Пин ресета SIM800
long vrstat = 0;
bool FlagSeti=true;
bool ResSim=false;
int i=0;


//Старт
void setup() {
wdt_disable();
Serial.begin(19200);
SIM800.begin(19200);
pinMode(_pinreset, OUTPUT);
digitalWrite(_pinreset, HIGH);   
DEBUG_PRINTLN("Zagrugaem"); 
restartSIM800();
wdt_enable (WDTO_8S);
}



//Обработка команд---------------------------------------------------------------
String sendATCommand(String cmd, bool waiting) {
wdt_reset(); 
String _response = "";
//DEBUG_PRINTLN(cmd);
SIM800.println(cmd);
if (waiting) {
_response = waitResponse();
if (_response.startsWith(cmd)) {
_response = _response.substring(_response.indexOf("\r\n", cmd.length()) + 2);
}
//DEBUG_PRINTLN(_response);
return _response;
}
return "";
}

String waitResponse() {
wdt_reset(); 
String _buffer;
long _timeout = millis() + 10000;
while (!SIM800.available() && millis() < _timeout)  {};
if (SIM800.available()) {
_buffer = SIM800.readString();
return _buffer;
}else {
DEBUG_PRINTLN("Timeout...");
restartSIM800();
}
return "";
}


//Перезапуск SIM800
void restartSIM800() {
wdt_reset();   
DEBUG_PRINTLN("restartSIM800");
digitalWrite(_pinreset, LOW); 
delay(1000);          
digitalWrite(_pinreset, HIGH);  
wdt_reset(); 
delay(5000); 
setting();
}


//Настройка модуля
void setting() {
wdt_reset(); 
do{
if (statusSim800().indexOf("YES") > -1){
FlagSeti=false;
DEBUG_PRINTLN("Status-Ok");
if (sendATCommand("AT+CLIP=1", true).indexOf("OK") > -1) DEBUG_PRINTLN("Ustanovlen AON");
if (sendATCommand("AT+CMGF=1", true).indexOf("OK") > -1) DEBUG_PRINTLN("Text mode");
if (sendATCommand("AT+CMGDA=\"DEL ALL\"", true).indexOf("OK") > -1) DEBUG_PRINTLN("Sms udaleny");
i=0;
break;
}else{
FlagSeti=true;
i++;
if (i>5){
i=0;
restartSIM800();
}
DEBUG_PRINTLN("SettingStatus-Error");
}
delay(2000);
}while (FlagSeti); 
DEBUG_PRINTLN("Rabotaem");
}


//Проверка готовности модуля совершать звонки
String statusSim800(){
wdt_reset(); 
String _buffer=""; 
_buffer = sendATCommand("AT+CCALR?", true);
_buffer.trim();
if (_buffer.indexOf("+CCALR: 1") > -1) {  
return "YES"; 
}else{
return ""; 
}
}



void loop() {
wdt_reset(); 
}




Вот что получаю:

Если питание включено одновременно, всё работает.

Andy
Andy аватар
Offline
Зарегистрирован: 01.01.2016

Потому что у тебя рекурсия. В restartSIM800() вызываешь setting(), а в setting() вызываешь restartSIM800().

Irinka
Irinka аватар
Offline
Зарегистрирован: 28.06.2017

Del

Irinka
Irinka аватар
Offline
Зарегистрирован: 28.06.2017

Скажите пожалуйста, нужно ли каждый раз при включении SIM800 выполнять этьи команды:

"AT+CLIP=1"//Ustanovlen AON
"AT+CMGF=1"//Text mode
 
Или эти настрйоки сохраняются?
andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

В даташите все подробно написано, опять же чтоб не зависить от возможной смены модема, я например всегда инициализирую модем, порядка 8 команд при каждом включении, кода не очень много, но хоть уверен что чудо китайской инженерии сюрпризов не создаст.

Andy
Andy аватар
Offline
Зарегистрирован: 01.01.2016

Irinka пишет:
нужно ли каждый раз при включении SIM800 выполнять этьи команды:

"AT+CLIP=1"//Ustanovlen AON
"AT+CMGF=1"//Text mode
 
Или эти настрйоки сохраняются?

В описании каждой команды есть "Parameter Saving Mode". NO_SAVE значит не сохраняет, AT&W_SAVE - сохраняет после подачи команды AT&W.

Проще каждый раз команды подавать, чем надеяться на сохранение и потом выяснять почему на одной плате работает, а на другой нет.

кудрявый
Offline
Зарегистрирован: 14.12.2017

Ссылка на даташит.

Там в описании каждой команды указано сохряняется ли она, как сохраняется или не сохряняется вообще.

    NO_SAVE — параметры команды не сохраняется
    AT&W_SAVE — параметры команды сохраняется по команде AT&W
    AUTO_SAVE — параметры команды сохраняется автоматически

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

кудрявый пишет:

Ссылка на даташит.

Там в описании каждой команды указано сохряняется ли она, как сохраняется или не сохряняется вообще.

    NO_SAVE — параметры команды не сохраняется
    AT&W_SAVE — параметры команды сохраняется по команде AT&W
    AUTO_SAVE — параметры команды сохраняется автоматически

Дату последнего сообщения посмотрите - вы через 3 месяца ответили
Во вторых выше уже писали - надеяться на сохранение это тупиковый путь - модем поменяется и устройство перестанет работать

Irinka
Irinka аватар
Offline
Зарегистрирован: 28.06.2017

Irinka пишет:

Снова здравствуйте.

Питание ардуино и SIM800, как я рисовала выше, осуществляется спомощью двух модулей* питания:

LM2596

И второй

На обеих модулях написано что держат 3 Ампера.

Всё это дело стоит в машине (сделано на печатной плате отличного качества)

Езжу по своему городу - всё работает. Уезжаю в соседнюю область (соответственно роуминг, дорогой местами может пропадать сеть) модуль перестает отвечать на смс, при этом (когда открываю корпус куда все это дело установлено) модуль кажет что сеть есть.

В чём может быть дело?

 

Товарищи, как я ранее писала, то питаю ардуино нано и сим800 двумя такими преобразователями.

Ужасно хотелось ыб обойтись только LM2596? который будет настроен на 5 вольт.

Видела схемы где используют для понижения несколько диодов.

Как лучше сделать?

 

кудрявый
Offline
Зарегистрирован: 14.12.2017

А зачем так сложно?. Используйте LM2596

Для понижения с автомобильных 14 вольт до 4.2 которые нужны для

питания и сим800 и ардуинки.

вот даташит говорит, что можна до 40В подавать на вход.

Irinka
Irinka аватар
Offline
Зарегистрирован: 28.06.2017

Ардуино нано будет работаьь от 4 вольт?

кудрявый
Offline
Зарегистрирован: 14.12.2017

То что я пробовал - даже с 3,3вольт работает (на 16мгц)

Для себя -  был вариант - поменять кврац в 16 на 8 мгц. Но потом заработало и так

Да и можна 4.4в

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

Irinka пишет:

Ардуино нано будет работаьь от 4 вольт?


Переходите на работу напрямую с например atmega328p-p - точно будет работать.

кудрявый
Offline
Зарегистрирован: 14.12.2017

Irinka пишет:

Ардуино нано будет работаьь от 4 вольт?

Будет все работать, Уно, Нано и любы промини.

И все это атмега 328Р

Irinka
Irinka аватар
Offline
Зарегистрирован: 28.06.2017

andycat пишет:
Irinka пишет:

Ардуино нано будет работаьь от 4 вольт?


Переходите на работу напрямую с например atmega328p-p - точно будет работать.

328 стоит 100 р, а полностью ардуино нано около 140.
Хотя заказала несколько 328 и кварцы. Буду пробовать.

Irinka
Irinka аватар
Offline
Зарегистрирован: 28.06.2017

Достаточно ли такой схемы для питания ардуино нано? Сильно будет греться LM7805?

кудрявый
Offline
Зарегистрирован: 14.12.2017

Irinka пишет:

7805

C 14 вольт очень сильно. Надо немаленький радиатор. Это же линейный стаб.

Настоятельно рекомендую однодолларовые платки на LM2596. Это ШИМ, почти не греется. Чумовой диапаозон напряжений и токов. И регулируемый! Нужно ведь 4,2в а не 5....

Irinka
Irinka аватар
Offline
Зарегистрирован: 28.06.2017

LM2596 и использую, просто места много занимает.

Irinka
Irinka аватар
Offline
Зарегистрирован: 28.06.2017

Останусь на нем тогда. Спасибо.

Irinka
Irinka аватар
Offline
Зарегистрирован: 28.06.2017

А если Lm7809 с 14 до 9 Вольт. Сильно греется?)

кудрявый
Offline
Зарегистрирован: 14.12.2017

Irinka пишет:
А если Lm7809 с 14 до 9 Вольт. Сильно греется?)

Любые Lm78хх греются сильно, так как они линейные и все падение превращают в тепло...

mivlz
Offline
Зарегистрирован: 13.08.2018

Хочу поделиться вчерашней историей) Рабочий скетч - выведен разъем на сим-модуль... Модули заказывал на али в феврале -10шт... первый модуль заработал, второй нет - АТ командами выявил, что не определяет сим карту и забил на него, было много других задач, распаял третий рабочий... Вчера возникла необходимость распайки нового модуля - не работает, следующий - не работает... и так еще 5... заработал только последний... Итого 7 дохлых модулей... Опять опрос АТ-командами - не видит сим... Короче китайские умельцы плохо припаяли слот для сим-карты на 7 из 10 присланных мне модулях... Сегодня прошелся паяльником и заработало

Irinka
Irinka аватар
Offline
Зарегистрирован: 28.06.2017

Прокомментируйте пожалуйста "схему"

vk007
Offline
Зарегистрирован: 16.06.2015

Irinka пишет:

Прокомментируйте пожалуйста "схему"

Если не ошибаюсь, то полоска на корпусе стабилитрона - это катод, и у Вас катод в сторону земли смотрит... не хорошо... Ну и токоограничивающего резистора на схеме нет (стабилитроны включаются в схему с ним).

Еще электролит желательно подключать непосредственно возле выводов питания жрущего модуля (SIM800). А провода питания контроллера подключать непосредственно к выходам преобразователя напряжения. И тогда еще один электролит непосредственно возле выводов питания контроллера. А керамику цеплять и там, и там вместе с электролитами.

Irinka
Irinka аватар
Offline
Зарегистрирован: 28.06.2017

В этой схеме нет толкоограничивающего резистора.

vk007
Offline
Зарегистрирован: 16.06.2015

Второй керамический конденсатор тоже поставьте возле электролита, что стоит на питании атмеги.

Зачем Вам вообще там стабилитрон? Ведь DC-DC модуль и так выдает стабилизированное напряжение.

Irinka
Irinka аватар
Offline
Зарегистрирован: 28.06.2017

vk007 пишет:

Второй керамический конденсатор тоже поставьте возле электролита, что стоит на питании атмеги.

Вы про две фильтрующие емкости 10 и 33 Пф? К атмеги их тоже поставить?

 

vk007 пишет:

Зачем Вам вообще там стабилитрон? Ведь DC-DC модуль и так выдает стабилизированное напряжение.

Я тоже сомневаюсь в его необходимости. Уберу.

 

кудрявый
Offline
Зарегистрирован: 14.12.2017

10 и 33 Пф это тоже ниочем. Замените их одной керамикой 0,1мкф (100нф)

Irinka
Irinka аватар
Offline
Зарегистрирован: 28.06.2017

По даташиту 10 и 33

vk007
Offline
Зарегистрирован: 16.06.2015

Irinka пишет:

Вы про две фильтрующие емкости 10 и 33 Пф? К атмеги их тоже поставить?

Я не знаю зачем там стоят два близких по емкости конденсатора, да еще и в пикофарадах (?) - скорее всего должны быть нанофарады.

Конденсаторы ставят парами - электролит (обычно сотни - тысяча микрофарад) для НЧ и керамика (десятки - сотня нанофарад) для ВЧ, поскольку электролит сам не справится с фильтрацией на высоких частотах.

И эти пары желательно поставить и возле модуля, и возле атмеги. Блокировочных конденсаторов много не бывает:)

Irinka
Irinka аватар
Offline
Зарегистрирован: 28.06.2017

Из описания схемы питания:

Настоятельно рекомендуется в шину питания модуля VBAT (рис. 5) расположить конденсатор 100 мкФ с низким внутренним сопротивлением (ESR <0,7 Ом), который будет сглаживать просадки напряжения питания при бросках потребления тока. Наряду с этим элементом для исключения высокочастотной интерференции рекомендуется добавить фильтрующие емкости 10 и 33 пФ и защищающий от перенапряжений диод Зеннера 5,1/0,5 В. Емкости и диод должны быть расположены как можно ближе к выводам питания модуля.

 
vk007
Offline
Зарегистрирован: 16.06.2015

Да, я уже нашел даташит в оригинале. Там действительно 33 pF и 10 pF. Но там немного не так, там четыре(!) конденсатора рекомендуют ставить - танталовый на 100 мкФ, керамический на 1-10 мкФ, и еще парочку на 10 и 33 пФ.

Возле модуля можете поставить, как в даташите. А для атмеги достаточно электролита на сотню-другую микрофарад и керамического на 0,01-0,1 мкФ.

sadman41
Offline
Зарегистрирован: 19.10.2016

А зачем модулю столько разных номиналов?

vk007
Offline
Зарегистрирован: 16.06.2015

sadman41 пишет:

А зачем модулю столько разных номиналов?

А хрен его знает, даташит особо не распространяется об этом:

"For the VBAT input, a 100uF Tantalum capacitor (CA low ESR) and a 1uF~10uF  Ceramics capacitor  CB are strongly recommended. The 33 pF and 10 pF capacitors can effectively eliminate the high frequency interference."

sadman41
Offline
Зарегистрирован: 19.10.2016

На разных частотах фонит что-ли...

vk007
Offline
Зарегистрирован: 16.06.2015

Лично я с ними не работал, поэтому таких нюансов не знаю. Надо пробовать.

Но я вот что еще подумал, ведь этот SIM800 установлен наверное на какой-то платке, как и остальные китайские модули? Может там уже стоят какие-то из этих конденсаторов на питании и достаточно будет только электролита, чтобы питание сильно не просаживалось при пиках нагрузки.

На картинках их интернета, как минимум, танталовый видно, и еще парочку чего-то.

Irinka
Irinka аватар
Offline
Зарегистрирован: 28.06.2017

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

а я вообще 5 конденсаторов на стенд sim800 поставил + индуктивность,

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

vk007
Offline
Зарегистрирован: 16.06.2015

Irinka, я о такой картинке и говорил. Там очень хорошо видно танталовый на 470 мкФ (477A) и справа от него еще парочка тоже видимо конденсаторов (а потом резистор для светодиода и сам светодиод). Без выпаивания их номинал все-равно не проверить. На фото не видно, куда они подключены. Возьмите мультиметр и прозвоните, если подключены в параллель с танталовым (что скорее всего), то это и есть керамические блокировочные. Значит ничего дополнительно для модуля ставить не надо, разве что будет неуверенная работа модуля, то тогда уже надо пробовать ставить дополнительные. Возле атмеги парочку (электролит-керамика) ставить надо в любом случае.

vk007
Offline
Зарегистрирован: 16.06.2015

andycat пишет:

а я вообще 5 конденсаторов на стенд sim800 поставил + индуктивность,

Как я уже писал, блокировочных конденсаторов много не бывает, и индуктивность там тоже не лишняя. Я вспоминаю, как выглядели платы спектрумов и им подобные - керамика почти возле каждой микросхемы, до того линия питания засиралась мусором.

Irinka
Irinka аватар
Offline
Зарегистрирован: 28.06.2017

Значит и перед модулем и перед атмегой ставлю по электролиту на 100 vrA/

Блин, так и выходит по цене ардуино нано, удобство только в отсутствии "бутерброда" на плате

vk007
Offline
Зарегистрирован: 16.06.2015

Перед модулем можете пока не ставить, там на самом модуле стоит на 470 мкФ (будут проблемы - поставите), а вот возле атмеги электролит+керамика.

Irinka
Irinka аватар
Offline
Зарегистрирован: 28.06.2017

Керамический,как Вы сказали, 0,1 мкФ хватит?)