Управление нагрузкой через SMS (GSM) и Arduino.
Управление нагрузкой через SMS (GSM) и Arduino.

В данной статье расскажу как можно управлять нагрузкой удаленно по SMS сообщениям. В примере используем GSM модуля SIM800L, двух канальное реле и плат Arduino UNO.

Управление нагрузкой по SMS с использованием SIM800L и Arduino

Необходимые детали:
► Arduino UNO R3 x 1 шт.
► Модуль GSM, GPRS на чипе SIM800L x 1 шт.
► Модуль реле 2-о канальный — 5V, 10A, 250V — lOW x 1 шт.
► Преобразователь напряжения LM2596, DC 3.2-40B на DC 1.38-35B, 3А, Step-Down x 1 шт.
► Провод DuPont 10x, 2.54 мм, 20 см, F-M, Female — Male x 1 шт.

Подключение:
Для стабильно работы модуля SIM800L необходим источник питания с рабочим током 2А, подойдет преобразователь напряжения LM2596 с настроенным выходным напряжением 4.3 В (можно воспользоваться модулем MINI360).
Первым делом подготавливаем модуль SIM800L, припаиваем контакты и антенну, затем устанавливаем SIM карту любого оператора. Теперь подключаем вывод Tx на модуле к выводу 3 на Arduino. Вывод Rx нельзя подключать напрямую, так как цифровой вывод Arduino UNO использует 5В, а модуль SIM800L использует 3,3В. Необходимо сигнал Tx, поступающий от Arduino UNO, понизить до 3,3В, чтобы не спалить модуль SIM800L. Самый простой способ, это воспользоватся делителем напряжения на резисторах. Подключаем резистор на 10 кОм между выводом Rx (SIM800L) и выводом 2 (Arduino) и второй резистор на 10 кОм между выводом Rx (SIM800L) и GND. Теперь осталось подключить питание модуля, в примере используется стабилизатор напряжения на LM2596.
Осталось подключить двух канальное реле, подключаем IN1 и IN2 к выводам A0 и A1, затем необходимо подключить питание VCC и GND к плате ARDUINO.

Управление нагрузкой через SMS (GSM) и Arduino.

Программа:
Для работы скетча необходима библиотека «SoftwareSerial» которая входит с среду разработки IDE.

Скачать скетч

Открываем окно «Мониторинг порта» , устанавливаем скорость «9600 и «NL» (Новая строка)». При отправки SMS с любого телефона ON_1 (ON_2) первое или второе реле включиться или OFF_1 (OFF_2) отключиться, в ответ приходит сообщение о состоянии.

Управление нагрузкой через SMS (GSM) и Arduino.

Описание скетча:
Скетч начинается с включения библиотеки «SoftwareSerial.h» и указании выводов к которым подключены Tx и Rx модуля SIM800L.

Далее создаем переменную «incomingByte» для хранения SMS сообщения и указываем к каким выводам подключено реле.

В функции void setup(), первым делом настраиваем реле, устанавливаем вывода как выход и устанавливаем лог «1», чтобы реле было по умолчанию выключено.

Далее, инициализируем последовательный связь между Arduino и модулем SIM800L на скорости 9600 бод.

Командой while зацикливаем программу до связи с SIM800L. Если модуль обнаружен, отправляем команду «AT+CMGF=1» для установки текстового режим и отправляем команду «AT+CMGL=\»REC UNREAD\».

В основной части программы, проверяем нет ли сообщений « if(mySerial.available())», если сообщение есть, считываем данные пока полностью не закончиться сообщение.

Меняем все буквы на заглавные

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

Последняя функция просто отправляем сообщение об состоянии.

Купить на Aliexpress
  Контроллер Arduino UNO R3 на CH340G
  Контроллер Arduino UNO R3 на Atmega16U2
  Провода DuPont, 2,54 мм, 20 см
  Модуль GSM, GPRS на чипе SIM800L
  Преобразователь напряжения LM2596, DC 3.2-40B на DC 1.38-35B, 3А, Step-Down
  Преобразователь напряжения LM2596 с вольтметром, DC 4-40B на DC 1.38-35B, 3А, Step-Down
  Модуль реле 2-х канальный — 5V, 10A, 250V — lOW, OPTO

Купить в Самаре и области
  Контроллер Arduino UNO R3 на CH340G
  Контроллер Arduino UNO R3 на Atmega16U2
  Провода DuPont, 2,54 мм, 20 см
  Модуль GSM, GPRS на чипе SIM800L
  Понижающий преобразователь напряжения LM2596, DC 3.2-40B на DC 1.38-35B, 3А
  Понижающий преобразователь напряжения LM2596 с вольтметром, DC 4-40B на DC 1.25-37B, 3А
  Модуль реле 2-х канальный — 5V, 10A, 250V — lOW, OPTO

