Авторизация
Регистрация

Напомнить пароль

Блок GSM автозапуска для сигнализации SCHER-KHAN

Коротенький обзор модуля gsm связи для ардуино и устройство блока автозапуска на его основе.
При относительно низкой цене (всего 2$) данный модуль имеет большой функционал, достаточный для большинства бытовых самоделок.

Модуль

Функционал модуля довольно широк — взаимодействие с устройствами с помощью АТ — команд, подключение микрофона и колонок, совершение звонков, прием и отправка SMS и USSD-запросов, спящий режим модуля — погружение и пробуждение, распознавание DTMF, определение приблизительных координат, FM-радио, прием и отправка данных по GPRS и т. д.

На плате расположены необходимые выводы


Питание модуля рассчитано на литиевые аккумуляторы и лежит в пределах 3.4-4.5 В, рекомендованное 4 В. При питании от другого источника требуется обеспечить силу тока в 2А без просадок, иначе он просто не сможет зарегистрироваться в сети.

Взаимодействие с модулем осуществляется по интерфейсу UART (Serial) при помощи специальных AT-команд. Линии данных рассчитаны на напряжение от 2,1 до 3,1В, при работе с ардуино входящую линию необходимо пропустить через делитель напряжения, чтобы привести к требуемому диапазону, исходящую с напряжением 2,8В ардуино воспринимает нормально и делитель не требуется.

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

Полный список АТ команд можно найти в мануале по командам

Более подробную информацию по модулю можно получить из даташита

Есть еще сайт с подробнейшим описанием модуля и примерами работы с ним, с которого я и взял всю информацию и код в основной своей массе взят оттуда.

Блок

От парковки до места работы расстояние такое, что брелок от сигнализации не берет. Зимой чтобы сесть в теплую машину надо выйти, дойти ближе к парковке, завести, вернуться, подождать. О комфорте это плохо напоминает.
Выхода 2:
заводить по таймеру — не удобно, потому что выхожу в разное время.
поменять сигнализацию на ту, которая имеет возможность GSM запуска — дорого.

Но нашелся и третий. Как то при случайном чтении инструкции обратил внимание на возможность запуска с сигнала внешнего устройства, есть специальный вход на сигнализации, просто подаем на этот вход + или — бортовой сети и машина заводится точно так же как и с брелока, то есть все проверки на возможность запуска проводит сама сигнализация, остается только подать сигнал на контакт.
Посмотрел бегло инструкции других моделей охранных систем SCHER-KHAN — на всех что мне попались такая возможность есть.

Потребуется модуль SIM800L, ардуино (в моем случае про мини с питанием 3,3В), и STEP_DOWN преобразователь для получения 4В из 12В. Собрал я это все давно, в начале прошлой зимы на макетной плате, показывать её не буду — там всё страшно)) Отработало всё практически год и за это время недостатков я не заметил, ни разу не зависло и других отказов не было. Теперь, перед наступающей зимой решил привести это всё в красивый вид.

Вытравил плату
файлы для DipTrace
Дополнительная информация


Собрал всё на плате
Дополнительная информация




Схема
Все резисторы на 10 кОм, только R7 — 1кОм, R8 — 220 Ом.
Дополнительная информация


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


Код для Ардуины
Сразу хочу предупредить — в основном все скопировано/вставлено из чужих примеров, я совсем не программист, для меня главное работает безотказно, а как там всё внутри не так важно.
От себя попытался добавить спящий режим как для ардуины, так и для модема. Перезагрузку при зависании и раз в сутки для надежности. Несколько дополнительных команд.

cкетч в облаке
Дополнительная информация
#include <SoftwareSerial.h>// Библиотека программной реализации обмена по UART-протоколу
#include <avr/wdt.h>
#include <avr/sleep.h>
#include <avr/power.h>
#include <avr/interrupt.h>
SoftwareSerial SIM800(8, 9); // RX, TX

#define RING 2 //пин входящего звонка
#define RESET_GSM 12 //пин перезагрузки sim800l
#define SLEEP_GSM 6 //пин спящего режима sim800l
#define START_ENGINE 3 //пин сигнала автозапуска для сигнализации
#define R1 20 // сопротивление резистора R1
#define R2 5 // сопротивление резистора R2
#define LED 13 // светодиод на плате ардуино

unsigned long sleep_sim; //таймер сна модема
boolean callback = false; //нужно ли перезвонить по последнему входящему номеру
volatile int nbr_remaining; // volatile to be modified in interrupt function
unsigned long timing = 0; //переменная для задержки
unsigned long reset_if_gsm_hover = 30000;
String LastNumber = ""; //переменная для хранения последнего входящего номера
String _response = ""; // Переменная для хранения ответа модуля
int resetCounter = 1; // количество циклов сна после последней перезагрузки, цикл сна = 8сек
unsigned long led_standby = 0; // счетчик для мигания светодиодом

void setup() {

pinMode(RING, INPUT_PULLUP); // к пину RING

pinMode(RESET_GSM, OUTPUT); // к пину RESET модема для его перезагрузки
digitalWrite(RESET_GSM, HIGH); // режим LOW — перезагрузка

pinMode(SLEEP_GSM, OUTPUT); // к DTR пину GSM модуля
digitalWrite(SLEEP_GSM, LOW); // пробуждаем GSM модуль

pinMode(START_ENGINE, OUTPUT); // к сигнализации
digitalWrite(START_ENGINE, LOW); // режим HIGH — автозапуск

pinMode(LED, OUTPUT); //светодиод на ардуино
digitalWrite(LED, LOW); // HIGH — горит

wdt_enable(WDTO_8S); //сторожевой таймер на 8 сек

Serial.begin(9600); // Скорость обмена данными с компьютером
SIM800.begin(9600); // Скорость обмена данными с модемом
Serial.println(«Start!»);

sendATCommand(«AT», true); // Отправили AT для настройки скорости обмена данными

// Команды настройки модема при каждом запуске
_response = sendATCommand(«AT+CLIP=1», true); // Включаем АОН
//_response = sendATCommand(«AT+DDET=1», true); // Включаем DTMF
_response = sendATCommand(«AT+CSCLK=1», true); // Включаем возможность перевода sim800l в спящий режим
_response = sendATCommand(«AT+CMGF=1;&W», true); // Включаем текстовый режим SMS (Text mode) и сразу сохраняем значение (AT&W)!
}

String sendATCommand(String cmd, bool waiting) {
String _resp = ""; // Переменная для хранения результата
Serial.println(cmd); // Дублируем команду в монитор порта
digitalWrite(SLEEP_GSM, LOW); // пробуждаем GSM модуль
delay(300);
SIM800.println(cmd); // Отправляем команду модулю
if (waiting) { // Если необходимо дождаться ответа…
_resp = waitResponse(); //… ждем, когда будет передан ответ
// Если Echo Mode выключен (ATE0), то эти 3 строки можно закомментировать
if (_resp.startsWith(cmd)) { // Убираем из ответа дублирующуюся команду
_resp = _resp.substring(_resp.indexOf("\r", cmd.length()) + 2);
}
Serial.println(_resp); // Дублируем ответ в монитор порта
}
return _resp; // Возвращаем результат. Пусто, если проблема
}

String waitResponse() { // Функция ожидания ответа и возврата полученного результата

String _resp = ""; // Переменная для хранения результата
long _timeout = millis() + 10000; // Переменная для отслеживания таймаута (10 секунд)
while (!SIM800.available() && millis() < _timeout) {
wdt_reset();
} // Ждем ответа 10 секунд, если пришел ответ или наступил таймаут, то…
if (SIM800.available()) { // Если есть, что считывать…
_resp = SIM800.readString(); //… считываем и запоминаем
}
else { // Если пришел таймаут, то…
Serial.println(«Timeout...»); //… оповещаем об этом и…
}
return _resp; //… возвращаем результат. Пусто, если проблема

}

void loop() {

wdt_reset();
if (millis() > led_standby) { //мигание светодиодом в дежурном режиме
digitalWrite(LED, HIGH);
led_standby = millis() + 3000;
delay(10);
//Serial.println(readVoltage(100));
} else {
digitalWrite(LED, LOW);
}

if ((millis() — sleep_sim) > 120000) { //через 2 мин бездействия модем отправляем спать
digitalWrite(SLEEP_GSM, HIGH);
callback = false;
sleep_sim = millis();
Serial.println(«sleep_gsm»);
}

if (millis() > 86000000) { //каждые сутки перезагрузка модема и ардуины
Serial.println(«reset_timeout»);
digitalWrite(12, LOW);
delay(100);
digitalWrite(12, HIGH);
delay(20000);
}

if (millis() > reset_if_gsm_hover) { //если модем завис и не отвечает перезагружаем его и ардуино, проверка каждые полчаса
Serial.println(«reset_timeout_gsm»);
reset_if_gsm_hover = millis() + 1800000;

_response = sendATCommand(«AT+SAPBR=0,1», true);

if (_response.length() < 1) {
Serial.println(«reset_gsm»);
digitalWrite(12, LOW);
delay(100);
digitalWrite(12, HIGH);
delay(20000);
}
}

if (SIM800.available()) { // Если модем, что-то отправил…
reset_if_gsm_hover = millis() + 600000;
sleep_sim = millis();
digitalWrite(SLEEP_GSM, LOW);
_response = waitResponse(); // Получаем ответ от модема для анализа
_response.trim(); // Убираем лишние пробелы в начале и конце
Serial.println(_response); // Если нужно выводим в монитор порта
String whiteListPhones = "+79500000000, +79990000000, +79530000000, +79220000000"; // Белый список телефонов
if (_response.startsWith(«RING»)) { // Есть входящий вызов
int phoneindex = _response.indexOf("+CLIP: \"");// Есть ли информация об определении номера, если да, то phoneindex>-1
String innerPhone = ""; // Переменная для хранения определенного номера
if (phoneindex >= 0) { // Если информация была найдена
phoneindex += 8; // Парсим строку и…
innerPhone = _response.substring(phoneindex, _response.indexOf("\"", phoneindex)); //… получаем номер
LastNumber = innerPhone;
Serial.println(«Number: » + innerPhone); // Выводим номер в монитор порта
}
// Проверяем, чтобы длина номера была больше 6 цифр, и номер должен быть в списке
if (innerPhone.length() >= 7 && whiteListPhones.indexOf(innerPhone) >= 0) {
digitalWrite(3, HIGH); // turn the LED on (HIGH is the voltage level)
delay(100); // wait for a second
digitalWrite(3, LOW); // turn the LED off by making the voltage LOW
sendATCommand(«ATA», true); // Если да, то отвечаем на вызов
sendATCommand(«AT+CREC=4,\»C:\\User\\6.amr\",0,99", true); //проигрываем аудиофайл
sendATCommand(«ATH», true); //сбрасываем
timing = millis(); //сбрасываем счетчик до засыпания модема
callback = true; //разрешаем перезвонить через заданное время если завелась
} else {
sendATCommand(«ATH», true); // Если нет, то отклоняем вызов
}
}

if (_response.startsWith("+CMTI:")) { // Пришло сообщение об отправке SMS
int index = _response.lastIndexOf(","); // Находим последнюю запятую, перед индексом
String result = _response.substring(index + 1, _response.length()); // Получаем индекс
result.trim(); // Убираем пробельные символы в начале/конце
_response = sendATCommand(«AT+CMGR=» + result, true); // Получить содержимое SMS
parseSMS(_response); // Распарсить SMS на элементы
}

if (_response.indexOf("+CIPGSMLOC: 0,") > -1) { //поиск, формирование ответа и ответ с координатами
String LAT;
String LNG;
String Answer;
LAT = _response.substring(_response.indexOf("+CIPGSMLOC: 0,") + 24, _response.indexOf("+CIPGSMLOC: 0,") + 33);
LNG = _response.substring(_response.indexOf("+CIPGSMLOC: 0,") + 14, _response.indexOf("+CIPGSMLOC: 0,") + 23);
Answer = «yandex.ru/search/?text=E» + LNG + "%20N" + LAT + "\n" + readVoltage(200) + «V»;
Serial.println(«GSM»);
sendSMS(LastNumber, Answer); //отправляем смс на последний номер
sendATCommand(«AT», true);
sendATCommand(«AT+CMGDA=\»DEL ALL\"", true); // Удалить все сообщения, чтобы не забивали память модуля
sendATCommand(«AT+SAPBR=0,1», true); // отключаем интернет
}
}

if (Serial.available()) { // Ожидаем команды по Serial…
SIM800.write(Serial.read()); //… и отправляем полученную команду модему
}
//если прошла минута после звонка и напряжение больше 13,2 вольта и разрешено перезвонить звоним, значит завелась
if (millis() — timing > 45000 && callback == true) {
if (readVoltage(100) > 13.2){
sendATCommand(«ATD» + LastNumber + ";", true); //
delay(1000); //
callback = false;
}else{
callback = false;
}
}
}

// узнаем напряжение бортовой сети
float readVoltage(int samples) { // samples — сколько раз нужно прочитать сенсор
unsigned long avg_sum = 0;
float u1;
for (int i = 0; i < samples; i++) {
avg_sum += analogRead(A6);
delay(1); // небольшая пауза между замерами
}
u1 = (avg_sum / samples * 3.3 / 1024. / R2 * (R1 + R2));
Serial.println(u1);
return u1;
}

void parseSMS(String msg) {
String msgheader = "";
String msgbody = "";
String msgphone = "";
msg = msg.substring(msg.indexOf("+CMGR: "));
msgheader = msg.substring(0, msg.indexOf("\r"));
msgbody = msg.substring(msgheader.length() + 2);
msgbody = msgbody.substring(0, msgbody.lastIndexOf(«OK»));
msgbody.trim();
int firstIndex = msgheader.indexOf("\",\"") + 3;
int secondIndex = msgheader.indexOf("\",\"", firstIndex);
msgphone = msgheader.substring(firstIndex, secondIndex);
LastNumber = msgphone;
Serial.println(«Phone: » + msgphone);
Serial.println(«Message: » + msgbody);
if (msgbody.startsWith(«GPS_SEND»)) {
sendATCommand(«AT+SAPBR=3,1,\»CONTYPE\",\«GPRS\»", true);
sendATCommand(«AT+SAPBR=3,1,\»APN\",\«internet\»", true);
sendATCommand(«AT+SAPBR=1,1», true);
sendATCommand(«AT+CIPGSMLOC=1,1», true);
}
if (msgbody.startsWith(«V_SEND»)) {
String Answer;
String LNG = «Voltage = »;
Answer = "" + LNG + readVoltage(100) + «V»;
sendSMS(LastNumber, Answer);
}
if (msgbody.startsWith(«E_START»)) {
digitalWrite(3, HIGH); // turn the LED on (HIGH is the voltage level)
delay(100); // wait for a second
digitalWrite(3, LOW); // turn the LED off by making the voltage LOW
timing = millis();
callback = true;
}

if (msgbody.startsWith(«CALL_BACK»)) {
sendATCommand(«ATD» + LastNumber + ";", true);
}
}

void sendSMS(String phone, String message)
{
sendATCommand(«AT+CMGS=\»" + phone + "\"", true); // Переходим в режим ввода текстового сообщения
sendATCommand(message + "\r\n" + (String)((char)26), true); // После текста отправляем перенос строки и Ctrl+Z
}


Логика работы и смс команды


Белый список номеров телефонов находится в самом скетче. При звонке с незнакомого номера вызов просто сбрасывается.
Если номер известен осуществляется попытка запуска и вызов сбрасывается в течении 2 сек. Через 45 сек если напряжение борт сети равно или более 13,2В значит двигатель работает и модуль перезванивает на последний входящий номер, его можно сбросить, но раз в месяц можно и ответить на звонок, чтобы были какие-то списания с сим карты установленной в модеме и оператор сот связи был доволен))

Смс команды.
отправляются только с номеров со списка.

GPS_SEND отправляет в ответ приблизительные координаты. Сделал на случай угона и если поставят в глухие дворы отстаиваться, так можно попытаться найти.
V_SEND отправляет в ответ напряжение борт сети.
E_START запуск через смс, тоже что и со звонком.
CALL_BACKв ответ перезванивает и через подключенный микрофон можно слушать что происходит в салоне, тоже на случай угона.

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

Для тех кто решится повторить, отвечу на вопросы с удовольствием.

Upd. Забыл добавить, сначала была проблема, машина не заводилась, сигнализация пищала при попытке запуска. Как оказалось помехи от блока влияли на выносной датчик вибрации сигнализации, получалось в момент звонка сигнализация «думала» что машину трясут и не позволяла завести двигатель. Решилось всё перемещением датчика на 30 — 40 см от блока запуска.
Планирую купить +108 Добавить в избранное
+108 +195
свернутьразвернуть
Комментарии (105)
RSS
+
avatar
+1
  • serg_mur
  • 12 октября 2019, 11:27
Хороший проект.
А почему платы разные — вытравленная и распаянная? Разные ревизии?
Какую антенну использовали для SIM800? Куда прятали?
+
avatar
+3
  • koltinov
  • 12 октября 2019, 11:55
почему разные? одинаковые.
антена самая простая, которая в комплекте иногда идет, кусочек текстолита с проводом. Сам блок и антена спрятана за бардачком.

да, извиняюсь точно разные, первый раз травил забыл отзеркалить печать, а правильную уже не фотографировал без лужения.
+
avatar
+8
  • Dimon_
  • 12 октября 2019, 11:32
по средством
Божечки-божечки…

По скетчу.
digitalWrite(3, HIGH);

digitalWrite(12, LOW);
Если используется прямое обращение по номеру, зачем было в самом начале писать дефайны?..
Но — как сделано, так и сделано.
Если всё работает и автора устраивает — то и ладно.
Кто будет повторять — имейте в виду, при переделке схемы выверяйте все числа в скетче, дефайны не помогут…
+
avatar
+3
  • koltinov
  • 12 октября 2019, 12:02
с помощью
исправил))

