Подключение и настройка модуля SIM800L к Ардуино


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

GSM-модуль (Global System for Mobile Communications) использует сеть телефонной связи оператора, для получения и передачи сигнала на удаленный объект управления. Например, с помощью СМС команд можно:

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

С помощью 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.

Спецификация:

  1. Четырехдиапазонный сотовый терминал.
  2. Напряжение 3,8-4,2В.
  3. Ток в режиме ожидания – 0,7 мА. Предельный ток – 500 мА.
  4. Слот
  5. Поддержка 2G сети.
  6. Диапазон температур от -30 °C до +75 °C.

A6

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

ТТХ А6:

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

A7

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

Основные параметры:

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

Neoway M590

Модуль на основе компонента Neoway M590 позволяет принимать звонки, обмениваться данными и сообщениями. Имеет интерфейс подключения UART.

Характеристики:

  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

На базе модуля SIM900 разработали и успешно используют SIM900 GSM GPRS Shield, в качестве модуля для подключения к Arduino UNO. По сравнению с остальными платами, стоимость этой на порядок дороже, и она укомплектована множеством разъемов и контактов. Среди основных параметров:

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

Подключение модуля к Arduino

Вы должны подавать на модуль SIM800 точно 4,2 В. Я использовал понижающий модуль LM2596. Настраиваем выходное напряжение до 4,2 В от потенциометра. Не забудьте соединить Arduino GND с выходом LM2596 (-). Сначала подключите ваш модуль Sim800L к Arduino;

  • NET -> Нет соединения
  • VCC -> LM2596 Out (+)
  • RST -> Arduino D9
  • RXD -> Arduino D7
  • TXD -> Arduino D8
  • GND -> LM2596 Out (-)

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

Рассмотрим варианты подключения нескольких модулей 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. Зайдите в IDE и выполните команду AT+CMGF=1 для перевода в текстовый формат сообщения.
  2. Затем, командой AT+CSCS=«GSM» выберите ASCII-кодировку.
  3. За набор сообщения отвечает команда AT+CMGS=«+79********».
  4. После команды введите текст мессенджа и отправьте его.
  5. Отправив SMS, нажмите CTRL+Z и устройство отправит SMS-сообщение на приемник.
  6. После правильного выполнения команд, вернется «ОК».

Чтобы получить сообщение, следуйте example:

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

Звонки

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

  1. Загрузите библиотеку #include .
  2. Если на сим установлен PIN, то введите команду #define PINNUMBER “”, где в скобках пропишите его. В случае, если пин не установлен, оставьте скобки пустыми.
  3. Выполнив данную команду, следует узнать статус симки с подключением к сети с помощью boolean notConnected = true.
  4. Установить активацию с сетью можно через begin(). Если соединение готово к работе, в обратной связи покажется статус GSM_READY.

Универсальная сигнализация на arduino с отправкой смс

Схема подключения:

Для данного проекта нам понадобится:

Датчик движения: https://ali.ski/EPkJs | Gearbest HC-SR501: https://fas.st/9YvTp

Датчик газа: https://ali.ski/6JRA_ | gearbest: https://fas.st/HB1Ds

Датчик протечки воды: https://got.by/1hzcye

Модуль реле:https://ali.pub/1hzd3n

Zummer: https://got.by/1hzdau

Геркон (датчик открытия двери): https://got.by/1hzdjz

Gsm модуль NEOWAY M590: https://got.by/1hzdsx

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

Сама схема подключения универсальной сигнализации представлена в начале статьи.

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

Скетч:

#include //подключаем библиотеку для программного Rx Tx SoftwareSerial mySerial(2, 3); // RX, TX #define pirPin 9 // Объявляем переменную для датчика движения и указываем пин int Count = 0; int relay1 = 6; // Объявляем переменную для реле 1 и указываем пин int relay2 = 5; // Объявляем переменную для реле 2 и указываем пин int relay3 = 4; // Объявляем переменную для реле 3 и указываем пин int relay4 = 7; // Объявляем переменную для реле 4 и указываем пин const int gassensorpin = A5; //Объявляем переменную для сенсора газа, указываем пин int gassensorvalue = 0; //Объявляем переменную для хранения значения с датчика газа и приравниваем ее к 0 int water = A0; //Объявляем пин для подключения датчика дождя unsigned int waterValue = 0; //Создаем переменную для хранения значений с датчика воды и приравниваем его к 0 int Door_sensor = 10; // Объявляем пин для подключения датчика открытия двери int Door_val = 0; // Объявляем переменную для хранения состояния датчика int buzzer = 8; //Обявляем переменную для пьезоизлучателя, указываем пин void setup() { pinMode(pirPin, INPUT); // Назначаем пин датчика движения как вход pinMode(Door_sensor, INPUT); //Назначаем пин датчика открытия двери как вход pinMode(relay1, OUTPUT); //назначаем пин как реле как выход pinMode(relay2, OUTPUT); //назначаем пин как реле как выход pinMode(relay3, OUTPUT); //назначаем пин как реле как выход pinMode(relay4, OUTPUT); //назначаем пин как реле как выход delay(2000); //время на инициализацию модуля Serial.begin(115200); //скорость порта Serial.println(«Signalization v1.0»); mySerial.begin(115200); mySerial.println(«AT+CMGF=1»); //режим кодировки СМС — обычный (для англ.) delay(100); mySerial.println(«AT+CSCS=\»GSM\»»); //режим кодировки текста delay(100); } void loop() { gassensorvalue = analogRead(gassensorpin);//Считываем значение с датчика газа if (gassensorvalue >= 600) // задаем порог уровня загазованности { mySerial.println(«AT+CMGS=\»+71234567890\»»); // даем команду на отправку смс delay(100); mySerial.print(«gas»); // отправляем текст mySerial.print((char)26); // символ завершающий передачу Serial.println(«ok»); tone(buzzer, 1915); //Подаем сигнал пьезоизлучателем delay(3000); digitalWrite(relay1, LOW); // Включаем реле, к которому подключен вентилятор delay(15000); } else { digitalWrite(relay1, HIGH); //Выключаем реле с вентилятором noTone(buzzer); //Выключаем сигнал пьезоизлучателя } int pirVal = digitalRead(pirPin); if(pirVal == HIGH) // Если происходит движение { mySerial.println(«AT+CMGS=\»+71234567880\»»); // даем команду на отправку смс delay(100); mySerial.print(«Motion»); // отправляем текст mySerial.print((char)26); // символ завершающий передачу Serial.println(«ok»); digitalWrite(relay2, LOW); //то Включаем реле, к которому подключено освещение digitalWrite(relay3, LOW); // включаем реле, к которому подключено освещение digitalWrite(relay4, LOW); // включаем реле, к которому подключено освещение tone(buzzer, 1700); //Подаем сигнал пьезоизлучателем delay (10000); } else { digitalWrite(relay2, HIGH); //Выключаем реле digitalWrite(relay3, HIGH); //Выключаем реле digitalWrite(relay4, HIGH); //Выключаем реле noTone(buzzer); //Выключаем сигнал } waterValue = analogRead(water);//Считываем значения с датчика дождя if(waterValue<300) //задаем пороговое значение срабатывания сигнализации { mySerial.println(«AT+CMGS=\»+1234567890\»»); // даем команду на отправку смс delay(100); mySerial.print(«Water!»); // отправляем текст mySerial.print((char)26); // символ завершающий передачу Serial.println(«ok»); tone(buzzer, 1000); //Подаем сигнал пьезоизлучателем delay (10000); } else { noTone(buzzer); //Выключаем сигнал } Door_val = digitalRead(Door_sensor); //Считываем значения с датчика открытия двери if (Door_val == LOW){ //Дверь открыта digitalWrite(Door_sensor, LOW); { mySerial.println(«AT+CMGS=\»+71234567890\»»); // даем команду на отправку смс delay(100); mySerial.print(«Dooropen»); // отправляем текст mySerial.print((char)26); // символ завершающий передачу Serial.println(«ok»); tone(buzzer, 1700); //Подаем сигнал пьезоизлучателем delay (5000); } } else { noTone(buzzer); //Выключаем сигнал } }

Ссылка на скетч: https://yadi.sk/d/5drVRxcv3JaLvB

Демонстрация работы данной программы можно увидеть в видео приведенном в конце статьи.

Видео:

Выводы

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

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

Код урока

Откройте пустой эскиз Arduino и загрузите код ниже:

#include SoftwareSerial mySerial(8,7); // Change These Pins if you make different wiring void setup() { Serial.begin(19200); //Serial.println(“Begin”); mySerial.begin(19200); } void loop() { if (mySerial.available()) Serial.write(mySerial.read()); if (Serial.available()) mySerial.write(Serial.read()); }

Откройте AT Command Tester Tool. Нажмите «Найти порты» и выберите правильный порт. Выберите «BaudRate» как 19200. Выбрав порт устройства и правильную скорость передачи (скорость последовательного порта), нажмите «Connect» (перевод — «соединиться») на AT Command Tester. Инструмент отправит запрос на устройство и подключится.

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

На вкладке «Голосовой вызов» вы можете проверить исходящие и входящие голосовые вызовы. Инструмент предоставляет простой в использовании интерфейс для набора исходящих номеров и приема входящих звонков.

Рейтинг
( 2 оценки, среднее 4 из 5 )
Понравилась статья? Поделиться с друзьями:
Для любых предложений по сайту: [email protected]