Категории
Последние статьи
Утечка тока - одна из множества неисправностей в автомобиле, которую довольно сложно диагностировать. Проявляется такая неисправность обычно зимой, когда емкость аккумулятора снижена и каждый ватт на .. Читать
Поступил мне забавный заказ, владелец маленького дачного киоска попросил установить ему в торговую точку простую сигнализацию с датчиком движения. В серьезных решениях резона не было, киоск сезонный и.. Читать
Владелец маленькой частной автостоянки, жуткий скряга, нужно сказать, принес мне кучу старого пластика с проводами, утверждая, что раньше это было переговорным устройством в сторожке. Он долго расписы.. Читать
Иногда я сталкиваюсь с необходимостью проверки или разблокировки блоков сигнализаций вне автомобиля, например, когда клиент решил установить сигнализацию, купленную в Китае за три копейки. Такой девай.. Читать
Все статьи

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" : 2

tarip добавил комментарий 23 Apr 2017
https://drive.google.com/open?id=0BxS4SE7y6LqXSGQ4WjhTNUFra2s по ссылке скетч для запуска котла Бинар. в нем один из каналов включается на 0,8 сек и запускает котел. Ответить
Алексей добавил комментарий 23 Apr 2017
Привет! А можешь написать скейч что бы диод включался на 0.8 сек. Ответить

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

Автор:


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

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