Блок работает по принципу Запрос-Ответ. Модулю посылается команда, и анализируется ответ.
Тем самым удалось полностью уйти от временных задержек и использования оператора delay()(останавливает выполнение всей программы на указанное количество мс), который используется в большинстве примеров по работе с такими модулями.
1. Для M590
Реализованы следующие функции:
– Отправка SMS (только латинский вариант)
– Прием SMS (только латинский вариант)
– Обработка входящего звона.
* Определение номера звонящего
* Подсчет числа гудков входящего вызова
* Сброс вызова
*Так как модуль не имеет входов под микрофон и динамик, остальные функции голосового соединения не реализованы.
– Периодический опрос модуля на :
* Наличие регистрации в сети оператора
* Уровень сигнала, в dBm
* Имя оператора сотовой связи
* Текущее время модуля . Синхронизации времени с вышкой сотовой связи, идет при запуске модуля, для повторной, его необходимо перезагрузить
– Работа с USSD запросами
– Работа с телефонной книгой SIM-карты. Предназначено для возможности задачи рабочих номеров не в проекте, а на сим карте, и главное возможности смены рабочих номеров, без перепрограммирования контроллера.
-Реализовано возможность исходящего голосового вызова (разговор невозможен, не имеет входов под микрофон и динамик )
-Добавлен параметр выбора частоты работы сотовой связи авто/900/1800.
2 Для SIM800
Поддерживает все функции описанные для M590, за некоторыми отличиями:
– Обработка входящих звонков, возможно установка соединения и разговора
– Исходящий голосовой вызов
– Поддержка приема DTMF кодов.
Подробнее в описании блока.
3 Для SIM900
Поддерживает все функции описанные для SIM800, за некоторыми отличиями:
– Поддержка приема DTMF кодов. (Не работает в некоторых прошивках, в этом случаи надо отключать через параметры )
Подробнее в описании блока.
Блок может работать как с аппаратными COM портами, так и SoftwareSerial.
Ограничения при использовании SoftwareSerial
На платах Arduino Mega и Mega2560 некоторые выводы не поддерживают прерывания, возникающие при изменении уровня сигнала. В силу этого, на данных платах в качестве вывода RX могут использоваться только следующие выводы: 10, 11, 12, 13, 14, 15, 50, 51, 52, 53, A8 (62), A9 (63), A10 (64), A11 (65), A12 (66), A13 (67), A14 (68), A15 (69).
На Arduino Leonardo некоторые выводы не поддерживают прерывания, возникающие при изменении уровня сигнала. Поэтому, на этой плате в качестве вывода RX могут использоваться только следующие выводы: 8, 9, 10, 11, 14 (MISO), 15 (SCK), 16 (MOSI).
Подробнее в описании блока.
Приводить описания подключения не буду, приложу даташиты модулей, и ссылки на статьи, где это подробно описано.
Единственное, модули очень требовательны к питанию, и еще желательно согласование логических уровней при подключении к COM потру. Модуль имеет уровень на 3.3В, а Arduino, обычно 5В.
Перед началом работы с модулем необходимо подключится к модулю напрямую.
Используем USB – com преобразователь (возможно использовать для этих целей платы ардуино с замкнутым GND и RESET) Произвести ряд настроек, как это делаться читайте с статьях приведенный в конце.
Обязательно настройка порта (AT+IPR=).
Для модуля SIM800, также включить получение времени ( AT+CLTS=1)
Еще прилагаю два блока для расшифровки времени, которое выдает блок работы с GSM модулем.
В разработке и тестировании блоков очень помогли пользователи НовыйUser, stapmoff,
Обещанные ссылки :
GSM модуль NEOWAY M590 – описание и команды управления
Отправка СМС через Arduino и GSM модуль NEOWAY M590
Подключение GSM модуля SIM800L к Arduino
GSM/GPRS модуль SIM900
GSM/GPRS модуль SIM900. Часть вторая.
Огромное спасибо за отличный пакет блоков! Собрал проект с обратной голосовой связью, но для корректной работы на блоке “звонки” очень не хватает выхода “статус соединения” точнее он есть только единица появляется если звонишь на модуль а на оборот выход не активен. В некоторых проекта очень не хватает этого выхода не могли бы вы сделать чтобы выход “соединение” работал как на входящее так и исходящее вызовы.
С уважением Влад!
А модули без сим карты могут выдавать уровень сигнала?
хочу сделать тестер для настройки уличных антенн
Здравствуйте всем! Кто нибудь сталкивался с такой ситуацией. АТ команды SIM800L выполняет все, и даже через COM порт сделал звонок на мой телефон. Блок, скачанный здесь, напрочь отказывается работать. Светодиоды на макетной плате Старт и Нашёл сеть не загораются. Хотя видно, что вначале включения светодиод на SIM800L мигает очень быстро, а через 3-5 сек начинает мигать 1 раз в 3 сек, а это значит модуль нашёл сеть. Ардуино и SIM800L при включении синхронизированы через Pin Reset. Делал всё по видео урокам Ключ к Ардуино и Грачика Чилингаряна. Подскажите в чём может быть причина отказа работать у меня этого пользовательского блока. Всех заранее благодарю за помощь.
Добрый день!
Файл запаролен.
Так и должно быть?
Здравствуйте . Сомневаюсь что ответит кто то , но напишу. Попробовал блоки с модулем SIM900A , модуль прошитый под наши мобильные сети . Блоки GSM SoftwareSerial , GSM_SIM900 , GSM_Основной – работают …..блок GSM_DTMF при его интегрировании в скетч , выдает ошибку компиляции . Использую проект Грачика ,, Сигнализация дачного домика,, Но под модуль SIM900 , у грачика SIM800 …….Надо конечно автору блоков это спрашивать…….надеюсь он увидит .
GSM модуль NEOWAY M590 хотела проверить примеры, а они не компилируются что Тест 0.5 что Тест 0.6.
Arduino: 1.8.1 (Windows 7), Плата:”Arduino Nano, ATmega328P”
C:\Users\Сергей\AppData\Local\Temp\flprog\pr6\pr6.ino: In function ‘void setup()’:
pr6:114: error: ‘Serial3’ was not declared in this scope
C:\Users\Сергей\AppData\Local\Temp\flprog\pr6\pr6.ino: In function ‘void loop()’:
pr6:207: error: ‘Serial3’ was not declared in this scope
pr6:263: error: ‘Serial3’ was not declared in this scope
C:\Users\Сергей\AppData\Local\Temp\flprog\pr6\pr6.ino: In function ‘void GSM_AT_Command(const __FlashStringHelper*, String, byte)’:
pr6:646: error: ‘Serial3’ was not declared in this scope
C:\Users\Сергей\AppData\Local\Temp\flprog\pr6\pr6.ino: In function ‘bool GSM_sms_sent()’:
pr6:712: error: ‘Serial3’ was not declared in this scope
C:\Users\Сергей\AppData\Local\Temp\flprog\pr6\pr6.ino: In function ‘void GSM_AT_Command(const __FlashStringHelper*, byte)’:
pr6:785: error: ‘Serial3’ was not declared in this scope
C:\Users\Сергей\AppData\Local\Temp\flprog\pr6\pr6.ino: In function ‘void GSM_Command(const __FlashStringHelper*, byte)’:
pr6:823: error: ‘Serial3’ was not declared in this scope
exit status 1
‘Serial3’ was not declared in this scope
Есть ли обсуждение на форуме? не смог найти. пришлите пожалуйста пример для сим900 и ардуино-нано328 при размыкании цифрового пина с землей (подключен подтягивающий R) отправлялась СМС и при входящем вызове определялся номер – сравнивался с эталонным номером, сбрасывал вызов и например включал светодиод на 13 пине ардуинки. Подключал модуль к НАНО только RX-TX-GND. Модуль работает – вызов идет, но пин на ардуино замыкаю-размыкаю, а СМС не отправляет.