PCCar.ru - Ваш автомобильный компьютер

Вернуться   PCCar.ru - Ваш автомобильный компьютер > MP3Car ТехИнфа > Беcпроводные коммуникации > Модемы GSM

Ответ
 
Опции темы Поиск в этой теме
Старый 12.02.2017, 23:58   #1
Xellow
Старший Пользователь
 
Регистрация: 23.02.2010
Город: Смоленск
Регион: 67
Машина: Sportage 3
Сообщений: 165
Xellow will become famous soon enoughXellow will become famous soon enough
По умолчанию Arduino + GSM

Добрый вечер всем. Появилась навязчивая мысль, сделать некое устройство на базе Arduino + GSM модуля SIM 800L, которое будет в состоянии по звонку или СМС запросу, выполнять команды(запуск авто, пуск ПК), а так же сообщать в ответных СМС различную информацию, типа - напряжение АКБ, температура авто, удачный/неудачный пуск двигателя и т.д. И плюс использовать возможности перехода в режим энергосбережения Arduino и SIM 800L.
Сейчас уже использую связку Arduino + GSM устройство на базе GSM розетки Мегафона, для автозапуска, но не нравится энергопотребление этого "бутерброда" и не возможность добавлять свои команды и свои СМС в этом варианте.
Никто не делал что то подобное? Или может в интернете натыкался?

Последний раз редактировалось admin; 20.03.2017 в 02:45.
Xellow вне форума   Ответить с цитированием
Старый 13.02.2017, 12:46   #3
awtoap
Гуру
 
Аватар для awtoap
 
Регистрация: 19.09.2009
Возраст: 46
Город: Мелитополь
Регион: Украина
Сообщений: 2,022
awtoap is a splendid one to beholdawtoap is a splendid one to beholdawtoap is a splendid one to beholdawtoap is a splendid one to beholdawtoap is a splendid one to beholdawtoap is a splendid one to beholdawtoap is a splendid one to behold
По умолчанию

Цитата:
Ну тогда почитайте это для начала.... или аналогичное.
И каким боком это к вопросу автора? GPS и GSM не одно и тоже )
awtoap вне форума   Ответить с цитированием
Старый 13.02.2017, 12:53   #4
Xellow
Старший Пользователь
 
Регистрация: 23.02.2010
Город: Смоленск
Регион: 67
Машина: Sportage 3
Сообщений: 165
Xellow will become famous soon enoughXellow will become famous soon enough
По умолчанию

Цитата:
Сообщение от YAM1966 Посмотреть сообщение
Ну тогда почитайте это для начала.... или аналогичное.
То же, не очень понял к чему это))
Xellow вне форума   Ответить с цитированием
Старый 13.02.2017, 14:58   #5
lti1
Старший Пользователь
 
Аватар для lti1
 
Регистрация: 17.01.2010
Возраст: 48
Город: Самара
Регион: 63, 163
Машина: Skoda Octavia A5 FL && Skoda Octavia Tour && ̶F̶F̶3̶
Сообщений: 457
lti1 has a reputation beyond reputelti1 has a reputation beyond reputelti1 has a reputation beyond reputelti1 has a reputation beyond reputelti1 has a reputation beyond reputelti1 has a reputation beyond reputelti1 has a reputation beyond reputelti1 has a reputation beyond reputelti1 has a reputation beyond repute
По умолчанию

Есть более бюджетный вариант чем SIM 800, M590, спящем режиме потребляемый ток составляет 2,5-3 мА.
lti1 вне форума   Ответить с цитированием
Старый 13.02.2017, 15:18   #6
Xellow
Старший Пользователь
 
Регистрация: 23.02.2010
Город: Смоленск
Регион: 67
Машина: Sportage 3
Сообщений: 165
Xellow will become famous soon enoughXellow will become famous soon enough
По умолчанию

Железки уже заказал -отступать некуда))
Xellow вне форума   Ответить с цитированием
Старый 13.02.2017, 15:28   #7
YAM1966
Гуру
 
Аватар для YAM1966
 
Регистрация: 01.06.2013
Возраст: 58
Регион: Украина
Машина: Toyota Fortuner 4.0 / Chevrolet Bolt EV
Сообщений: 2,006
YAM1966 has much to be proud ofYAM1966 has much to be proud ofYAM1966 has much to be proud ofYAM1966 has much to be proud ofYAM1966 has much to be proud ofYAM1966 has much to be proud ofYAM1966 has much to be proud ofYAM1966 has much to be proud ofYAM1966 has much to be proud ofYAM1966 has much to be proud ofYAM1966 has much to be proud of
По умолчанию

SIM800L в плане управления получше, так как ко всему прочему позволяет управляться с помощью DTMF команд с телефона. Да и меньше по габаритам.

Последний раз редактировалось admin; 23.03.2017 в 01:21.
YAM1966 вне форума   Ответить с цитированием
Старый 13.02.2017, 23:38   #8
lti1
Старший Пользователь
 
Аватар для lti1
 
Регистрация: 17.01.2010
Возраст: 48
Город: Самара
Регион: 63, 163
Машина: Skoda Octavia A5 FL && Skoda Octavia Tour && ̶F̶F̶3̶
Сообщений: 457
lti1 has a reputation beyond reputelti1 has a reputation beyond reputelti1 has a reputation beyond reputelti1 has a reputation beyond reputelti1 has a reputation beyond reputelti1 has a reputation beyond reputelti1 has a reputation beyond reputelti1 has a reputation beyond reputelti1 has a reputation beyond repute
По умолчанию

YAM1966, согласен. И цена не сильно то и отличается от M590.
Xellow, SIM800L и Arduino работа в режиме энергосбережения.

Последний раз редактировалось admin; 20.03.2017 в 02:43.
lti1 вне форума   Ответить с цитированием
Старый 14.02.2017, 18:55   #9
skanch
Модератор
 
Аватар для skanch
 
Регистрация: 19.01.2010
Возраст: 58
Город: Санкт-Петербург
Регион: 78, 98
Сообщений: 2,645
skanch has a brilliant futureskanch has a brilliant futureskanch has a brilliant futureskanch has a brilliant futureskanch has a brilliant futureskanch has a brilliant futureskanch has a brilliant futureskanch has a brilliant futureskanch has a brilliant futureskanch has a brilliant futureskanch has a brilliant future
По умолчанию

Цитата:
Сообщение от Xellow Посмотреть сообщение
Никто не делал что то подобное? Или может в интернете натыкался?
Модуль SIM800L очень надежный, простой и не требует сложных манипуляций. Единственное требование- это к питанию - от 3.7В до 4.2В. Пользуюсь такими-очень доволен.Ниже несколько скетчей - может пригодятся.

Один с запросом баланса на СИМ и триггером включения канала по звонку.

PHP код:
#include <SoftwareSerial.h>
#include <Bounce.h>
String currStr "";
SoftwareSerial gprsSerial(23);
String nomber_Phone "";//Строка содержит номер телефона
Bounce bouncer Bounce(540); //создаем экземпляр класса Bounce для 5 вывода
//String currStr1 = "";//Строка содержит текущую строку, полученую от сим модуля.
char data;//Содержит символ полученый от сим модуля.
String str_1  ""number  ""// str_1 - сообщение, number - телефонный номер звонившего


 
void setup()
{
   
pinMode(9OUTPUT); //пин к которому подключен светодиод
  
pinMode(5INPUT_PULLUP);   //переключаем 5 вывод в режим входа (от SIM модуля)
  
Serial.begin(9600);
  
gprsSerial.begin(9600);
  
//   Настраиваем приём сообщений 
  //   Между командами даём время на их обработку

  
gprsSerial.println("AT");
  
delay(500);
  
Serial.println("AT+CMGD=4");//Удаляем всё SMS которые могут содержаться на сим карте.  
   
gprsSerial.println("ATE0");                // выключаем эхо

  
delay(100);

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

  
delay(100);

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

  
delay(100);

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

  
delay(100);
  
gprsSerial.println("AT+CSQ");// Проверяем уровень сигнала
    
delay(800);

 
gprsSerial.println("AT+CMGF=1"); //устанавливает текстовый режим смс-сообщения
  
delay(300);

  
gprsSerial.println("AT+IFC=1,1"); //устанавливает программный контроль потоком передачи данных 
  
delay(300);

  
gprsSerial.print("AT+CPBS=");//открывает доступ к данным телефонной книги
  
gprsSerial.print((char)34);
  
gprsSerial.print("SM"); // SIM-карты
  
gprsSerial.print((char)34);
  
gprsSerial.println("");
  
//    gprsSerial.print((char)13);
  
delay(300);

  
gprsSerial.println("AT+CNMI=1,2,2,1,0");//включает оповещение о новых сообщениях, 
  //новые сообщения приходят в следующем формате:
  // +CMT: "<номер телефона>", "", "<дата, время>", 
  //а на следующей строчке с первого символа идёт содержимое сообщения
  
delay(300);
 
balance();
 
}


void loop()
{
{
if (
Serial.available())
  
gprsSerial.write(Serial.read());
  
// если поступил звонок
  
if (bouncer.update())
  {   
    if (
bouncer.read()==0)
    {
    
digitalWrite(9HIGH); //включить светодиод
    
gprsSerial.println("ATD +7981*******;");   //показать номер номер телефона
    
delay(15000);
    
gprsSerial.println("ATH0");
    
digitalWrite(9LOW);   //выключить светодиод 
    
}  
  } 
    if (
gprsSerial.available()) // если пришло что то от GSM модуля, то вызываем обработчик
  
{
    
response_on_dial();
  }
}



//++++Запрос баланса+++//
{
  if (
gprsSerial.available()){
    
char currSymb gprsSerial.read();
    if (
'\r' == currSymb) {  //если символ перевод каретки
      
if  (currStr.startsWith("+CUSD: 0,")) {
        
int zzz currStr.indexOf("UAH");
        
String balance=currStr.substring(10,zzz-3); //баланс на сим карте
        
Serial.print(balance);
        
smsSendAlarmcurrStr);
      }
      
currStr "";
    } 
    else if (
'\n' != currSymb) { //если символ НЕ новая строка
      
currStr += String(currSymb);
    }          
  }
}
}
//процедура отправки СМС
void smsSendAlarm(String text
{
    
String NBoss "7981*******"// вместо звездочек вписать номер телефона
    
gprsSerial.println("AT+CMGS=\"" NBoss "\"");  //Отправляем на GSM комманду отправка смс-номер
    
NBoss "";                                //Очищаем перемунную
    
delay(300);                                //Делаем задержку на передачу комманды
    
gprsSerial.print(text);                           //Отправляем на GSM комманду отправка смс-текст
    
text "";                                 //Очищаем перемунную
    
delay(500);                                //Делаем задержку на передачу комманды
   
gprsSerial.print((char)26);                       //Отправляем на GSM комманду отправка смс!
    
delay(5000);                               //Делаем задержку отправку смс
    
}
void balance () {

gprsSerial.print("AT+CUSD=1,");
gprsSerial.print('"');
gprsSerial.print("#100#");
gprsSerial.println('"');

}

// Обработчик входящего вызова 
void response_on_dial()
{
  
delay(500);
  while (
gprsSerial.available())
  {
    
char c  gprsSerial.read();
    
Serial.write(c);
    
str_1  +=  c// загоняем в str_1 сообщение от модуля
  
}
  
// Находим в строке "+7981" и выдёргиваем из строки номер телефона
  
if (str_1.startsWith("RING"2))
  {
    
int index_number str_1.lastIndexOf("+7981");
    if (
index_number != -1)
    {
      
number  str_1.substring(index_number, (index_number 13));
      
// Пришел вызов в номера "number", далее пишем, что делаем
      
String str_2  "Ring!!!"  number;
      
Serial.println(str_2);
      
delay(3000);
      
gprsSerial.println("ATH0"); // сбрасываем вызов АТ-командой "АТН"
     
    
if(digitalRead(9) == LOW
     {
Serial.println("Led ON");
    
digitalWrite(9,HIGH); // инвертируем выход led
     
     
}
    else 
    {
    
digitalWrite(9,LOW);
    
Serial.println("Led OFF");
    }
    }
  }
  
str_1 "";

Второй просто триггер.

PHP код:
#include <SoftwareSerial.h>
//#include <EEPROM.h>
#include <Bounce.h>
String nomber_Phone "";//Строка содержит номер телефона. далее Разрешенный номер. 
SoftwareSerial mySerial(23); // RX, TX  +,0,3,2,- (3-3, 2-2)
Bounce bouncer Bounce(540); //создаем экземпляр класса Bounce для 5 вывода
String currStr "";//Строка содержит текущую строку, полученую от сим модуля.
char data;//Содержит символ полученый от сим модуля.
String str_1  ""number  ""// str_1 - сообщение, number - телефонный номер звонившего
 
 
void setup() 
 { 
  
pinMode(9OUTPUT);
  
pinMode(5INPUT_PULLUP);   //переключаем 5 вывод в режим входа
  //digitalWrite(5, HIGH);  //включаем на нем подтягивающий резистор  
  
pinMode(13OUTPUT); 
  
Serial.begin(19200);  //Скорость порта для связи Arduino с компьютером
  //Serial.println("Goodnight moon!");
  
mySerial.begin(19200);  //Скорость порта для связи Arduino с GSM модулем
  
mySerial.println("AT");
  
delay(500);
  
Serial.println("AT+CMGD=4");//Удаляем всё SMS которые могут содержаться на сим карте.  
  
mySerial.println("ATE0");                // выключаем эхо

  
delay(100);

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

  
delay(100);

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

  
delay(100);

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

  
delay(100);

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

  
delay(100);
 
mySerial.println("AT+CSQ");// Проверяем уровень сигнала
    
delay(800);
  
  
  
  
 
 
void loop() 
{
  if (
Serial.available())
  
mySerial.write(Serial.read());
  if (
bouncer.update())
  {   
    if (
bouncer.read()==0)
    {
    
digitalWrite(9HIGH);
    
mySerial.println("ATD +7981*******;");   //т
    
delay(15000);
    
mySerial.println("ATH0");
    
digitalWrite(9LOW);    
    }  
  } 
    if (
mySerial.available()) // если пришло что то от GSM модуля, то вызываем обработчик
  
{
    
response_on_dial();
  }
}
// Обработчик входящего вызова 
void response_on_dial()
{
  
delay(500);
  while (
mySerial.available())
  {
    
char c  mySerial.read();
    
Serial.write(c);
    
str_1  +=  c// загоняем в str_1 сообщение от модуля
  
}
  
// Находим в строке "+7981" и выдёргиваем из строки номер телефона
  
if (str_1.startsWith("RING"2))
  {
    
int index_number str_1.lastIndexOf("+7981");
    if (
index_number != -1)
    {
      
number  str_1.substring(index_number, (index_number 13));
      
// Пришел вызов в номера "number", далее пишем, что делаем
      
String str_2  "Ring!!!"  number;
      
Serial.println(str_2);
      
delay(3000);
      
mySerial.println("ATH0"); // сбрасываем вызов АТ-командой "АТН"
     
    
if(digitalRead(9) == LOW
     {
Serial.println("Led ON");
    
digitalWrite(9,HIGH); // инвертируем выход led
     
}
    else 
    {
    
digitalWrite(9,LOW);
    
Serial.println("Led OFF");
    }
    }
  }
  
str_1 "";


Программки давнишние - уже не помню, что у самого залито... Но точно рабочие. Вот несколько ссылок на соответствующие темы. Здесь, здесь, здесь, еще.
Миниатюры
Нажмите на изображение для увеличения
Название: SIM1.jpg
Просмотров: 679
Размер:	449.7 Кб
ID:	46780  

Последний раз редактировалось admin; 20.03.2017 в 02:43.
skanch вне форума   Ответить с цитированием
Старый 14.02.2017, 20:02   #10
skanch
Модератор
 
Аватар для skanch
 
Регистрация: 19.01.2010
Возраст: 58
Город: Санкт-Петербург
Регион: 78, 98
Сообщений: 2,645
skanch has a brilliant futureskanch has a brilliant futureskanch has a brilliant futureskanch has a brilliant futureskanch has a brilliant futureskanch has a brilliant futureskanch has a brilliant futureskanch has a brilliant futureskanch has a brilliant futureskanch has a brilliant futureskanch has a brilliant future
По умолчанию

Наткнулся в интернете - можно "прикрутить" под свои нужды.
skanch вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.



Часовой пояс GMT +4, время: 08:43.


Работает на vBulletin® версия 3.8.4.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot