Пользовательские блоки для работы с GSM модулями.

Блок работает по принципу Запрос-Ответ. Модулю посылается команда, и анализируется ответ.
Тем самым удалось полностью уйти от временных задержек и использования оператора 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. Часть вторая.


5

Вложения

  • zip GSM-NEW
    Дата добавления: 10.11.2019 11:54 Размер файла: 22 МБ Кол-во скачиваний: 4198

Автор публикации

не в сети 3 дня

Сергей Глушенко

782
Комментарии: 15Публикации: 391Регистрация: 04-02-2018

7 комментариев к “Пользовательские блоки для работы с GSM модулями.”

  1. Огромное спасибо за отличный пакет блоков! Собрал проект с обратной голосовой связью, но для корректной работы на блоке «звонки» очень не хватает выхода «статус соединения»  точнее он есть только единица появляется если звонишь на модуль а на оборот выход не активен. В некоторых проекта очень не хватает этого выхода не могли бы вы сделать чтобы выход «соединение» работал как на входящее так и исходящее вызовы.

    С уважением Влад!

    0
  2. Здравствуйте всем! Кто нибудь сталкивался с такой ситуацией. АТ команды SIM800L выполняет все, и даже через COM порт сделал звонок на мой телефон. Блок, скачанный здесь, напрочь отказывается работать. Светодиоды на макетной плате  Старт и Нашёл сеть не загораются. Хотя видно, что вначале включения светодиод на SIM800L мигает очень быстро, а через 3-5 сек начинает мигать 1 раз в 3 сек, а это значит модуль нашёл сеть. Ардуино и SIM800L при включении синхронизированы через Pin Reset. Делал всё по видео урокам Ключ к Ардуино и Грачика Чилингаряна. Подскажите  в чём может быть причина отказа работать у меня этого пользовательского блока.                                                                                                                                                                     Всех заранее благодарю за помощь.

    1
  3. Здравствуйте . Сомневаюсь что ответит кто то , но напишу. Попробовал блоки с модулем SIM900A  , модуль прошитый под наши мобильные сети . Блоки  GSM SoftwareSerial , GSM_SIM900 , GSM_Основной — работают …..блок GSM_DTMF при его интегрировании в скетч , выдает ошибку компиляции . Использую проект Грачика ,, Сигнализация дачного домика,, Но под модуль SIM900  , у грачика SIM800 …….Надо конечно автору блоков это спрашивать…….надеюсь он увидит .

    1
  4. 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

     

     

     

     

    0
  5. Есть ли обсуждение на форуме? не смог найти.  пришлите пожалуйста пример для сим900 и ардуино-нано328 при размыкании цифрового пина с землей (подключен подтягивающий R) отправлялась СМС и при входящем вызове определялся номер — сравнивался с эталонным номером, сбрасывал вызов и например включал светодиод на 13 пине ардуинки. Подключал модуль к НАНО только RX-TX-GND. Модуль работает — вызов идет, но пин на ардуино замыкаю-размыкаю, а СМС не отправляет.

    0

Оставьте комментарий

Войти с помощью: