SIM800C и Arduino. Подключаем и разбираемся с принципом работы.

image

SIM800C – это компактный gsm/gprs модуль. Помимо основных частот, этот модуль так же поддерживает Bluetooth 3.0 на уровне чипсета. Что самое интересное, это то что данный модуль может так же воспроизводить аудио, так же поддерживает протоколы POP3, SMTP, MMS, FTP, HTTP, SSL и др.

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

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

Второй минус, это избирательность по операторам. Из 3х операторов(МТС, МЕГАФОН, ЙОТА)модуль смог стабильно работать только с МТС. Почему? Понятия не имею, но с предыдущими 2мя он то терял сеть, то не мог авторизироваться в сети, то и вовсе был постоноянно занят.

А теперь давайте поговорим о его подключении. Вот схема подключения с которой у меня модуль завелся. При не соблюдении всего подключения, я не гарантирую вам 100% работу модуля.

image

Немного распишем выходы модуля:

5 В: Разъем питания, единственный вход DC5V, используемый для питания платы. V_ttl: Пин управления преобразователем логики TTL(5В или 3.3В) GND: Земля т.е минус питания. TXD: Пин последовательного порта, уровеня TTL. RXD: Пин последовательного порта, уровеня TTL. Spkp: Пин аудио выхода Spkn: Пин аудио выхода MICN: Пин аудио входа Micp: Пин аудио входа PWX: Пин для включения и отключения модуля(можно присобачить кнопку) VBAT: Пин подключения питания от Батареи (3.3В-4.4В)

Программную часть мы с вами разберем во второй части нашей с вами статьи.

С наступлением дачного сезона возникла необходимость охраны дачного домика. Хотелось сделать простенькую но надежную охранную сигнализацию с передачей сигнала на сотовый телефон. Решено было собрать устройство с передачей тревоги на сотовый телефон на базе электронных плат приобретенных на Алиэкспресс. Как говорится дешево но сердито. Основными элементами данной конструкции являются модуль GSM SIM800L и плата Aрдуино(можно применить любую- Nano ,Uno,Pro Mini и тому подобные). Устройство на пять тревожных входов для контактных датчиков. К каждому входу можно подключить один или несколько датчиков последовательно соединенных В скетче присвоить каждому охранному шлейфу свое название (например-входная дверь, окно 1, окно 2 и так далее). Охранное устройство работает так: при разрыве электрической цепи первого шлейфа блок сперва дает вызов на первый телефон абонента, следом прекращает звонок и также на №2. №2 нужен в виду того что если вдруг первый абонент не в сети или подсел аккумулятор и прочие неприятности). Если срабатывают шлейфа следующие за первым, тогда происходит отсылка СМС сообщения с названием сработавшего шлейфа, в том же случае на оба номера абонентов. Перечень инструментов и материалов. -литий –ионный аккумулятор от старого телефона 3,7В1600мА-1шт -соединительные провода; -паяльник; -тестер; -прозрачная пластмассовая коробка -1шт; -плата Arduino Nano -1 шт; -резисторы 10кОм-7шт; — макетная плата из фольгированного текстолита; — выключатель питания-1шт; -модуль SIM800L -1шт; -понижающая плата 1-2А -1шт; -клеммные разъемы. Шаг первый. Сборка схемы охранного GSM устройства. Фото схемы.На макетную плату припаиваем разъемные колодки для GSM модуль SIM800L и модуль Arduino это упрощает монтаж и позволяет при необходимости легко заменять модули. Распаиваем резисторы и остальные соединения. Резисторы от контакта RX модуля SIM800L подключаются к цифровому входу D3 Arduino для согласования по напряжению входов обоих модулей. Входы Arduino D4-D8 подтягиваются через резисторы. Выключатель монтируется в разрыв питания GSM модуля SIM800 и платы Ардуино для постановки на охрану всей системы. Применение аккумулятора, что позволит устройству функционировать два три дня при отсутствии сети 220 В. Преобразователь напряжения в моем случае из напряжения 12 В выдает напряжение 4,2 В и заодно заряжает аккумулятор(можно применить другую плату, например ТР4056 с защитой). Шаг второй. Программирование устройства. В СИМ карте должны быть удалены пинкоды и все ненужные функции. Еще предварительно нужно настроить сам модуль SIM800L-в сети есть много видео по этой теме, ничего сложного в этом нет. В скетче указываем ваши номера телефонов, корректируем названия охранных зон, можно установить время контроля системы (если прибор работает нормально через заданное время придет контрольная СМС). Заливаем скетч в Arduino и проверяем работу устройства. Скетч:

    String numberCall_1 = "79123456789"; // Номер абонента №1 для звонка  String numberSMS_1 = "+79123456789"; // Номер абонента №1 для СМС (отличается только знаком +)    String numberCall_2 = "79123456782"; // Номер абонента №2 для звонка  String numberSMS_2 = "+79123456782"; // Номер абонента №2 для СМС (отличается только знаком +)    String textZone_1 = "Alarm! Zone1";    // Свое название зоны ,  на латинице.  String textZone_2 = "Alarm! Zone2";    // Свое название зоны ,  на латинице.  String textZone_3 = "Alarm! Zone3";    // Свое название зоны ,  на латинице.  String textZone_4 = "Alarm! Zone4";    // Свое название зоны ,  на латинице.    #include   SoftwareSerial mySerial(2, 3);     #define pinSensor_0 4   #define pinSensor_1 5   #define pinSensor_2 6   #define pinSensor_3 7   #define pinSensor_4 8     void initGSM(void) {    delay(2000);                                mySerial.begin(9600);                   // Выставляем скорость общения с GSM-модулем 9600 Бод/сек.      mySerial.println("AT+CLIP=1");              delay(300);                                 mySerial.println("AT+CMGF=1");              delay(300);                                 mySerial.println("AT+CSCS="GSM"");        delay(300);                                 mySerial.println("AT+CNMI=2,2,0,0,0");      delay(300);                               }    /* Отправка SMS */  void sendSMS(String text, String phone) {    mySerial.println("AT+CMGS="" + phone + """);     delay(500);    mySerial.print(text);                             delay(500);    mySerial.print((char)26);           delay(2500);    }      unsigned long timerTemp = 0;    uint8_t hours = 0;                uint8_t flagSensor_0 = 0;  uint8_t flagSensor_1 = 0;  uint8_t flagSensor_2 = 0;  uint8_t flagSensor_3 = 0;  uint8_t flagSensor_4 = 0;    void setup() {    mySerial.begin(9600);    initGSM();         pinMode(pinSensor_0, INPUT);    pinMode(pinSensor_1, INPUT);    pinMode(pinSensor_2, INPUT);    pinMode(pinSensor_3, INPUT);    pinMode(pinSensor_4, INPUT);      timerTemp = millis();  }    void loop() {      if(millis() - timerTemp >= 3600000) {timerTemp = millis(); hours++;}      if(hours >= 144) {// Меняем время контроля системы на свое,144 часа.кол-во часов .      sendSMS(String("The system works normally.OK"), numberSMS_1);       delay(10000);                                        sendSMS(String("The system works normally.OK"), numberSMS_2);       delay(10000);                                        hours = 0;                                           timerTemp = millis();                             }       if(flagSensor_0 == 0 && digitalRead(pinSensor_0) == 0) flagSensor_0 = 1;     if(flagSensor_1 == 0 && digitalRead(pinSensor_1) == 0) flagSensor_1 = 1;     if(flagSensor_2 == 0 && digitalRead(pinSensor_2) == 0) flagSensor_2 = 1;     if(flagSensor_3 == 0 && digitalRead(pinSensor_3) == 0) flagSensor_3 = 1;    if(flagSensor_4 == 0 && digitalRead(pinSensor_4) == 0) flagSensor_4 = 1;      if(flagSensor_0 == 1) {      String command;        command = "ATD+" + numberCall_1 + ";";        mySerial.println(command);                    delay(20000);                                 mySerial.println("ATH");                      delay(1000);                                         command = "ATD+" + numberCall_2 + ";";        mySerial.println(command);                    delay(20000);                                 mySerial.println("ATH");                      delay(1000);                                    flagSensor_0 = 2;                           }        if(flagSensor_1 == 1) {      sendSMS(textZone_1, numberSMS_1);       delay(10000);                           sendSMS(textZone_1, numberSMS_2);       delay(10000);                           flagSensor_1 = 2;                     }        if(flagSensor_2 == 1) {      sendSMS(textZone_2, numberSMS_1);       delay(10000);                           sendSMS(textZone_2, numberSMS_2);       delay(10000);                           flagSensor_2 = 2;                     }        if(flagSensor_3 == 1) {      sendSMS(textZone_3, numberSMS_1);       delay(10000);                           sendSMS(textZone_3, numberSMS_2);       delay(10000);                           flagSensor_3 = 2;                     }        if(flagSensor_4 == 1) {      sendSMS(textZone_4, numberSMS_1);       delay(10000);                          sendSMS(textZone_4, numberSMS_2);       delay(10000);                           flagSensor_4 = 2;                    }      if(flagSensor_0 == 2 && digitalRead(pinSensor_0) != 0) flagSensor_0 = 0;    if(flagSensor_1 == 2 && digitalRead(pinSensor_1) != 0) flagSensor_1 = 0;    if(flagSensor_2 == 2 && digitalRead(pinSensor_2) != 0) flagSensor_2 = 0;    if(flagSensor_3 == 2 && digitalRead(pinSensor_3) != 0) flagSensor_3 = 0;    if(flagSensor_4 == 2 && digitalRead(pinSensor_4) != 0) flagSensor_4 = 0;  }  

Шаг третий. Проверка работоспособности устройства. При подаче напряжения питания пока загружаются модуль SIM800L и плата Arduino у вас есть примерно 20 секунд чтобы покинуть охраняемое помещение. На модуле SIM800L светодиод указывает на работу в сети- часто мигает это поиск сети, раз в пять секунд- работа в сети. Когда прибор найдет сеть разорвите соответствующие охранные входы, после этого произойдет дозвон или присылка СМС. Значит прибор работает нормально. Фото СМС. К этому прибору можно будет включить любые охранные извещатели с выходами в виде контактов, реле от исполнительных устройств, только в соответствие с вашими потребностями и фантазией. В целом мы изготовили несложный, охранный прибор. Такой самодельный сторож можно сделать для организации охраны любых объектов. Чтобы включить прибор сигнализации нужно через выключатель на SIM800 и Аrduino подать 4,2 Вольта. При первого входа пройдет звонок на абонента №1, после переключится на №2. Дополнительный №2 предусмотрен для дублирования. Обрыв шлейфа №2,3,4,5 делает выдачу SMS с конкретным названием нарушенного шлейфа, соответственно на оба телефона. Все платы поместим в любом в подходящем корпусе. В общем я думаю это неплохой интересный приборчик который можно в дальнейшем развить далее-добавить функции GSM розетки, управление по DMTF и многое другое. Подробнее можно посмотреть в видео Всем желаю здоровья и успехов в жизни и творчестве!Становитесь автором сайта, публикуйте собственные статьи, описания самоделок с оплатой за текст. Подробнее здесь.

Рекомендуемые товары

Понижающий DC-DC преобразователь LM2596

Регулируемый понижающий DC-DC преобразователь на основе микросхемы LM2596S…

57 ₽

GSM / GPRS shield SIM900

Плата расширения для Arduino, с поддержкой GSM / GPRS связи на базе модуля ..

1490 ₽

Понижающий DC-DC преобразователь LM317

Линейный регулируемый понижающий DC-DC преобразователь на основе микросхемы..

70 ₽

Светодиодный драйвер 4А LM2596-CC/CV

Светодиодный драйвер 4А LM2596-CC/CV — это модуль на базе понижающего DC-DC..

250 ₽

модуль, GSM, GPRS

  • Цена: 8.4$