39 комментариев для “Управление нагрузкой через SMS (GSM) и Arduino.”
  1. «В функции void setup(), первым делом настраиваем реле, устанавливаем вывода как выход и устанавливаем лог «1», чтобы реле» — что бы реле было по умолчанию включено ?

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

  3. А еще я правильно понимаю, что в этом скейтче нет номера телефона админа, смс можно слать с любого?

  4. Добрый день! Не удается повторить, не срабатывают команды. В чем может быть дело?

  5. Полезная статья, все просто и понятно, я добавил еще проверку номера телефона и сделал себе сигнализацию. Спасибо .

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

  7. Сергей, присоединяюсь к вопросу об автоматическом определении номера , на который будет отвечать Ардуино. Не подкорретировали еще код?

  8. Здравствуйте. А можно сделать кратковременные замыкание реле? Просто нужно сделать включение подогревателя в автомобиле. А там просто подключиться к кнопке включения. Т. е. сделать симуляцию нажатия кнопки. И возможен ли еще вариант включения реле по звонку вместо Смс?

    1. Здравствуйте, да можно сделать кратковременное включение, по смс

      if (inputString.indexOf(«ON») > -1)
      {
      digitalWrite(relay_1, LOW);
      delay(10);
      digitalWrite(relay_1, HIGH);
      sms(String(«Relay 1 — OFF»), String(«+xxxxxxxxxx»));
      }

  9. У меня почему то по данному коду после отправки СМС, в ответ начинает валится СМС (ОК) без остановки, что не так?

  10. Здравствуйте . Можно ли прикрепить тачик температуры к ардуино и его отслеживать запрсом например Temp

  11. Здравствуйте, Сергей! Спасибо за материал. Опыта мало, но все получилось! У меня просьба — подскажите как организовать контроль напряжения аккумулятора тоже по смс ? Сенсор добавить удалось, а вот с напряжением — никак.

  12. Здравствуйте Сергей, у меня всё работает, но только после включения»Монитор порта» и ещё хотелось бы на 4-е релюшки.
    Помогите пожалуйсто.
    Спасибо.

        1. Вернулся в исходник.
          Работает как хочет. То реле не включает, то ответа нет, а всë сработало.

  13. Здравствуйте, скажите почему для выводов 3 и 2 нельзя задать значение pinMode() что-бы на них сразу было 3.3В без делителей?

  14. У меня тоже смсками заваливает по данному коду.. где ошибку искать?

  15. Здравствуйте! Использовал ваш код, и после включения у меня начинает присылать множество cmc(зацикливается), хотя нужна только одна? Подскажите что нужно сделать?

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

    1. А можно поподробней, как закоментировал все обращения через Serial….

    2. Денис, а на какой плате вы собирали? Не приходится ли нажимать Reset после пропадания питания?

    3. Добрый день, аналогичная проблема «не стартует ардуинка если не открыт монитор порта», не могли бы выложить актуальный скетч с исправлениями, или написать здесь что нужно исправить. Спасибо большое.

  17. Добрый день!
    Хотел сделать устройство управления многоканальной загрузкой с дополнительными параметрами работы, задающимися в SMS в качестве ключей. Но столкнулся со следующей проблемой: при отправке SMS, полезная длина сообщения ограничена 13 символами (общая длина inputString включая служебный заголовок SMS и тело SMS получились то-ли 62, то-ли 64 байта). Всё что было за ними либо не пришло совсем, либо не поступает в переменную inputString. Можете подсказать, в чём может быть проблема?

  18. При повторении данного устройства на ARDUINO Nano с этим скетчем все работает нормально, кроме одного момента. Когда устройство подключено автономно от внешнего БП (без подключения по USB) при пропадании питания не стартует скетч без нажатия Reset. Поэтому весь смысл проекта теряется. Может автор сталкивался с подобной проблемой или кто-нибудь еще?

    1. Сталкивался. Нужно правильно подобрать питание. Используйте 2 понижайки и БП 12 вольт 2А (минимум), так как присутствует gsm-модуль.

  19. Здравствуйте. Подскажите, с нескольких номеров можно отправлять сообщения? Как правильно их перечислить?
    sms(String(«Relay 1 — OFF»), String(«+xxxxxxxxxx»));

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *