Как подключить gsm модуль к компьютеру

Обновлено: 18.05.2024

Прошивка

Волею судеб, у меня в руках оказался модуль GSM900A. Прочитав первый попавшийся форум про оживление этой штуки, выяснилось, что буква A в названии означает принадлежность модуля к азиатскому региону. А следовательно, работать с нашими операторами он не станет. Уныние 🙁

Благо, в следующих постах на том же форуме содержалась успокаивающая информация:) Оказалось, что не всё так плохо, и чтобы модуль заработал в нашем регионе, его нужно попросту перепрошить. Этот процесс хорошо описан в блоге нашего соратника Alex-EXE: прошивка «all in one» sim900
Попробую сделать то же самое, но еще более подробно, и с учетом особенностей моего модуля.

Если у вас правильный модуль и прошивка не требуется, можно сразу прыгать на раздел №2.

Инструменты

Итак, для начала подготовим все необходимые инструменты. Во-первых, непосредственно для прошивки потребуется приложение SIM900 Series download Tools Develop, которое можно легко найти в интернете (хотя бы тут).

Во-вторых, пригодится и сам файл прошивки 1137B02SIM900M64_ST_ENHANCE, который тоже легко добывается (я брал тут).

Наконец, в-третьих, нам нужен будет хороший терминал для экспериментов с модулем. Обычно я использую TeraTerm, но в этот раз его возможностей нехватило (или я не разобрался). Пришлось установить монстра с гениальным названием Terminal.

Подключение к USB-UART мосту

Теперь подключаем линии RX и TX к мосту. В качестве последнего я использовал CP2102. В моем случае, вопреки логике, RX и TX моста соединялись с RX и TX GSM-модуля симметрично (а не крест-накрест, как принято).

Также следует запитать модуль от стабильного и мощного источника, так как пиковый ток на модуле может достигать 2А (якобы). Подойдут 4 аккумулятора типоразмера AA. Полная схема включения выглядит так:

SIM900
CP2102 Gnd Gnd
CP2102 +5V VCC_MCU
CP2102 RX SIMR
CP2102 TX SIMT
Внешний источник +5В VCC5
Внешний источник Gnd Gnd
RST

У данной модели нет кнопки сброса, так что для прошивки нам потребуется на пару секунд кинуть контакт RST на землю. Для этого мы пока оставим его висеть в воздухе.

Предварительная настройка модуля

Всё общение с модулем происходит посредством AT-команд.

terminal

Данная настройка понадобится нам для ускорения процедуры прошивки. В противном случае, как указал в своем блоге Alex-EXE, прошивка займет около часа.

Настройка программы

После того, как все провода воткнуты в нужные места, и модуль подготовлен к прошивке, запускаем приложение SIM900 Series download Tools Develop. Настройка программы состоит всего из нескольких пунктов:

С настройкой всё.

Прошивка

Теперь выполняем строго и последовательно шесть важных шагов.

  • Подключаем к модулю питание (наши 4 аккумулятора). Должна загореться красная лампа питания, а лампа статуса должна начать мигать.
  • Подключаем USB-UART к компьютеру.
  • Замыкаем провод RST на землю (помним, что все это время он болтался в воздухе).
  • Нажимаем в программе кнопку Start Download.
  • Считаем в уме до трех, и отрываем RST от земли.

Ждем 6 минут до завершения прошивки.

Что мы имеем после прошивки

Во-первых, модуль теперь умеет работать с нашими операторами. Во-вторых, мы поставили расширенную прошивку, среди особенностей которой, к примеру, получение координат модуля по сотовым вышкам, работа с электронной почтой и доступ к дополнительным 2.5 Мб памяти.

Эксперименты с GSM модулем

Попробуем теперь выполнить разные полезные операции с модулем. Для начала, введем ПИН-код (если он есть):

Ответ модуля будет таким:

После этого получим от модуля немного информации.

Телефонные вызовы

Теперь наберем какой-нибудь номер. Делается это с помощью команды:

Точка с запятой в конце команды очень важна, на забудьте про неё!

Ответить на звонок (взять трубку) можно командой:

Если к модулю подключены наушники и микрофон, то можно пообщаться с удаленным абонентом как по обычному сотовому телефону.

Завершает вызов команда:

Отправка SMS

и установим кодировку:

Прием SMS

В ответ получим:

В общем, все просто. Этого нам вполне достаточно для реализации задуманного. Для более глубокого изучения возможностей GFM900 рекомендую почитать еще одну статью Alex-EXE: at-команды gsm модема sim900

Взаимодействие с микроконтроллерами

Вообще, чтобы управлять внешними устройствами вовсе не обязательно спаривать модуль GSM900 с другим микроконтроллером. В этот модуль можно зашить свою программу, которая будет делать всё что угодно со свободными GPIO выводами. Однако, в большинстве готовых плат GPIO не разведены, поэтому для создания прототипа задуманного устройства воспользуемся самой простой Arduino Uno/Nano.