«Мне надо дистанционно открывать дверь. Вернее, отключать магнит, который держит дверь…» Вот такая неожиданная просьба, причем речь изначально шла о gsm модеме, не то чтобы я знал все подробности, но на вопрос как сделать простейший выключатель решил ответить обзором. Буквально 5-7 строчек кода и все дела. Как и где модуль покупался я уже не помню, но специально нашел самую низкую цену при высоком рейтинге продавца. Внешний вид Чем примечательна именно данная версия модема: 1. В отличие от первой версии питается от 5В и не требует никаких dc-dc преобразователей, которые, между прочим тоже стоят денег — все выполнено непосредственно на плате. А как результат меньше устройств, меньше проводов, меньше соединений. 2. Отличная внешняя антенна 3. Маленькие размеры 40х28 мм 4. Отверстия под крепление!!! Не всегда и не везде их делают 5. Антенну будет очень удобно крепить в корпус, судите сами, разъем крепим на корпусе, на него навинчиваем антенну, не обязательно штатную, и проводом подключаем модем. По конструктиву все, дальше я это чудо загуглил на предмет кто-что с ним делал и скачал библиотеку SIM908IDE100, которая мне понравилась, но справедливости ради должен отметить, что она единственная которую я смотрел. Подключение: 5В модуля на 5В ардуино GND на GND TXD на 2 вывод ардуино RXD на 3 вывод ардуино VDD не задействован RST не задействован После подключения библиотеки открыл пример: Собрал все воедино и прошил Вот пара моментов, на которые можно обратить внимание: gsm.readSMS(smsbuffer, 160, n, 20) smsbuffer — массив символов формата char с смс сообщением n — номер телефона соответственно, чтобы не выводить свой номер телефона в терминал я закомментировал строку // Serial.println(n); Если модем поймал сеть, то светодиодный индикатор на модеме мигает примерно раз в 3 секунды, на после прошивки в терминале вы увидите надпись status=READY Далее я отправил на номер сим карты в модеме (кстати не забудьте ее поставить!) смс с текстом «Hello» Попробовал раскомментировать следующие строки, вбил свой номер и отправил смс уже себе на телефон Одним словом все работает замечательно, теперь к открытию двери путем отправки смс. Собственно ничего сложного, для проверки будем использовать светодиод на 13 контакте ардуино (будем им мигать через смс) и добавляем пару строчек кода. Что добавится к примеру: Попробовал — все отлично работает, позже подключил реле на 13 вывод ардуино — все отлично переключается Но для обзора это как-то хреновенько, да и сомневаюсь я, что человек будет рад отправлять по одной букве, а вот сообщения типа on-off подошли бы как нельзя лучше Код примитивный, но рабочий Код как он должен быть Принципиальная разница между первым и вторым вариантом в том, что после консультации со знающим человеком наступает просветление))) А если по нормальному, то смс заканчивается символом /r, я этого естественно не знал, поэтому сравнивал только 2 или 3 символа массива, остальная часть не учитывалась. Т.е. если послать Onnnn и On — результат будет идентичный, в последней версии этого недостатка нет. В зависимости от того что спросившему человеку нужно, можно сделать список команд, например отключить на 10 секунд замок, отключить до следующей команды и т.д… Ну и можно сделать на 3d принтере корпус для всего этого, а питать лучше от сети к которой подключен электрический замок. P.S. Модем мне понравился, все его плюсы относительно его собратьев я перечислил выше. + я надеюсь мой опыт вам пригодится. 108 голосов 1 ответ Модуль команд AT SIM7000E Я программирую некоторые функции на плате STM32. Эти функции состоят из последовательностей команд AT, которые передаются по UART на модуль SIM7000E для выполнения различных задач. Модуль используе… 116 голосов 1 ответ Передача данных на сервер php с использованием модуля gsm Я использую модуль SIM800c gsm для отправки данных на php-сервер Это команды, которые я пытаюсь отправить данные. AT AT+CPIN? AT+CREG? AT+CGATT? AT+CSQ AT+SAPBR=3,1,»Contype»,»GPRS» AT+SAPBR=3,1,»A… 63 голоса 1 ответ команда не отвечает на sim800L и arduino uno Я хотел бы попросить модуль SIM800L EVB отправить сообщение с использованием Arduino UNO R3 DIP/SMD CH340. я изменяю вывод tx/rx от 2, 3 наоборот, 7,8 результат либо не отображает ничего, либо како… 135 голосов ответов AWS: Возможно ли изменить распределение Cloudfront, которое автоматически создается для API шлюза? Я хотел бы поговорить с API Amazon Gateway с моим модулем SIM800c, который использует «TLS1.0». Тем не менее, я слышал, что AWS Gateway поддерживает TLS1. 2+, поэтому в отношении этого ответа я реш… 108 голосов ответов почему данные не отправляются на сервер с помощью sim800 в качестве клиента.? Почему данные не отправляются на сервер с помощью sim800 качестве клиента.? хотя sim800 был настроен в режиме передачи данных с использованием команды AT+CIPSEND и ответа после этой команды>. ещ… 89 голосов ответов Отправлять данные UDP в модуль GSM (sim800) by nodejs Я хочу отправить udp-пакет в модуль gsm. Это краткое изложение того, что я хочу сделать, но что я делаю и в чем проблема !? Код модуля со стороны написан моим братом, и код серверной стороны пишет … 63 голоса ответов Как я могу получить местоположение GPS для обновления каждый раз, прежде чем он отправит текстовое сообщение? Этот код Arundio Uno соответствует и отлично работает. Как только я включу модуль Sim808 и поместил свою сим-карту, он забирает сетевой сигнал через GSM, получает местоположение GPS от антенны и от… 76 голосов ответов Почему SIM-карта отвечает на AT + CIPSEND сообщением «+CME ERROR: операция не разрешена», когда IP-адрес и TCP-соединение установлены? Я работаю с командой для отправки данных из Raspberry Pi по сети 2G на сервер с помощью модуля GSM под названием «SIM800L EBV». Мы столкнулись с ошибкой AT + CIPSEND, которая возникла только в Замб… 100 голосов ответов Ограничена ли длина AT/ATD COMMAND? Пожалуйста, я недавно пробовал код с помощью платы SIM808 с Arduino Mega/Uno. SIM808, похоже, не поддерживает USSD, когда я проверял использование AT-команды с AT+CUSD=1,*232#,0 Поэтому я попытался… -9 голосов 3 ответа После использования strstr() подстрока также передается через uart Я пытался UART использовать STM32F407V6T6 и CubeMx . Поскольку я написал некоторые проблемы с strstr() . Вот некоторые новые проблемы. Вот код: char rxBuff[10]; int main(void) { HAL_Init(); SystemC… 132 голоса ответов SIM800L код статуса http 404 Когда HTTP-запрос получает метод, сервер отвечает с ошибкой 404. В браузере статус запроса для той же ссылки равен 200. Ограничение на длину ссылки для модема составляет 420 символов, мои ссылки со… 63 голоса 1 ответ Профиль Bluetooth SPP на SIM800H У меня возникают проблемы при попытке использовать bluetooth в моем проекте. В предыдущей версии я использовал модуль HC-05 для bluetooth, и он дает мне простое последовательное соединение сразу по… 108 голосов 2 ответа Код Python для определения местоположения в сети с использованием SIM-модуля SIM800c Я пытаюсь определить местоположение в сети с помощью модуля SIM800c GSM. Мне нужен код Python, чтобы получить широту и долготу сетевого расположения. Существуют AT-команды для длинных лат. AT+SAPBR… 134 голоса 3 ответа SIM800L Ошибка отправки SMS Я использую модуль SIM800L с помощью Texas Instruments Launchpad с микроконтроллером MSP430G2553, не использующим внешнюю библиотеку для SIM800L. Проблема: Простое текстовое сообщение (SMS с тексто… 62 голоса 1 ответ Не удалось получить данные с сервера с помощью модуля sim808 Я использую модуль FONA808 (используя чип sim808) для извлечения данных с веб-сайта. Однако я не могу этого сделать. Я проверил следующее: — GPRS connectivity : OK (AT+CGATT? returns ok) — Properly… -4 голоса 2 ответа BT на SIM800 не работает Я не могу заставить Bluetooth работать на SIM800. Команда AT + GSV дает следующий ответ: SIMCOM_Ltd. SIMCOM_SIM800 Версия: 1308B02SIM800M64_BT. Любая AT-команда я типа (например, AT_BTSTATUS =?) Да… 109 голосов 1 ответ strstr не может найти подстроку, но буфер содержит значение Я пытался UART использовать STM32F407V6T6 и CubeMx . Мой UART работает нормально. Проблема, которую я получаю при сравнении буфера: я использую strstr() чтобы проверить, что мой буфер содержит допу… 64 голоса ответов Не удалось отправить данные в службу поддержки через Sim 800 Я подключил sim800L к компьютеру через разъем TTL. Используя «шпатлевку», я попытался отправить данные на iphone через sim 800 GSM-модуль, используя следующие AT-команды. AT AT+CPIN? AT+CREG? AT+CG… 78 голосов ответов Сервер NodeJS (на AWS EC2) не получает каждый запрос на получение от модуля SIM800 (настроенный в Arduino) Я запускаю сервер NodeJS на экземпляре AWS EC2 (на порту 80) для прослушивания запросов от модуля SIM800. Однако он не получает каждый запрос от модуля (он получает первый запрос GET в цикле, котор… 100 голосов ответов Использование SIM800C для HTTP POST — улучшение общего времени У меня есть код Arduino ESP32, который работает с использованием Wi-Fi и что я перехожу к использованию платы SIM800C GSM/GPRS. Код выполняет HTTP POST каждые 5 минут, чтобы отправить небольшой объ… 88 голосов 1 ответ Отправка нескольких почтовых запросов с sim800C Я работаю на плате sim800C, в первую очередь над отправкой HTTP-запросов. Как я понимаю из руководства и примеров в Интернете, процесс отправки запроса с помощью AT-команд включает в себя: Настройк… 90 голосов ответов Невозможно установить номер телефона получателя с помощью AT + CMGS = «XXXXXXXXX» возвращает ошибку 325 Я использую SIM808 для отправки СМС на perticuar номер. Но при попытке установить число с помощью AT + CMGS = XXXXXXX возвращает +CMS ERROR: 325. Я установил AT + CSCS на GSM, но все равно не повезло. 108 голосов ответов Ответ команды httpaction — значение мусора из модуля gsm STM32F407VGT6 MCU: STM32F407VGT6 BOARD: STM32F4 Discovery IDE: TrueStudio ДОПОЛНИТЕЛЬНО: CubeMx ПЕРИФЕРИЙ: SIM800C GSM Module H Я пытался общаться с сайтом, используя мой stm32, и пришел к этой про… 77 голосов 2 ответа Команды pySerial + SIM800/900 AT — буфер чтения содержит данные буфера записи от Я пытаюсь отправить AT-команды через pySerial на модуль SIM800. Проблема, с которой я столкнулась, заключается в том, что когда я отправляю команду, сообщение, которое я получаю обратно, является р… 63 голоса ответов Должен ли ответ добавляться прямо к AT-команде, если включен ATE1 (эхо)? Я собираюсь реализовать консольную программу для ПК, которая работает с модемом GPRS (особенно SIM800L). Я только что узнал, что сложно анализировать ответы из-за появления UCR (Unsolicited Result … 64 голоса ответов импорт SSL сертификата в SIM800C Я хочу загрузить SSL-сертификат в модем SIM800c, используя команду At Command и следуя тому же процессу, что и в документе. Но я терплю неудачу каждый раз. Процесс, как показано ниже для AT Command… 98 голосов ответов Как разместить данные через AT команду? Я использую raspberry Pi и SIM800L (USB-соединение) для отправки данных через HTTP POST REQUEST. Вот мой код на Python: Импортированная библиотека: import time, serial, sys, json Функция отправки s… -5 голосов ответов Sim800c Embedded AT Lib Я ищу библиотеку модемов для SIM800C. Для программирования внутреннего mcu модема. Есть ли доступная lib? кроме приложения Embedded AT Application. 77 голосов 1 ответ SIM800L GSM-модуль не подключается к сети У меня есть модуль SIM800L, и я хочу отправить SMS. Но этот модуль не подключается к сети. Я из Шри-Ланки. Я пользуюсь 3G SIM-картой, и я думаю, что это не проблема, потому что если она 3G SIM, она…

Ищете еще? Найдите вопросы с помощью поисковой формы вверху страницы или с помощью рубрикатора, помогите ответить на вопросы без ответа.

Оцените статью
Рейтинг автора
5
Материал подготовил
Илья Коршунов
Наш эксперт
Написано статей
134
А как считаете Вы?
Напишите в комментариях, что вы думаете – согласны
ли со статьей или есть что добавить?
Добавить комментарий