Автозапуск на ардуино и sim800c своими руками

Добавил пользователь Алексей Ф.
Обновлено: 19.09.2024

У модуля имеются следующие сервисные возможности.

Управление модулем следующее.

Когда пользователь звонит, на номер SIM карты, установленной в модуле. Происходит автоответ модуля и в динамике звучит двух тональный гудок. После прекращения звуков, в динамике наступает тишина.

После этого можно подавать следующие команды с клавиатуры телефона;

  1. 45 прозвучит “контроль связи”, модуль отключит Вас и перезвонит на номер записанный на SIM карте. Опция необходима для проверки находится ли авто в зоне уверенного приема сотового оператора. Или что бы 1 раз в три месяца модуль перезвонил Вам, в противном случае возможно отключение SIM карты от сети.
  2. 03 прозвучит “все поняла завожу”, если была проведена процедура подготовки авто к запуску. Модуль проведет запуск двигателя, от 1 до 4 попыток. Будет сообщать о режимах “зажигание”, “стартер”, “повторный запуск”, об успешном запуске “двигатель запушен” или не успешном “не запустилась! попробуйте еще раз!” и автоматически отключится. Если не было подготовки авто к запуску прозвучит “не в режиме запуска”, 3 раза моргнет поворотниками и отключится.
  3. 30 прозвучит “стоп прогрева”, модуль остановит двигатель, если авто было в режиме прогрева и автоматически отключится.
  4. 56 прозвучит “ отключен контроль дверей”, отключит автодозвон при открытии двери авто и автоматически отключится
  5. 65 прозвучит “ включен контроль дверей”, включит автодозвон при открытии двери авто и автоматически отключится.
  6. 89 прозвучит “ двигатель блокирован”, заблокирует двигатель (блокировка реле бензонасоса), будет включен периодический сигнал клаксона, моргание дальним светом фар и фонарями поворотников, для привлечения внимания. Автоматического отключения звонка не произойдет. Полезна для поиска авто на крупном паркинге.
  7. 98 прозвучит “ продолжайте движение”, разблокирует двигатель (разблокирует реле бензонасоса), отключит периодический сигнал клаксона и моргание дальним светом фар и фонари поворотников, автоматически отключится.

Основная часть интерфейса построена, из следующих функциональных блоков;


Пояснения входов схемы;

Podxvat выход на реле зажигания Podxvat

Start выход на реле стартера

Block выход на реле блокировки двигателя

Klaxon Ligh выход на реле дальнего света и клаксона

Parking вход на датчик паркинга или ручника

Stop вход от концевика педали тормоза

Ignition1 вход от замка зажигания для контроля наличия ключа в замке

Ignition 2 вход для контроля работы при отсутствии ключа в замке

Alarm вход при срабатывании колокола сигнализации авто

Tahometr вход от сигнала тахометра или форсунки

CentrZamok вход сигнала от центрального замка при закрытии дверей, замыканием на массу

ACC выход для вторичных приборов авто, мотор печки

Pusk_Sig вход на запуск от автосигнализации, команда открытия багажника

Blinks выход моргать поворотником

Door- или Door+ - в зависимости кокой уровень сигнала при срабатывании датчика двери

Immo – Deton На реле обходчика иммобилайзера и отключения датчика детонации.

В схеме не прорисованы обмотки катушек реле и их коммутационные цепи.

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

Схема блока дополнительных реле:


Особенно обратить внимание каким сигналом управляется клаксон плюсом или массой.

Так же если в эл. схеме авто присутствуют силовые реле клаксона и дальнего света то можно исключить дополнительные силовые реле.

Собранное устройство напоминает технологию “бутерброд”, из-за экономии места, и следствия доработок.




Процесс сборки, когда готова печатная плата, в моем случае изготовлялась способом ЛУТ.

Сначала монтируются все оптопары и smd резисторы, так как две оптопары и резисторы находятся под SIM модулем. Затем монтируется GSM SIM модуль. SIM модуль, 1я (arduino) плата программная (нижняя) и 2я (arduino) обработчик тахометра (верхняя) устанавливаются при монтаже на штырьках. Печатные платы в Sprint-Layout6 и PDF прилагаются в архиве.

Далее необходимо запрограммировать GSM SIM модуль для работы в Российских сетях сотовой связи. Мною была использована терминальная программа SIM900 DIALOG. Подключение, к примеру, по следующей схеме.


Отправив в терминальной программе, GSM модулю, по отдельности, следующие команды;

На каждую из команд должен прийти ответ ОК, в терминальной программе.


// 1 открываю двери! (зарезервировано на будущие доработки)

// 2 двигатель запущен, двигатель запущен.

// 3 оп, повторный запуск!

// 4 закрываю двери! (зарезервировано на будущие доработки)

// 5 уже, прогреваюсь!

// 6 стоп прогрева!

// 7 все поняла, завожу!

// 8 двигатель блокирован, двигатель блокирован.

// 9 продолжайте движение!

// 10 оп, двигатель уже запущен!

// 11 контроль связи!

// 12 низкое напряжение!

// 13 короткие гудки (зарезервировано на будущие доработки)

// 14 нарушение охраны!

// 15 открыта! дверь! авто!

// 16 Включена Тихая Блокировка. (зарезервировано на будущие доработки)

// 17 отключен! контроль! двери!

// 18 включен! контроль! двери!

// 20 не в режиме запуска

// 23 Включено! Зажигание!

// 24 не запустилась! попробуйте еще раз.

// 25 авто! в режиме! пидстопа!

В комплекте прилагается программа и голосовые файлы. Так как программа, ArmFile Download, не может записать одновременно более 10 файлов. То для удобства (что бы не прописывать каждый раз путь к файлам), на диск D:\ копируем папку Voice_files, с amr. файлами. И перед каждым запуском программы, для удобства, подменяем Config.ini в папке с программой ArmFile Download, прилагаемыми файлами (Config1.ini _ Config2.ini _ Config3.ini.), из папки Voice_files, переименовывая их в Config.ini.

Впаиваем на штырьках из комплекта Arduino остальные платы и рядом плату преобразователя уровней тахометра. Соединяем недостающие соединения проводниками. Так как у процессора Arduino 1й программной платы использованы все ножки, включая TX-RX, предназначенные для программирования и работы в мониторе порта, программирование при этом происходит нормально так как в Arduino присутствует загрузчик. И чтобы модуль мог корректно определять напряжение аккумуляторной батареи авто, необходимо вычислить коэффициент деления АЦП процессора, из-за разброса параметров резисторов на pin A6. Загружаем в плату скетч ACP_pin, наблюдая через монитор порта подбираем значение float m1 = ХХ.ХХ в скетче и сверяя с показанием тестера, измеряя напряжение питания модуля. Вычислив коэффициент АЦТ (ХХ.ХХ), записываем это значение в основном скетче Programs. Программируем обе платы Arduino нижнюю программную скетчем Programs (со скорректированным коэффициентом АЦП), верхнюю частотомера скетчем Frequency_meter. Подсоединяем необходимые внешние силовые реле.

Проверяем полностью собранное устройство на столе, вместо исполнительных устройств авто подключаем тумблера, кнопки и светодиоды. В качестве источника частоты тахометра, использовал трансформатор 220/3V. Работа скетчей расписана в них самих. Подключение к авто согласно схемы конкретного автомобиля.

Arduino Pro Mini+SIM800, дополнение к авто сигнализации с автозапуском.

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

У большинства авто сигнализаций с авто запуском (сигналок) или отдельных модулей автозапуска, имеется дополнительный вход (проводок - pin) для внешнего дистанционного автозапуска прогрева авто. Достаточно этот pin, замкнуть на массу в течении 2 сек. произойдет запуск авто (если соблюдены все условия запуска для авто сигнализации). Если еще один раз замкнуть данный проводок на массу, произойдет принудительная остановка автозапуска авто.

Функции модуля Arduino Pro Mini+SIM800 в следующем.

  1. При звонке на устройство, происходит авто ответ и проигрывание Voice(1) .arm /*жду команду*/ из памяти SIM800 модуля.
  2. При подаче DTMF команды 123 /*start*/, проигрывание Voice(7) *все поняла завожу*,

опрос pin A2 (pin A2 =0, ручник, тормоз), включение pin D12, /*starter*/на время 2 сек., через развязывающий диод и управляющий транзистор (на провод сигналки).

Если запуска не произошло, на А3 не появилась 1 (не включилось зажигание авто), то проигрывание Voice(6) (повторный запуск). Значит авто не подготовлено к запуску.

  1. При появлении на pin A3 = 1 (зажигание от авто), проигрывание Voice(5) (*двигатель запущен*)
  2. При подаче DTMF команды 321 (stop), проигрывание Voice(6) (*стоп прогрева*), включение pin D11=1 (OUT_4) , на время 2 сек. через развязывающий диод и управляющий транзистор (на провод сигналки).
  3. При подаче DTMF команды 789 , блокировка двигателя, включение pin D8 (OUT_5, блокировка двигателя), проигрывание Voice(8) *двигатель блокирован *). Подача 1 с D8 на D4 (D4 организован как вход IN_7, пока так проще обрабатывать), с IN_7 -D4 на D9 выдает прерывистый сигнал на реле клаксона и дальнего света авто.
  4. При подаче DTMF команды 987 , сброс блокировки двигателя.

В приведенном скетче никак не могу осуществить;

Если во время прогрева от arduino, на PSO_Pin - A3 ( зажигание) переключится с 1 на 0 (по какой то причине отключилось зажигание авто или сигналка авто делает следующую попытку запуска) на время

40 сек (приблизительно, все зависит от сигналки) и Feedback_Pin == HIGH - А1 (имитация команды на запуск в arduino, есть прогрев). То нужен сброс прогрева, в скетче arduino (сброс имитации команды прогрева в arduino).

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

99. if (digitalRead(PSO_Pin) == LOW && digitalRead(Feedback_Pin) == HIGH) && PsoTime

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

100. digitalRead(PSO_Pin) == HIGH && digitalRead(Feedback_Pin) == HIGH

В процессе отработки скетча выяснил что millis не сбрасывается, а только останавливается, до следующего изменения на PSO_Pin

Если можете, ЛЮДИ ДОБРЫЕ, толкните пожалуйста в нужном направлении. Или прочитать как сделать задержку на выполнение команды, приходящей в течении некоторого времени и сброс цикла если время не прошло. Для меня проще поставить внешний 555 таймер, но есть желание дописать скетч.

Arduino занялся 2 месяца, не на чем было, ну и не интересовался раньше.

Так же где можно прочитать, что прописать в скетче что бы привязка номера телефона была не к программе, а к SIM карте.


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

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

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

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

номер телефона хозяина для входящих вызовов 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 на плате, тем самым реле при включении замыкает контур ретранслируя сигнал от чипа на штатную антенну замка зажигания.

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

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

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

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

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

каждый раз когда авто завелось не с первой попытки, или вобще не завелось уходит СМС на номер 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 - время непрерывной работы ардуино в часах

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


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


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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Хотя это не 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 работать не будет

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

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

About

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

  • Open with Desktop
  • View raw
  • Copy raw contents Copy raw contents

Copy raw contents

Copy raw contents

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






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

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

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

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

номер телефона хозяина для входящих вызовов 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 на плате, тем самым реле при включении замыкает контур ретранслируя сигнал от чипа на штатную антенну замка зажигания.

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

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

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

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

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

каждый раз когда авто завелось не с первой попытки, или вобще не завелось уходит СМС на номер 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 - время непрерывной работы ардуино в часах

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


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


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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Хотя это не 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 работать не будет

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

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

Обзор модуля GSM, GPRS на чипе SIM800L

Технические параметры

► Напряжение питания: 3.7 В ~ 4.4 В
► Потребляемый ток режима ожидания: 0,7 мА
► Пиковый ток: 2 А
► Скорость UART: 1200 – 115200 бод
► Формат SIM карты: microSIM
► Рабочий диапазон: EGSM900, DCS1800, GSM850, PCS1900
► Мощность передачи DCS1800, PCS1900: 1 Вт
► Мощность передачи GSM850, EGSM900: 2 Вт
► Режим сети: 2G
► Габариты: 25 мм х 24 мм х 4 мм

Общие сведения

В основе модуля лежит чип SIM800L от SimCom. Рабочее напряжение чипа составляет от 3.4 В до 4.4 В, что делает его идеальным, для прямого питания от литиевой батареи, но

Обзор модуля GSM, GPRS на чипе SIM800L

Контакты чипа SIM800L выведены по бокам модуля. Включая контакты необходимые для связи с микроконтроллером интерфейс UART, поддерживаемая скорость от 1200 бит / с до 115200 бит / с с автоматическим определением скорости. Для подключения к сотовой сети, нужна внешняя антенна, которая идет в комплекте с модулем. Так-же, на плате имеется разъем U.FL, если необходимо подключить выносную антенну.

Обзор модуля GSM, GPRS на чипе SIM800L

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

Обзор модуля GSM, GPRS на чипе SIM800L

Распиновка GSM-модуля SIM800L
На модуле SIM800L расположено 12 контактов, которые необходимы для связи с микроконтроллером и подключении динамика и микрофона. Соединения следующие:

► NET — Вывод для припаивания спиральной антенну.
► VCC — Питание модуля, от 3,4 В до 4,4 вольт.

Помните, что подключение модуля к 5 В, приведет к его выходу из строя, он так же не работает и от 3.3 В. Для его работы необходим внешний источник питания, Li-ion аккумулятор или понижающие преобразователи постоянного тока на 3,7 В, 2A.

► RST (Reset) — Вывод сброса модуля.
► RxD (Receiver) — Вывод последовательной связи.
► TxD (Transmitter) — Вывод последовательной связи.
► GND — Вывод заземления, должен быть подключен к выводу GND на Arduino.
► RING — Вывод индикатора звонка.
► DTR — Вывод активации / деактивации спящего режима.
► MIC ± — Микрофонные вывод.
► SPK ± — Вывод динамика.

Питание для модуля SIM800L
Для стабильной работы модуля SIM800L необходим источник питания с выходным напряжением от 3,4 до 4,4 В (в идеале 4,1 В) с максимальным рабочим током 2А. В качестве источника питания можно использовать Li-ion аккумулятор (1200mAh и выше) или стабилизатор напряжения на LM2596.

Подключение
модуля SIM800L к Arduino

Необходимые детали:
► Arduino UNO R3 x 1 шт.
► Макетная плата 400 контактов, breadboard x 1 шт.
► Резисторы 0,128 Вт, 10 кОм x 2 шт.
► Модуль GSM, GPRS на чипе SIM800L x 1 шт.
► Провод DuPont, 2,54 мм, 20 см, F-M (Female — Male) x 1 шт.
► Кабель USB 2.0 A-B x 1 шт.

Подключение:
Первое делом необходимо припаять антенну или установить выносную, далее установите SIM карту в разъем. Теперь подключаем вывод Tx на модуле к выводу 3 на Arduino. Вывод Rx нельзя подключать напрямую, так как цифровой вывод Arduino Uno использует 5В, а модуль SIM800L использует 3,3В. Необходимо сигнал Tx, поступающий от Arduino UNO, понизить до 3,3В, чтобы не спалить модуль SIM800L. Самый простой способ, это воспользоватся делителем напряжения на резисторах. Подключаем резистор на 10 кОм между выводом Rx (SIM800L) и выводом 2 (Arduino) и второй резистор на 10 кОм между выводом Rx (SIM800L) и GND. Теперь осталось подключить питание модуля, в примере используется стабилизатор напряжения на LM2596.

Подключение SIM800L к Arduino

Программа №1 — Тестирование AT-команд

Читайте также: