Мобільна версія Форум Arduino Документація Гарантійні умови 0 0
UA RU
Графік роботи магазину:
Пн-Пт: 8.00 - 19.00
Сб: 10.00 - 17.00
Нд: вихідний
Каталог
Напиши статтю і отримай знижку!

ARDUINO. Сопряжение MEGA2560 с GSM-модулем.

2013-02-06

Всі статті →

Игорь Дядюра, pingchuk [at] gmail точка com

Выбирая для дачной сигнализации подходящий контроллер, который смог бы обеспечить подключение достаточного количества цифровых и аналоговых датчиков, управляемых программно реле, нескольких шин с цифровыми термометрами, многострочного дисплея – вряд ли нужно экономить сотню гривен, обрезая возможности (в том числе для последующего развития и наращивания). Лучше использовать оснащенный «по полной» контроллер MEGA2560: линий ввода/вывода этого контроллера должно хватить для самой функционально и интерфейсно насыщенной сигнализации.

Для обеспечения основной функции: собственно «сигнализации», т.е. информирования устройством своего хозяина о нештатной ситуации (или предоставления информации о состоянии объекта по запросу) прибору требуется телекоммуникационная компонента, в качестве которой для контроллеров ARDUINO идеально подходит GSM-шилд или  GSM-модуль.

Опубликованная библиотека GSM_Shield, которая сопровождает GSM-модуль, не самым лучшим образом подходит для MEGA2560: она предполагает использование программно-эмулируемого последовательного интерфейса через библиотеку SoftwareSerial, хотя у MEGA2560 аппаратных последовательных портов – в избытке (четыре!). При использовании в качестве контроллера мощной платы MEGA2560 - нет никакого смысла эмулировать программно последовательный порт, занимать место в памяти программ и тратить ресурсы процессора и два цифровых вывода.

В связи с перечисленными выше соображениями, библиотека GSM_Shield была подвергнута некоторой модификации. Везде по тексту имя SoftwareSerial заменено на Serial1, попутно из библиотеки удалены все дебаги и работа с DTMF (и так «заремленая» в библиотеке). Однако, конечно же, с ходу часть методов библиотеки не заработала, пришлось потратить вечер на отладку. В итоге обнаружилось, что при передаче модулю целочисленных параметров в оригинальной библиотеке используется конструкция SoftwareSerial.write (int).  Просмотрев описания используемых модулем AT-команд, можно убедиться, что модулю эти параметры нужны в «человеческом виде», т.е. параметр «10» надо передать не одним байтом с кодом «10» (x0a), а двумя байтами, численно равными кодам символов «1» (x31) и «0» (x30). Можно, конечно же, посимвольно перекодировать параметр и передавать его несколькими последовательными конструкциями (например, в цикле) Sеrial1.write (int).  Но лучше использовать стандартную конструкцию Sеrial1.print (int), которая сама позаботится о перекодировке в «человечески-понятную» последовательность. После выполнения полной замены write на print – библиотека заработала нормально, во всяком случае протестированы: отправка и прием СМС, исходящий и входящий звонки, прием звонка и отбой (hang up).

Модифицированную библиотеку можно скачать по ссылке.

Ваша оцінка статті:

Відмінно
Добре
Задовільно
Погано
Дуже погано

Дякуємо Вам за звернення! Ваш відгук з'явиться після модерації адміністратором.
Поки немає відгуків на цю статтю.
оплата картами Visa і MasterCard