Code Monkey home page Code Monkey logo

sim800l_dtmf_control's Introduction

Система удаленного запуска двигателя автомобиля (SIM800L + Arduino), c управлением по DTMF, и отчетами по SMS.

Без корпуса

Прошивка, скетч

Актуальный скетч с отправкой данный на сервис narodmon.ru в Arduino Pro Mini (8Mhz/3.3v) для Arduino IDE

Актуальный скетч с управлением по MQTT протоколу (из приложения) в Arduino Pro Mini (8Mhz/3.3v) для Arduino IDE

Последние изменения в прошивке:

  • добавлен аглоритм активациии и деактивации автопрогрева

  • добавлен аглоритм активациии и деактивации отправки данных на сервер

  • добавлена функция перезагрузки модема если оператор блокирует трафик (бывает при отрицательном балансе), при новой регистрации в сети передача данных возобновляется

Конфигурация скетча :

  • номер телефона хозяина для входящих вызовов call_phone= "+375290000000";

  • номер телефона куда отправляем СМС отчет SMS_phone= "+375290000000";

  • адрес устройства на сервере MAC = "80-01-AA-00-00-00"; - нули заменить на свои придуманные цифры

  • имя устройства на сервере народмон SENS = "VasjaPupkin"; - аналогично

  • точка доступа для выхода в интернет APN = "internet.mts.by"; вашего сотового оператора

  • имя USER = "mts"; и пароль PASS = "mts"; для выхода в интернет вашего сотового оператора

  • n_send = true; если вы хотите, или n_send = false; если не хотите отправлять данные на сервер

  • sms_report = true; - разрешить отправку SMS отчета, или sms_report = false; если жалко денег на SMS

  • Vstart = 13.50 - порог детектирования по которому будем считать что авто зарежает АКБ

  • m = 69.91; - делитель, для точной калебровки напряжения АКБ

Подключение:

Для подключения к авто c класическим замком на 4 провода, если у вас япошка с замком на 6 проводов, то там все веселее...

  • выход на реле иммобилайзера и первого положения замка зажигания FIRST_P_Pin 8, на плате OUT1

  • выход на реле зажигания ON_Pin 9, на плате OUT2

  • выход на реле стартера STARTER_Pin 12, на плате OUT3

  • выход на включение обогрева сидений или вебасто WEBASTO_pin 11, на плате OUT4 (опция)

  • выход на реле управления подогревом сидений, на плате OUT5 (опция)

  • выход на сигнальный светодиод ACTIV_Pin 13 на плате OUT6(опция)

  • вход Feedback_Pin A1 - для проверки на момент включенного зажигания с ключа, на плате FB

  • вход STOP_Pin A2 - на концевик педали тормоза (АКПП) или на датчик нейтрали в МКПП, на плате IN2

  • вход PSO_Pin A3 - на датчик давления масла, если кому горит (опция), на плате IN3

  • вход D3- для датчиков объема или вибрации (аппаратное прерываение), на плате IN1 (опция)

  • вход D2 - для подключения к датчику распредвала через оптопару, если кому горит IN0 (опция)

  • линия L - на пин 15 K-line шины в OBDII разъёме, если такова имеется (опция)

  • линия K - на пин 7 K-line шины в OBDII разъёме, если такова имеется (опция)

  • масса GND - она же минус, для шины датчиков температуры DS18B20

  • провод DS18 - на линию опроса вышеупомянутых датчиков, приходит на 4й пин ардуино с подтяжкой к 3.3V

  • клемма 3.3V - напряжение питания датчиков температуры

  • клемма 12V - питание платы через предохранитель на 2А от "постоянного плюса"

  • клеммы REL, NO и NC - входы и выходы реле для коммутации антенны обходчика иммбилайзера

Алгоритм запуска:

После получения команды на запуск, ардуино;

1 Обнуляет счётчик попыток запуска, в зависимости от температуры двигателя на датчике Temp0 автоматически подбирается:

  • Время работы стартера StTime от 1 до 6 сек

  • Таймер обратного отсчета Timer от 5 до 30 минут

  • Число повторов прогрева свечей накала (для дизелистов) о 0 до 5

в соответствии с таблицей

3 Проверяем что бы напряжение АКБ было больше 10 вольт, зажигание с ключа не включено (гарантия что двигатель не работает), температура Temp[0] выше -25, и число попыток запуска не достигло максимальных (5-ти попыток).

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

5 Включаем реле зажигания, ожидаем 4 сек., проверяем не было ли предыдущих неудачных попыток запуска

5.1 Eсли их было 2 и более то дополнительно выключаем/включаем зажигание на 2/8сек

5.2 Если предыдущих неудачных попыток запуска было 4 и более то дополнительно выключаем/включаем зажигание на 10/8сек

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

7 Выжидаем 6 сек. на набор аккумулятором напряжения заряда от генератора.

8 Заменяем напряжение АКБ, и если измеренное напряжение выше установленного порога в 13.5 то считаем старт успешным;

  • включаем реле подогрева сидений подключенное к OUT5, но только при успешном старте

  • отправляем смс если попыток зпуска было 2 и более

иначе возвращаемся к пункту 4, и так оставшихся 4 раза.

Обходчик иммобилайзера:

Обходчик представляет собой две катушки с равным количесвом витков, намотанные одним и тем же проводом, поверх антенны на замке зажигания и на ключ (чип от ключа). Катушки соеденяются последовательно, свободные концы катушек соеденяютсяc клеммами REL и NO на плате, тем самым реле при включении замыкает контур ретранслируя сигнал от чипа на штатную антенну замка зажигания.

Какие функции поддерживает прошивка

1. Входящий звонок.

При входящем звонке с номера call_phone "снимает трубку" и проигрывает DTMF-гудок, ожидая ввода команды с клавиатуры телефона;

  • ввод 123 включает запуск двигателя с 3-ю попытками
  • ввод 456 включает таймер автопрогрева
  • ввод 789 останавливает таймер прогрева и автопрогрева
  • ввод 741 отключает отправку данных на сервер
  • ввод 852 включает отправку данных на сервер
  • ввод * затирает ошибочно введенные цифры
  • ввод # разрывает соединение и отправляет смс на номер указанный как SMS_phone

2. Исходящий звонок.

Звоним на номер на номер хозяина call_phone при смене потенциала 0V на +12V на клемме IN1, к которому подключен какой нибудь тревожный датчик объема или др., жду по этому пункту идей.

3. Входящие SMS команды

  • СМС с текстом #123start запустит двигатель на пргрев с автоматическим определением времени прогрева

  • СМС c текстом #autoh включит автопрогрев (проверка температуры каждых 3 часа)

  • СМС c текстом #stop остановит прогрев и автопрогрев

123 можно заменить на свой секретный трёхзначные пароль в скетче

4. Исходящее SMS сообщение

  • каждый раз когда авто завелось не с первой попытки, или вобще не завелось уходит СМС на номер SMS_phone

  • за 2 минуты до окончания прогрева, если до истечении времени не была нажата педаль СТОП, отправляется СМС

Текст СМС

Privet Vasja Pupkin - имея сенсора задаваемого в шапке скетча

Temp0: 42.05 - температура датчика DS18B20 расположенного на трубках отопителя салона

Temp1: 24.01 - температура датчика DS18B20 расположенного в ногах водителя

Temp2: 15.03 - температура датчика DS18B20 расположенного снаружи автомобиля

Voltage Now: 14.23V - напряжение АКБ автомобиля в этот момент времени (заряжается)

Voltage Min: 7.81V - напряжение АКБ автомобиля в этот момент времени

Voltage for Start: 12.75V - напряжение АКБ автомобиля перед включением стартера

Timer 1 - состояние таймера обратного отсчета в минутах

Attempts 1 - Число включения стартера с последнего удачного или неудачного запуска

Uptime: 10H - время непрерывной работы ардуино в часах

И ссылка на расположение автомобиля на картах гугл если разкоментировать соответствующие строки в скетче

5. Отправка показаний датчиков на сервер narodmon.ru

Каждые 5 минут открывает GPRS соединение с сервером narodmon.ru:8283 и отправляет пакет вида:

#80-00-00-XX-XX-XX#SensorName - из шапки скетча

#Temp1#42.05 - температрура с датчика №1, DS18B20 подключенного на 4 й пин ардуино

#Temp2#24.01 - температрура с датчика №2, номер присваивается случайно исходя из серийного номера датчика

#Temp2#15.03 - температрура с датчика №3, номер присваивается случайно исходя из серийного номера датчика

#Vbat#13.01 - Напряжение АКБ, пересчитанное через делитель m = 66.91;, 876 значение АЦП 66.91

#Uptime#7996 - Время непрерывной работы ардуино без перезагрузок, для статистики бесперебойной работы.

#Time2 - таймер автопрогрева в минутах.

## - Окончание пакета данных.

Расход трафика до 20 Мб в месяц c ПОБАЙТНЫМ округлением сессии, которая к слову длится 20 сек, и открывается каждых 5 минут.

6. Прием команд из приложения Народмон 2017

Команды такие же как и при входящем СМС, отличие в том что команда доходит только в момент связи с сервером от 0 до 5 минут, как повезет.

В приложении Народный мониторинг, залогинившись, перейти в УПРАВЛЕНИЕ > + > ПРОИЗВОЛЬНАЯ КОМАНДА > выбрать устройство, заполнить КОМАНДА: 123start, 123stop, или autoH.

7. Автопрогрев

Каждых 3 часа происходит проверка на низкую температуру:

Если температура упала ниже -18 градусов выполняем запуск двигателя на 20 минут тремя попытками.

Активация 456 и дезактивация 789, либо нажанием педали STOP

8. Отключение зажигания по таймеру, при низком напряжении и превышении температуры выше 86 градусов

Отключение зажигания при просадке напряжения АКБ ниже 11.0V, возникает при внезапно заглохшем двигателе, за это отвечает строка

if (heating == true && Vbat < 11.0 ) heatingstop(); // остановка прогрева если напряжение просело ниже 11 вольт

За отключение при достижении температуры в 86 градусов строка

if (heating == true && TempDS[0] > 86) heatingstop(); // остановка прогрева если температура достигла 70 град

За отключение прогрева при оконсчании осчета таймера

if (heating == true && Timer <1) heatingstop(); // остановка прогрева если закончился отсчет таймера

9. Моргалка светодиодом

Каждых 10 секунд на 50 милисекунд вспихивает светодиод подключенный между out6 и +12с последовательно подключенным резистором в 1кОм

if (heating == false) digitalWrite(ACTIV_Pin, HIGH), delay (50), digitalWrite(ACTIV_Pin, LOW); // моргнем светодиодом в режиме прогрева светодиод горит постоянно

10. Голосовое информирование о событиях в "трубку"

  • "Привет, жду команду" - сразу после "снятия трубки"

  • "Все поняла, завожу" - после ввода 123 в DTMF формате

  • "Включаю зажигание" - если если зажигание выключено и напряжение выше 11 вольт

  • "Прогреваю свечи" - в случае дополнительного прогрева свечей

  • "Кручу стартером" - в момент включения стартера

  • "Подожди" - после выключения стартера

  • "Двигатель заведен" - в случае успешного старта

  • "Упс, повторный запуск" - в случае не запуска уходя на следующую попытку

  • "Я на передаче" - если нажата педаль тормоза или МКПП на передаче

  • "Стоп" - в случае неудачного запуска при выходе из цикла

Загрузка аудиофайлов в память SIM800

11. Геолокация по LBS. и микрофон

На основании УК РФ Статья 138.1. "Незаконный оборот специальных технических средств, предназначенных для негласного получения информации" и ч.1 ст.376 УК Беларуси "Незаконное изготовление, приобретение либо сбыт средств для негласного получения информации" запрещается вносить конструктивные изменения в устройство, а именно подпаивать микрофон и вносить изменения в прошивку, что может превратить ваше устройство в спейц средство и у вас будут проблемы с законом.

Запрещается заливать скетч с раскоментированной строками:

String LAT = "";

String LNG = "";

SIM800.print("\n https://www.google.com/maps/place/"), SIM800.print(LAT), SIM800.print(","), SIM800.print(LNG);

SIM800.print("\n#LAT#"), SIM800.print(LAT);

SIM800.print("\n#LNG#"), SIM800.print(LNG);

SIM800.println("AT+CIPGSMLOC=1,1"), delay (3000); } else if (at.indexOf("+CIPGSMLOC: 0,") > -1 ) {LAT = at.substring(at.indexOf("+CIPGSMLOC: 0,")+24, at.indexOf("+CIPGSMLOC: 0,")+33); LNG = at.substring(at.indexOf("+CIPGSMLOC: 0,")+14, at.indexOf("+CIPGSMLOC: 0,")+23); delay (200), Код только для ознакомления.

Хотя это не GPS треккер, но в теории модем может определять свое расположение по информации базовых станциий сотового оператора, аналогично как и в смартфонах без GPS, точность при этом составляет от 100 до 800 м, в зависимосте от местности, в городе обычно 100-200 м.

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

Возможные проблемы и их устраниение:

  • Модем постоянно отваливается от сети - подать стабильное питание 3.5-4.4V c пиковым током в 3A !

  • После подачи питания модем не возвращает +CPIN: READY, Call Readyи SMS Ready, модем не определил скрость, решение - швырнуть в модем команду AT+IPR=9600;E1+DDET=1;+CMGF=1;+CSCS="gsm";+CNMI=2,1,0,0,0;+VTD=1;+CMEE=1;&W которая настроит в модеме скорость порта 9600, режим ЭХО, детектирование DTMF сигналов, тип кодировки СМС, автоизвещение о входящем смс, длительность тоновых сигналов, отображение ошибок и сохранит все настройки в энергонезависимую память.

  • если ардуино постоянно перезагружется (не снимает трубку), то навешиваем дополнительных керамических конденсаторов на 0,1мкф на шину питания 3.3V Ардуино как можно ближе к микросхеме, и заменяем спиральную антенну на выносную, вся проблема из-за ВЧ наводок от переотражения в машине

  • если устройство включает стартер на рабртающем двигателе то не подключен провод обратной связи FB - подключите его

  • если машина заводится и потом сама себе глошнет, то устройство не корректно замеряет напряжение заряда, необходима калибровка. Если напряжение в мониторе порта не соответствует действительности, то необходимо экспериментально подобрать m = 65.....72;, пока напряжение на мультиметре и в мониторе порта не окажутся приблизительно одинаковыми.

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

  • если температура с датчиков не отображется в СМС отчете, то они физически не подключены

  • если модуль ревизии ниже Revision:1418B04SIM800L24 то скорее всего AT+CREC работать не будет

Ссылки на мои предыдущие проекты на эту тему:

Видео в работе на Youtube

Анатомия автозапуска 5.0 (DRIVE2.RU)

Анатомия автозапуска 3.0 (DRIVE2.RU) в пластиколвом корпусе

Анатомия автозапуска (DRIVE2.RU) смый первый опыт , еще литием на борту

Новые платки и новый скетч для автозапуска (DRIVE2.RU)

Подделка на подделку ELM327, или как еще читать температуру ДВС опыт работы с K-line шиной по протоколу ISO 14230-4 kwp связкой Arduino + L9637D

[email protected]

sim800l_dtmf_control's People

Contributors

martinhol221 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

sim800l_dtmf_control's Issues

Sir file delete command giving me error

AT+CREC=3,C:\User\3.amr
ERROR
AT+CREC=3,"C:\User\3.amr"
ERROR

this commnds giving me error when i try to delete amr file from sim800L any other way to delete it

dtmf

Detection of DTMF tones in my SIM800L module.

I get "OK" when I send 'AT+DDET=1,1000,1,1* ' over uart .
But it doesnt seem to detect anything afterwards.
Perhaps I am doing something wrong.
Would be great to get some feedback.

regards
Atul
ref : *SIM800 Series_AT Command Manual_V1.09

Firmware 1418B04SIM800L24

Where can I download the software version you mention 1418B04SIM800L24 ?
Seems that it is not present in SumCom official site.

Thank you.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.