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

На руле, вестимо, кнопка клаксона, которая на "массу" замыкает единственный проводочек, который, в свою очередь, через скользящий контакт, а может быть даже напрямую, уходит куда-то вглубь машины, к реле, или сразу к сигналу.
Но ещё у чувака есть куча кнопок и переключателей, которые он хочет разместить на руле и сделать из них кнопки управления круиз-контролем, солнечной крышей, багажником, магнитолой, быстрым вызовом любимой бабушки и вертикальным взлётом, всего 15 штук, которые он хочет нажимать и переключать по-отдельности, или все одновременно.
Схема работы предполагается такая же: кнопки замыкаются на массу. Вот только протянуть такие проводочки не представляется возможным: так просто их не кинешь — попутаются! Нужно покупать где-то другой скользящий контакт, потом его как-то прикручивать, подсоединять…
"Вот бы хорошо" — думает чувак — "было бы все это повесить на один, уже имеющийся провод клаксона"
Передача данных и питание по одному проводу
Тут не обойдётся без микроконтроллера. Нужно только придумать как подвести к нему питание. Идея передачи данных по тому же проводу, по которому осуществляется питание — не нова. Так работает, например, сеть 1-wire. Вот только в условиях автомобильных реальностей, спутанных проводов и сильных помех она показывает себя не очень. А если точнее — вообще отказывается работать без витой пары, или экранированного провода.
Предложенная схема работает по аналогичному принципу, только на меньших скоростях.

Схема состоит из двух блоков: основного и удалённого.
Удалённый размещается на конце единственного провода, по которому питается. Он анализирует замыкание на "землю" своих 16 входов, и передаёт информацию основному блоку по тому же проводу.
Основной запитывается от сети 12 вольт через стабилизатор, принимает пакеты данных от удалённого блока и, при замыкании одного из входов удалённого блока на землю, выставляет высокий логический уровень на соответствующем своём выходе. Этот сигнал может быть использован для управления затвором силового транзистора, который уже подключит нужную нагрузку.
Описание элементов
R2 — резистор на 1 кОм, он питает удалённую схему достаточным током. При передаче сигналов линия притягивается на "землю", и ток до 5мА идёт через этот резистор
VT1 — микроконтроллер удалённого модуля управляет этим транзистором, чтобы притянуть линию на "землю", когда нужно передавать данные.
C4 и C5 — пара из электролитического и керамического конденсаторов. Электролитический конденсатор держит заряд, пока на линии низкий уровень, а керамический позволяет сгладить всплески из-за изменения нагрузки.
VD1 — очень важная штука, быстрый диод. Он позволяет конденсаторам не разряжаться, когда линия притянута к "земле". Ток, идущий через него — небольшой, поскольку ограничен резистором R2, важным в его выборе является время срабатывания — чем меньше, тем лучше, и падение напряжения — аналогично, чем меньше — тем лучше. Как вариант, можно использовать диод Шоттки, однако они славятся относительно большими обратными токами, которые при нагреве на солнышке могут достигать неприемлемых уровней.
R1, R5 — резисторы нужны чтобы уменьшить вероятность сброса микроконтроллеров от помех, для подстраховки. От них можно как отказаться, так и использовать меньшего номинала, вплоть до нуля (при условии что не используется внутрисхемное программирование).
78M05 — линейный стабилизатор 5Вольт. подойдёт любой аналог на ток 100мА.
Схема подключения нагрузки слева показывает один из вариантов подключения нагрузки через n-канальный MOSFET. Микроконтроллер может выдавать 20мА, а краткими импульсами до 40мА на каждом выводе. Однако суммарный ток со всех выводов не должен превышать 200мА. Ограничивающий резистор нужно выбирать исходя из этого.
Защитный диод катодом к питанию — обязателен для защиты транзистора при управлении индуктивной нагрузкой: реле, электродвигателями, или гудком.
Вместо нескольких отдельных транзисторов, если ток не большой, можно использовать сборки ключей Дарлингтона из серии ULN, которые уже включают в себя защитные диоды.
Примерная разводка удалённого блока может быть такой:

Микроконтроллеры
Выбор пал на ATtiny2313A, за его удобный для пайки размер и обилие ножек. Вместо него можно использовать ATtiny4313 и залить имеющуюся прошивку без перекомпиляции.
Прошивка может быть несложно адаптирована для других МК из серии AVR, а также под любое другое взаиморасположение входов, выходов и "линии".
Микроконтроллер основного блока работает на частоте 2МГц. Предделитель устанавливается внутри ПО.
Микроконтроллер удалённого блока работает от внутреннего генератора 128кГц. В таком режиме он потребляет ток менее 150 микроампер.
Фьюзы для 2313A/4313:
Для основного блока:
Всё по-умолчанию, BOD на 4.3 Вольта
Расширенный (extended): 0xFF, старший (high): 0xD9, младший (low): 0x64
Для удалённого блока:
Тактовый генератор 128кГц, делитель 1/8 отключен, BOD на 1.8 Вольта
Расширенный (extended): 0xFF, старший (high): 0xDD, младший (low): 0xE6
Внимание: обычно программаторы прошивают микроконтроллеры на частоте 100кГц и выше. Частота прошивки должна быть как минимум в 4 раза меньше, чем частота микроконтроллера. Поэтому после изменения фьюзов и переключения микроконтроллера на частоту 128 кГц, программатор может перестать "видеть" микроконтроллер. Поэтому, перед прошивкой уточните как в вашем программаторе и программе, которую вы используете для прошивки, уменьшить частоту ISP.
Протокол передачи

Хотя прошивка для удалённого блока именуется RemoteSlave (т.е. ведомый), именно он является инициатором передачи.
Приёмник, т.е. основной блок, реализует алгоритмы подавления помех и игнорирует одиночные всплески на линии.
Обязательным условием к началу передачи является пауза на линии более 2 мс, в течение которых уровень определяется как высокий. Это позволяет чётко разделить границы пакетов. Любая пауза внутри пакета должна быть меньше 2 миллисекунд.
При передаче любой низкий уровень на линии должен быть меньше двух миллисекунд.
Стартовый импульc — импульс, минимум 200мкс (передатчик даёт импульс 500мкс) — сигнал о начале передачи. Основной модуль находится в спящем режиме ожидания до получения такого сигнала.
После стартового импульса выдерживается пауза от 100 мкс (передатчик выдерживает 500мкс)
Все последующие импульсы должны быть длительностью от 50 мкс. Передатчик выдерживает длительность импульсов 100мкс.
Опорный импульс — этот импульс нужен для калибровки скорости передачи. Частота работы передатчика может быть ускорена, или замедлена без адаптации ПО приёмника. Время прошедшее между этим и последующим импульсом запоминается приёмником, как опорное.
Затем происходит передача 20-битного пакета данных. Каждый бит кодируется временем, между началами двух соседних импульсов. Если этот интервал времени меньше опорного, то переданный бит считается равным нулю, если больше — то единице.
Для уверенной передачи, рекомендуется чтобы длительность этих интервалов отличалась от опорного, как минимум, на 50 мкс.
Пакет считается завершённым, когда принят 20й бит.
Формат пакета данных
20-битный пакет включает в себя значения на 16 входах, начиная с 1го по 16й. Ноль кодирует разомкнутый вход, единица — замкнутый.
Последние 4ре бита — это контрольная сумма с полиномом x^4 + x + 1, инициализированная в 0b1111. Контрольная сумма подобрана так, чтобы при передаче всех нулей, в контрольной сумме присутствовали единички. В результате, если опорный импульс будет распознан неправильно, контрольная сумма не совпадёт.
Цикл передачи
Удалённый блок постоянно в цикле передаёт состояние входов, если хотя бы один вход замкнут. Когда все входы разомкнуты, пакет передаётся однократно и затем ожидается замыкание хотя бы одного входа.
На передачу пакета уходит от 6 (большинство нулей) до 17 (большинство единиц) миллисекунд. На подготовку пакета около 12-13 миллисекунд. Таким образом, частота передачи составляет от 35 до 50 посылок в секунду.
Во время подготовки микроконтроллер несколько раз замеряет уровни на входах, применяя алгоритм подавления дребезга, формирует пакет и рассчитывает CRC. На время передачи, для снижения энергопотребления, на входах, которые были обнаружены как замкнутые, отключаются подтягивающие резисторы.
В итоге
Первое замыкание, если до этого все входы были разомкнуты, будет передано в течение около 15 миллисекунд.
Остальные замыкания и размыкания будут переданы в самом худшем случае в течение 55 миллисекунд, в среднем за 25 миллисекунд.
Немного синематографа
На видике показаны только 8 выходов, на самом деле работают все 16, просто лень было делать большую плату и тыркать столько светодиодов.
Прошивки с исходным кодом, а также пример разводки удалённого модуля для Sprint Layout 6 здесь
UPD: Вариант прошивки основного модуля (для Alkon): здесь. Выходы с 10 по 16 включительно работают в режиме "переключатель" — каждое замыкание входа вызывает изменение состояния соответствующего выхода на противоположное.
UPD2: В связи с многочисленными однотипными вопросами вида "мигает светодиод и ничего не происходит" обращаю внимание, что контроллер 2313 ЭТО НЕ ТО ЖЕ САМОЕ что и 2313A! В схеме используется 2313А либо 4313, но никак не 2313


Комментарии 194
Огромное спасибо за столь удачную конструкцию!
Спасибо! Простое и элегантное решение. Возможно применю его в совершенно другой области. Думаю UART-TX пройдет через такую линию без проблем.
Очень элегантное решение, спасибо.
Дмитрий, спасибо Вам огромное за эту схему и программу! Изучал эту тему больше года — ваше решение самое внятное и доступное для повторения! Повторил с 7-ю переключателями! Прелесть! Тестируем на старом ржавом уазике — ни одного ложного срабатывания! Жаль что ни Си ни атмела не знаю — прям на две машины друзьям бы сделал. Но одному надо 2 ключа, а второму 4.
Вопрос автору, можно ли изготовить 32-канальную ?
И хотелось бы активный выход "0", то-есть при срабатывании выхода не единица, а "0", а изначально все выходы в "1"
Можно было сделать чуть проще(именно в данном проекте): организовать, так называемую, "аналоговую" клавиатуру. Суть в том, что каждая кнопка находится на собственном резисторе, который отличается от других по номиналу. После через резистивный делитель можно считывать показание с каждой кнопки обычным аналоговым портом МК, к примеру Arduino. Личное мнение)
Извените, нужно перевернуть светодиод.
Совсем забыл — bss123 у меня не работает (в proteus тоже), заменил на bc547. На нем же сделал и концевики.
Спасибо Автору, отличная статья, все заработало с n-й попытки — все ньюансы в скорости программатора и правильно выставленых fuse. Альтернативная прошивка с тригерной функцией работает, но. Есть огромная потребность в памяти переключателей после откл-вкл питания. Сам не умею.В интернете много похожего, но мало настолько простого в деталях.
Доброго дня! При повторении Вашей схемы столкнулся точно с такой же проблемой как у Borya-x.Подробности описаны у Borya-x.
Здравствуйте! Собрал вашу схему, прошил контроллеры, фьюзы выставил правильно, но почему-то не так схема работает! я на выхода подцепил светодиоды а входа замыкаю на минус и у меня светодиод то загорит то погаснет с периодом от 1-5 сек, хотя я удерживаю вход на минусе, в Proteus так-же ведет себя схема
Где-то ошибка в схеме, возможно
В схеме нет ошибок я даже в симуляторе проверял так-же работает как и в сборе, думаю что-то в прошивке дело, подозреваю что в прошивке приемника. Проверил осциллографом передатчик, импульсы, вроде совпадают по длительностям с таблицей, значит не в нем дело
Borya-x
Здравствуйте! Собрал вашу схему, прошил контроллеры, фьюзы выставил правильно, но почему-то не так схема работает! я на выхода подцепил светодиоды а входа замыкаю на минус и у меня светодиод то загорит то погаснет с периодом от 1-5 сек, хотя я удерживаю вход на минусе, в Proteus так-же ведет себя схема
Здраствуйте. извините а файл проекта протеуса случайно не сохранилось?
Здравствуйте, где то должен на компьютере быть файл, искать надо
Буду признателен
Здравствуйте! Очень нужная схема. Спасибо большое! Но нужна помощь. Схему спаял, перепроверил. Сейчас блок с кнопками выдает импульсы(видно по осцылу), но основной блок их не видит. Схему для нагрузки тоже спаял.
1. Прошиваю програматором Тритон
2. Фьюзы выставлял как myxaxa1
3. не пойму что такое BOD на 4.3 Вольта . ето основное питание или питание записи?
4.Еще обязательно, ли, менять частоту записи програматора?
BOD — brown-out-detector цепь защиты от пониженного напряжения питания.
Частоту программатора нужно менять, если после выставления фьюзов он не видит МК работающий на сниженной частоте
Проверьте что фьюзы установлены правильно. Блок с кнопками должен работать от внутреннего генератора 128кГц, иначе скорость импульсов будет слишком большая.
Отличная схема, спасибо!
А нет ли схемы, чтоб передать по одному питающему проводу, и силовой плюс, и ещё хотя бы один сигнал?))
Поясню: имеется руль, один единственный скользящий контакт, ну и масса разумеется; Собственно точно как в вашем примере. А хочется сделать обогрев руля. Соответственно — по скользящему контакту подводим в руль питающий плюс, от которого и будет питаться обогрев, и внутри же руля размещаем схемку, передающую по этому питающему проводу управляющий импульс для включения сигнала…
Может попадалось нечто подобное?..
Решил сделать вашу поделку. Делаю сам и прошиваю соответственно. Но не совсем силен в выставлении фьюзов. Помогите как правильно выставить в программе Uniprof. И еще, slave- это основной блок, правильно?
slave — это блок с кнопками
про uniprof не подскажу, не помню как там выставляются флажки
В Uniprof там все на оборот, галка есть, он не пишет. Галки нет, он записывает. Ну попробую еще разок прошить, может прошивки поменял. Если что можно потревожить?
"записывает" — что значит? "Записанный" бит — это ноль, стёртый бит — это единица.
на новом МК по умолчанию, например фьюз CKDIV8 установлен (т.е. бит равен нулю). можно посмотреть — стоит ли галка или нет.
Там так "Записанный" бит — это ноль, галки нет. Стёртый бит — это единица, галку надо ставить.
Вопрос возник.
А сигнал так и останется штатно работать? или его нужно будет на одну из линий контроллера уже вешать?
На одну из линий
Спасибо.
Добрый день. А не подскажешь, где в прошивке сделать, чтобы все кнопки работали в режиме "переключатель"?
посмотрите как во втором варианте прошивки сделано
Посмотрю, спасибо.
Здраствуй. Не ответиш на пару вопрос? Транзистор на основном блоке должен бить на каждом выходе? Словом 16 транзистор там ставить? И если не ставить можно поставить на все выходы реле и через эти реле подключать нужное. Выдержат выходы нагрузку мошности катушки реле?
да, транзисторы нужны, выход сам по себе не потянет реле.
Споибо. На alkon е прошивка для обоих блоков? Там программист узнает какой из них для основног и удалённого?
AterLux
да, транзисторы нужны, выход сам по себе не потянет реле.
Извини тупил
Очень интересный материал и как раз в тему.
Нужно продублировать задние фонари на мотоцикле, но есть только один провод.
Но в моем случае все немного по-другому. Хочу спросить у автора реально ли это реализовать:
1. В принципе нужен даже не 2313А, а просто 13 (8 лапок), т.к. всего 4 сигнала (2 поворотника, стопарь и габарит)
2. Запитываться нужно на удаленном блоке и чтобы он питал основной
3. Если на входы будет приходить не "-", а +12В
Если автора не затруднит, буду очень ждать ответ, реально ли это реализовать и что поменять в схеме?
Спасибо
а можете плз носом ткнуть как разом переключать штук 40 контактов, хочется внешний монитор из планшета. надо какую-ниб мини платку, переключателей в разрыв шлейфа.
//там кабель displayport идёт к матрице типа ipad 3/4/mini2+. чтобы можно было переключать на нормальный комп. а когда включал кнопку питания или просто по сигналу подсветки---то работал обычный планшет. матрица формата eDP будет. с lvds нужного разрешения матриц не видел( MIPI матрицы вообще не знаю как подключать к компам. мамка с DP есть. и видеокарты DP +райзеры гибкие есть 1x pci-e.
собственно матрица ipad 3 -5 стоит около 2к . недорого. а вот тач скрин никак не подключить подходящий. потому и пришла мысль в голову подключить по желанию одно ии другое, и оставить кусок кабеля DP in торчащий из планшета. да и разница когда всё купишь будет 3к макс. проще планшет курочить) а управление с тача по сети передавать.
radiokot.ru/forum/viewtopic.php?f=2&t=120409
кабель 160р, еще рублей 200-250 второй, + планшет тыр 9, +переходная рамка, , цап, усилок, адаптер кнопок руля, плата видеозахвата, заднего хода камера, и будет карпк. мощный вмеру//
Отличная схема!
Пролистав статью и комментарии не нашел ответа на вопрос —
"Возможно ли использовать на одном МК и вход и выход?"
к примеру 8 входов на одном управляют 8 выходами другого и наоборот?
нажимаю на руле кнопку и где ниб на торпедо загорается лампочка и в этой же реализации нажимаю кнопку на торпедо и загорается лампочка на руле.
Очень хорошая задумка и реализация.
Шикарно. Не проверял дальность между передатчиком и приемником?
Доброе время суток. Тоже встал вопрос насчет мультируля и тоже пришел к такому же решению. Начал рыть в интернете и наткнулся на Вашу статью. Думал уже кто-то делал, а нет — все ИК канал пользуют. А у меня магнитола без пульта… Придется, все же, передавать сигнал по цепи гудка. Проблема пока с кнопками — не нахожу как сделать их красиво. Другого руля нет и права на ошибку тоже(
Что-то не пошла схема. Передатчик импульсы выдает, а приемник на них не реагирует. Помогите с проблемой. Очень понравилась схема. Удаленный молуль соеденял с основным на прямую проводком между двумя ногами (2) мк.
Фьюзы не те
Выставлял такие:
Удаленный
CKDIV8 — 0
CKOUT — 0
SUT1 — 0
SUT0 — 1
CKSEL3 — 1
CKSEL2 — 0
CKSEL1 — 0
CKSEL0 — 1
RSTDISBL — 0
DWEN — 0
SPIEN — 1
WDTON — 0
EESAVE — 0
BODLEVEL2 — 0
BODLEVEL1 — 1
BODLEVEL0 — 0
Основной
CKDIV8 — 1
CKOUT — 0
SUT1 — 0
SUT0 — 1
CKSEL3 — 1
CKSEL2 — 0
CKSEL1 — 1
CKSEL0 — 1
RSTDISBL
DWEN
SPIEN — 1
WDTON — 0
EESAVE — 0
BODLEVEL2 — 1
BODLEVEL1 — 1
BODLEVEL0 — 0
судя по даташиту вообще работать недолжно. Либо перепутаны значения 0 и 1
А не могли бы выложить фьюзы для понипрог? Я сейчас проверю и отпишусь.
не знаю про понипрог, а фьюзы в статье приведены. Не могу сейчас проверить правильно или нет
Или для AVR studio. Проверте пожалуйста. Все варианты перепробывал. Ничего не получается.
AterLux
Фьюзы не те
Вот фьюзы к удаленному блоку
s017.radikal.ru/i402/1505/87/6e2a929f5918.jpg
а вот к основному
s009.radikal.ru/i309/1505/14/f1ccd3abcc96.jpg
Может все таки с программой проблемы?
В Протеусе тоже не идет(((
Ну, может собрано что-нибудь не так. Кто-то уже пробовал повторять эту схему и отписывались что у них заработало.
Фьюзы с виду правильные.
Проверяйте подключение, питание, работу транзисторов и т.д.
Схема простая. Перепутать нечего. Транзисторы не использую. Для проверки работы схемы они не нужны. Микроконтроллеры между собой соеденяю напрямую между выводами #2. В Протеусе тоже не работает.
Разумеется не будет. Транзистор, как минимум, инвертирует выход.
Блин надо же так натупить) Все в Протеусе заработало. Пойду в железе допаяю. Только ставил биполярный транзистор не полевой. Тоже работает. Просто инвертирует выход. Вот я олень)
Здравствуйте! Можете поделиться протеусным файлом?
Заранее благодарен! :)
AterLux
Разумеется не будет. Транзистор, как минимум, инвертирует выход.
Все и в железе заработало. Спасибо! Позже буду радиомодули подключать, что бы по радиоканалу работало.
А как переписать прошивку принимающего узла, чтобы сигнал "залипал" (срабатывал триггер)? Т.е. одно нажатие включало нагрузку, второе — выключало.
И было бы более универсально, чтобы, к примеру 8 команд были "простыми" (сигнал пока держишь), а остальные 8 — триггерные (1ое нажатие вкл., 2ое нажатие выкл.), поскольку 16 команд по идее много, и подстроить клавиатуру можно самостоятельно под собственные нужды.
в самом низу же выложена такая прошивка.
Извиняюсь, видимо, не внимательно изучил статью…
Спасибо за идею и проект!
молодец!
Автор, огромное спасибо за схему, почти то, что искал!
Пока не вдавался в детали, поэтому спрошу: как у протокола с помехоустойчивостью?
Моё применение — управление светом. Т.е. провода будет 2-3 (1-2 силовых и сигнальный), длиной 3-4-5 метров, из них половина на крыше.
Он работает на низкой скорости, дребезг давится программно.
Если есть отдельные линии питания, т.е. питание по линии данных передавать не нужно, а передача односторонняя, то проще реализовать какой-нибудь простой протокол. Пусть даже использовать тот же UART, если скорости приёмника и передатчика согласованы.
UART — хорошая мысль, код здорово упростится.
Предложение: светодиоды состояния на кнопках-переключателях.
Афтору респект, перелазил инет искал такую схему, хочу на своем логане, управление стеклами перетянуть на ручку двери, и сделать самопальные мини кнопки. А с учетом того, что через резинку ( гофру) с уже протянутыми проводами на электрозеркала с подогревом, на колонки с усела, и штатных проводов, да-же нитку не протянешь. Во он выход, ! Спасибо!
Два микроконтроллера ни к чему. На руле достаточно блока сопротивлений на каждую кнопку, а МК за обшивкой будет вычислить какая кнопка нажата по току.
это уже обсуждалось повторюсь:
1) такой метод не отрабатывает одновременные нажатия.
2) с изменением температуры "плывёт" номинал резисторов, на фоне шумов возрастает вероятность ошибки при большом числе кнопок.
3) да, это допустимый метод вынести несколько кнопок на руль, я не против.
Я не понял в твоей схеме одного, выходы при нажатии переходят в устойчивое состояние или они тактовые?
в прошивке по умолчанию — отражают состояние нажатой кнопки. Т.е. выход активен, пока кнопка нажата.
В дополнительной прошивке — некоторые из выходов работают в режиме переключения.
Почему только некоторые? То есть получается мне нужно использовать кнопки с фиксацией что неудобно
исходники прошивки приложены, можете переделать как удобно.
В современных машинах используется LIN шина, однопроводная. Имея такую шину между бортовыми контроллерами, приемник практически и не нужен.
наверное что то подобное можно сделать для ЭСП, управление через 1 провод? (доводчики + блокировка и управление всеми с водительского блока)
Можно, только большого смысла не вижу.
Тут главная фишка чтобы передавать не только данные, но и питание по одному проводу. К кнопкам ЭСП не проблема подвести питание, хоть к каждой.
Довольно удачная реализация!
Хотя вариантов решения данной проблемы несколько.
ваще тема=)
Это фокусы и вот их ракрытие

так то полгода прошло
Очень интересная и полезная статья. Автор молодец. Единственный вопрос. А вот если я буду приличную нагрузку через все это пропускать, у меня ничего не сгорит ? ну например дальний или ближний свет фар, противотуманки и т.д.
допустимая нагрузка зависит от способа подключения силового транзистора, его номинала, охлаждения и т.д. Пример для "замыкающегося на минус" транзистора — на схеме в сером прямоугольничке. Номинал транзистора определит какую нагрузку он может тянуть.
Т.е. схема выше реализует только передачу, о том как подключать нагрузку — нужно думать отдельно.
Очень грамотно реализовано!
Все это можно сделать гораздо проще.
Например я сделал так — avtoelectro.radioliga.com…ice.php?show=1wire_remote
Пи… смотрю как дебил и нихера не понимаю…)))) а сможешь такой же изготовить под заказ?
Неа, под заказ не могу. Но схемы и прошивка в открытом доступе, я уверен, в городе найдётся умелец.
Только вот я комменты читал читал и так и не понял…одновременное нажатие клавишь работает или нет? И как реализовать функцию фиксированной кнопки…
одновременное — работает.
Соответственно, фиксированную кнопку можно реализовать просто кнопкой, которая фиксируется в нажатом положении.
а так что бы нажал включилась и нажал выключилась никак?
Можно. Немножко доработать ПО приёмника (основной части)
Доработать програмно? Че та я туплю…ты же неписал…это трудно сделать и возможно ли сделать так что бы какие то кнопки были фиксированными а какие то нет
да. Меняется только алгоритм — как сигналы выводятся на ножки МК. Доработка несложная.
Я тасможешь сделать, или обьяснить что нужно сделать…я как бы в програмировании на Вы…
yadi.sk/d/AUq65HFRNAycy
выходы с 10го по 16й (т.е., все те, что слева) работают в режиме переключателя. С 1го по 9й — в обычном режиме.
Ничего не найдено…
Яндекс-диск рухнул. Уже починили.
Я так понимаю что количество кнопок я могу менять и сам, раз это так быстро тытсмог сделать?
Ну, нужно подправить проект в Atmel Studio 6 и перекомпилировать и будет новая прошивка.
Уууу. Ладно…как собирусь делать и определюсь с колличеством кнопок сможешь помочь?
Обращайся
Спасибо.
А как это дело все програмируется?я просто вообще ноль в программ
В этом блоге вверху закреплены темы. Например, вот www.drive2.ru/c/922936/
Фирма пионер цепочку резисторов использует … все довольны.
Этот подход зависит от количества кнопок и от наличия шлейфа в руле.Никкаой пионер не победит скользящий контакт…
+100
От это штука!
Вопрос : Разве нельзя избавиться от одного модуля ? Чтобы был вообще один ? Ни кто же не мешает разместить в руле только магазин сопротивлений подключенных к кнопкам и по одному проводу мерить сопротивление ( АЦП ) и дальше в зависимости от замера выводить на определенный порт . Как то Вы сами себя перехитрили . Короче, можно сделать проще .
разумеется можно. Со всеми связанными с этим проблемами.
Я понимаю проблемы, понятно что сопротивление будет плавать . Сделать программно " коридор " на отклонения и как говорится би хеппи
да, ещё две одновременно не будут работать. Нажатие нескольких кнопок может иметь непредсказуемые последствия. Для простого управления магнитолкой — вполне сойдёт.
Ну это же не пианина :-))))) Страшного ничего не произойдет если нажать хоть все сразу, просто ни чего не сработает . А сопротивления подбираются так, чтобы в сумме ( нажатие нескольких кнопок ) не получалось какой либо команды .
В теории это хорошо, на практике погрешность измерений и "уплывание" сопротивлений рано или поздно натолкнётся на предел возможностей.
Ну и к тому же я ничуть не против метода с резисторами: он хорош и активно используется для управления магнитолами, например.
argoncik
Я понимаю проблемы, понятно что сопротивление будет плавать . Сделать программно " коридор " на отклонения и как говорится би хеппи
Скользящий контакт сыграет свою роль, состроив козью морду)) Это с улиткой будет хорошо работать.
У меня появился вопрос. Если делать подогрев руля, то обычно он делается некоторым количеством жил в улитке в качестве плюса и массой руля в качестве минуса. Ввиду больших протекающих токов на время работы подогрева масса "плывёт", и, например, резистивные кнопки выдают другие значения.
Решается это отдельным проводком под массу для кнопок.
А как с этим будут дела обстоять с таким импульсным решением?
Ну, цифровая передача она и в африке цифровая. В том смысле что если физического повреждения или каких-то сверхпомех на линии нет, то данные придут целыми.
А уж вероятность, что при нажатии одной кнопки распознаётся другая — так вообще сведена к почти нулю.
galan
У меня появился вопрос. Если делать подогрев руля, то обычно он делается некоторым количеством жил в улитке в качестве плюса и массой руля в качестве минуса. Ввиду больших протекающих токов на время работы подогрева масса "плывёт", и, например, резистивные кнопки выдают другие значения.
Решается это отдельным проводком под массу для кнопок.
А как с этим будут дела обстоять с таким импульсным решением?
С выделением отдельных жил в улитке на подогрев и на канал и питание не должны возникнуть проблемы такого рода. Тем более автор использует цифровые кнопки, а не аналоговые.
из личных наблюдений по пять кнопок под большой палец с каждой стороны не более в противном случае путаница или одновременное нажатие 2-х и более кнопок.
слоган МФУ : всё в одном месте!
и, главное, вы точно знаете, что это за место, когда что-то одно из этого ломается… (с)
:-)
Отличная идея. Так сказать one-wire интерфейс. Домофонный ключ грубо говоря )
А почему не сделать на стороне руля тупо кнопки с резисторами разных номиналов? :) Тогда на руль никакого питания не надо :) А то какая нажата кнопка считывать просто по уровню на входе контроллера основного блока. Тут конечно не сделать одновременного нажатия кнопок, но в остальном схема будет намного проще :)
Всё замечательно до того момента когда нужно нажать две кнопки.
Это я написал. Но я честно говоря не вижу необходимости нажимать на руле сразу две кнопки. Вот даже теоретически не могу такой ситуации представить :)
А это уже другой вопрос ;) А вдруг это не кнопка а тумблер?
Или хочется расширить функционал штатных рычажков комбинациями кнопок? Например нажал "громче" и "следующий трек" одновременно — значит "ответить на звонок", или ещё что.
Применений можно найти массу.
Тумблер на руле — это вообще жесть :) Но так то да, если требуется усложнение то авторская схема очень ок :) А для простых задач и способа с резисторами хватит :)
кнопка с фиксатором :)
Класс.
Can шина, своими руками :-) молодец!
Молодчина! Хороший девайс придумал!
Очень похоже на протокол инфракрасных дистанционок, типа NEC протокола и им подобным, только без модуляции. Можно еще впихнуть простейший контроль ошибок, внеся избыточность в данные.
Учитывая агрессивные в плане помех условия, в которых будет идти передача данных, контроль ошибок считаю обязательным.
А можно ли по такому принципу сделать HID клавиатуру? Желательно с подключением по USB.
Исходники есть по ссылке можете адаптировать их как угодно.
Вопрос упрётся в количество передаваемых данных в единицу времени, увеличение скорости передачи приведёт к снижению помехозащищённости.
DKFoto
А можно ли по такому принципу сделать HID клавиатуру? Желательно с подключением по USB.
на attiny45/85 можно программно реализовать USB (библиотеки типа V-USB), есть примеры HID клавиатуры. У контроллера остается свободными еще 3 ноги, которые можно применить для чего-то полезного
И пустить его по проводу сигнала?
Для такого варианта надо свободные контакты на улитке иметь.
я к тому, что можно на attiny сделать преобразователь USB->однопроводный интерфейс
DKFoto
А можно ли по такому принципу сделать HID клавиатуру? Желательно с подключением по USB.
А можно полюбопытствовать, в Лондоне напряженка с HID — клавиатурами?))
По двум проводам для кнопок с руля — да ))
А, Вы имеете ввиду кнопками на руле управлять планшетом или car-pc?)) Не сразу дошло, извиняюсь))
Кстати, тут на драйве в сообществе Кулибин проскакивала тема о подключении tach-pad от ноута к РС через PS/2. Все очень хорошо коннектится без каких-либо изменений и дополнительных устройств. Можно организовать тачпад для него где-то в авто. Возможно даже функцию распознания текста, как в Ауди и БМВ последних моделей.
Именно планшетом на Дройде.
Знаю я такую штуку. Проводил эксперименты, но. Тач отпадает. Некуда его в Смарт пихнуть да и лево как то.
Ну его есть смысл ставить только на car-pc. Ито я не стал-бы ставить ни то, ни другое)
Ну теперь давай добивай до конца.
Думаю вот пока. В теории хочу штатные рычажки круиз-контроля и магнитолы повесить на руль. Но они стоят как пол-машины, так что думаю ещё пока.
А на разборах нет?
Пока ещё не искал.
ладно пусть будет так), я ввесь текст не читал долго во первых читать, вопрос если я например нажал кнопку 1 включить свет,
потом захотел включить печку кнопкой 2, то свет потухнет? и так далее
если кнопка 1 остаётся замкнутой — то нет.
sanya12311113
ладно пусть будет так), я ввесь текст не читал долго во первых читать, вопрос если я например нажал кнопку 1 включить свет,
потом захотел включить печку кнопкой 2, то свет потухнет? и так далее
Подправить немного исходник и можно сделать любую кнопку с фиксацией программно.
Вот, то что я искал. Спасибо автору за это!
"Чувак" то остался доволен сделаным?
Гипотетически чувак остался гипотетически доволен сделанным ;) На практике в машине пока не испытывалось.
такие схемы называются управление по двум проводам, но ни как ни по одному
Обычно провод "земли" не считают.
Так, например 1-wire, так и называется One Wire (один провод)
TWI называется Two-wire interface (интерфейс по двум проводам)
SPI бывают версии с 3мя и 4мя проводами. Обе из них не считают землю.
+1
"Принципиальная схема" выше всяких похвал ))))
ардуиной попахивает и резистивными кнопками
Ардуйнёй не пользуемся.
А резистивные кнопки — это только по одной штуке за раз.
Кто сказал, что резистивные по одной кнопке? Очень даже не сложно подсчитать номиналы для реализации нескольких нажатых кнопок. Своего рода ЦАП на резисторах + мк с АЦП даст требуемый результат.
В теории то хорошо, на практике помехи скажут своё слово. Уже пять кнопок будет так себе. Да даже без помех, например, точности АЦП у AVRок хватит только на 8 кнопок.
Да, согласен насчет 8 кнопок. Комуто может и хватит. Я не про количество одновременно нажимаемых кнопок говорю, а о том, что возможно на резисторах одновременное нажатие :)
Ну и на практике нужно мк располагать на плате кнопок и по возможности экранировать. Да и не надо лепить такой огород — себе дороже. Кнопки требуются с переключающим контактом, подбирать матрицу резисторов. Ваш вариант само то!
AterLux
В теории то хорошо, на практике помехи скажут своё слово. Уже пять кнопок будет так себе. Да даже без помех, например, точности АЦП у AVRок хватит только на 8 кнопок.
готов поспорить по поводу 5 кнопок, лично переделывал пультик от неведомой шарманки под другую, так вот там было 10 кнопок на 1 провод посажено через резисторы. Но там реально присутствовала проблема одновременного нажатия…
Идея мегазачетная! А я всё на ДТМФ смотрю в плане передачи управляющих сигналов…
речь как раз про одновременное нажатие. А так-то штук 30 можно кнопок сделать через равные резисторы.
На самом деле выдуманная проблема. У меня штатно 11 кнопок на руле и одновременно нажимать их за год ни разу не понадобилось.
Может быть. В таком случае вариант с резистором вполне годен.
Мало того, штатные кнопки управления магнитолой, как правило, так и работают.
Да, так и есть, кнопки магнитолы на одном проводе висят видятся головой как подобранные резисторы (одновременное нажатие возможно).
AterLux
Может быть. В таком случае вариант с резистором вполне годен.
Мало того, штатные кнопки управления магнитолой, как правило, так и работают.
Я реализовывал схему на резисторах.Если к рулю идет шлейф то работать будет.Если скользящий контакт -сами понимаете что про это думает АЦП)))Варианта годных всего два.Радио передача и светопередача.
galan
На самом деле выдуманная проблема. У меня штатно 11 кнопок на руле и одновременно нажимать их за год ни разу не понадобилось.
+1 Но это оправдано лишь в том случае, если уже имеются готовые кнопки с резисторами на готовом мультируле и требуется его подключить. Если колхозятся самопалые кнопки, то тут проще как у автора.
Согласен, решение у автора шикарное.
Да, конечно. Только вызывает сомнение надежность передачи данных в условиях помех в автомобильной бортсети и скользящего контакта руля…
Я полгода вынашиваю эту идею, но с беспроводной передачей данных т.к. линия питания мне будет нужна для подогрева руля.
galan
Согласен, решение у автора шикарное.
Решение у автора спорное)))Но шикарное для просто передачи сигнала по проводу.Для руля без шлейфа это утопняк…
AterLux
речь как раз про одновременное нажатие. А так-то штук 30 можно кнопок сделать через равные резисторы.
При использовании 9-битной кодировки вполне можно и 255 кнопок повесить)) Но это без одновременного нажатия кнопок.
ну, вернёмся в реалии помех, плавающих сопротивлений, и резисторов, которые изначально +-5%
Не не не, я имею ввиду применение сдвиговых регистров! Никакого аналога, только цифра!
Я уж запутался о чём речь ;)
Если немножко переделать протокол, скажем один бит бы говорил нажата кнопка или отпущена, остальные 15 — какая именно, то можно сделать 32 тыщи кнопок, не меняя пакета передачи.
Просто я исходил из того, что передача может прерваться, не пройти, конденсатор разрядится раньше времени, или ещё что, поэтому в каждом пакете передаётся состояние всех кнопок.
Я имел ввиду сдвиговые регистры 74HC595. Строим матрицу кнопок или даже можно линейно подключить к входам регистров, вот только тогда корпусов уйдет больше. Примерно так: arduino.ru/sites/default/…iles/u1905/spi-keypad.jpg
и опрашиваем всю эту богодельню. Если протокол 16-битный (подробно в Вашем протоколе не разбирался), то да, можно хоть 32 тысячи кнопок навешать =)) Ну если считаете канал передачи данных не надежным, значит сам напрашивается вопрос и другом, более надежном ;)
Будешь теперь у нас МЕГА МОЗГОМ ! :)
О блин, то, что я искал! Ну не очень то искал, но идея была. Идея была сделать резистивный делитель с кнопками на руле, а дальше компараторы.
Идея не нова, как заметил автор, но реализация неплохая. Интересно как она себя поведет в полевых условиях так сказать…
Есть еще один вариант: купить радиоуправляемую модель за 200руб, выпотрошить и пустить данные по радиоканалу, использовав мк для кодирования и декодирования. Из плюсов такого способа будет увеличенная по сравнению с I2C шиной помехоустойчивость и, как следствие, становится возможным поднять скорость передачи и уменьшить время отклика схемы. Ну и от проводка питания попутно можно запитать подогрев руля. Лично я так это себе представляю в своем авто.
ТОже интересно как поведет.Помехи от контакта.И пропадающая масса свое дело знают.
А я представляю это себе на принципе ИК пульта.
По ИК каналу с традиционным ИК светодиодом и ИК приемником кнопки будут работать в некотором диапазоне поворота руля. А представьте ситуацию: вы в повороте, руль вывернут, давите на клаксон и… и ничего! Это может иметь самые печальные последствия. Если делать ИК, то очевидна необходимость обеспечения работы при любом положении рулевого колеса. Это или несколько передатчиков или несколько приемников. Чуть усложняется схема и установка. Радиоканал осуществить видится проще с большей степенью надежности.
Но передачу по проводу считаю очень ненадежной. Автору нужно сменить способ передачи данных, предусмотреть переключение каналов на фиксирующиеся и схема будет идеальной.
ПРиемник один а светодиодов скажем пять.И всего делов.Я думаю вы мысль уловили)))
Радоканал от детской игрушки не такой уж прям устойчивый и помехи его могут задавить…Малоль…Хотя мысль с радиоканалом светлая.Ее хорошо бы применить для удаленных устройств, что бы километр провода не тянуть.Например с руля управлять устройством в багажнике))) Или как у меня на руле кнопки открывают ворота в двор и ворота в гараж.
Ну я считаю, что радиоканал 433МГц на супергетеродине c постоянным сигналом и АМ-модуляцией будет куда поустойчивее ИК и тем более скользящего контакта. Разместив передатчик в руле и приемник в кожухе рулевой колонки, я считаю будет весьма непросто заглушить такой канал внешними помехами. Даше с мощностью предатчика до 0,5Вт (по прямой до 10км берет!) Пусть такой вариант будет стоить не 200руб, а чуть побольше. Заказать у братьев наших желтомордых и можно получить такой комплект оборудования за очень вкусную цену.
Вы собрались управлять пушкой в багажнике?! О_о content.foto.mail.ru/mail…-juice/_answers/i-309.jpg
topwar.ru/uploads/images/2013/388/iaej20.jpg
А с воротами — это то, что доктор прописал!
Ну так про такой вариант никто и не спорит.Разговор то был про игрушку за 200р.Там я думаю все много худше)
Ну это я скорее утрировал)) Да, конечно нужно взять более надежный радиоканал)
Mail1977
ПРиемник один а светодиодов скажем пять.И всего делов.Я думаю вы мысль уловили)))
Радоканал от детской игрушки не такой уж прям устойчивый и помехи его могут задавить…Малоль…Хотя мысль с радиоканалом светлая.Ее хорошо бы применить для удаленных устройств, что бы километр провода не тянуть.Например с руля управлять устройством в багажнике))) Или как у меня на руле кнопки открывают ворота в двор и ворота в гараж.
А где можно почитать о ваших чудо кнопках на руле, которые открывают ворота во двор и гаража?
Я про это не писал.Надо будет как-то создать отчет в БЖ.
С удовольствием посмотрим все) Очень интересно.
Про пушку в багажнике?)))Это сейчас много актуальнее.Опасные нынче времена в Луганске)
Ох тыж емае! Вот это даааа!
по такому способу устроены большинство борт сетей современных авто
Как раз нет… В лучшем случае, BMW и Renault используют CAN-шину — это уже 2 провода, не считая питания и массы. И ещё 2 провода на подушку безопасности — уже 6.
Большинство же использует барабан с гибким шлейфом — проводов бывает до 20!
чего эт! у меня на опеле, один провод на центральный замок, стеклоподьемник, подсветку и так на каждую дверь!
На стеклоподъёмники управление по одному проводку от водительской двери — это да, часто такое. А вот с рулями, что-то нет.
да все кнопки на руле устроены по такому же принципу! возьми даж теже адаптера для подключения нештатных магнитол с сохранением работы кнопок на руле
Кнопки на руле управления ГУ — да это "весовые резисторы", подключаются двумя проводами — один масса, можно считать и по одному. Но рядом кнопки круиз-контроля — они отделены полностью — свои резисторы и свои три провода, даже масса отдельная! Управление bluetuth — тоже отдельные резисторы и отдельные провода… Подрулевый лепестки переключения АКПП — тоже отдельные 3 провода, Не объединяют производители всё в один провод, а разделяют функционально различные вещи. И уж тем более звуковой сигнал и AirBag отдельно подключены.
"Объединение" встречается на BMW и Рено — там матрица на все кнопки руля и все переключатели на рулевой колонке, и выход сразу команды по CAN-шине идут. Но при этом, между рулевой колонкой и самим рулём всё равно барабан с лентой и кучей дорожек.
спорить не буду! может ты больше в курсе!
Ваще агонь! принципиальная схема мультируля)
Вот ты мозг блин! молодчина!
Прикольно, это можно сделать мультируль. У меня по идее 2 провода висят свободных в руле
абалдеть !