Всем привет. Когда-то писал про подключение GSM-модуля Neoway M660 и сейчас расскажу про то, как с его помощью можно отправлять и принимать SMS. Модули Neoway имеют встроенный TCP/IP-стек, небольшие размеры и широкие возможности мониторинга сети. И главными отличительными особенностями их являются: простота и удобство использования, низкая цена. В настоящее время серийно производятся и доступны такие блоки: GPRS-модули M660, M680, GM650 и 3G-модуль WM620.

Передача SMS
Сразу замечу, что команды должны оканчиваться символом возврата каретки, который часто обозначают <CR> и которому соответствует байт 0x0D. Чтобы это подчеркнуть, буду добавлять <CR> там, где этот символ должен быть.
В текстовом режиме получится отправить только английские буквы, цифры, некоторые символы.
Последовательность команд для передачи SMS в текстовом режиме:
1) включаем текстовый режим (по умолчанию у Neoway M660 установлен режим PDU!):
AT+CMGF=1<CR> // Text mode
2) вводим номер телефона и текст SMS:
AT+CMGS="89210000000"<CR> // вводим номер телефона
> // если всё правильно, модуль должен выдать приглашение — символ ">"
Hello!<0x1A> // нужно, чтобы сообщение заканчивалось байтом 0x1A
Прием SMS
Есть несколько настроек, от которых зависит прием SMS модулем M660. Основные настройки и их очень приблизительное описание:
- AT+CNMI — как сохранять и выдавать на UART принятые SMS, как поступать, если память переполнена;
- AT+CMGF — использовать текстовый или PDU режим;
- AT+CSCS — какую кодировку использовать в текстовом режиме.
Самые простые для приема SMS настройки, которые я использовал:
- AT+CNMI=2,2,0,0,0<CR> // SMS выдается на UART после приема;
- AT+CMGF=1<CR> // текстовый режим SMS;
- AT+CSCS="GSM"<CR> // использовать кодировку GSM.
При этих настройках и номер телефона, и английские буквы сообщения (если сообщение не содержит русских символов) будут отображаться в текстовом виде, что очень удобно. Пример сообщения, которое выдается на UART при приеме SMS "Hello!" и отправлено с номера +7-921-000-00-00:
+CMT: "+79210000000", ,"2021/04/24 15:28:00+12"
Hello!
Если SMS будет содержать русские буквы, то получим текстовую строку в юникоде, которую потом нужно будет декодировать. Например, что-то такое:
+CMT: "+79210000000", ,"2021/04/24 15:42:11+12"
044504300445043004450430
Если нужно проверить, какие настройки используются, используйте команды со знаком вопроса на конце:
AT+CNMI?<CR>
AT+CMGF?<CR>
AT+CSCS?<CR>

А здесь описание и схема подключения самого GSM-модуля Neoway M660.