Общаться Arduino и GSM900 будут всё по тому же UART интерфейсу. Для этого соединим эти два устройства по следующей схеме:

GSM900GNDVCC_MCUSIMTSIMR
Ардуино УноGND+5VRXTX

Теперь составим программу, которая будет ловить СМС-ки, и зажигать светодиод на ноге №13 на пару секунд. Этим мы имитируем управление неким внешним устройством.

К размышлению

Данный модуль является устаревшим. Рекомендуем использовать более свежие модули SIM800.

Хотите ли вы слышать то, что происходит в вашем доме, который находится на расстоянии многих километров от вас, или активировать систему полива в вашем саду просто беззвучным звонком, тогда плата расширения SIM900 GSM/GPRS Shield станет надежной отправной точкой для начала работы с IoT!

Как отправлять/принимать SMS и звонить с платой расширения SIM900 GSM Shield и Arduino

Как отправлять/принимать SMS и звонить с платой расширения SIM900 GSM Shield и Arduino

Содержание

Обзор аппаратного обеспечения SIM900 GSM/GPRS Shield

Плата расширения SIM900 GSM/GPRS Shield разработана для того, чтобы снабдить чип SIM900 всем необходимым для взаимодействия с Arduino, а также несколькими дополнительными вкусностями, чтобы воспользоваться уникальными функциями чипа.

Давайте познакомимся с особенностями и возможностями этой платы расширения. Вот краткий обзор:

Рисунок 1 – Аппаратное обеспечение SIM900 GSM/GPRS Shield. Вид сверху Рисунок 2 – Аппаратное обеспечение SIM900 GSM/GPRS Shield. Вид снизу

Плата расширения SIM900 GSM/GPRS Shield обладает удивительным количеством функций при своих маленьких размерах. Некоторые из них перечислены ниже:

Для получения дополнительной информации о чипе сотовой GSM связи SIM900 смотрите техническое описание:

Светодиодные индикаторы состояния

На плате расширения SIM900 GSM/GPRS Shield есть три светодиода, которые указывают на состояние подключения или питания. Наблюдая за этими светодиодами, вы можете получить визуальную информацию о том, что происходит с платой расширения.

Светодиодные индикаторы на SIM900 GSM/GPRS Shield

Рисунок 3 – Светодиодные индикаторы на SIM900 GSM/GPRS Shield

PWR: этот светодиод подключен к линии питания платы расширения. Если этот светодиод включен, плата расширения получает питание.

Status: этот индикатор показывает рабочее состояние SIM900. Если этот светодиод включен, микросхема находится в рабочем режиме.

Netlight: этот индикатор показывает состояние подключения к сотовой сети. Он будет мигать с разной скоростью, чтобы показать, в каком оно состоянии.

Питание для SIM900 GSM/GPRS Shield

Одной из наиболее важных частей работы платы расширения SIM900 GSM/GPRS Shield является обеспечение её достаточным питанием.

В зависимости от того, в каком состоянии он находится, SIM900 может быть относительно энергоемким устройством. Максимальный ток потребления чипа составляет около 2А во время передачи. Обычно он не требует так много, но может потребовать около 216 мА во время телефонных звонков или 80 мА во время передачи по сети. Следующая таблица описывает, что вы можете ожидать:

Потребление тока чипом SIM900 в различных состояниях
РежимЧастотаПотребляемый ток
Выключен 60 мкА
Спящий режим 1 мА
Режим ожидания 18 мА
ЗвонокGSM850199 мА
EGSM900216 мА
DCS1800146 мА
PCS1900131 мА
GPRS 453 мА
Старт передачи 2 А

Рабочее напряжение чипа SIM900 составляет от 3,4 до 4,4 В. Чтобы обеспечить безопасное напряжение питания при 4,1 В, плата расширения поставляется с мощным, высокоточным стабилизатором напряжения MIC29302WU с малым падением напряжения от Micrel, способным выдерживать токи нагрузки до 3 А.

Разъем питания постоянным напряжением, переключатель выбора источника питания и MIC29302 на SIM900 GSM Shield

Рисунок 4 – Разъем питания постоянным напряжением, переключатель выбора источника питания и MIC29302 на SIM900 GSM Shield

Вы можете подключить к плате расширения внешний источник питания с помощью разъема 5,5 мм, к которому можно подключить любой адаптер постоянного напряжения 5–9 В. Рядом с разъемом питания находится ползунковый переключатель для выбора источника питания с надписью EXTERN. Чтобы использовать внешний источник питания, переместите ползунок, как показано выше.

ВНИМАНИЕ

Источник питания должен обеспечивать минимальный пиковый ток 2 А, в противном случае микросхема будет продолжать отключаться.

Связь через UART

Плата расширения SIM900 GSM/GPRS Shield для связи с Arduino использует интерфейс UART. Чип поддерживает скорость передачи от 1200 бит/с до 115200 бит/с с автоматическим определением скорости.

Перемычка выбора UART на SIM900 GSM Shield

Рисунок 5 – Перемычки выбора UART на SIM900 GSM Shield

С помощью перемычек вы можете подключить (RX, TX) платы расширения к программному последовательному порту (D8, D7) или аппаратному последовательному порту (D1, D0) Arduino.

Установка перемычек выбора UART на SIM900 GSM Shield

Рисунок 6 – Установка перемычек выбора UART на SIM900 GSM Shield

Динамик и микрофон

Плата расширения поставляется с двумя стандартными разъемами 3,5 мм. Один для стереонаушников, и другой для монофонического микрофона. Плата позволяет использовать аудиоинтерфейс SIM900 для совершения и приема голосовых вызовов и прослушивания FM радио.

Динамик и микрофон на SIM900 GSM Shield

Рисунок 7 – Разъемы динамика и микрофона на SIM900 GSM Shield

Mic: к этому разъему можно подключить внешний электретный микрофон.

Earphone: к этому разъему можно подключить наушники. Все наушники, совместимые с "iPhone" или "Android" телефонами, должны работать.

Антенна

Антенна необходима для использования SIM900 для любого типа передачи голоса или данных, а также для некоторых команд SIM.

Антенный SMA и U.FL. разъем на SIM900 GSM Shield

Рисунок 8 – Антенные SMA и U.FL. разъемы на SIM900 GSM Shield

Плата расширения имеет два интерфейса для подключения антенны, а именно, разъем U.FL и разъем SMA. Они соединены через патч-корд.

Плата расширения обычно поставляется с GSM-антенной 3 дБи, что позволяет установить плату расширения внутри металлического корпуса (если антенна находится снаружи).

Разъем для SIM карты

На нижней стороне платы находится гнездо для SIM карты. Любая активированная полноразмерная 2G SIM карта будет работать отлично.

Держатель SIM карты на SIM900 GSM Shield

Рисунок 9 – Держатель SIM карты на SIM900 GSM Shield

Работа с держателем для SIM карты может потребовать некоторого привыкания. Чтобы разблокировать защелку, нажмите на верхнюю часть сборки, а затем поднимите её. Поместите SIM-карту в нижнюю часть держателя. Затем положите руку обратно в корпус держателя и осторожно протолкните его вперед в положение блокировки.

RTC (часы реального времени)

Плата расширения SIM900 GSM/GPRS Shield может быть настроена на сохранение времени. Таким образом, нет необходимости в отдельном RTC. Она сохранит время даже при выключенном питании.

Рисунок 10 Держатель батареи CR1220 RTC на SIM900 GSM Shield

Рисунок 10 – Держатель батареи CR1220 RTC на SIM900 GSM Shield

Если вы хотите использовать внутренний RTC, вам необходимо установить батарею CR1220 на задней стороне платы.

ПРИМЕЧАНИЕ

Ваш оператор сети может не поддерживать установку времени автоматически. В этом случае вы можете сделать это вручную, используя AT команду AT+CCLK .

Подключение платы расширения SIM900 GSM/GPRS Shield к Arduino UNO

Теперь, когда мы знаем всё о плате расширения, мы можем подключить её к нашей плате Arduino!

Для начала подключите контакты D7 (Tx) и D8 (Rx) на плате расширения к цифровым выводам 7 и 8 на Arduino. Поскольку для связи с платой расширения мы будем использовать программный последовательный порт, убедитесь, что перемычки установлены на выбор программного последовательного порта.

Подключение платы расширения SIM900 GSM/GPRS Shield к Arduino UNO

Рисунок 11 – Подключение платы расширения SIM900 GSM/GPRS Shield к Arduino UNO

Подключите плату расширения к внешнему источнику питания 5В 2A. Не поддавайтесь искушению подключить ее к источнику питания 5В на Arduino, так как плата расширения может не работать из-за недостатка тока источника питания. Также убедитесь, что вы выбрали внешний источник питания с помощью ползункового переключателя рядом с разъемом питания.

Теперь подключите все земли в схеме.

Наконец, подключите антенну, вставьте полностью активированную SIM карту в держатель.

Подключение платы расширения SIM900 GSM/GPRS Shield к компьютеру

Чтобы управлять платой расширения SIM900 GSM/GPRS Shield напрямую через компьютер, вам необходимо подключить её к ПК с помощью любого преобразователя USB в TTL.

На рисунке ниже показано, как SIM900 GSM Shield подключен к компьютеру через PL2303 конвертер USB в TTL.

Подключение SIM900 GSM Shield к ПК через преобразователь PL2303 USB-TTL

Рисунок 12 – Подключение SIM900 GSM Shield к ПК через преобразователь PL2303 USB↔TTL

Включение/выключение чипа SIM900

Даже если вы включите плату расширения, вам нужно еще включить чип SIM900, чтобы он заработал.

В соответствии с техническим описанием, установив на выводе PWRKEY чипа низкий логический уровень (лог. 0) в течение как минимум 1 секунды, можно включить/выключить чип. У нашей платы расширения есть два способа сделать это.

Аппаратный запуск

Кнопка включения/выключения чипа SIM900

Рисунок 13 – Кнопка включения/выключения чипа SIM900

Плата расширения снабжена тактильной кнопкой, расположенной под прямым углом рядом со светодиодным индикатором PWR. Вам нужно нажать и удерживать эту кнопку в течение примерно 2 секунд, чтобы включить или выключить плату расширения.

Программный запуск

Вместо того, чтобы каждый раз вручную нажимать PWRKEY, вы можете программно включать/выключать SIM900.

Во-первых, вам нужно запаять SMD перемычку, обозначенную как R13 на плате расширения, как показано на рисунке ниже.

Запаиваемая перемычка R13 на SIM900 GSM Shield для программного управления

Рисунок 14 – Запаиваемая перемычка R13 на SIM900 GSM Shield для программного управления

Затем вам нужно подключить вывод D9 на плате расширения к выводу D9 на Arduino.

Подключение SIM900 GSM Shield к Arduino для программного управления

Рисунок 15 – Подключение SIM900 GSM Shield к Arduino для программного управления

Наконец, вам нужно добавить следующую функцию в вашу программу.

Код Arduino – тестирование AT команд

Для отправки AT команд и взаимодействия с платой расширения SIM900 мы будем использовать монитор последовательного порта. Приведенный ниже скетч позволит Arduino связываться с платой расширения SIM900 в мониторе последовательного порта. Прежде чем приступить к подробному разбору кода, подключите Arduino к компьютеру, скомпилируйте приведенный ниже код и загрузите его в Arduino.

Открыв монитор последовательного порта, убедитесь, что выбрана опция "NL & CR"!

Скетч начинается с включения библиотеки SoftwareSerial.h и ее инициализации выводами Arduino, к которым подключены Tx и Rx платы расширения SIM900.

В функции setup() мы инициализируем последовательные каналы связи между Arduino и Arduino IDE, Arduino и платой расширения SIM900 со скоростью передачи 9600 бод.

Теперь, когда мы установили базовое соединение, мы попытаемся установить связь с платой расширения SIM900, отправляя AT команды.

AT+CSQ – проверить «уровень сигнала» - первое число – это уровень в дБ, он должен быть выше 5. Чем выше, тем лучше. Конечно, это зависит от вашей антенны и местоположения!

AT+CCID – получить номер SIM-карты – она проверяет, что SIM карта найдена, и вы можете сверить номер, записанный на карте.

В основном цикле программы мы вызываем пользовательскую функцию updateSerial() , которая непрерывно ожидает любые входные данные от последовательного монитора и отправляет их на плату расширения SIM900 через вывод D8 (Rx платы расширения). Она также постоянно читает вывод D7 (Tx платы расширения) на случай, если плата расширения выдает какие-либо отклики.

В мониторе последовательного порта вы должны увидеть вывод, примерно такой как показан ниже.

Базовые AT команды SIM900 GSM Shield на Arduino

Рисунок 16 – Базовые AT команды SIM900 GSM Shield на Arduino

Теперь вы можете свободно отправлять любые команды через монитор последовательного порта, например, те, которые показаны ниже, и которые дает дополнительную информацию о подключении к сети и состоянии аккумулятора:

ATI – получить имя и версию платы расширения

AT+COPS? – проверить, что вы подключены к сети

AT+COPS=? – вернуть список операторов, присутствующих в сети

AT+CBC – вернуть состояние литий-полимерного аккумулятора. Второе число является процентом от полного заряда (в данном случае это 93%), а третье число является фактическим напряжением в мВ (в данном случае 3,877 В)

Получение дополнительной информации от SIM900 GSM Shield с помощью AT команд на Arduino

Рисунок 17 – Получение дополнительной информации от SIM900 GSM Shield с помощью AT команд на Arduino

Для получения дополнительной информации о AT командах SIM900 смотрите документ ниже.

Код Arduino – отправка SMS

Давайте перейдем к более интересным вещам. Запрограммируем нашу Arduino для отправки SMS на любой телефонный номер, который вы пожелаете. Прежде чем попробовать скетч, вам нужно ввести номер телефона. Найдите строку ZZxxxxxxxxxx и замените ZZ кодом страны, а xxxxxxxxxx – 10-значным номером телефона.

Скетч почти такой же, как и предыдущий, за исключением фрагмента кода, приведенного ниже. Как только соединение установлено, мы отправляем показанные ниже AT команды:

Рисунок 18 – AT команды SIM900 GSM Shield для отправки SMS на Arduino Рисунок 19 – Отправка SMS через SIM900 GSM Shield

Код Arduino – чтение SMS

Данный скетч аналогичен предыдущему, за исключением приведенного ниже фрагмента кода. Как только соединение установлено, мы отправляем следующие AT команды:

Рисунок 20 – Чтение SMS через SIM900 GSM Shield Рисунок 21 – AT команды SIM900 GSM Shield для чтения SMS на Arduino

Расширение размера буфера SoftwareSerial на Arduino

Самое простое решение – увеличить размер буфера SoftwareSerial со стандартного размера с 64 до 256 байт (или меньше, в зависимости от того, что у вас заработает).

На компьютере с Windows перейдите в C:\Program Files (x86) → Arduino → hardware → Arduino → avr → libraries → SoftwareSerial ( → src для более новой версии Arduino IDE). Откройте SoftwareSerial.h и измените строку:

Сохраните файл и попробуйте скомпилировать скетч еще раз.

Расширение размера буфера SoftwareSerial на Arduino

Рисунок 22 – Расширение размера буфера SoftwareSerial на Arduino

Код Arduino – выполнение звонка

Теперь давайте запрограммируем нашу Arduino на выполнение вызова. Этот скетч очень полезен, если вы хотите, чтобы ваша Arduino совершила аварийный вызов (SOS) в случае чрезвычайной ситуации, например, при превышении температуры или при проникновении кого-либо в ваш дом. Вы поняли идею!

Прежде чем попробовать скетч, вам нужно ввести номер телефона. Найдите строку ZZxxxxxxxxxx и замените ZZ кодом страны, а xxxxxxxxxx – 10-значным номером телефона.

Для осуществления вызова используются следующие AT команды:

ATD+ +ZZxxxxxxxxxx; - набрать указанный номер. Модификатор точка с запятой ; в конце разделяет строку набора на несколько команд набора. Все, кроме последней команды, должны заканчиваться модификатором точка с запятой ; .

ATH – повесить трубку

На скриншоте ниже показан звонок с платы расширения SIM900 GSM/GPRS Shield.

Рисунок 23 – AT команды SIM900 GSM Shield для звонка на Arduino Рисунок 24 – Прием звонка от SIM900 GSM Shield

Код Arduino – прием вызова

Прием звонка не требует специального кода; вы просто должны продолжать слушать плату расширения SIM900. Тем не менее, вы можете найти этот скетч очень полезным, когда вам нужно инициировать действие при получении звонка с определенного номера телефона.

ATA – принимает входящий звонок.

Ниже приведен вывод в мониторе последовательного порта, показывающий вызов, полученный платой расширения SIM900 GSM/GPRS Shield.

Рисунок 25 – Звонок на SIM900 GSM Shield Рисунок 26 – AT команды SIM900 GSM Shield для приема вызова на Arduino

Возможно ли реализовать в одном скетче и чтение смс, и отправку? Нужно как-то разделить, чтобы отправляемая смс не воспринималась как получаемая, или наоборот. Как это правильнее сделать?

Это пользовательская функция, которая просто пересылает данные между аппаратным и программным UART'ами. Чуть более подробно расписано над рисунком 16.

Подключение GSM модуля к микроконтроллеру AVR ATmega16: внешний вид

Необходимые компоненты

Аппаратное обеспечение

  1. Микроконтроллер ATmega16 (купить на AliExpress).
  2. GSM модуль (SIM900 или любой другой) (купить на AliExpress).
  3. Программатор AVR-ISP (купить на AliExpress), USBASP (купить на AliExpress) или другой подобный.
  4. Адаптер на 12В.
  5. JHD_162ALCD (ЖК дисплей 16x2) (купить на AliExpress).
  6. Кнопки.
  7. Резисторы 10 кОм (купить на AliExpress).
  8. Потенциометр (купить на AliExpress).
  9. 10 пиновый FRC кабель.
  10. Источник питания с напряжением 5 Вольт

Программное обеспечение

CodeVisionAVR (или другое подобное, например, Atmel Studio)
SinaProg – для загрузки программы в микроконтроллер ATmega8 с помощью программатора USBASP. Можно использовать и другую аналогичную программу.

Общие принципы работы GSM модуля

GSM модуль можно использовать даже без микроконтроллера, используя для управления им набор команд управления модемом (AT commands). Как показано на приведенном рисунке GSM модуль имеет в своем составе адаптер последовательного синхронного/асинхронного порта (USART), поэтому он может быть напрямую соединен с компьютером при помощи модуля MAX232. А с использованием контактов Tx (передача) и Rx (прием) его можно подсоединить к микроконтроллеру. Также на плате GSM модуля вы можете видеть другие контакты, такие как MIC+, MIC-, SP+, SP- которые используются для подключения микрофона или громокоговорителя. GSM модуль можно запитать с помощью адаптера на 12В используя разъем для постоянного тока.

Внешний вид GSM модуля

Вставьте вашу SIM карту в соответствующий слот модуля и подайте питание, при этом на плате должен загореться светодиод, свидетельствующий о подаче питания. Потом подождите минуту или чуть больше, вы увидите как красный (может использоваться и другой цвет) светодиод будет мигать каждые 3 секунды. Это будет означать что ваш модуль готов к установлению соединения используя вашу SIM карту. После этого вы можете подсоединить к нему сотовый телефон или микроконтроллер.

Управление GSM модулем с использованием набора команд управления модемом (AT commands)

Управлять GSM модулем можно единственным способом – используя набор команд управления модемом (AT commands). К примеру, если вы хотите узнать активен ли ваш GSM модуль вы передаете на него команду “AT” и модуль должен ответить на нее “OK”.

Весь список команд управления модемом (AT commands) можно найти в соответствующих справочниках (он весьма обширен), здесь же в нижеприведенной таблице вы можете увидеть наиболее часто используемые (востребованные) из этих команд.

Работа схемы

Схема соединений устройства на макетной плате приведена на следующем рисунке.

Подключение GSM модуля к микроконтроллеру AVR ATmega16: схема соединений

В схеме необходимо сделать следующие соединения:
1. Tx и Rx GSM модуля to Rx (Pin14) и Tx (Pin15) микроконтроллера Atmega16 соответственно.
2. Кнопки to PD5 (Pin19) and PD6 (Pin20).
3. Соединения с ЖК дисплеем:
• RS - PA 0
• R/W - PA1
• EN - PA2
• D4 - PA4
• D5 - PA5
• D6 - PA6
• D7 - PA7

Создание проекта для Atmega16 в программной среде CodeVision

Необходимо выполнить следующую последовательность действий.

Шаг 1. Откройте CodeVision, выберите в ней пункт меню File -> New -> Project. В появившемся диалоговом окне нажмите Yes.

Создание нового проекта в CodeVision

Шаг 2. Откроется CodeWizard. Кликните в ней на первой опции, то есть AT90, затем нажмите OK.

Выбор первой опции в CodeVision

Шаг 3. Выберите свой микроконтроллер, в нашем случае им будет Atmega16L.

Выбор типа микроконтроллера в CodeVision

Шаг 4. Кликните на USART. Выберите передатчик и приемник кликнув по ним как показано на рисунке.

Выбор параметров USART в CodeVision

Шаг 5: Кликните на "Alphanumeric LCD" и выберите "Enable Alphanumeric LCD support" как показано на рисунке.

Выбор параметров ЖК дисплея в CodeVision

Шаг 6: Выберите пункт меню Program -> Generate, Save and Exit. На этом этапе можно сказать, что половина работы уже выполнена. Но если кто не хочет использовать CodeVision то, разумеется, всю эту часть кода можно запрограммировать и вручную.

Сохранение проекта в CodeVision

Шаг 7. Создайте новую папку на рабочем столе чтобы записывать туда наши файлы.

Создание новой папки на рабочем столе

У нас будет 3 диалоговых окна (будут появляться последовательно одно за другим) для сохранения наших файлов.

Сделайте то же самое (что и на представленном рисунке) с двумя другими диалоговыми окнами – то есть сохраните предлагаемые ими файлы.

После этого рабочая область программы будет выглядеть следующим образом:

Рабочая область программы в CodeVision

Теперь мы должны написать только часть кода, отвечающую за взаимодействие с модулем GSM.

Исходный код программы на языке С (Си) с пояснениями

В рассматриваемом нами способе создания программы все заголовочные файлы должны автоматически прикрепиться к проекту за исключением того что необходимо будет вручную подключить заголовочный файл delay.h и объявить все переменные. Полный текст программы будет приведен в конце статьи, здесь же будет дано пояснение лишь отдельных фрагментов программы.

GSM модули Arduino

Аппаратная платформа Arduino используется для реализации множества электронных приборов и систем умного дома, включая GSM-извещатель охранной системы. Конструктор Arduino, в паре с простым и доступным языком программирования, позволит создать собственные типовые проекты умного дома, с применением GSM модуля.

Назначение и принцип работы

  • получать оповещение о состоянии объекта через используемые датчики;
  • узнавать о срабатывании сигнализации;
  • включать и выключать охранную систему.

С помощью GPRS, который также поддерживают GSM-модули, можно аналогичные команды обрабатывать через Internet.

С помощью такого функционала можно организовать автономную сигнализацию на удаленном объекте. Датчики будут фиксировать изменение состояния, а по каналам связи будет транслироваться информация об этом на ваш смартфон. По сути, можно организовать Smart Home самостоятельно, постепенно добавляя в схему дополнительное комплектующее.

Работает такое устройство на базе платы Arduino Uno. Никто не запрещает использовать платы Nano (mini-схема) или Mega если необходимо, но для удобства монтажа устройства минимальной комплектации, достаточно материнской платы Uno.

За передачу GSM или GPRS отвечает модуль, который соединяется с основной платой. Он расширяет возможности Arduino UNO, позволяя принимать и совершать звонки, отправлять SMS, обмениваться данными через GPRS. На рынке представлены несколько версий отличных GSM-плат, которые можно сопоставлять и программировать через AT-команды на необходимый функционал.

Топ 6 самых популярных модулей

Представленные ниже модули – популярный продукт для монтажа систем автономной сигнализации и иных проектов, для передачи управляющего сигнала через сети мобильных операторов.

Под модулем понимается изделие, состоящие из платы и элементов на ней (включая компонент, состоящий из чипсета и приемопередатчика). Компонент находятся под крышкой в едином форм-факторе (напоминает процессор для материнской платы компьютера). Распайка на плате расширения происходит через торцевые контактные ножки. Такая полноценная плата и называется модулем. Если на ней есть множество других элементов, ее иногда именуют шилд.

Ниже будут приведены модули, такие как Neoway M590, A6 и A7, и прочие, представлены их характеристики.

SIM900


Разработанный компанией SIMCom Wireless Solution модуль SIM900 подключается и обменивается данными через распространенный физический протокол передачи данных UART. Подключение к ПК осуществляется через USB-UART преобразователь.

  1. Диапазон частот EGSM900, DCS1800, GSM850, PCS1900.
  2. Напряжение 3,2-4,8 В.
  3. Сила тока в режиме простоя – 450 мА.
  4. Максимальный ток – 2 А.
  5. Канал связи до 14.4 кбит/с.
  6. Диапазон температур от -30 °C до +80 °C без искажения, и от -40 °C до +85 °C, с незначительным отклонением радиочастотных характеристик, с сохранением работоспособности.
  7. Вес 6,2 г.
  8. Размеры 24 x 24 x 3 мм.

У компонента есть модификации: 900B, 900D, 900TE-C, 900R 900X. У каждой модификации своя специфика. SIM900D дополнен блоком заряда аккумулятора, а в SIM900X введены новые режимы энергосбережения, что позволяет использовать модули в современных системах трекинга автомобилей, охранной и промышленной автоматики. Все модификации компонентов можно найти в едином форм-факторе SMT, с торцевыми контактами под пайку. Но, не исключены варианты нахождения в других форм факторах.

SIM800L


Основа модуля – компонент SIM800L с реализацией обмена данными по каналам GSM и GPRS с помощью дуплексного режима. В модуль устанавливается SIM-карта, есть встроенная антенна и выход под еще одну антенну. Питание на плату подается через преобразователь напряжения DC-DC. Еще, есть возможность подключиться к другому источнику питания. Интерфейс подключения – UART.


Шилд A6 работает в сетях мобильной связи и позволяет принимать и передавать сигналы с помощью GSM и GPRS. Модуль, созданный компанией AI-THINKER несколько лет назад, успешно показал себя и пользуется популярностью в системах автоматики.

  1. Четырехдиапазонный сотовый терминал.
  2. Напряжение питания 5 В.
  3. Ток в спящем режиме – 3 мА.
  4. Ток режима ожидания – 100 мА.
  5. Ток режима соединения – 500 мА.
  6. Ток пиковой нагрузки – 2А.
  7. Разъем
  8. Скорость GPRS во время передачи сигнала 42,8 Кбит/сек.
  9. Температура от -30 °C до +80 °C.


Новый модуль А7 отличается от предшественника тем, что в него встроен GPS. Это решение позволило упростить конструкцию платы.

  1. Четырехдиапазонный сотовый терминал.
  2. Напряжение 3,3-4,6 В.
  3. Напряжение питания 5В.
  4. 10 Класс GPRS: канал передачи данных 85,6 кбит/с.
  5. Jammer эха и шумов.

Neoway M590

  1. Диапазон частот EGSM900, DCS1800.
  2. 10 Класс
  3. Напряжение 3,3-5 В.
  4. Пиковый ток 2 А.
  5. Рабочий ток 210 мА.
  6. Коммуникационный сигнал 3,3 В.
  7. Температура от -40 °C до +80 °C.

Подключая модуль к контроллеру, потребуется преобразователь 3,3 В -> 5 В.

GSM GPRS модуль SIM900


  1. Подключается плата к Arduino Mega и UNO.
  2. Четыре рабочих частоты, как и в остальных платах.
  3. Низкое энергопотребление 1.5 А в спящем режиме.
  4. GPRS мульти-слот класса 10/8.
  5. Рабочие температуры от -40°C до +85 °C.

Схема сборки типового проекта Умного дома

Рассмотрим варианты подключения нескольких модулей GSM к платам Arduino. В качестве примера рассматриваются платы Arduino UNO и MEGA.

Перед подключением модулей, вставьте соответствующего размера симку мобильного оператора в слот модуля. Далее, модуль соединяется с основной платой. Для этого нужно внимательно изучить инструкцию, определив распиновку модулей. После, подключив плату к питанию, с помощью переходника USB-UART контроллер подключается к компьютеру, через среду программирования Arduino IDE, или ее более комфортную альтернативу, прошивается и программируется AT-командами.

Естественно, по мере увеличения функционала вашего проекта, к плате необходимо добавить датчики, реле, розетки и другие компоненты. Об этом вы можете почитать на других страницах сайта.

Аппаратная часть: составляющие

В зависимости от того, какой GSM-модуль будет использоваться, зависят и составляющие схемы.

В основном это: микроконтроллер Arduino UNO, совместимый с платой GSM-модуль, DC-DC преобразователь понижающий (если коммуникационный сигнал ниже 5В), проводки и переходники для подключения.

SIM800L + Arduino UNO

Например, для подключения SIM800L к Arduino UNO, из-за малого напряжения в 3,8 В нужно подключить через преобразователь DC-DC. Распиновка модуля SIM800L выглядит так.


  1. Подключите Arduino UNO к компьютеру через порт USB.
  2. Источник питания на 12 В подключите через DC-DC.
  3. Минус с ИП на GND платы контроллера, и с GND в минус преобразователя.
  4. Плюс с ИП на плюс DC-DC.
  5. Плюс с DC-DC на плюс (Vcc) GSM модуля.
  6. Минус с земли преобразователя на GND модуля.
  7. RXD и TXD модуля соедините с пинами 2 и 3 Arduino UNO.

К любым digital pin (цифровые входы/выходы), если необходимо, можно соединять несколько модулей.


A6 + Arduino UNO

Так как GSM-модуль имеет стандартное напряжение питания, поэтому преобразователь в схеме не нужен. Подключать платы можно напрямую. Схема распиновки A6 на рисунке ниже.


  1. UART_RXD модуля к TX→1 микроконтроллера.
  2. UART_TXD модуля к RX ←0 микроконтроллера.
  3. GND контроллера с GND GSM-модуля.
  4. Пин VCC0 (питание) к кнопке питания на модуле PWR_KEY (power).


SIM900 Шилд + Arduino MEGA

Особенность платы в том, что при вызове устройства, сила тока достигает пикового предела в 2А. Поэтому, не подключайте питание напрямую. Прежде чем соединить, установите в слот сим карту и выставите TXD и RXD перемычку для слаботочной цепи, согласно картинке.


  1. Желтым проводом соедините контакт TxD.
  2. Салатовым –
  3. Черным соедините GND плат.
  4. Через USB-порт соединить Микроконтроллер с ПК.


Чтобы удостовериться, что схема собрана верно, установите в IDE GPRS_Shield_Arduino.

  1. На плате Arduino соедините RESET и землю, чтобы информация поступала от Shield к ПК.
  2. Установите SIM-карту в слот и дайте напряжение на модуль.
  3. Основную плату по USB соедините с ПК и нажмите кнопку «ON».
  4. При правильной работе схемы, зеленый светодиод будет мигать, а красный постоянно гореть.

Программная часть: скетчи и библиотеки

После разбора аппаратной части, нужно запрограммировать собранное устройство. С помощью текстовых короткого AT-кода, можно задавать устройству прямые команды. Они воспринимаются устройством во время нахождения программируемого устройства в командном режиме. Команды устройство считывает напрямую с клавиатуры или с помощью ПО, такого как IDE. Программу или ее аналоги доступны для устройств, работающих на Linux, MacOS, Windows, Android. Поэтому, задавать команды удаленно с телефона можно тоже.


На примере программирования модуля SIM900, можно рассмотреть настройку основных инструментов взаимодействия с будущим охранным проектом, сделанным своими руками.

Работа с СМС уведомлениями

  1. Отправьте команду AT + CNMI = 2,2,0,0,0, чтобы прочитать SMS.
  2. Обратной связью от порта будет +CMTI: «SM»,2 – двойка значит номер SMS в порядке очереди.
  3. Отправьте команду AT+CMGR=2 для чтения SMS.

Звонки

Выводы

Соорудить собственноручную автономную GSM-сигнализацию не составит большого труда для технически не подкованных людей, в вопросах электро и схемотехники. Прочитав инструкцию и ознакомившись с распиновкой схем, можно подключить микроконтроллер к отвечающему за GSM передачу данных модуль. Также, для подключения доступны разнообразные модели GSM модулей, которые в соответствии со своими характеристиками можно применять для различных задач и так называемых project-объектов.

Читайте также: