Важно знать: 1) Необходимо обеспечить питание достаточной мощности и не забудь о конденсаторе достаточной емкости в цепи питания ( читай датащит ) 2) Вывод BOOT надо замкнуть на GND. ( на плате два контакта GND, замыкайте на тот, который ближе к контакту BOOT, так как разводка платы корявая )
EEPROM в этом модуле отсутствует! Вместо нее используется NVRAM По этому для хранения настроек нужна батарейка или ионистор - https://u.to/P90uDg
Настройки могут сохраняться в двух пользовательских профилях AT&W0 - сохранить настройки в 0-м профиле, параметр 0 можно не указывать; AT&W1 - сохранить настройки в 1-м профиле
При включении GSM-модуля каждый раз загружаются настройки из ......... ( пока не знаю откуда )!!!
Итого у нас три профиля: Активный профиль, Профиль_0 и профиль_1.
Заводские настройки можно загрузить командой AT&F ( at&f0 ) для того что-бы они сохранились в нулевом профиле добавляем &W ( &W0 ) и получается AT&F0&W ( AT&F0&W0 ) Тоже самое можно проделать и с первым профилем.
И если вам надо загрузить настройки одного из пользовательских профилей, то это делается командой AT&Y AT&Y0 - загрузка настроек из профиля_0 AT&Y1 - загрузка настроек из профиля_1
Если вам надо загрузить настройки одного из пользовательских профилей, то это делается командой ATZ ATZ0 - Сброс настроек и загрузка настроек из профиля_0 ATZ1 - Сброс настроек и загрузка настроек из профиля_1
*****
командой AT&V можно посмотреть текущие настройки, а так-же настройки сохраненные в профиль_0 и профиль_1
AT+CMGF=1 -- включить текстовый формат AT+CSCS="UCS2" -- включить кодировка Unicode ( позже перенастрою на ASCII -> AT+CSCS="GSM" ) ate1 -- включить режим эха atv1 -- полный текстовый ответ с эхом (если включен) AT+CSCB=1 -- отключить прием широковещательных сообщений
AT&W - сохранить текущие настройки в профиль_0
AT+CMGS="+7950*******" текст → ( это спец символ для отправки sms, его ког в хексе = 0x1A )
Тут есть некоторая проблема. В мануале написано, что отправка должна происходить по нажатию CTRL+Z. Так и есть, но работает это только в стандартном гипертерминале windows. В других терминальных программах такой фокус не проходит, но можно отправить код этой комбинации клавиш. CTRL+Z = 0x1A и все бы ничего, но как заставить терминальную программу воспринять 0x1A именно как HEX, а не как текст ???? я посмотрел несколько примеров, но все они оказались неверные... вот они: 0x1A <0x1A> $1A <$1A> ctrl-z <ctrl-z> ctrl+z <ctrl+z> \x1a ( посоветовали на форуме, но и это неправильно ) Но я все же победил, скопировав из гипертерминала символ, который выводится на дисплей при нажатии сочетания клавиш CTRL+Z Вот он "→" ( набирать его нужно без кавычек ) - копируйте его от сюда.
Если вы попытаетесь получить этот символ с помощью различных программ типа text to hex, то поспешу разочаровать - ни чего не получится! Я пробовал - сочетание клавиш CTRL+Z не набирается в таких программах.
Отправлять ХЕКС через гипертерминал я так и не научился Есть альтернативные программы для работы с терминалом - с ними можно решить этот вопрос. Читаем тут http://vg.ucoz.ru/forum/15-334-1
С управлением GSM модулем через терминал с ПК, я разобрался. Теперь нужно сообразить как организовать передачу данных из микроконтроллера.
Задача: Научиться отправлять СМС с микроконтроллера с текстом "TEST"
в гипертерминале это выглядит так:
ati Команда проверки модели и версии модуля AT+CMGF=1 включить текстовый формат AT+CSCS="GSM" кодировка ASCII ( приходит текст ) AT+CSCB=1 отключить прием широковещательных сообщений AT&W сохранить текущие настройки AT&W1
AT+CMGS="+7950*******" - номер телефона test - текст "тест" → - символ для отправки ( 0x1A )
каждая команда заканчивается клавишей "enter" теперь нужно понять как это сделать из МК интересуют такие нюансы как возврат каретки, перенос строки и enter
я пытаюсь соорудить массив в программной памяти
.db "ATI", 0x0D ; Команда проверки модели и версии модуля .db "AT+CMGF=1", 0x0D ; включить текстовый формат .db "AT+CSCS="GSM"", 0x0D ; кодировка ASCII ( приходит текст ) .db "AT+CSCB=1", 0x0D ; отключить прием широковещательных сообщений .db "AT&W", 0x0D ; сохранить текущие настройки .db "AT&W1", 0x0D ; сохранить текущие настройки
.db "AT+CMGS="+7950*******"", 0x0D ; НОМЕР ТЕЛЕФОНА для СМС .db "test", 0x0D ; текст - "test" .db 0x1A, 0x0D ; отправить смс ""
вот так нужно:
Код
.db "ATI", 0x0D ; Команда проверки модели и версии модуля
Разобрался !!!! контакты GND - разные!!! Несмотря на то, что они звонятся мультиметром и сидят на общей шине. Крайний контакт ( который подписан как .GND ) это контакт питания, а тот что рядом с BOOT нужен для того что бы на него повесить перемычку. Скорей всего все дело в разводке. Китайцы развели плату так как им было удобнее.
И почему то микроконтроллер не правильно передает сообщение
видимо в AVR-Студио_4 - корявый компилятор.... БУДЬТЕ БДИТЕЛЬНЫ !!!!
В итоге программа получилаcь. Результат смотрите в прикрепленном архиве. Теперь массив не один - каждая новая команда это массив. И внимательно смотрим на прерывания - когда что то шлю, то отключаю прием. Когда принимаю, то отключаю передачу.
На следующей картинке представлена схема с рекомендуемой обвязкой модуля:
GSM модуль NEOWAY M590, схема подключения Модуль питается напряжением 3,3 – 4,5В, максимальный ток потребления кратковременно может достигать 2А (особенно в момент включения), поэтому конденсатор C1 должен иметь минимальную емкость в 1000 мкФ, желательно больше. В режиме ожидания средний ток потребления модуля равен 25 мА.
Для включения модуля необходимо подать положительный импульс на линию ON/OFF (база транзистора VT1), длительность импульса должна быть не менее 300 мс. После успешного включения и выхода в рабочий режим, светодиод статуса HL1 начнет мигать с частотой в 1Гц. Рекомендуется выдержать паузу в 2 секунды после включения, прежде чем отправлять команды на модуль. При включении модуль выдает сообщение MODEM:STARTUP, затем через 10-15 секунд сообщение +PBREADY, означающее, что телефонная книга готова к использованию.
Для выключения модуля необходимо повторно подать такой же положительный импульс, или же отправить специальную команду на выключение (AT+CPWROFF). В выключенном состоянии модуль потребляет ток в пределах 80 мкА.
Номинальное рабочее напряжение линий ввода/вывода модуля (RXD, TXD, DTR, RING, LED) составляет 2,85В. Напряжения на линиях ввода (RXD, DTR) не должны превышать 3,3В, для исключения их повреждения, поэтому для их сопряжения с логическими уровнями большего напряжения установлены элементы VD1, R1, VD2, R2. С помощью резисторов эти входы подтягиваются к линии VCCIO, после включения модуля на этой линии появляется напряжение величиной 2,85В (макс. выход. ток 3 мА), тем самым обеспечивается безопасный логический уровень для линий ввода. Диоды предотвращают входы от перенапряжения.
В случае зависания модуля, имеется возможность аварийного выключения, для этого необходимо подать положительный импульс на линию EMERGENCY OFF (база транзистора VT2) длительностью 100 мс. После этого необходимо выдержать паузу в 5 секунд перед повторным включением, чтобы исключить возможность повреждения модуля.
“Общение” с модулем осуществляется с помощью стандартного интерфейса UART, линия MCU TX подключается к выходу передатчика управляющего устройства (микроконтроллер, компьютер), вывод MCU RX к входу приемника управляющего устройства.
Для снижения энергопотребления в модуле предусмотрен спящий режим, по умолчанию этот режим отключен, для его включения необходимо предварительно подать команду на разрешение спящего режима (at+enpwrsave=1). Затем необходимо установить низкий логический уровень на линии SLEEP, после чего, через 10-30 секунд модуль “заснет”. Во время “сна” модуль не реагирует на команды, поступающие по UART. Установка высокого логического уровня на линии SLEEP, выводит модуль из спящего режима в течение 50 мс. Если во время “сна” поступит SMS сообщение, данные от сервера, или входящий звонок, то модуль проснется и отправить соответствующее сообщение по UART, после чего управляющее устройство должно выставить высокий логический уровень на линии SLEEP, чтобы продолжить обмен данными. Если этого не произойдет, модуль автоматически уйдет в “сон” в течение 10-30 сек. В спящем режиме потребляемый ток составляет 2,5-3 мА.
При поступлении входящего вызова на линии RING появляются импульсы с низким логическим уровнем длительностью 30 мс, частота следования один раз в 5 секунд (в такт звуку гудка). При получении SMS сообщения, на линии появляется однократный импульс длительностью 25-35 мс. Данную линию можно использовать для генерации прерываний в управляющем устройстве.
Линии DCD (16-й вывод модуля), DSR (17-й вывод модуля) не используются, остальные выводы задействованы для подключения СИМ карты A2.
В модуле отсутствует микрофонный вход, поэтому голосовую связь осуществить не получится, но само соединение устанавливается, если принять звонок от модуля, в динамике будет стоять тишина.
Чтобы поработать с модулем я подключил его к компьютеру с помощью USB-UART преобразователя. В качестве терминальной программы я использовал Terminal v1.9b by Bray. В программе необходимо выставить следующие настройки подключения: 8 бит данных, без проверки четности, один стоповый бит, управление потоком отключаем. По умолчанию модуль настроен на скорость 9600 бит/сек, также поддерживаются 1200, 2400, 4800, 19200, 38400, 57600, 115200 бит/сек.
пригодится табличка Список из 256 символов и их коды в ASCII. в том числе: Управляющие символы, Печатные символы, Расширенные символы ASCII Win-1251 кириллица
https://www.promelec.ru/product/307472/ KLS1-SIM-010-6P-1-R, SIM Card Connector Type; Without peg;Taping;6P;RoHS держатель сим карты не успеваю за своими мыслями......