По скетчу.
да это кучу раз всё исправлял и наверно запутался. Но не мешает, исправлю.
+
avatar
+1
  • Dimon_
  • 12 октября 2019, 12:05
Держите плюс :-)

Если честно, я сам задумываются о том, что для одной маленькой ардуины в машине найдётся работа. И именно на этапе зимнего удалённого запуска. Думаю заставить её в случае удалённого запуска с сигналки и если температура в салоне отрицательная, минуточек на пять включать обогрев кресел. Дольше не нало, вредно. А в подготовюленный салон и садиться приятнее…
+
avatar
+1
Кому вредно, АКБ?
+
avatar
+2
  • Dimon_
  • 13 октября 2019, 18:10
Нет, излишний подогрев при сидении вреден для собственных фаберже. Почитайте источник, которому доверяете. Про это много написано.
+
avatar
+1
Вы когда на диване сидите, проветриваете?

А в автобусе люди, которые в брючках ПШ и пальто или пуховике поверх? *Зачем сейчас топят в автобусах, внутри 20+, приходится куртку снимать.
+
avatar
0
  • Aostspb
  • 15 октября 2019, 11:02
Зачем сейчас топят в автобусах, внутри 20+
Тепло девать некуда…
+
avatar
0
  • 3-mey
  • 22 октября 2019, 11:44
не ну это же уже перебор )))
представьте что с вашими шалтай-балтаями происходит в в парилке, сауне или горячей ванной ))) это вредно только в плане выживаемости живых сперматазоидов, вред сразу же проходит после того как тепло исчазает.
+
avatar
+5
  • alex323
  • 12 октября 2019, 14:37
Если используется прямое обращение по номеру, зачем было в самом начале писать дефайны?..
Скопировалось из огрызков чужих проектов :). Автор же писал:
Сразу хочу предупредить — в основном все скопировано/вставлено из чужих примеров, я совсем не программист
+
avatar
0
  • vigera
  • 12 октября 2019, 11:41
Спасибо, познавательно.
А заглушить двигатель дистанционно сигнализация позволяет?
Думаю, случаи когда собирался выходить и планы поменялись не так уж редки. Не тарахтеть же ему до второго пришествия!)

Сим карта без абонентской платы, но нужно периодически чтобы отправлялось смс или совершался звонок, так как операторы связи этого требуют.
Это у всех операторов в России такие рестрикции? А в KZ и BY с этим как?
В Украине для продления номера Киевстар достаточно раз в год принять входящий звонок, Vodafone — закинуть на счёт 5грн раз в год, lifecell — 10грн/год.
+
avatar
+1
  • IH8
  • 12 октября 2019, 11:55
В России нужно совершать платные действия. Иначе, через 6 месяцев договор расторгают, симка прекращается в тыкву. Некоторые операторы уже через 1-3 месяца неактивности начинают списывать деньги ежедневно до исчерпания баланса.
+
avatar
0
  • rx3apf
  • 12 октября 2019, 21:58
Ага, Мегафон очень быстро начинает списывать. МТС вроде полгода.
+
avatar
0
  • Morokon
  • 12 октября 2019, 22:10
я так номер привязанный к Вайбер потерял.
+
avatar
+1
  • koltinov
  • 12 октября 2019, 11:58
да, если позвонить 1 раз — заведется, второй раз заглохнет.
Это у всех операторов в России такие рестрикции?
да, там если в течении 3 месяцев нет списаний со счета они включают «услугу сохранения номера» с абонентской платой, когда интересовался у всех операторов было примерно одно и тоже.
+
avatar
+9
  • Sanja
  • 12 октября 2019, 12:10
Можно (по крайней мере у МегаФона) повесить SIM из реле на тот же лицевой счёт, что и ваш основной номер, у них будет общий кошелёк — и SIM из реле будет вечной даже без исходящих звонков.

Можно взять тариф «Управление удалёнными объектами» и за 20 рублей в месяц иметь крохотный пакет трафика для управления через веб — moscow.megafon.ru/ai/document/9471/file/Tariff_1_moscow.pdf

Можно вставить sim карту Йоты и в «конструкторе» тарифа оставить только какой-нибудь мессенджер, чтобы абонплата составляла 10 руб. в месяц. Закинуть на счёт 120 рублей и забыть на год.
+
avatar
0
  • SEM
  • 12 октября 2019, 12:30
А можно подключить «автоплатёж» 1 рубль в месяц, на карте или ещё каком электронном кошельке.
Но могут быть ограничения на минимальную сумму или комиссии за перевод. Раньше в QIWI-кошельке их не было, как сейчас — не интересовался.
+
avatar
+2
  • Sanja
  • 12 октября 2019, 12:41
автоплатёж не поможет. Оператор блокирует SIM-карту, если с лицевого счёта не было списаний. Пополнения не играют роли.
+
avatar
0
  • Slymas
  • 12 октября 2019, 23:40
Можно вставить sim карту Йоты и в «конструкторе» тарифа оставить только какой-нибудь мессенджер, чтобы абонплата составляла 10 руб. в месяц. Закинуть на счёт 120 рублей и забыть на год.
Расскажите, пожалуйста, подробнее про Yota.
У них минимальный тариф идет от 1ГБ и стоит 162.45 руб/мес.
В минутах можно выбрать «0», а в гигабайтах нет.
+
avatar
0
  • Sanja
  • 13 октября 2019, 10:21
хм, что-то поменяли. У меня «пустой» набор (ноль мегабайт, SMS и минут) и опция «WhatsApp за 10 рублей»
+
avatar
0
  • m912
  • 19 октября 2019, 08:37
Осторожней с этими «хипстерскими» операторами связи (Yota, Tele2, Сбермобайл).
Тарифы меняют, отправив смс-ку. Личного кабинета нет, только через андроид-приложение…
+
avatar
+1
  • Koh
  • 22 октября 2019, 03:53
Есть у Теле2 личный кабинет и всегда был (ну, года 2, по крайней мере, пока я у них). На «большом» компьютере.
+
avatar
-2
да, если позвонить 1 раз — заведется, второй раз заглохнет.
может лучше не рисковать, кто угодно может позвонить на вашу симку ( не факт что до вас этот номер никем не использовался ) и бац завели вам машину)
Тут либо сделать принятие звонка и ввод кода ( через тональный набор ) либо оставить только смс.
ps: а вообще варианты с интернет меседжерами тоже интересные
+
avatar
+9
  • SEM
  • 12 октября 2019, 12:38
кто угодно может позвонить на вашу симку
String whiteListPhones = "+79500000000, +79990000000, +79530000000, +79220000000"; // Белый список телефонов
+
avatar
+1
  • koltinov
  • 12 октября 2019, 12:41
Если позвонит «кто угодно» услышит просто короткие гудки и ничего не произойдет. Дозвониться сможет только номер из белого списка.
+
avatar
0
в принципе подмена номера возможна. Но это надо заморочиться сильно. Вряд ли есть такие своеобразные недоброжелатели
+
avatar
0
  • koltinov
  • 23 октября 2019, 11:54
Недоброжелатели номер должны подменить, и узнать на какой звонить. И всё это чтоб завести машину? Чтоб сжечь мои 200 грамм бензина?
+
avatar
0
я ж и написал — что вряд ли. это надо здорово упороться.
как опасность я бы всё-таки рассматривал вариант заглушить во время движения конечно. такой сценарий лучше исключить. Причем проблема может быть не в недоброжелателях, а банально взял телефон и случайно ткнул последний набранный ещё раз набрать (неважно владелец взял или ребёнок/жена/тёща/шутник). Случайно набрать номер из последних — не такое уж редкое явление.
Но уже ниже прочитал что во время движения не заглохнет — это хорошо.
+
avatar
0
  • koltinov
  • 23 октября 2019, 16:12
Да не получится заглушить во время движения, даже если захотеть. Во первых сигнализация не позволит это сделать. Во вторых когда ключ вставлен в замок зажигания и повернут цепи зажигания питаются через него (замок зажигания) и даже если замкнуть/разомкнуть те реле с помощью которых происходит автозапуск — ни чего не произойдет, потому что они паралельны замку зажигания.
+
avatar
-4
  • vigera
  • 12 октября 2019, 12:56
кто угодно может позвонить на вашу симку ( не факт что до вас этот номер никем не использовался ) и бац завели вам машину)
Завести — это ещё ладно, куда хуже если входящий звонок заглушит мотор во время опасного манёвра!)

В идеале бы доработать сигнализацию идентификацией нахождения владельца авто за рулём, чтобы исключить реакцию на звонок даже из белого списка во время движения.
+
avatar
+8
  • koltinov
  • 12 октября 2019, 13:22
куда хуже если входящий звонок заглушит мотор во время опасного манёвра!
такого не произойдет ни как, при движении вставлен ключ в замок зажигания, питание идет через него, при движении сигнализация ни как не сможет его заглушить.
+
avatar
0
  • VicSimon
  • 14 октября 2019, 10:38
Не тарахтеть же ему до второго пришествия!)
В моем Scher-Khan IV при дистанционном запуске не больше 15 минут (если за это время не вставить ключ в замок зажигания или не заглушить).
+
avatar
0
  • IH8
  • 12 октября 2019, 11:47
Вот интересный проект, спасибо. А где плату разместили? В салоне?
+
avatar
0
  • koltinov
  • 12 октября 2019, 11:58
за бардачком, возле сигнализации.
+
avatar
+3
  • walktt
  • 12 октября 2019, 11:49
К старлайну не применимо?
+
avatar
+1
  • koltinov
  • 12 октября 2019, 11:59
если на старлайне есть выход для запуска с внешних устройст — тогда применимо, надо инструкцию смотреть
+
avatar
0
  • r0c
  • 12 октября 2019, 12:07
Применительно к старлайну и другим моделям- делал бутерброд из sim800 и дополнительного штатного брелка. Маленькая автононая коробочка заводила авто по смс или звонку
+
avatar
0
  • dio45rus
  • 20 октября 2019, 22:27
У большинства старлайна это в базе есть
С дополнительными плюшками в виде GPS отслеживания и онлайн-мониторинга авто…
+
avatar
0
Сколько потребляет в простое?
+
avatar
+2
  • koltinov
  • 12 октября 2019, 12:16
честно сказать не помню, проверял год назад, тогда выкладывать не планировал, но помню что считал за сколько съест 1Ач от аккумулятора, получилось очень долго, столько машина у меня не стоит без дела точно. За год проблем с севшим аккумулятором не было.
еще вспомнил блок потреблял меньше самой сигнализации (<30мА), поэтому я был спокоен.
+
avatar
0
  • Ivan374
  • 12 октября 2019, 12:11
Интересный обзор. Но это скорее DIY, чем обзор магазинной покупки — про GSM-модуль-то все ссылки наружу.
+
avatar
+1
  • koltinov
  • 12 октября 2019, 12:31
Да, верно, но я не понял как размещать в разделе DIY, в списке не нашёл
+
avatar
+1
  • SEM
  • 12 октября 2019, 12:27
Прогрев по таймеру — дисциплинирует. Выходить раньше или позже — придёшь в холодную машину…
Но внеплановый прогрев по звонку — тоже очень полезная штука. Жаль у меня так просто не подключить, внешний блок должен не "+" куда-то подать, а команду в CAN-шину…

«Белый список» не зашивать в код, а читать из SIM-карты не пробовали? Мне кажется — проще в SIM-карту номера заносить, чем менять в коде и перезаливать.
GPS_SEND отправляет в ответ приблизительные координаты.
Это если у ОпСоСа подписаться на сервис определения координат по вышкам?

Вот этот лот — тот же самый модуль?
https://aliexpress.com/item/item/32283531730.html
+
avatar
0
  • koltinov
  • 12 октября 2019, 12:39
«Белый список» не зашивать в код, а читать из SIM-карты не пробовали? Мне кажется — проще в SIM-карту номера заносить, чем менять в коде и перезаливать.
Да ну а какая разница? Что с сим картой доставать блок, вытаскивать сим, вставлять в телефон, потом обратно. Что доставать блок, отсоединять нести домой, пошивать и обратно.

Хотел сначала сделать ещё интересней, хранить в eeprom ардуино, а добавлять отправкой смс с каким то определенным кодом. Тогда бы вообще не пришлось бы его доставать. Но потом вспомнил когда последний раз менял номер телефона и решил что это не нужно, делал же только для себя, выкладывать не планировал.
+
avatar
+2
  • SEM
  • 12 октября 2019, 13:04
Занести (удалить, заменить) номер в SIM-карте проще, чем в прошивке. Это можно сделать не выходя из машины, вставив карту в телефон.
+
avatar
0
  • koltinov
  • 12 октября 2019, 13:24
согласен проще, но раз в десять лет, когда понадобится, занести не обламаюсь))
вообще если время появится свободное, доработаю, сделаю номера в eeprom, тогда можно будет дистанционно добавлять и удалять номера.
+
avatar
0
  • Sanja
  • 12 октября 2019, 12:46
Жаль у меня так просто не подключить, внешний блок должен не "+" куда-то подать, а команду в CAN-шину…
github.com/Seeed-Studio/CAN_BUS_Shield
+
avatar
0
  • SEM
  • 12 октября 2019, 13:07
Кабы ещё знать что в шину слать…
+
avatar
+1
  • motral
  • 12 октября 2019, 14:44
Для многих авто базовые вещи известны, и самому отреверсить не так сложно, пока еще протокол открытый, я по CAN общаюсь с авто и по gprs каналу, в РФ уже давно если симки для IoT, с годовым тарифом,
это гораздо интереснее, чем sms канал
+
avatar
0
  • SEM
  • 13 октября 2019, 13:33
Там ещё и сигнализации нужно режим поменять, чтобы на вибрации, падение напряжения на аккумуляторе и нагрев не срабатывала… А нужно оно раз в год в среднем, в остальное время или остыть не успевает, или по расписанию выхожу, или вообще лето…
+
avatar
0
  • SEM
  • 14 октября 2019, 21:47
Смущает слово «Receiver» в описании…
+
avatar
0
  • olegmsn
  • 15 октября 2019, 01:17
там вот это стоит
ww1.microchip.com/downloads/en/DeviceDoc/MCP2515-Stand-Alone-CAN-Controller-with-SPI-20001801J.pdf
оно во все стороны)
+
avatar
0
  • koltinov
  • 12 октября 2019, 16:38
Это если у ОпСоСа подписаться на сервис определения координат по вышкам?
Нет, я ни на что не подписывался, это как в телефоне, можно по координатам gps, а можно по координатам сети определять местоположение.

Вот этот лот — тот же самый модуль?
Да, красный тот же
+
avatar
+1
Имея практический опыт с sim800 как в системах автозапуска так и в системах мониторинга — единственный способ ресетить сабж — физически разрывать его питание. Все остальное — от реального зависания не спасает, ни команды модулю, ни вход ресет. В остальном — автор доволен, работает, ну и ладненько. Кому какие плюшки нужны. Я пришел к тому что дтмф коды практичнее и дешевле. А также gprs канал. Mqtt и куча мониторингов. Но это на любителя опять же.
+
avatar
0
  • spam2013
  • 12 октября 2019, 19:01
Входы для микрофона и динамика работают? Поэкспериментировал с Sim 900 с какой то охранной сигнализации( название на коробке БРО-4 разработка РФ), очень сильные наводки. Если добавить микрофон и динамик… Получится просто крутая охранная сигналка.
+
avatar
+1
  • koltinov
  • 12 октября 2019, 21:23
Микрофон точно работает, без наводок. Динамик не подключал
+
avatar
0
  • spam2013
  • 12 октября 2019, 21:49
Спасибо за ответ. Надо заказать и вперед эксперементы...!
+
avatar
+1
штука прикольная, но ИМХО стоило и GPS впереть заодно…
+
avatar
+2
капризные модули… иногда попадаются нормальные, а иногда капризные то по питанию, то к помехах, то ножки плохо пропаяны.
Надо по питанию ставить конденсаторы и ножки sim-разъёма пропаивать, если кто столкнётся с проблемой «глючности» модуля
+
avatar
-1
  • rx3apf
  • 13 октября 2019, 19:17
Проблема, вероятно, в том, что модули б/у. И как их демонтировали и потом монтировали, никто не знает.
+
avatar
+2
Модули не Б/У. Это один из комментаторов взял с балды написал один раз такую глупость «наверное модули бу, иначе почему они так работают», а другие подхватили. Нигде нет такой инфы, что модули ранее использовались.
+
avatar
0
  • rx3apf
  • 16 октября 2019, 23:51
Новый модуль, да еще и смонтированный на переходной плате/ c SIM-держателем, просто физически не может столько стоить (он новый дороже сам по себе). А вот демонтаж с трекеров — запросто. Оттуда же дешевые GPS, тоже распаянные на переходной плате, и, уже забыл какие, тоже модули GPRS). 2G умирает, «неликвидов» полно.
+
avatar
0
Все капризы пропадают если почитать даташит на нее. А не копировать бездумно чужие ошибки. Отличный модуль.
+
avatar
0
отличный обзор, спасибо!
+
avatar
0
  • Gussif
  • 14 октября 2019, 11:20
Какой номинал электролитического конденсатора?
+
avatar
0
от 30мкФ
+
avatar
0
Там не ёмкость скорее важна а esr конденсатора. Тантал в приоритете
+
avatar
+2
  • Aostspb
  • 14 октября 2019, 17:12
Следует отметить, что этот модуль работает в диапазоне 2G, что не со всеми операторами будет совместимо.
+
avatar
0
в этом и есть причина дешевизны. Работали бы в 3G, ценник был бы в 2 раза выше из-за доп.возможностей.
+
avatar
0
  • Aostspb
  • 15 октября 2019, 11:01
в этом и есть причина дешевизны.
Да при чем тут «причина»? Это значимое свойство товара, не отраженное в обзоре.
+
avatar
0
  • olegmsn
  • 14 октября 2019, 18:36
Отличная штука) надо бы добавить sleep mode при падении напряжения ниже определенного уровня. Чтоб не убить аккум зимой во время отпуска…
+
avatar
0
  • Aostspb
  • 15 октября 2019, 10:59
надо бы добавить sleep mode при падении напряжения ниже определенного уровня.
Пробовал: модуль потом не поднимается из сна до отключения питания.
+
avatar
0
  • olegmsn
  • 15 октября 2019, 13:26
поставить MOSFET по питанию модуля) а проверять напряжение мелким процом. EFM32 отличная серия.
ну или както поставить компаратор по питанию. При запуске машины там идет просадка вольт до 8. ее хватит чтоб сбросить модуль.

З.Ы.
о, можно вообще не так)
компаратор на 10,5 вольт + MOSFET
+
avatar
0
  • Aostspb
  • 15 октября 2019, 13:30
можно вообще не так
Для этого есть специальные микросхемы: супервизоры питания. :)
+
avatar
0
  • Z2K
  • 15 октября 2019, 14:17
 «EFM32 отличная серия» — ну да, самые простые от 2.8ё, и еще разбирайся с ними.
+
avatar
0
  • olegmsn
  • 15 октября 2019, 14:30
Flexible Energy Management System
• 20 nA @ 3 V Shutoff Mode
• 0.6 µA @ 3 V Stop Mode, including Power-on Reset, Brown-out Detector, RAM and CPU retention
• 0.9 µA @ 3 V Deep Sleep Mode, including RTC with 32.768 kHz oscillator, Power-on Reset, Brown-out Detector, RAM and CPU
retention
• 45 µA/MHz @ 3 V Sleep Mode
• 180 µA/MHz @ 3 V Run Mode, with code executed from flash

И в другой серии efm32gg12
Flexible Energy Management System
• 76 μA/MHz in Active Mode (EM0)
• 1.8 μA EM2 Deep Sleep current (16 kB RAM retention and
RTCC running from LFRCO)
+
avatar
0
  • olegmsn
  • 15 октября 2019, 14:41
Кстати) чисто на поржать…

www.st.com/content/ccc/resource/technical/document/application_note/e1/ba/54/65/07/1b/4c/ff/CD00219011.pdf/files/CD00219011.pdf/jcr:content/translations/en.CD00219011.pdf

уж какой STM8 вроде не жрущий… а параметры хуже 32-битного EFM
+
avatar
0
  • Z2K
  • 16 октября 2019, 02:18
На сегодня (и в прошлом впрочем тоже) энергоэффективность определяется в основном не схемотехникой, а применяемым техпроцессом. МК стм изготавливают разные производители и на разных техпроцессах. А фактическое потребление очень сильно зависит от использованных режимов, задействованной периферии, тактирования и другого. Несколько неправильно выставленных подтяжек могут перечеркнуть ваши усилия по минимизации потребления.
А для мк с близким обьемом рам и флеш и похожей периферией в одном техпроцессе параметры прям один в один
Вот (выделено жирным) для референсних ядер Cortex-M0+ (STM32G) и Cortex-M0 (STM32F) — данные для Cortex-M0 в скобках
Flexible Energy Management System
• 20 nA @ 3 V Shutoff Mode
• 0.6 µA @ 3 V Stop Mode, including Power-on Reset, Brown-out Detector, RAM and CPU retention 565nА
• 0.9 µA @ 3 V Deep Sleep Mode, including RTC with 32.768 kHz oscillator, Power-on Reset, Brown-out Detector, RAM and CPU retention 0.9 (1.4) µA/MHz
• 45 µA/MHz @ 3 V Sleep Mode 32 (50) µA/MHz
• 180 µA/MHz @ 3 V Run Mode, with code executed from flash 100 (250) µA/MHz 3.3V 25C, периферия отключена, при тактировании всей периферии не превышает 500 µA/MHz

— а вот для разных техпроцессов энергоэффективность уже отличается на порядок, а площадь на два порядка. Так для STM32F (Cortex-M0) параметры ниже.
Динамическое потребление, мкВт/МГц Площадь, мм²
180ULL (1,8 В; 25°C) 66 0,11
90LP (1,2 В; 25°C) 12,5 0,03
40LP (1,1 В; 25°C) 5,3 0,008
Так что на сегодня для практически похожих мк в активном режиме силикон лаб EFM32 в сравнении с STM32G жрет в 1.8 раза больше, что в некоторых случаях может быть существенно. Кроме этого (и может быть главное) они значительно дороже и все под заказ.
+
avatar
0
  • olegmsn
  • 16 октября 2019, 13:14
о, у stm32G все не так печально) в районе 100 µA/MHz
www.st.com/resource/en/datasheet/stm32g071c8.pdf
стр 61

а вот у STM32F103 например все намного хужее…
недавно поставили мелкое LDO на этот проц… пришлось плату переразводить…

З.Ы. а так ну конечно все зависит от схемотехники периферии и надо оно вообще или нет… както делали на EFM32 железку с батарейным питанием… работает пол года на одной батарейке…
+
avatar
0
  • ABATAPA
  • 17 октября 2019, 09:37
Для этого есть электронные реле напряжения для авто.
+
avatar
0
  • dio45rus
  • 20 октября 2019, 22:24
Добавлять и в без того не очень надёжную систему лишнюю дыру так себе занятие.
+
avatar
+1
  • samwell
  • 24 октября 2019, 12:21
вечные споры о том какая сигнализация лучше. у всех свои отмычки, больше похоже на черный пиар.
основной функцией «сигналок» — удобство эксплуатации, защитные функции устоят разве что перед неопытным
угонщиком.
самая ленивая схема защиты как минимум КАСКО, выбивание денег конечно та же затея, но по крайней мере это некая защита чтобы не остаться без денег совсем.
по способу защиты хорошо себя чувствуют секретки в идеале сделанные самим владельцем или по крайней мере надежным знакомым электриком, но ни как не на сервисе. найти секретку очень сложно, проще отсканировать код или влезть в цепи сигнализации, в связи с этим любая сигналка с автозапуском «ломается» гораздо быстрее, чем без этой опции, всякие там приблуды типа ЖСМ для дистанционного запуска не сильно «дырявят» уязвимые места, достаточно что автозапуск есть. в связи с этим по способу защиты я бы распределил так (на первом месте самая слабая защита):
1. дополнительная сигнализация с автозапуском
2. родная или сигнализация без автозапуска (для предпускового подогрева двигателя есть отдельные системы, да, они дороги, но намного эффективнее в плане расхода топлива и более щадящие для ресурса двигателя)
3. дополнительная метка
4. дополнительная механическая скрытая защита руля или коробки передач.
5. секретка встроенная в цЕпи блокировки двигателя
6. спутниковые охранные системы (весьма дороги, но не дороже автомобиля :))
7. КАСКО
8. штатная сигнализация при условии выбора автомобиля не находящегося в списке риска угонов
9. персональная круглосуточная охрана

