Удаленный Автозапуск двигателя
Дальнейшее развитие проекта Кнопки запуска.
Итак, накатавшись с удобством и забыв о ключах, подошло время к зиме. И ожидая в холодной машине пока она не прогреется подтолкнуло поискать как с этим справляются очумелые автолюбители. Полазив на форумах и почитав несколько статей от знающих людей было решено делать GSM модуль к уже проверенной «Кнопке».
Выбор пал на Ардуино (собственно только сам контроллер) и GSM шилд на модуле SIM800L (как самый доступный около 3,5$) .
Т.к. GSM модуль в пиковых значениях потребляет до 2А применил DC/DC преобразователь LM2596S.
На контроллере реализованы 5 входов:
— Педаль тормоз;
— Ручной тормоз;
— Датчик масла (программно пока не реализован);
— Тахометр (программно пока не реализован);
— Вход напряжения Аккумулятора.
Реле — автомобильные с током до 30А с внешним подключением. Ключ для управления на MOSFET транзисторах. В первом варианте (что нашлось) были irfz44n, после использовал Si4800BDY (или подобные, полно на старых материнках).
Также Имеется разъем для подключения bluetooth или WIFI(планируется) для управления или пере прошивки по воздуху. Собственно bluetooth был опробован как удлинитель UART для мониторинга при написании программы. Также bluetooth планируется для управления с брелка.
А теперь самое интересное!
Для связи с «Авто» я применил сервер с MQTT протоколом — cloudmqtt.com.
Когда я начинал с ним работать использование их серверов было бесплатно, к сожалению сейчас это платно, старые зарегистрированные аккаунты остались бесплатными (хотя для дела можно и купить это того стоит).
Возможно использовать другие серверы суть не меняется (только адресация данных). Например — mqtt.4api.ru.
Что Мы можем через приложение:
— Видеть Напряжение на Аккумуляторе;
— Видеть состояние датчиков температуры (реализовано до 10 шт);
— Видеть баланс на номере «Авто»;
— Видеть состояние «Пусковых» реле (Клемма 15, 50, ACC) и заведен авто или нет;
— Также Мы можем изменить время прогрева;
— Реализовано автоматическое отключение от GPRS через 2 минуты после выключения прогрева или через 5 минут если было подключение без включения двигателя;
— Также Добавлен вывод ошибок подключения и др. Опционально;
— И счетчик суточной перезагрузки.
Источник
Автозапуск ардуино своими руками
Грядут холода и очень хочется сесть в теплый автомобиль и не теряя времени на прогрев двинуться в путь.
Безусловно можно купить комплект сигнализации типа «стар лейн» тысяч за тридцать с установкой, но к чему тогда приложить очумелые ручки?
Идея в том чтобы использовать в качестве команды выход сигнализации или сигнал с вибромотора старенькой мобилки, который поступит на микроконтроллер, в программном коде оценить что двигатель еще не запущен, стоит на ручнике, нейтральной передаче через реле включить цепи питания двигателя, бортовой электроники, запустить мотор стартером и прогревать в течение заданного времени.
Что понадобится:
Аппаратная часть
старый мобильный телефон (или дешевый китайский gps-gsm-треккер с наличием линии внешнего выхода)
мини-ардуино контроллер
плата обвязки ардуино (делаем самостоятельно)
Программы
— среда разработки ардуино
— програма для разводки печатных плат spring layout
— руководство по «языку ардуино» на русском языке arduino.ru
поскольку тут собрались фанаты ардуино то и программный код будем писать под этот процессор.
а я попутно попробую на этом примере по шагам рассказать как пишется ардуино — код
прежде всего нужно понимать
1. в языке ардуино регистр букв различается например Setup и setup это две разные вещи.
2. каждая операция присвоения или запуска процедуры должна завершаться точкой с запятой ;
3. функции и условные операторы не заверщшаются точкой с запятой но должны иметь скобки для аргументов и фигурные скобки для исполняемого блока
первым делом обычно решают какие будут использованы входы и выходы у контроллера и присваивают им понятные имена констант |
затем добавляют две стандартные процедуры, которые обазятельно должны быть в каждом скетче ардуино |
процедура setup выполняется один раз при включении контроллера или при нажатии на кнопку сброс, в ней производят необходимые настройки входов и выходов |
затем определим основную логику программы — программа будет циклически работать в двух режимах, когда «двигатель выключен» и когда «двигатель запущен» в первом случае следует ожидать сигнала на запуск во втором контролировать чтобы он не заглох и выключить по окончании прогрева. для этого определим набор функций и переменную которую будем использовать поскольку нам нужна переменная к значениям которой нужно иметь доступ из любой процедуры то мы помещаем ее выше первой функции в коде // variable for actual mode |
пишем основной костяк программы: |
теперь можно наполнить процедуру проверки запуска |
тут мы понимаем что в одних автомобилях сигнал что заряд пошел может иметь значение +12 а в других наоборот 0, и тоже самое с датчиком ручника, с тем чтобы обеспечить универсальность добавляем в верхнюю часть кода пару констант const int hand_brake_on = 1; // 0= поднятый датчик ручника замыкает на массу тормоз активен (жигули), 1= датчик ручника в поднятом состоянии выдает высокий уровень напряжения |
пишем вторую чать кода, процедуру выключения двигателя |
Проверяем что же у нас получилось: первый тест |
Дальше ставим задачу добавить три попытки запуска мотора, причем чтобы стартер выключался сразу после появления сигнала на датчике заряда но время работы стартера не превышало 10 секунд, добавить индикатор статуса работы контроллера (будет в режиме прогрева показывать с какой попытки произошел запуск а в режиме ожидания запуска показывает что контроллер готов к запуску — включен, ручник и нейтралка стоят.) слабое место этого кода в том что миллисекунды в ардуино обнуляются каждые 49 суток Источник Arduino.ruАвтоматический запуск двигателя автомобиля
Здравствуйте все. Воспользовался проектом Алексея Козина по автозапуску машины. Спасибо ему большое. http://arduino.ru/forum/proekty/kotntroller-distantsionnogo-progreva-avtomobilya Код изменил и добавил под свои запросы. Так как в программировании новичек, то сначала писал программку затем испытывал, но так как сразу ничего не работало то приходилось подставлять костыли. Наворотил кучу условий и код разросся. Мне было важно чтобы работало на моей машине Hyundai I30 автомат.
Что в итоге получилось. Система может запускать двигатель по звонку с мобильного и глушить его по звонку. Так же прогревать двигатель определенное время. Отзванивается хозяину когда двигатель завелся автоматически и когда заглушен. Телефонным звонком можно настроить автоматический запуск по температуре. Включает обогрев сидений по пороговому значению температуры. Звонит хозяину когда некто или нечто стучит по машине.
Для проекта воспользовался старой мобилкой . Сигналом на запуск с нее является вибромоторчик. А сигнал обратной связи когда контроллер отзванивается приходит на кнопку телефона «зеленая трубочка». Там всегда сохраняются последние звонки и если на нее подать сигнал три раза мобилка совершит дозвон на последний входящий.
Плату не разводил. Подумал что на макетной сделать будет быстрее. Но потом пожалел не очень краиво получилось.
Схемка принципиальная промежуточный вариант. На схеме не хватает кое чего. На ней нужно добавить входной сигнал АСС на ножку А2. В сктче она задействована. И вибродатчик не нужно притягивать к земле, так как сигнал с него земля. Перерисовал схему нормально, на карандашном ресунке ничего не видно было.
Верю проект доделаете. В подробности не вдавался, но надеюсь датчик нейтралки есть, чтоб не уехала и не дай бог кого не задавила. Иначе можно и в крупные неприятности попасть. Уделяйте большое внимание безопасности таких разработок.
вибромоторчик. а если кто номером ошибется? используйте sim900 или sim800L, или старый сименс накройняк. юзайте АТ команды.
Да уж схемка получилась нечитаемая . Нарисую попозже выложу. Кстати вибродатчик взял от старой сигналки. Термодатчик я расположил прямо на плате поэтому пороговою температуру нужно ставить с учетом что датчик в салоне. Все уже работает на машине месяц пока без сбоев. Правда если сильные холода нужно изменить время зарядки разрядки телефона.
Датчика нейтралки нет, делал конкретно для коробки автомат. Поэтому сигнал с ручника тоже упразднил и использовал его для педали тормоза, чтобы при нажатии на тормоз глох двигатель.
вибромоторчик. а если кто номером ошибется? используйте sim900 или sim800L, или старый сименс накройняк. юзайте АТ команды. Да Вы правы могут ошибиться, но даже такие старенькие телефоны как этот имеют возможность настроить вибрацию только на определенный номер хозяина. А на все остальные входящие или молчать или играть только мелодию без вибрации.
На телефоне есть UART, почему бы его не использовать в проекте?
Если честно я не знаю что это такое уарт. Я так понимаю это нужно смс ки потом слать. По мне удобнее позвонил машине дождался двух гудков и сбросил, машина завелась. И тут же отзвонилась. Даже трубку брать не надо. Так же иглушить двигатель, только сбрасывать после первого гудка.
Спасибо, теперь все понятно. Практики мы и воры, разыскиваем и воруем практические решения, чуть чуть доробатываем и пользуемся. А ссылки на википедию нам не помошники, нам бы попроще и чтобы работало.
Перерисовал принципиальную схему теперь читаемая.
Когда схема получит конечное состояние, делайте на нормальном текстолите. На макетке в автомобиле очень ненадежно, выбрация и вибрация.
Напишите пожалуйста весь список деталей которые нужны для сборки. Особено интересуют реле.
подскажите а какой термодатчик вы использовали?
Остальные детали видно на принципиальной схеме.
подскажите а какой термодатчик вы использовали? DS18B20. В основном он используется для включения обогрева сидений в момент автозапуска. А запуск по температуре можно включать и выключать настройкой с помощю звонка по телефону, три гудка — режим включен, четыре гудка в трубке выключен. Алгоритм записан прямо в пояснениях в скетче.
Когда схема получит конечное состояние, делайте на нормальном текстолите. На макетке в автомобиле очень ненадежно, выбрация и вибрация. Вы совершенно правы надо на текстолите. Я использовал мягкий многожильный провод для монтажа. Думаю поработает. Как раз и проверю.
Уважаемый Фёдор спасибо за коментарий по поводу реле. Скажите а вы можете выложить схему запуска и алгоритм без всяких наворотов только запуск по звонку и остановка двигателя для коробки автомат.
В первом посте ссылка на проект Алексея Козина который я использовал за основу. Еще раз ему спасибо. В том проекте все без наворотов. Я думаю сможете и из моего проекта все ненужное Вам выпилить, а можно ничего не выпиливать из скетча. Просто в схеме не использовать не нужные Вам ножки. например сигнал на реле обогрева сидений, температурный и вибродатчик.
В первом посте ссылка на проект Алексея Козина который я использовал за основу. Еще раз ему спасибо. В том проекте все без наворотов. Я думаю сможете и из моего проекта все ненужное Вам выпилить, а можно ничего не выпиливать из скетча. Просто в схеме не использовать не нужные Вам ножки. например сигнал на реле обогрева сидений, температурный и вибродатчик. здравствуйте! озадачился подобным дэвайсом, как не пытаюсь не могу освоить програмирование хотя с логикой разобрался и руки есть! хотелбы использовать ваш скейч но у меня ркпп и нужно обезопасится по поводу нейтрали. йдея с герконом не по душе и мне закралось идея установить это под чехлом ручки , и скажем при команде запуска лазар включается и если приёмник его ловит то запуск разршен! все это завязать вместе с ручником? как идейка? можно так реализовать?
А как вы мочить собираетесь положение нейтрали с помощью данных девайсов? Может лучше поставить гироскоп и если он будет чувствовать продольное ускорения, то программа будет сразу прекращать все попытки и глушить двигатель? Бесплатная доставка GY-521 MPU-6050 mpu6050 модуль 3 оси датчики аналоговый гироскоп акселерометр модуль для arduino
а если авто под уклоном?
Можно можно использовать любое значение ускорения. Если машина на нейтрали то ускорение будет практически нулевое, будет небольшой шум в показаниях от вибрации двигателя, но он будет явно меньне чем начало движения.
В Этом плане можно просто подключиться к датчику абс, но это тоже не вариант нужно исключить возможность запуска вовсе ! люди ставят геркон и магнит по подобию в какой либо точке поставить приемник а на ручке закрепить передатчик который в нетральном положении кпп пудет точно бить в приемник, в любом другом положении лучь мимо значит запрет запуска а так же от угона!
Подскажите а что за маленькое чёрное релле на фото платы. Невидно маркировки.
Это реле включает зарядку телефона периодически. В данном скетче период зарядки телефона 4 часа, а период ожидания 44. Но я думаю надо изменить. На морозе 44 часа батарейка телефона не держит и телефон вырубается . Думаю часов 10 между зарядками надо оставить. А черное реле использовал из старой сигнализации на 12V 2A.
Какая классная идея. Копеечная деталька с громадным потенциалом. Проводов никуда тянуть не надо, в схему машины лезть. Получиться легко повторяемый универсальный девайс. Можно еще несколько функций на него повесить, например как кто то писал здесь включение ДХО при движении, охранную функцию. Теперь может кто подскажет простой датчик движения на основе этой платки?
Я именно сразу подумал Про это . Допустим данные сКейч который у тебя на коробку автомат за место педали тормоза повесить данный девайс , только твой скетч почему-то у меня выдает ошибку, он просто не загружается в Arduino
Я имел ввиду датчик ускорений, а не лазер. Так как не очень понимаю как физически удобно установить лазер и приемник и тянуть к ним провода. А с датчиком ускорения можно обойтись и без сигнала и провода от педали тормоза. Вообщем классная идея. Наверное займусь.
OneWire oneWire(ONE_WIRE_BUS); ругается на эту строчку
OneWire oneWire(ONE_WIRE_BUS); ругается на эту строчку
Sketch uses 8,908 bytes (28%) of program storage space. Maximum is 30,720 bytes.
уважаемый fyodor.m не могли бы вы отправить мне скомпелированный скетч или в блокноте, а то тут перепрыгнули строки и как только я н пытался поправить его у меня не получилось. заранее благодарен вот моя почта constantinoff@list.ru
долго думал как избавится от акуммулятора в телефоне, что бы небыло этого гемора с зарядкой, оказалось все просто, заказал DC-DC конвертер на алиэкспресе за 50 рублей, настроил его на понижение тока с 12 до 3,7 вольт и впаял вместо батареи. Работает отлично, блок не греется. А на телефоне даже пропал значек уровня заряда батареи. Остается один вопрос как мне изменить скетч что бы добавить в него строку в которой он будет включать телефон, после того как аврду включается сам? Можно и самому включать его конечно, когда скидываешь клемму это нужно будет делать каждый раз, а хочется что бы арду его включал сам. импульс нужен в 2 секунды. провода с кнопки включения я уже вывел.
уважаемый fyodor.m не могли бы вы отправить мне скомпелированный скетч или в блокноте, а то тут перепрыгнули строки и как только я н пытался поправить его у меня не получилось. заранее благодарен вот моя почта constantinoff@list.ru ps. ваш скетч мне подходи больше всего, только бы добавить в него строку о включении телефона и он будет просто супер
Надо же даже телефончик похожий. На проводочках которые подпаиваются к кнопке телефона «зеленая трубочка» я припаял выносную кнопку( ее видно на моем фото трубки в черной термоусадке) в параллель, так как после подпайки проводов механическая кнопка на телефоне не срабатывает, проводки мешают. Вы правы Батарейка точно не нужна, проверено что даже полностью заряженая прои -15 градусах, телефон вырубается. На счет автоматического включения телефона подумаю.
есть еще одна мысль по поводу безопасности. У некоторых старых сигналок таких как бумеранг, защита от постановки на скорость работала следующим образом. Поворачиваешь ключ, а машина не глохнет, выходишь из нее (загарается лампа открытия двери), закрываешь дверь и машина глохнет, ну и тем самым ставится на режим «готов к автозапуску». Если после этого снять с сигналки или открыть дверь, то автозапуск уже не сработает. По правде мне кажется это довольно простым решением, ведь трудно выйти из заведенной машины и закрыть дверь, если она стоит на скорости?
Если я правильно понял логику что то не очень удобно. Захотел заглушить двигатель, например в пробке конкретно встал, так после поворота ключа в OFF еще и хлопать дверью надо. Да и не хорошо, мне кажется, релюшки силовые постоянно запитаны будут в пути. Опять же дополнительный сигнал открытия двери тянуть в схему надо. Хотя если беспокоитесь о сохранности авто его надо предусмотреть. В этом проекте сигнал от дверей не учитывается. Тоесть если взломать дверь во время автопрогрева двигатель будет продолжать молотить и заглохнет только при нажатии педали тормоза. Жду датчик ускорений трехосный, прийдет буду эксперементировать с ним.
Я не агитарую за этот способ, я просто предложил как вариант на обсуждение. Может кому в голову придёт вариант его модернизации.
Собственно говоря вы можете глушить двигатель и педалью, но после этого режим «готов к запуску» будет сброшен, а поставлен в этот режим может быть только после закрытия двери с работающим двигателем. Ну как вариант.
долго думал как избавится от акуммулятора в телефоне, что бы небыло этого гемора с зарядкой, оказалось все просто, заказал DC-DC конвертер на алиэкспресе за 50 рублей, настроил его на понижение тока с 12 до 3,7 вольт и впаял вместо батареи. Работает отлично, блок не греется. А на телефоне даже пропал значек уровня заряда батареи. Остается один вопрос как мне изменить скетч что бы добавить в него строку в которой он будет включать телефон, после того как аврду включается сам? Можно и самому включать его конечно, когда скидываешь клемму это нужно будет делать каждый раз, а хочется что бы арду его включал сам. импульс нужен в 2 секунды. провода с кнопки включения я уже вывел. Для включения телефона можно использовать выход A1 который использовался для реле зарядки телефона. Провода от кнопки включения телефона подключить через оптрон к выводу А1. А провод с А1 который идет на реле зарядки телефона через бустер нужно убрать. Смотри схемку. Изменения в коде смотри ниже. Питание телефона надо подавать через предохранитель ардуинки. Теперь при каждой подаче питания на ардуинку на этапе сетапа включится телефон. Источник |