Собственно, хочу поделиться примером своей реализации данного девайса. В данном варианте, плата будет установлена непосредственно в реле поворотов (denso flasher)
По-мойму в данный момент каждый, сделал/установил себе их, или хочет это сделать.
Большинство реализаций представленных на рынке являютя дополнительной платкой которую необходимо как-то прикрепить к проводе. В целом, иних вариантов-то и нет. Но, мне совсем не хотелось, чтоб где-то там валалсь/болталась какая-то хрень. К делу: Наша "бабочка" при включении сигнала поворта замыкает информационную линию на землю.
На данном схематическом рисунке, можно понять распиновку родного реле

Отсюда вытекает желаемый алгоритм работы: при подаче сигнала "вкл" — продолжить удерживать сигнальню линии в течении ~1.8 сек. Чего достаточно для подачи 3х сигналов. В случае если во время работы канала, был включен противоположный — остановить текущий (если включили левый, выключить правый) так же, добавим удлиняшку для аварийки (спасибо/извини и т.д.)
К счастью, входная линия для нас является и выходнйо одновременно. Потому, мы можем уменшить количество проводов. Стоит заметить, что при выключенном зажигании реле поворотов работает только в режиме аварийки. Значит надо или питать схему от зажигания, или использовать линию зажигания как сигнал On/Off. По-мойму второй вариант лучше, при чем, имеет смысл воспользоваться LDO с входом вправления, не отдавая этот функционал МК (не надо заморачиватсья с энергопотреблением в Stop mode).
Надеюсь схема понятна. Прошу прощения за масштабирование, схемы давно не рисовал

Имеем вход питания от батареи — его заводим на вход ЛДОшки, сигнал зажигания на разрешаюший вход. ЛДОшка запитывает STM32F031F4 (в моем случае STM32F050 — старое название). У МК на входах включена поддтяжка к еденице, потому при включении поворота, МК получает Falling Edge через диод (напрямую нельзя, МК не 12v tolerant) и это есть сигнал к активации, взводим таймаут, включаем транзистор. По таймауту — выключаем.
Надеюсь, хард понятен. Перейдем к софту. Частой проблемой подобных решений является дребезг входных цепей. Потому, в данной реализации имеется таймаут антидребезга (100мС). Алгоритм примитивен, прерывание взводит таймаут, по таймауту проверяется состояние линии, если состояние не изменилось — воспринимаем как сигнал к активации. Если состояние изменилось значит игнорируем. Кстати, если до "выстрела" таймера антидребезга произойдет активируюие прерывание — таймер просто сбросится в начало. Далее — активировав выход, взводим "рабочий" таймер, когда он "выстрелит" — выключаем выход. В случае же, когда во время работы одного канала, активируют противоположный (правый/левый) — достаточно остановить текущий. Значение антидребезга столь велико т.к. При "остреле" переключатель сигнала поворотов может задеть противоположное направление.
Код схема(kikad) и печатка(lay) на гитхабе github.com/schapa/TapTurn
Собственно интересущие файлы:
include/api.h
src/initialize.c — своего рода Board Support Package (настройка, геттеры/сеттеры)
src/process.c — реализация алгоритма обработки событий
Уверен, для человека работающего c ARM'ами не составит труда перенести это в свой любимый тулчейн (в моем случае GCC ARM Embedded)
А теперь о сборке:

Изготавливаем изделие, программируем чем удобно (St-link/J-link…)
Проверить достаточно просто — припаиваем лампочки между + питания и сигнальными линиями, тыкаем в них 0, если лампочка продолжается светиться 1,8 секунды — супер:)
Как это все воткнуть в машину:
1) В салоне вынимаем пробку предохранителей
2) Залазим правой рукой в отверстие и выталкиваем левую часть панели (что обычно закрыта дверью)
3) откручиваем 2 винта
4) если у вас есть подсветка ног — отключите её
5) Аккуратно отсоединяем панель
6) визуально находим релюшку прикрепленную к к блоку реле сверху, блок прикреплен справа к предохранителям
7) берем тупой предмет (или острый, как удобней) и загоняем его по центру релюшки, после этого она сойдет легким движением руки.
Идем туда, где есть паяльник:
1) Раскрываем релюшку (с защелками просто)
2) Вытаскиваем плату из корпуса, думаю, по фото понятно что делать

3) клеим плату на 2х сторонний скотч к релюшкам
4) Припаиваем, левый и правый канал можно перепутать. Остальное — нет:) рекомендую брать мелкий МГТФ.
В итоге получае что-то вроде

5) проверяем все ли работает как надо
6) по желанию — заливаем плату цапонлаком, как защиту от влаги
Даем ей высохнуть, собираем (если провод, как у меня 0,14 в Виниле — пойдет туго)
7) собираем в обратном порядке.
Готово! Ты лучший!
ЗЫ: Данная заметка написана, не для полного повторения, как ещё один велосипед, который сдела на ARM'e, а не AVR-ке





Комментарии 2
Эх, готовое изделие бы. Попробуем конечно спаять/прошить или найти мастера.
UPD. Нашел готовое решение на ledtune.com/ready/turn2.html — идеальное для меня, но мало ли кому захочется.
www.drive2.ru/b/1109009/ www.drive2.ru/l/7462195/