Показать сообщение отдельно
Старый 30.07.2009, 23:03   #106
LI()n
Творец LeoCar'a
 
Аватар для LI()n
 
Регистрация: 28.03.2007
Город: Москва
Регион: 77, 97, 99, 177
Машина: LeoCar GT-Four Turbo и Рыжий Элемент
Сообщений: 747
LI()n is a jewel in the roughLI()n is a jewel in the roughLI()n is a jewel in the rough
По умолчанию

Карпьютер: Управляй Мечтой!
Возможности компьютера не ограничены одним лишь "офисом". Тем не менее, в большинстве инсталляций карпьютер используется только для навигации и в качестве головного устройства автомобиля.

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

Поехали!


Управление внешними устройствами решил попробовать реализовать через LPT-порт, он присутствует на всех материнских платах и, как правило, не задействован (сильно устарел). Покупаю набор "сделай сам", который должен будет преобразовывать слаботочные управляющие TTL-сигналы порта в напряжение, достаточное для управления внешними устройствами (во сказанул ).


Через пару часов работы паяльником. Из 8 реле как надо заработало только три, еще два работали не более одной секунды, оставшиеся три вообще молчали. Три дня устранял косяки схемы, некоторые детали пришлось поменять, конденсаторы вообще поставил с емкостью в два раза больше той, которая была в инструкции. И только после долгих плясок с бубном и многократного перепаивания схемы (с паяльником вообще-то дружу средне) все в конце-концов заработало!


Теперь начался более интересный для меня процесс. В интернете нашел распиновку LPT-порта, перепробовал около пяти разных драйверов для получения прямого доступа к порту (просто так Windows XP этот доступ не дает), нарыл кучу документации и примеров.
Воткнул часть от разъема с торчащими штырьками в порт (белая фишка на задней части компа), вооружился тестером, и начал смотреть, что происходит.
Как и было сказано в инструкции к набору, LPT-порт позволяет управлять восемью внешними устройствами (8 каналов из 25). Пришлось вспоминать двоичную систему счисления (00111101 ).
Начал копать дальше. Нашел еще 4 выходных канала, но они оказались хитрыми. Во-первых, три из них были "обратными" (то есть подаешь единицу - получаешь ноль на выходе порта), один был обычным, но при этом находился в диапазоне между ними, и к тому же, они шли не по порядку (а это оказалось важно).
За час программирования решил и эту проблему. А после этого нашел еще пять входов (то есть замыкаешь определенную ножку порта на массу - и комп знает, что "снаружи" что-то происходит). В общем, так сказать, существенно расширил первоначальное техническое задание устройства


Еще один набор - он будет управлять нагрузками с найденных дополнительных четырех каналов.


Нашел очень неприятный глюк - при включении компьютера на определенных каналах подавалась "единица", и это длилось около минуты до полной загрузки Windows. То есть какие-либо внешние устройства это время оказывались бы включены по-любому, что не есть хорошо. Пришлось придумывать защиту - первое реле включается автоматически при старте компьютера, а во включенном состоянии оно разрывает питание всех остальных реле, и они не могут работать вне зависимости от управляющих сигналов, которые на них приходят. После запуска моя оболочка первым делом выключает это реле, и тем самым переводит управление всеми устройствами на себя. Немного сложновато, но без этого оказалось никак.


И последний - третий - набор будет подключен к пяти входам LPT-порта. Для пятого реле места на схеме не нашлось, и его пришлось выносить наружу. При подаче 12 вольт каждое реле замыкает определенный канал порта на массу (на фото включено первое реле).


Припаиваю витую пару ко всем трем блокам. Каждое реле получает свой номер, соответствующий каналу, на котором оно висит.


Второй по сложности момент. Едва асилил Было тяжко


Устройство "ЛеоКонтроль" в сборе - всего три достаточно компактных блока.


Разбираю блок управления стеклоподъемниками и припаиваю четыре провода к схеме. При подаче на них плюса стекла будут открываться или закрываться, в зависимости от провода.
Также подключаюсь к кнопкам управления люком (там уже управление идет минусом, а не плюсом).


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


Подключаюсь к блокам стеклоподъемников и люка...


...А также к родной проводке, которая проходит по центральному тоннелю.


Много проводов в гофре


Все подключено, проверяю работоспособность


Сиденье на месте, подключаю к карпьютеру устройство и температурный датчик.

Все заработало, причем сразу и без глюков, чему я был очень рад. А вот и видео:
http://www.youtube.com/v/fuySWttZjqM..._embedded&fs=1

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

Зато теперь карпьютер может:
1. Отслеживать открытие обоих дверей и багажника
2. Отслеживать состояние работы двигателя
3. Отслеживать состояние автозапуска/турботаймера
4. Заводить двигатель после введение пин-кода
5. Управлять открытием/закрытием стекол
6. Управлять открытием/закрытием люка
7. Отслеживать температуру воздуха в салоне
8. Управлять обогревом сидений
9. Управлять обогревом зеркал
10. Управлять светодиодной подсветкой салона
11. Управлять светодиодной подсветкой днища
12. И кое-что еще

Из удобств - открытие всех окон (либо окон вместе с люком), а также их закрытие одним нажатием на кнопку. Отдельный "зимний" режим - при автозапуске система сама включит обогрев сидений и зеркал, так что зимой садиться будем в уже прогретые кресла. Программируемые режимы работы - например, автоматическое отключение подогрева сидений через 10 минут, а подогрева зеркал - через минуту, так как нагревательные элементы стоят достаточно мощные, а компьютер не забудет их выключить самостоятельно. Управление подсветкой в такт музыке. Определение координат местонахождения и автоматическое закрытие окон/люка, если машина подъехала к дому или к работе. И вообще - управление внешними устройствами удаленно или по любому алгоритму, который придет мне в голову


Ну а про "кое-что еще" расскажу в следующей части
LI()n вне форума   Ответить с цитированием