+7-914-236-71-06
Категории
Последние статьи
Поставлена задача собрать реле времени на 220в просто, дешево и сердито. Вот 100% рабочая схема: На устройство подается 220в Нагрузка подключена через реле Выключатель стоит в цепи 12В.. Читать
Реле времени, или как сейчас говорят, таймеры, в простом случае имеют всего несколько элементов на схеме. Но при своей простоте, это очень важные элементы схем. Работа подавляющего большинства таймеро.. Читать
Светодиодная лампочка, как и обычная, лампа накаливания является одноразовым изделием, и цена на Led лампы сейчас не высока, но если хочется занять руки или жалко выкидывать лампу качественного изгото.. Читать
У праворульной машины в нашей стране есть одно маленькое неудобство- плохой обзор перед началом обгона. Решений несколько, возить с собой навигатора, ставить "перископ", установить обгонную камеру или.. Читать
Все статьи

ARDUINO + GSM

ARDUINO + GSM

Ну что, друзья, наигрались светодиодиком в ардуине? Пора прилепить к вашей плате серьезный модуль, который несколько расширит горизонты использования базовой платы. Говоря о расширении горизонта, я вполне серьезно имею в виду охват территории планетного масштаба…. 

GSM модуль, который за 5-10 минут собирается из набора GSM KIT M590 нам в помощь.

Проверить возможности модуля для дальнейшего использования в устройстве можно, подключив компоненты на макетной плате по схеме ниже:

Необходимо учесть, что модуль GSM потребляет от источника тока до 1,5 Ампера в режиме регистрации в сети. По этой причине, модуль нужно запитать от отдельного источника напряжением 5В. Разумеется, для обеспечения возможности управлять модулем, нам потребуется обеспечить замкнутую электрическую цепь, для этого подключим все наши устройства к общему минусу.

Маленькое замечание: для избегания «танцев с бубном» при запуске модуля GSM, я поставил SMD резистор 10кОм между ножками GND и BOOT разъема модуля. Это означает, что модуль будет включаться сразу при подаче питания.

Итак, слепили схему? Теперь зальем скетч:

#include <SoftwareSerial.h>

SoftwareSerial GsmSerial(2, 3);          // RX-2 pin, TX-3 pin

 

String AdminPhone="71234567890";              // Телефон админа

int pinLed=13;                                // Номер порта светодиода, который будем включать/выключать

 

void setup()

{

  pinMode(pinLed, OUTPUT);                       // Режим порта на вывод

  

  Serial.begin(9600);

  GsmSerial.begin(38400);                        // Устанавливаем скорость связи Ардуино и модема

  

  GsmSerial.println("ATE0");                // выключаем эхо

  delay(100);

  GsmSerial.println("AT+CLIP=1");                // Включаем АОН

  delay(100);

  GsmSerial.println("AT+CMGF=1");                // Формат СМС = ASCII текст

  delay(100);

  GsmSerial.println("AT+CSCS=\"GSM\"");          // Режим кодировки текста = GSM (только англ.)

  delay(100);

  GsmSerial.println("AT+CNMI=2,2");              // Текст смс выводится в com-порт

  delay(100);

  

  String str="";

  while(str.indexOf("+COPS: 0") == -1) {        // Ждем пока модем будет готов

    GsmSerial.println("AT+COPS?");

    str=ReadCom();

    delay(300);

  }

}

 

void loop()

{

  String strSms = ReadCom();                  // Читаем смс, если есть

  while (strSms.length()==0)                                  {

    delay(500);

    strSms = ReadCom();

  }

  

  // Если телефон админа, то читаем дальше

  if (strSms.indexOf(AdminPhone) > -1)   {

    if (strSms.indexOf("+CMT") > -1)     {    // Если смс

      // Кодовое слово "on"

      if (strSms.indexOf("on") > -1) {    // Если обнаружено ключевое слово на включение

        digitalWrite(pinLed,HIGH);             // Включаем светодиод

        SendSms("led=on", AdminPhone);       // Можем отправить смс, что включили

        Serial.println("led=on");

      }

      // Кодовое слово "off"

      if (strSms.indexOf("off") > -1){    // Если обнаружено ключевое слово на выключение

        digitalWrite(pinLed,LOW);             // Выключаем светодиод

        SendSms("led=off", AdminPhone);     // Можем отправить смс, что выключили

        Serial.println("led=off");

      }

    }

    if (strSms.indexOf("RING") > -1)     {    // Если звонят (выполняется на каждый гудок)

      // Можем, что нибудь выполнить

      Serial.println("start call");

    }

  }

  if (strSms.indexOf("NO CARRIER") > -1){   // Если звонок окончен

    //SendSms("called", AdminPhone);     // Можем отправить смс, что нам звонили

    Serial.println("end call");

  }

}

 

// Читает смс

String ReadCom()

