Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Модуль SIM800 не отвечает на команды
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему
zheka
Вот такой модуль из Китая https://ru.aliexpress.com/item/SIM800-GSM-G....3da233edRYKJQO

Подключил. ПОставил скорость 9600. Отсылаю АТ, в ответ вместо "ОК" приходит АТ.
Чтобы мне не советовали сменить скорость, проверить.... ну в общем все что советуют тем, у кого не устанавливается связь по UART, хочу обратить внимание - команды ATE0 и ATE1 модуль понимает и эхо, соответственно, включается и выключается. Более того, когда жмешь кнопку PWR, модуль уходит в спячку, а на терминал приходит правильно расшифровываемое сообщение "NORMAL POWER DOWN".
Но на запросы он не отвечает. Только шлет эхо команды

Что делать и кто виноват?
ArtemKAD
Символы завершения и перевода строки отправить. "\r\n"
zheka
причина в программе - с Terminal 1.9 не работает. Галка CR=CR+LF установлена.
Заработало с каким-то терминалом встроенным в Codevision AVR. Но он неудобный.
Putty у меня не запустился.
Какой еще терминал посоветуете? Или что делать с Terminal 1.9. ... я там жал куда можно только..
Grigorij
Цитата(zheka @ Jul 27 2018, 20:27) *
Putty у меня не запустился.
Какой еще терминал посоветуете? Или что делать с Terminal 1.9. ... я там жал куда можно только..

А что именно putty пишет? Я неоднократно именно с помощью этой программы AT команды отправлял. Если до понедельника не запуститься, могу на работе посмотреть, какие у меня настройки стоят (на память все настройки не вспомню сейчас). Еще можете посмотреть - ioninja. Вроде неплохая, но при каждом запуске придется ставить галку - Evaluation. Я её использую только когда надо к Raspberry Pi подключится по UART, в остальное время только putty.
ArtemKAD
На сколько помню, в Terminal 1.9 кроме галочки "CR=CR+LF" надо установить галочку "+CR" за полем отправки. Впрочем, я обычно пользовался макросами, а там все надо прописывать руками (к примеру "AT$0D$0A"). Из терминалов можно посмотреть в сторону HTerm от der-hammer - как по мне он шустрее 1.9, хоть и отсутствие макросов иногда напрягает.
zheka
Цитата
А что именно putty пишет?

Ну в смысле, он запустился и даже вроде как подконнектился, но в окне вместо печатаемых символов квадраты. И модуль на команды в нем не отвечает вообще, даже эхо не шлет.
Я нашел кстати уже то что мне больше понравилоь - HTerm.

Цитата
надо установить галочку "+CR" за полем отправки

Где вы ее увидели? У меня нет. Версия 1.9b
ArtemKAD
Она у всех 1.9b. Зайдите на сайт к разработчику https://sites.google.com/site/terminalbpp/
zheka
Цитата(ArtemKAD @ Jul 27 2018, 21:51) *
Она у всех 1.9b. Зайдите на сайт к разработчику https://sites.google.com/site/terminalbpp/

Шайтанама...!!!
А у меня нет галки +СR...

+CR есть в 1.93 версии!
zheka
Пытаюсь расшевелить модуль. Проблемы с регистрацией.
AT+CREG? отвечает 0,3 (3 - это регистрация отклонена).
AT+COPS=? - выводит список операторов.
В чем могут быть причины отклонения запроса регистрации?

Класс!!!
На запрос AT+CPAS, получаю ответ 2
Цитата
AT+CPAS
Информация о состояние модуля
0 – готов к работе
2 – неизвестно
3 – входящий звонок
4 – голосовое соединение


Модуль не знает, готов ли он к работе. А кто знает?
Grigorij
Цитата(zheka @ Jul 30 2018, 17:26) *
AT+CREG? отвечает 0,3 (3 - это регистрация отклонена).
В чем могут быть причины отклонения запроса регистрации?

Проверьте:

    Рабочая ли сим-карта и видит ли ее модем. Отправьте команду "AT+CCID?" В ответ должен прийти ICCID этой сим-карты
    На обычном телефоне проверьте, что на карте есть деньги, и она не заблокирована оператором
    SIM карта не требует PIN/PUK кода


SIM800 после включения питания автоматом пытается зарегестрироваться в сети. Поэтому надо сначала надо добиться нормально ответа на AT+CREG? Только после этого начнет работать отправка SMS. Нашел платку у себя с SIM800, вот так выглядит отправка SMS (просто вручную отправил те же команды, которые у нас в боевом ПО используются):

Код
ATE0

OK
AT+CREG?

+CREG: 0,5

OK

AT+CCID

89883030000000652542

OK
AT+CMGF=1

OK
AT+CSCS="GSM"

OK

at+cmgs="+46xxxxxxxxx"
at+cmgs="+46xxxxxxxxx"
> This is a test SMS from SIM800
This is a test SMS from SIM800
> ^[0^[2^[6  (-------> это Ctrl+Z в putty == надо нажать Alt и набрать 026)
026
OK


Ну т.е. команды отправки SMS у вас верные. Надо понять, почему нет регистрации в сети.
zheka
На AT+CCID отвечает "8970 (дальше набор цифр и в конце f)

Карта кстати новая, только что купленная. Проверить ее к сожалению не могу, поскольку дома все телефоны в nanoSIM, а модуль мой normalSIM. Собственно поэтому и купил новую карту.

Продавец (официал) сказал, что карту нужно просто вставить и через 2 минуты она активируется. На самом держателе карты никаких пинкодов нет...

Я могу как-нить средствами модуля проверить, активирована она или нет?

Кстати, после того, как я вставил карту и включил модуль, пришло 6 смсок - я переключал режим чтения через CMGF на текст - в них все равно какая-то HEX-белеберда, прочитать не удалось. А мои СМС-ки с другого телефона модуль не принимает

на AT+CPIN отвечает READY, то есть не требует пинкода.
Grigorij
Цитата(zheka @ Jul 30 2018, 17:48) *
Продавец (официал) сказал, что карту нужно просто вставить и через 2 минуты она активируется. На самом держателе карты никаких пинкодов нет...

Я могу как-нить средствами модуля проверить, активирована она или нет?

Кстати, после того, как я вставил карту и включил модуль, пришло 6 смсок - я переключал режим чтения на текст - в них все равно какая-то HEX-белеберда, прочитать не удалось. А мои СМС-ки с другого телефона модуль не принимает

ICCID - вроде даже нормальный (он обычно на самой сим-карте написан). Можно сравнить, но это не суть, главное модем ее видит. Очень похоже что "через 2 минуты она активируется" не сработало особо. Мы иногда на работе когда личном кабинет оператора сим-карты блокирует, получаем почти такое же поведение на стороне модема (я про ответ на команду CREG?).

6 странных смсок при первом включение - это видимо что-то от оператора, хотя в общем-то странно. А это точно были СМС?

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

Я бы начала с проверки этой сим-ки на обычном телефоне. Думаю можно это сделать в любом магазине с телефонами. А у вас сим-карта точно без адаптеров? Просто сейчас часто продают нано-сим в двух адаптерах сразу.


> на AT+CPIN отвечает READY, то есть не требует пинкода.

Это подтверждает, что вводить PIN/PUK код не надо и сим-карта готова к работе
zheka
Вот что выдает при чтении SMS
Цитата
<\n>+CMGR: "REC UNREAD","245656p696+656","","18/07/30,16:41:26+12"<\r><\n>0204400435043700200031002D00350020043C0438043D04430442002E002004150441043B043
80020044D0442043E0433043E0020043D04350020043F0440043E04380437043E043904340435044
2
002C0020043F04350440043504370430043304400443043704380442043500200443044104420440
0
43E0439044104420432043E002E<\r><\n><\r><\n>OK<\r><\n>


Цитата
А это точно были СМС?

Да!
Пока я втыкал в экран, на нем последовательно с интервалом в десяток-другой секунд появились сообщения - не помню как они выглядели, но внутри была аббревиатура что-то вроде "CCMT"

Их пришло 6 и именно 6 СМС у меня читается (при попытке прочитать седьмую ничего не происходит)

Цитата
А у вас сим-карта точно без адаптеров?

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

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


Кое-как вставил заведомо рабочую и идейно выдержанную наносим карту. То что вставил правильно, подтвержается ответом READY и выдачей CCID.
Что сразу бросилось в глаза - рядом находящиея динамики затрещали (этого не было при использовании другой карты) - ну думаю, пошел поиск.
Ан нет - НА CREG отвечает 0,2 (нет кода регистрации сети). Объясните, это уже лучще ли это хуже, чем было?

Вставил таки купленную симку, выломав ее, в телефон - ней действительно какие-то проблемы - "только экстренные вызовы".

Но и правильная симка тоже чудит. Модуль в какой-то момент времени прислал по UART два сообщения "CAll Ready" "SMS Ready". Но на CREG он стал отвечать 0,0, то есть попросту послал.

Тихо сам с собою..
Обратил внимание, что модуль не видит оператора TELE2. Просто нет его в списках COPS.

Вытащил симку Мегафона из телефона, вставил в модуль - о чудо - все нашлось, CREG=0,1
А билайновская, с которой я начинал, и в телефоне не хочет работать - "только экстренный вызов", имя оператора не указано. Я их и местами уже менял.
Не знаете, если симка не активирована, то оператор в телефоне должен отображаться?
Grigorij
Цитата(zheka @ Jul 30 2018, 18:27) *
Кое-как вставил заведомо рабочую и идейно выдержанную наносим карту. То что вставил правильно, подтвержается ответом READY и выдачей CCID.
Что сразу бросилось в глаза - рядом находящиея динамики затрещали (этого не было при использовании другой карты) - ну думаю, пошел поиск.
Ан нет - НА CREG отвечает 0,2 (нет кода регистрации сети). Объясните, это уже лучще ли это хуже, чем было?


Это уже гораздо лучше. Если оставить модем включенный с этой сим-картой и проверить ответ через пару минут, то какой код от CREG получите? Согласно документации 0,2 означает поиск сети:

Цитата
0 Disable network registration unsolicited result code
(т.е. у вас URC о регистрации не придет и проверить состояние вы можете только явным запросом по CREG)
2 Not registered, but MT is currently searching a new operator to register to
(модем ищет сеть)


В нормальных условиях секунд за 30 модем уже находит и регистрируется в сети. В "ненормальных" можно и пару минут прождать, но это что-то нездоровое уже будет.

Цитата
Но и правильная симка тоже чудит. Модуль в какой-то момент времени прислал по UART два сообщения "CAll Ready" "SMS Ready". Но на CREG он стал отвечать 0,0, то есть попросту послал.

"Call Ready" и "SMS Ready" - это нормальные сообщения от модема. У вас отправка URC по умолчанию разрешена. Эти 2 URC говорят о том, что модуль готов к приему звонков и СМС. Но они приходят после того, как модем ребутнулся и прошла его внутренняя инициализация.


По поводу СМС. Судя по сообщению у вас СМС вчиталась в PDU режиме. PDU на обычный текст меняет командой AT+CMGF=1. Вы ее вроде вызывали (судя по предыдущему сообщению), но она почему-то не применилась. В сети есть конверторы, которые позволяют PDU в текст перевести. Можно попробовать им воспользоваться

Пока ответ сочинял, проблема уже почти решилась sm.gif Если симка не активна, то оператор может и не отображаться.
zheka
Сходил в магазин, поменял симку на новую.
Все работает. С полпинка регистрируется, СМС отправилась с первой попытки.

Остается только загадка, почему модуль игнорирует оператора TELE2 - вообще не видит его в эфире....
Harbinger
Цитата(zheka @ Jul 30 2018, 20:50) *
Остается только загадка, почему модуль игнорирует оператора TELE2 - вообще не видит его в эфире....
Возможно, разгадка в этом:
Цитата(zheka @ Jul 27 2018, 17:32) *
модуль из Китая
М.б. партия не для продажи в Европу. Tele2 - он же европейский по происхождению?
(upd)
Цитата
<\n>+CMGR: "REC UNREAD","245656p696+656","","18/07/30,16:41:26+12"<\r><\n>0204400435043700200031002D00350020043C0438043D04430442002E002004150441043B043
80020044D0442043E0433043E0020043D04350020043F0440043E04380437043E043904340435044
2
002C0020043F04350440043504370430043304400443043704380442043500200443044104420440
0
43E0439044104420432043E002E<\r><\n><\r><\n>OK<\r><\n>

Это кусок (конец?) SMS:
Цитата
рез 1-5 минут. Если этого не произойдет, перезагрузите устройство.

Что-то надо было сделать.
Grigorij
А какой вообще список сетей выдает модем с нормальной сим-картой? Я, например, за SIM800C заметил странность, что он иногда выдает ID сети вместо её имени (даже если настраиваешь вывод имени, я не ID). Может Tele2 есть в списке, но в виде ID. Просто как идея.
zheka
Цитата
Что-то надо было сделать.

Просто карту нужно было заменить)

Цитата
Может Tele2 есть в списке, но в виде ID. Просто как идея.

Похоже так и есть.
Но факт остается фактом, с теле2 тоже нет коннекта, и, в отличие от предыдущей карты, попытки подключиться к сети быстро прекращаются.
Владивольт
Цитата
Но факт остается фактом, с теле2 тоже нет коннекта


Цитата
Мы не поддерживаем 2G в Москве и Московской области
Пользоваться связью Tele2 в Москве и Московской области получится только если ваш телефон поддерживает 3G или 4G.

https://msk.tele2.ru/help/article/coverage
zheka
Владивольт, окститесь, жизнь есть и за пределами МКАД. И интернет с электричеством тоже). То что я замкадыш, вытекает хотя бы из того, что у меня есть симкарта ТЕЛЕ2)

Grigoij, а проясните еще один практический момент, как рациональнее организовать обмен данными на микроконтроллере? Я ведь не только отправляю команды, но и принимаю различную информацию от модуля, а она может быть разной. И прийти ее может много. Скажем, контроллер занимается какими-то делами, а ему подряд приходит неколько сообщений RING.
Я так думаю, по стандарту завести кольцевой буфер, и после каждого пойманного символа конца строки вычленять отдельные сообщения и складывать их в другой буфер, ставить в очередь. На случай, если следующее сообщение от модуля придет раньше чем успеешь отработать предыдущее?
Просто интересно, какой принцип хорошо зарекомендовал себя на практике?
Grigorij
Цитата(zheka @ Jul 31 2018, 15:16) *
Владивольт, окститесь, жизнь есть и за пределами МКАД. И интернет с электричеством тоже).

Все равно было бы неплохо уточнить, поддерживает ли данный оператор в вашем регионе 2G. Сейчас идет тенденция на сворачивания 2G, чтобы освободить частоты под 4G. Мы уже на такое нарвались и сейчас обновляем приборы в некоторых странах.

Цитата(zheka @ Jul 31 2018, 15:16) *
Grigoij, а проясните еще один практический момент...


Однозначной рекомендации здесь наверное нет. Расскажу как примерно у меня все то дело работает.

Для обмена сообщенями я используют 2 буфера (один Rx, другой Tx) доступ к которым идет через DMA. Т.е. в явном виде взаимодействия с UART нет. Далее в программе есть отдельная задача (софт построен на базе FreeRTOS), которая отвечает за работу с GSM модемом. Сама эта задача представлена в виде машины состояний. В простом варианте у меня всего 5 состояний:

Код
idle (вообще ничего не делаем)
инициализация модема (включаем модем и отправляем набор команд для настройки модема)
регистрация в сети (регистриуемся в сети)
TCP соединение (обрабатываем входящие/исходящие пакеты)
выключение (корректно выключаем модем AT командам и выключаем питание)


Каждое состояние (кроме TCP соединения) работает по примерно следующему сценарию:

Код
если первый раз зашли в это состояние, то
    отправить первую AT команду
    инициализировать таймер для отслеживания timeout на ответ модема
    отдать управление FreeRTOS
если повторно зашли в это состояние (ну т.е. FreeRTOS нам управление вернула), то
    проверить, нет ли чего в буфере, а если есть, то обработать (например, перейти в следующее состояние
    или отрпавить какое-нибудь сообщение основной задаче)
    проверить не сработал ли timeout (например, модем не отвечает)


TCP соединение работает несколько иначе. Я сейчас отказался от стека внутри модема и использую LWIP. Это состояние работает по примерно следующему сценарию:

Код
проверить, есть ли какая команда от главной задачи (например на выключение модема)
если команда есть - выполнить ее
если команды нет, то считать все, что есть в буфере и отправить это в LWIP на обработку


Вроде не сильно запутанно написал.

Еще надо учесть пару моментов. Во-первых, для модема у меня выключены URC. Это позволяет исключить "внезапный" набор каких-либо сообщений от модема. Т.е. получается система "запрос-ответ". Это позволяет легко определить, ждем мы что-нибудь от модема или нет. Во-вторых, мне нет необходимости обрабатывать СМСки или входящие звонки. С другой стороны наличие входящей СМС можно проверить по запросу, а такой поведение легко добавляет в машину состояний, описанную выше. А для входящего звонка обычно есть еще и отдельны вывод у модема, который о нем сигнализирует.

ДЕЙЛ
Цитата(zheka @ Jul 27 2018, 19:27) *
причина в программе - с Terminal 1.9 не работает. Галка CR=CR+LF установлена.
Заработало с каким-то терминалом встроенным в Codevision AVR. Но он неудобный.
Putty у меня не запустился.
Какой еще терминал посоветуете? Или что делать с Terminal 1.9. ... я там жал куда можно только..

В своё время тоже озадачился поиском удобного терминала, но в итоге написал его сам. Терминал и описание здесь
https://alex-exe.ru/programm/universal-terminal-st/ "
В ближайшее время выложу там терминал с новыми плюшками
jcxz
Цитата(ДЕЙЛ @ Aug 1 2018, 00:47) *
В своё время тоже озадачился поиском удобного терминала, но в итоге написал его сам. Терминал и описание здесь

Скачал, запустил. Сразу же - выглядит очень сыро и криво.
Почему так криво с элементами GUI?
Почему только 115200 максимум?
Почему в окне выбора COM-порта присутствуют несуществующие в системе порты и отсутствуют существующие?
Нажмите для просмотра прикрепленного файла
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.