8 пункт здесь самый дешевый вариант, за все остальное придется раскошелится в зависимости от достатка.

ЗЫ: места распределены мной исключительно на собственных знаниях и основаны на личном мнении, ваше мнение безусловно может отличаться соответственно.
я не работаю автоэлектриком, но очень много всего сделал и поставил в своей машине, в том числе простую сигнализацию. секреток не ставил, т.к. у меня 8 пункт :)
+
avatar
0
Тоже как то задумывался о такой реализации, посмотрев случайно инструкцию по установки данной сиги, но в ней инфы как именно настроить сам блок сиги, вы что то в ней настраивали дополнительно? Видел ещё такую же тему делали, просто из старого сотового аппарата, + с виброзвонка снимали))
+
avatar
0
  • koltinov
  • 23 октября 2019, 11:57
Да, делал, там в настройках сигнализации задается будет это порт для выхода доп канала или вход автозапуска, но там 2 минуты времени потрачено.
+
avatar
0
  • samwell
  • 24 октября 2019, 11:30
а это дело подойдет к старлайн б92? дело в том, что у сигналки есть вход для жсм модуля старлай м20/м30 но пока я думал их не выпускают и не продают. как бы еще узнать какие сигналы на разъеме X8? :)
+
avatar
0
Очень понравился проект. Прошу помочь мне Я не очень понимаю в электронике. У меня сигнализация sherkhan magic car 4. Как я понял, для запуска с внешнего устройства у меня подаётся не " " а "-". На вашей схеме к U4 подключаем 12в от аккумулятора? К U5 подключаем микрофон? К Port out подключаем провод, идущий на блок сигнализации, или — ? Прошу не кидаться камнями и помочь, как подать "-" на вход сигналки
+
avatar
0
Почему то символ плюс не отобразился
+
avatar
+1
  • koltinov
  • 24 октября 2019, 23:28
На вашей схеме к U4 подключаем 12в от аккумулятора?
Да.
К Port out подключаем провод, идущий на блок сигнализации,
Да, там как раз появляется "-" как и надо для вашей сигнализации.
К U5 подключаем микрофон?
сейчас не могу посмотреть с телефона эти файлы, но скорее всего да, там 2 разъема, если u4 это питание с аккумулятора, то u5 соответственно микрофон.
+
avatar
0
  • Gussif
  • 28 октября 2019, 13:43
Почему вы в описании написали, что все резисторы 10 кОм, а на пляте у вас R7 1кОм?
+
avatar
0
точно, исправил.
+
avatar
0
Спасибо автору, схема рабочая. Сегодня установил модуль в машину. Сигнал с модуля подал на вход блока сигнализации от датчика температуры. Сигнализация Scher-khan magic car 4. По ссылке тест модуля дома: youtu.be/lVJ-eaUHeJ4
+
avatar
+1
  • koltinov
  • 03 февраля 2020, 04:37
Вот ещё по поводу этой строчки:

sendATCommand(«AT+CREC=4,\»C:\\User\\6.amr\",0,99", true); //проигрываем аудиофайл

https://github.com/martinhol221/SIM800L_DTMF_control/wiki/%D0%97%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B0-%D0%B0%D1%83%D0%B4%D0%B8%D0%BE%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2-%D0%B2-SIM800L,-AT-CREC

Чтобы при звонке модуль не просто бросал трубку, а говорил что то
+
avatar
0
повторил проект два раза, два автозапуска и оба устройства виснут через двое суток. Быстро мигает светодиод «L» и никакой реакции, лечится путем отключения питания, в чем причина не понял
+
avatar
0
  • koltinov
  • 13 февраля 2020, 22:40
Странно. У меня ни разу не зависал за всё время. Модем не реагирует на подачу "-" на пин reset, не перезагружается? Вообще по идее должен перезагружаться если зависает.
+
avatar
0
Ардуина дает сигнал reset? и на секунду падает напряжение до 1.2в и модем не реагирует. замкнешь пин на GND? происходит перезагрузка модема(поиск сети) и регистрация. На кнопку res на плате ардуины не реагирует, только выключение питания.
+
avatar
0
  • Mikl1970
  • 01 октября 2020, 13:31
Вы разобрались с зависанием, у меня появилась точно такая же проблема. Похоже зависает ардуина.
+
avatar
0
  • Mikl1970
  • 02 октября 2020, 03:04
При ответе слышны сильные помехи, голоса почти не слышно.
+
avatar
0
Пока не решено, но к зиме придется решать.
+
avatar
0
  • Mikl1970
  • 13 декабря 2020, 05:23
А вы какую Ардуино про мини используете Атмега 328 или 168
+
avatar
0
  • koltinov
  • 14 декабря 2020, 07:55
Атмега 328, но если чуть ужать, убрать ненужное, влезет и на 168
+
avatar
0
  • Mikl1970
  • 14 декабря 2020, 12:36
А вы bootloader меняли на своей Ардуино, перед загрузкой скетча. Похоже проблема о которой писал vitkarus2, вызвана тем, что стандартный загрузчик не корректно работает с Watchdog таймером.
+
avatar
0
Короче проблема с bootloader. Выяснил на сайте habr.com/ru/post/189744/. Залил и она зависла и мигает. Не понял как поменять bootloader. Шить есть чем.
+
avatar
0
  • NikkD
  • 28 января 2022, 17:02
Здравствуйте. поделитесь пожалуйста скетчем. в облаке не открывается. а скопировал из текста, выдает ошибку((
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.