{

  int chCode = 0;                              // Код символа

  String strSms = "";                          // Текст

  if (GsmSerial.available()) {                 // Есть данные от модема

    delay(300);

    // Считываем смс с com-порта модема

    while (GsmSerial.available()) {            // Если есть еще символы, то читаем

      chCode = GsmSerial.read();               // Считываем очередной символ

      strSms += char(chCode);                  // Добавляем к строке

      delay(10);

    }

  }

  if (strSms.length()>0) {

    Serial.println("++++++++++");

    //Serial.println();

    Serial.println(strSms.length());

    Serial.println(strSms);

  }

  return strSms;

}

 

// Отправляет текст смс на определенный номер

void SendSms(String text, String phone)

{

  phone="+"+phone;

  GsmSerial.println("AT+CMGS=\"" + phone + "\""); // Заголовок АТ команды и номер телефона

  delay(500);

  GsmSerial.print(text);                          // Текст смс

  delay(500);

  GsmSerial.print((char)26);                      // Конец сообщения и отправляем смс

  delay(500);

}

 

После заливки прошивки, подключите питание к GSM модулю и сбросьте кнопкой «ресет» Ардуинку. Вы должны заметить веселые перемигивания лампочек в дуинке и модуле, после чего модуль GSM станет мерно мигать светодиодом – это означает, что модуль успешно зарегистрировался в сети и ждет ваших указаний (вы ведь не забыли вставить SIM карту в слот модуля?).

Эти самые указания мы дадим нашему созданию с мобильного телефона:

Наберите SMS команду «on» (разумеется, без кавычек) и отправьте на номер симки устройства. Ничего?  Упс… мы забыли поправить скетч…

В строке   String AdminPhone="71234567890";  вместо 71234567890  вбейте свой номер телефона, с которого вы будете давать команды устройству в формате 7хххххххххх

Поправили скетч => заливаем => запускаем => отправляем команду «on»

О чудо электронное! Лампочка на плате зажглась! Можно начинать читать хвалебные молитвы богу Електрону… Простите, увлекся…

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

Дополнительный приятный бонус такой системы – подтверждение выполнения команды, устройство услужливо отрапортует вам в ответном SMS  о выполнении задачи!

Чтобы выключить светодиод – отправьте команду «off», и снова рапорт о выполнении…

Ну что, завертелась мысля? Что можно соорудить на таком функционале?

Предлагайте – обсудим!

tarip

Опубликовано tarip

Товары связанные со статьёй

Комментариев к статье "ARDUINO + GSM" : 10

Евгений добавил комментарий 06 Feb 2019
Ресет каждый раз надо нажимать когда питание включаю? Ответить
tarip добавил комментарий 06 Feb 2019
Нет не всегда, запуск платы зависит от условий сигнала. При слабом приеме или долгой регистрации в сети, модуль может не принимать команды от ардуинки, в этом случае нужно перезапустить плату. Прошу учесть, этот конкретный скетч только демонстрирует саму возможность работы с GSM, и не является готовой программой. Для более стабильной работы используйте свою программу или одну из версий программ шилда GSM (смотрите в разделе "радиоконструкторы"
tarip добавил комментарий 21 Jan 2019
Первый признак регистрации в сети- медленное моргание светодиода. Скетч из данной статьи не проводит проверку регистрации модема в сети. Если вам нужна такая функция, попробуйте использовать скетч из первых версий шилда GSM: https://neru5.ru/index.php?route=product/product&path=118&product_id=682 Ответить
Михаил добавил комментарий 21 Jan 2019
Здравствуйте! Красный диод на модеме М590 моргает, а сеть, то есть,то нет. Как узнать, что модем в сети? Ответить
tarip добавил комментарий 21 Jan 2019
И еще, модем M590 не отличается высокой чувствительностью, поэтому в районах с плохим приемом, рекомендую увеличить длину антенны или использовать GSM антенну заводского изготовления. Результат гораздо лучше.
Юрий добавил комментарий 14 Nov 2018
Криво работает. Каждое смс коверкает номер админфона и не принимает команды ))) и в итоге ничего не заработало. Ответить
tarip добавил комментарий 14 Nov 2018
Юрий, если у ВАС не получилось, дело не в скетче и конструкции! сотни людей повторили схему и все получилось. Задумайтесь над этим, прежде чем писать о "кривости". Если у вас не вышло можно спросить совет, всегда помогу. Или воспользоваться готовым решением: https://neru5.ru/index.php?route=product/product&path=118&product_id=979
Дмитрий добавил комментарий 10 Apr 2018
А как скетч подправить, чтоб можно было управлять пятью светодиодами и добавить еще 2 номера с которых отправлять смс? Дайте хотя бы подсказку, пните в нужное направление, сам с кодом не разберусь. Ответить
tarip добавил комментарий 23 Apr 2017
https://drive.google.com/open?id=0BxS4SE7y6LqXSGQ4WjhTNUFra2s по ссылке скетч для запуска котла Бинар. в нем один из каналов включается на 0,8 сек и запускает котел. Ответить
Алексей добавил комментарий 23 Apr 2017
Привет! А можешь написать скейч что бы диод включался на 0.8 сек. Ответить

Оставить комментарий

Автор:


Введите код с картинки:

Текст комментария:
Внимание: HTML не поддерживается! Используйте обычный текст!
Neru5RU © 2019
Яндекс.Метрика
^ Наверх