Gsm сигнализация sim900 своими руками

Обновлено: 05.07.2024

Прошивка

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

Если у вас правильный модуль и прошивка не требуется, можно сразу прыгать на раздел №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.


Здравствуйте!
Встала тут задача по управлять загородным домом, последить за температурой, дверями, окнами. И тут же возник вопрос о среде передачи данных. Ну провода и радиоканал отпадают из-за дороговизны, ВОЛС просто мечты, а вот GSM то что нужно. Сначала пал глаз на старые телефоны "Motorola", "Nokia", "SonyEricsson". Посмотрел, повертел и передумал. Первое, не хотел подпаиваться к контактам кнопок, да и обратной связи нет. Второе, разбираться с ПО телефона, ну это совсем не в кассу. В общем в творческих раздумьях и плавая в просторах всемирной паутины, изловив пару вирусов был найден компромисс. И работа с ПО и без всяких кнопок. Все это предлагает модуль SIM900D. Чем он мне приглянулся.
Ну лирики хватит, пора по делу.
Выглядит сей модуль так.


По поводу монтажа. Как видите модуль заточен на поверхностный монтаж. Размеры контактных площадок достаточно большие даже для ЛУТа. Ниже картинка моего устройства.


Как видите ничего сложного. Теперь давайте поговорим о схеме подключения этого чуда. Глядим мануал. И видим распиновку.


Да, много всего, но все использовать не будем. Первое что нам потребуется это обвязать все выводы "GND". Если глянуть на правый верхний угол, то можно заметить три отдельных вывода. Два "GND" и "ANT". Эти выводы расположены таким образом не просто так. Глянем в документацию на картинку подключения антенны.


59 и 61 контакты должны находиться как можно ближе к выводу антенны. Дополнительные схемы выделенные пунктиром, нужны для подключение антенн с кабелем. Поэтому я впаял SMA разъем как можно ближе к выводам 59, 60, 61 и не стал заморачиваться со схемой согласования, при этом с антенной на 3-х метровом кабеле и в месте очень плохого приема, выжал из модуля 13 балов из 31. Разъем видно на картинке выше. Точнее ноги от него)) Сам разъем с другой стороны. При этом контакты 59 и 61 как бы обнимают антенну. Ну как-то так. Далее давайте поговорим о SIM-карте. Для ее установки я использовал вот такой разъем (SIM ICA-501-006-01-F7)


Самое интересное то что я нашел 3 варианта распиновки SIM-карт. Какую использовать? Не буду вносить интриги, а для простоты привожу распиновку данного разъема. Вид сверху.


Но это еще не все. Если глянуть в монуал на схему включения SIM-карты, то там можно увидеть некую микросхемку под названием SMF05C . Эта микросхема содержит защитные диоды аж 5 штуков. Нужна для зашиты контактов SIM-карты. Конечно можно ее и не ставить, но тогда будьте внимательны и не трогайте контакты пальцами. Я как грешный человек за себя не ручаюсь, поэтому микруху припоял. А вот и сама схема.



А третий сигнал (RING) нужно подключать через PNP транзистор. Еще один не мало важный сигнал, это кнопка включения и выключения модуля. (куда же без нее). Вот что нам предлагает мануал.


То есть подали лог 1 на базу транзистора на 1 секунду и модуль включился.
Теперь давайте поговорим о питании. Да, я бы ща от хорошей тарелочки борьща не отказался бы, а вы? Ну ладно, едем дальше. Питается модуль напругой от 3 до 4.8 вольтов. Вроде все просто, да не так. В момент звонка, передачи sms, поиска сети модуль может потребовать аж до 2А. Во как. Так что любители LM7805 и КРЕНок могут огорчиться. К счастью в мануале присутствуют две схемы на микросхемах MIC29302 (я так в продаже ее и не нашел) и LM2596 (эту купить можно). Но я лениииивый и собирать питалово с таким большим количеством обвязки просто не захотел. Я пошукал в интернете и нашел. Есть такой хороший стабилизатор для процессоров типа "Пень", "AMD" на 3.3в и до 7.5А. Во, думаю то что надо и ARM запитать можно и модуль. Вот схема этого чуда.



Радиатор поставил со страху, в принципе микросхема не греется даже во время звонка. И последнее на что следует обратить внимание, это на батарейку. Она нужна для поддержания жизни часов реального времени. Самое важное что оставлять этот вывод в воздухе нельзя. Лично я сошелся на подключении батарейки чего и вам желаю. Можно конечно две АА влепить)) но как-то крупновато, а вот в форме таблетки 2032 на 3v то что надо. Благо они стоят не дорого и отсеки паять можно прям на плату. По моему это самое простое решение. Решать вам. Ну вроде и все. Вот как это все безобразие выглядит вместе и в работающем состоянии.


В следующей статье я расскажу как ломал этот модуль но уже программно через терминал при помощи АТ команд.
Выкладываю схемы в PCAD-2006
Архив с файлами модуля GSM.
Архив с файлами блока стабилизации.
Продолжение цикла статей о GSM модуле.
AT-Команды.
Связь модуля с ATmega8515.
Отладочная плата на базе SIM900D


Foli 14.03.13
Алексей 15.03.13

С АТ командами разбираюсь. Не хочу выкладывать половину работы, так как есть некоторые вопросы. А с UARTтом и CVAVR там все просто. Как только разберусь с АТ командами сразу выложу и какие команды и как из CVAVR их подать.

Anatok 04.11.13

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

Алексей 04.11.13

GSM модуль жрет до 2А при регистрации в сети или звонке или связи по GPRS. Для таких ресурсов требуется хороший аккумулятор, а при -30 АКБ долго не проживет. Даже в метеостанциях на уличных датчиках рекомендуют использовать простые батарейки.

Мишка 11.11.13

Если еще актуально и интересно. помотри на EAT для SIM900. В нем внутри ARM и есть SDK в котором можно загружать приложения в SIM900 из которых можно много всего делать. например посылать те-же AT команды. +клавиатура + SPI дисплей. + 2 АЦП :) Нескучного вечера:)

Мишка 11.11.13

А све-таки для него очень красиво делать для него питание на L5973D. Да про 2А написана в даташите. но практически это очень кратковременные импульсы. У меня он прекрасно работает например с Arduino Mega которая сама питается от USB порта (у которога ток 0.5 А)

Алексей 11.11.13

В этом-то и загвоздка. Я тоже по началу питал от 7805, все работало, а потом бац. И при подключении к сети все гаснет, а потом в рестарта идёт. Видимо сторожевая собака по припадке питания рестартует. А с L7953D будет красиво, но где её взять и скопа она будет стоить :) Поэтому я перешёл на IRU1075

Алексей 11.11.13
дядяМиша 24.12.13

У меня при регистрации в сети атмега в перезагруз уходит. Хотя стоит импульсный dcdc. Конденсаторов на 200мкф. А бывает, работает стабильно. Замучался уже.

Алексей 25.12.13
дядяМиша 25.12.13
дядяМиша 25.12.13
Алексей 25.12.13
сергей 19.07.14
Алексей 19.07.14

В каком смысле готовые? Сам модуль уже собран и остается под конкретный девайс изготовить плату с требуемыми выходами и входами. Та что в данной статье это лишь демо плата для отладки программ. Для конкретного девайса требуются размеры, расположение разъемов, выходов на наушники и микрофон. Где будет антенный разъем. Дайте более подробную информацию о том что Вам нужно.

Андрей 28.09.14

Я так понимаю это прототип той платки которую я жду не дождусь. Только в коммерческом варианте её поженили с блоком питания и облагородили аудио выходами. Что есть большой гуд.

Алексей 28.09.14

Собственно так и есть. Я просто сразу убил несколько зайцев. Решил извечную проблему с питанием и согласованием уровней на UART. И для шика добавил аудио вход и выход. Фактически готовый сотовый телефон.

Андрей 28.09.14

Хотел бы внести рацуху на будущее. по сути данная плата законченный узел. И её ПРАКТИЧЕСКИ можно использовать в готовом изделии. однако есть одно НО. При мезонном навесе её по любому лучше ставить сверху (разъем антены, доступ к симкарте) поэтому вполне целесообразно параллельно всем штырькам для "периферии" оставлять отверстия для таких же штырьков с возможностью впайки оных направлением "вниз". Т.е. захотел я данный девайс насадить на плату микроконтроллера, развёл под твой, запаял ответные разъемы в него и состыковал. Ещё и с

Андрей 28.09.14
Алексей 28.09.14
Сергей 01.02.15
Алексей 01.02.15

Здесь есть несколько причин. Первая, превышено питание. Второе, не попал ли плюс на общий. Нужно внимательно посмотреть ножки питания. Третье, не касается ли модулю брюхом питающих линий. На брюхе есть несколько технологических контактов которые должны быть изолированны от каких либо проводников. Четвертое, не замкнут ли вывод антенны с общим выводом. А если быть точнее, то необходимо смотреть плату. Сбросьте мне плату на почту и я посмотрю, может там что-то не так.

Сергей 01.02.15

Платы у меня заводские , МастерКит BM8039 и на обеих одна и та же проблема..вставляешь симку модуль начинает грется и нет сети.

Алексей 01.02.15

Довольно сложно сказать. Схема заводская, надо по плате полазить. Из документации видно что на плате нет рекомендуемых защитных диодов для SIM-карты. Сама карта и разъем по пинам совпадают? 300 модуль старый и по моему он работает только с симками 5 вольтовыми, а сейчас они все на 3в. Но я могу и ошибаться. Надо смотреть саму плату, так сложно что-то сказать. Если симптом на обеих один и тот же, то я бы какпал в сторону разъема и вольтажа симок. Еще раз, современные симки на 3-х вольтовые.

Сергей 01.02.15

Стоит sim900D. диодов нет.Когда вставляю карту появляется питание на модуле и он начинает греться,но на симку напр. с 9 ноги не идёт..

Сергей 01.02.15
Сергей 01.02.15
Алексей 01.02.15

А что именно коротнуло? Если питание на симку не идет, то я боюсь сдохла линия для симки. А симка сколько ног? 6 или 8? Для проверки можно не вставляя симки пообщаться с модулем по шине UART 3, 4 ноги. Если откажется принимать АТ команды, то я думаю можно его хоронить.

АНОНИМ 01.02.15
Алексей 01.02.15

А на разъеме тоже 8? Берем микросхему FT232RL, собираем переходник USB TTL, припаеваемся к UART модуля, запускаем терминал, например Putty, пишем AT и давим ентер. Если вернет ОК, значт еще не все потеряно. Если тишина. На помойку. А да, какие светодиоды а плате? как определяется наличие регистрации в сети?

Сергей 02.02.15 03:12

На разъёме тоже 8..на плате два светодиода зелёный и красный,наличие сети определяется по морганию зелёного раз в три секунды. можно как то вставить фото платы?

Алексей 02.02.15 07:42
Сергей 02.02.15 14:02
Алексей 02.02.15 15:48

Я не могу гадать на кофейной гуще. Мне нужна либо схема, либо плата. И причем тут питание модуля и сим карта? Там скорее всего еще с каким-то микроконтроллером пересекается. Он и подает питание. В общем нужна схема. А так это как диагноз по телефону ставить.

Сергей 02.02.15 15:56
Сергей 02.02.15 15:57
Алексей 02.02.15 19:27

Ну нет такого у модуля SIM900D. Для включения модуля необходимо удержать низкий уровень на ножке 12, а потом поднять. Сим карту вообще нельзя вставлять или вынимать при включенном модуле, есть вероятность сжечь порт. Если посмотреть документацию, то можно там найти рекомендации по установке защитных диодов на линии порта сим карты. На форуме здесь. Создать тему и выложить фото.

Евгений 08.09.15 12:04

У меня при подаче напряжения на модуль, на 12 ноге присутствует положительный потенциал, на 5 ноге так же положительный (при условии, что данные ноги висят в воздухе). Подскажите пожалуйста, ведь на 5 ноге вроде должен быть ноль? Если не так, пожалуйста поправьте меня.

Алексей 08.09.15 13:21

12 ножка это включения модуля. На ней при подаче питания висит 1. Для включения модуля нужно прижать на пару секунд 12-тую ножку к общему проводу, то есть подать 0. При подаче питания на модуль 5 ножка должна быть подтянута к общему проводу двумя резисторами (это видно из схемы включения транзистора в ключевом режиме) и на ней должен быть 0, так как базу нужно подтянуть к нулю для полного закрытия транзистора. После прижатия 12 ноги к нулю, на 5 ножке должна появится 1, а через некоторое время меандр с указанием статуса наличия и подключения к сети.

balsan

IamNikolay

balsan

IamNikolay

А почему же тогда не работает?!
У автора статьи то работает.
Вероятно что то не так подключили/настроили/изменили.
Дистанционно, даже без фото того как собрано и подключено - никто помочь не сможет

bort707

IamNikolay

там же скриншоты есть, с путем все правильно.

1612394235240.jpg

P.S. Папки можно создавать с разными именами, но если @balsan следовал инструкциям, то путь именно такой должен быть.

balsan

IamNikolay

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

уверены что речь идет именно про светодиод подключенный к плате, а не тот что на сим модуле?!
в скетче нет управления синим, только при старте состояние в 0 переводится и все.

balsan

Итак, после подачи питания сигнализация пытается установить связь с сетью мобильного оператора. При этом светодиод мигает синим цветом. Если инициализация прошла успешно – загорается зелёный светодиод. В случае, когда сеть недоступна, светодиод горит красным цветом.


Вот цитата из тех.задания. Как бы синий изначально должен мигать. Связь с SIM800 присутствует, но зеленый диод не горит.

IamNikolay

Вот цитата из тех.задания. Как бы синий изначально должен мигать. Связь с SIM800 присутствует, но зеленый диод не горит.

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

Андрей Николаевич С.

Тоже интересует открытый проект простой GSM сигнализации чтобы работал. Впустую тратить времени нет возможности.
Есть варианты? Спасибо!

kokoko

Есть вариант GSM сигнализации ( рабочий) по факту открывает дверь в офисе и контролирует напряжение. При исчезновении присылает СМС на нужные номера. При отправке СМС на номер СИМ карты установленный в Sim800 перезапускает сервера. Скетч сделан в программе FLProg. Идею взял у Чилингаряна Грачика.

Вложения

Андрей Николаевич С.

Есть вариант GSM сигнализации ( рабочий) по факту открывает дверь в офисе и контролирует напряжение. При исчезновении присылает СМС на нужные номера. При отправке СМС на номер СИМ карты установленный в Sim800 перезапускает сервера. Скетч сделан в программе FLProg. Идею взял у Чилингаряна Грачика.

Здравствуйте. Есть проект собрать GSM сигнализацию на датчиках движения работающих на 433м, чтобы не тянуть провода от датчика до ардуинки. Имеются датчики движения 433. приемник 433. sim 900 shild, ну и конечно ардуинка. Как это все подружить , чтоб работало? ардуино стал изучать недавно. требуется помощь.

IamNikolay

@Gorg, добрый день, по отдельности найти можно, а чтобы все готовое - шанс не велик, кроме того модули на 433 MHz - не лучшее решение для сигнализации

sapuha

точно такая-же история. наверно этот вопрос ни кем не решается. жаль потерянного времени. со светодиодами не критично - основное что модуль на звонки не реагирует.

@balsan, вы проблему не решили? если решили - поделитесь.

шгк73

Тоже собрал эту сигнализацию,Светодиодная индикация не работает, загорается при вкл. только красный светодиод на несколько секунд

galchik22

NLObP

шгк73

NLObP

Всю программу не проверял, достал нужный мне код. Как-то не правильно работает оповещение по звонку при нарушении шлейфа. Он постоянно набирает номер, в мониторе порта пишет ERROR вместо ОК и при поднятии трубки включается пауза и играет музыка паузы.

sapuha

sapuha

NLObP

Не могу знать, давно это было. У автора несколько подобных проектов на гитхабе, может там нашёл.
SIM800L.print(1) добавляет цифру 1 к имени файла.

Владимир Мур

@balsan,Здравствуйте! Нашел этот проект недавно, понравился своими функциями. Собрал упрощенную схему на макетке (без клавиатуры, резервного питания, аналоговые входы шлейфов заменил на 2 цифровых). Исходный скетч не заработал категорически. Искал ошибки недели 2 (я не программист). Плюнул и стал разбираться с алгоритмом. В результате родился новый скетч. В черне работает. В первой части скетча д.б. не bool securityStae=0, аuint8_t securityState=0. Кроме того в схеме получается, что при пропадании сети 220В заряд аккумулятора идет от него же. Нужен еще один диод для развязки. Если интересно, могу показать неокончательный результат, а сам буду добивать его дальше.

Хотите ли вы слышать то, что происходит в вашем доме, который находится на расстоянии многих километров от вас, или активировать систему полива в вашем саду просто беззвучным звонком, тогда плата расширения 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+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

как определить что после выполнения звонка на телефоне снята трубка. (Ардуино и SIM 800L).

Как определить после выполнения звонка, что на телефоне снята трубка.

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

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

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