Страница 1 из 34 123456711 ... ПоследняяПоследняя
Показано с 1 по 10 из 340
  1. #1
    Местный
    Регистрация
    04.06.2008
    Сообщений
    120
    Вес репутации
    389

    По умолчанию AVC-Lan адаптер на arduino

    Начало здесь

    Купить Arduino для этого проекта.

    Итак как и обещал выкладываю схему.


    В схему добавлен ключ для управления AZ-FM
    Вот схема и разведенная печатная плата в формате Eagle
    Вложение 6663
    Прошивка
    Вложение 6665
    Прошивку распаковываем в каталог arduino-0016. Если до уже были какие-то версии прошивки нужно удалить объектные файлы
    C:\arduino-0016\hardware\libraries\AVCLanDrv\AVCLanDrv.o
    C:\arduino-0016\hardware\libraries\BuffSerial\BuffSerial.o

    Проверить работу можно любым терминалом, подключившись к com-порту на скорости 250000. Я использую для этого putty
    Данную схему уже можно использовать как драйвер тачскрина, кнопок на голове и на руле.
    для этого устанавливаем и настраиваем драйвер
    Вложение 6666
    Подробности по настройке драйвера, а так же программа калибровки тачскрина здесь
    В новой версии добавлена возможность писать лог сообщений от головы.

    Для теста отправки сообщения голове в терминале жмем кнопку S (в верхнем регистре).

    Цитата Сообщение от ak1976 Посмотреть сообщение
    После пары месяцев испытаний, поездки на море, можно писать об успешном завершении написании прошивки.

    Прошивка работает с четыремя видами плат, вид платы настраивается в sketchbook\libraries\AVCLanDrv\config.h
    в нем надо расскоментировать одну из четырех строк
    //#define AVCLAN_ST485
    //#define AVCLAN_PCA82C250
    //#define AVCLAN_MINI_PCA82C250
    //#define AVCLAN_RESISTOR

    Платы:
    1. AVCLAN_ST485
    Плата на базе arduino и драйвера на микросхеме ST485
    Вложение 9652
    Схема и разведенная плата в формате Eagle во вложении. Схема также содержит ключ для управления адаптером AZ-FM
    Вложение 9653

    2. AVCLAN_PCA82C250
    Плата на базе arduno и драйвера на микросхеме PCA82C250
    Вложение 9654
    Схема и разведенная плата в формате Eagle во вложении. Я поленился рисовать на ней ключ для AZ-FM. Желающие могут его скопировать из предыдущей схемы и прописать команды для и его инициализации и работы в config.h
    Вложение 9655

    3. AVCLAN_MINI_PCA82C250
    Плата avclan-mini в которой перепаян кварц на 16МГц и заменен микропроцессор на ATMega168 (в теории должно работать и с ATMega8, но с бутлоадером уже не помещается, только если программаторам заливать прошивку). Так же для этого варианта пришлось снизить скорость com-порта до 115200. Бутлоадер я взял от ардуино, только поправил его чуток, т.к. светодиод на плате находится на другой ноге.

    4. AVCLAN_RESISTOR
    Плата на базе arduino и драйвера на 4х резисторах.
    Вложение 9656
    Схема в формате Eagle во вложении. Честно говоря, этот вариант теоретический, в железе я его не собирал.
    Вложение 9657

    Я собрал и опробовал с 1 по 3 варианты плат. Мне больше понравился вариации на микросхеме PCA82C250 (потому как сразу заработал на большинстве голов) вариант на микросхеме ST485 иногда требовал подбора номинала резисторов R2, R3, R6
    В машине у меня сейчас работает перепрошитый вариант на avclan-mini. У друга, который делал прошивку с навигацией на ST485.

    Собственно прошивка.
    Вложение 9658
    Прошивка для arduino-018 распаковываем архив в папку с ардуино. Выставляем тип платы в файле sketchbook\libraries\AVCLanDrv\config.h
    Компилируем и заливаем.

    Прошивка разбита на три части:
    1. Собственно драйвер AVCLan - библиотека AVCLanDrv отвечает за работу с шиной AVCLan и выполняет всю грязную работу за нас.
    2. Скетч AVCLan_mini.pde - основная программа, в которой собираются все части прошивки и описаны все сервисные функции, ее тоже не придется править.
    3. Ну и самая изменяемая часть прошивки - это драйвера устройств. В данном случае CD чейнджера - библиотека AVCLanCDch. Так же есть библиотека AVCLanNavi, которая написана на базе прошивки kostya78rus и эмулирует навигацию и чейнджер. Ее мой друг выложит чуть позже.

    Подключается библиотека с эмулируемым устройством в файле AVCLan_mini.pde в строке
    #include <AVCLanDrv.h>

    Теперь, что умеет текущая прошивка.
    1. Автоматическое определение адреса головы. Определяет адрес стабильно, за два месяца работы сбоев не было. Адрес можно задать и вручную.
    2. Сервисные функции (для запуска нужно набрать в терминале соответствующую команду)
    P - вывод конфигурации (адрес головы (который определился и который зашит в eeprom), адрес эмулируемого устройства, режим "только чтение", количество переполнений буфера отправки в com-порт
    M - включение / выключение режима "только чтение", т.е. любую прошивку можно превратить в снифер, который будет только слушать шину.
    V - вывод версий компонетнов
    S - начало команды отправляемой в шину (формат совместим с AVCLan-mini)
    W - конец прямой команды, например S002574901903W
    Q - конец широковощательной команды
    H - конец задания адреса головы, например S0110H (S0000H - для автоматического определения адреса головы)
    ? - помощь по командам
    команды для отладки железа
    h - выставляет высокий уровень на шине AVCLan
    l - выставляет низкий уровень на шине
    i - освобождает шину, переходит в режим чтения
    M - отправляет тестовое сообщение в шину (1 360 140 050001121063)
    3. При нормальном приеме в com-порт выводится принятое сообщение, при ошибке строка R#, где #-код ошибки.
    4. При ошибке в отправке сообщения, выводится строка W#, где #-код ошибки и сообщение отправляется повторно. Количество повторов в константе MAXSENDATTEMP в файле config.h, по умолчанию 3 раза.

    Если есть интерес, процесс написания собственной прошивки для эмуляции какого-нибудь устройства могу описать.
    Написание сводится к описанию запросов головы и ответов на них.
    Все вопросы и ответы хранятся в PGMEM, т.е. ограничений на количество описываемых запросов и ответов (как было в прошивке AVCLan-mini) нет. Точнее количество ограничено объемом флеш памяти МК.
    Так же реализовано описание запросов по шаблону, т.е. можно описать множество запросов статуса E2 одной строкой (разные головы немного по разному запрашивают статус и как раз с этим были проблемы в пошивке AVCLan-mini).

    Весь софт можно взять от AVCLan-mini

    Единственно, что был дописан драйвер, точнее в него был добавлен новый функционал. Он теперь умеет регистрировать горячие клавиши и по ним выполнять определенные действия (запускать программы, посылать нажатие клавиш, отправлять сообщения в AVCLan)
    Обновленный драйвер с исходниками во вложении. В нем же мой файл avclan.ini с настройками.
    Вложение 9659
    Для облегчения описания горячих клавишь служит программа ShowHotKey.exe, она показывает коды клавишь, которые нужно записать в avclan.ini

    Я собрал вот такую платку, она у меня совместно с нарульным пультом JVC эмулирует небольшую клавиатуру. И теперь с этого пульта, я могу не только переключать треки в центрефуге и изменять масштаб в гармине, но и регулировать громкость головы (даже когда она играет свое собственное радио)

    P.S. Chip а как отредактировать свой старый пост? Хотел все это выложить в шапке темы, но так и не нашел как. Раньше вроде можно было.
    Последний раз редактировалось Chip; 23.03.2016 в 13:32.

  2. #2
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    54
    Сообщений
    13,376
    Вес репутации
    10

    По умолчанию Re: AVCLan-mini или подключение к штатной голове Toyota

    Для ардуино нужно написать библиотеку
    Я в свою очередь готов написать софт для PC под Arduino
    Последний раз редактировалось Chip; 07.03.2017 в 23:05.

  3. #3
    Местный
    Регистрация
    04.06.2008
    Сообщений
    120
    Вес репутации
    389

    По умолчанию Re: AVCLan-mini или подключение к штатной голове Toyota

    Цитата Сообщение от Chip Посмотреть сообщение
    Оказывается на ардуино можно написать на cpp библиотеку,
    можно взять за основу библиотеку однопроводной шины Wire
    Библиотеки лежат в папке Arduino/Hardware/Librares
    И тогда уж точно Ардуино ни один бит не пропустит

    Я в свою очередь готов написать софт для PC под Arduino
    Про библиотеки я уже читал здесь - достаточно подробно написано, а чтобы не одного байта не пропустить, нужно по миниму использовать фунции ардуино, перепрограммировать таймер, написать свою функцию для работы с com-портом (чтобы буферизировать вывод). В общем план действий есть. Я думаю все получится.

    По софту я думаю нужно драйвер довести до ума, т.е. к существующим функциям можно добавить:
    - сохранение лога в файл, чтобы в случае если у кого-то адаптер не определяется правильно, было просто получить лог обмена.
    - обмен логом со сторонними приложениями через windows message. Тут правда есть вопросы для обсуждения: в принципе неплохо сделать общий формат одинаковый с коммерческим адаптером, чтобы внешний софт подходил для обоих адаптеров. Ну и как вариант можно вообще не делать обмен, а использовать размножитель портов как предложил LeonVS (в принципе не плохой вариант, но платный)
    - нужно сделать возможность отправки сообщений в шину через драйвер. Я сделал ИК приемник для нарульного пульта JVC, и чтобы через него регулировать громкость нужно отправлять сообщения голове
    - обработка двойного клика. При низком разрешении тача и текущая драйвер хорошо работает, а вот при большом разрешении двойной клик сделать проблематично, т.к. палец попадает второй раз немного в другое место. Плюс к этому можно сделать перетаскивание окон как на ноутбуке, т.е. кликаем на точку, потом туда же жмем и тащим.
    - ну и на десерт можно сделать для тача режим при котором он будет работать как тачпад у ноутбука, т.е. водя пальцем по экрану мы будем перемещать курсор, при этом палец будет задавать только направление и скорость перемещения курсора. Так можно сделать управления мелкими элементами в windows даже при низком разрешении тача.

  4. #4
    Местный
    Регистрация
    04.06.2008
    Сообщений
    120
    Вес репутации
    389

    По умолчанию Re: AVCLan-mini или подключение к штатной голове Toyota

    Цитата Сообщение от Chip Посмотреть сообщение
    ak1976 ты где пропал?
    Я не пропал, все пытаюсь довести до ума адаптер на arduino. Наверно нужен свежий взгляд или просто какая-то помощь. Вообщем выкладывю, то что уже готово.
    AVCLan-arduino-20090727.rar
    распаковываем содержимое в папку с arduino, правим файл hardware\cores\arduino\WProgram.h
    Код:
    заменяем строку 
    #include "HardwareSerial.h"
    
    на
    
    #ifndef BuffSerial_h
    #include "HardwareSerial.h"
    #endif
    Теперь о том, что сделано.
    1. Написана библиотека для буферизированного вывода, через com-порт. В общем то код взят со старого адаптера, просто сделан немного правильнее. Т.к. обработчик прерывания на получение данных из com-порта может быть один, пришлось пожертвовать стандартной библиотекой Serial. Для этого и нужно править WProgram.h, при использовании BuffSerial стандартная библиотека отключается.
    2. Написана библиотека для работы с AVCLan. Для работы используется Timer2. в файле config.h нужно указать какие выводы arduino используются (7 и 8 по умолчанию) и какой используется драйвер на PCA82C250 & LM239N или на ST485. Пока стоит задача отладить работу чтения из шины, функция readMessage().

    В примере кода AVCLan_mini.pde выводятся сообщения из шины. Скорость com-портa 250000. Нестандартная выбранна по той причине, что скорость порта должна быть кратна частоте процессора, для работы без ошибок. Можно настроить com-порт и на 1M, но компонент, который я использую в терминале, больше 250000 не поддерживает. Стандартный гипертерминал не поддерживает такую скорость, поэтому я использовал putty.
    По умолчанию выводятся сообщения из шины и коды вида R2-R8 - это ошибки чтения на разных этапах приема сообщения. По идее их быть не должно.
    Если нажать кнопку P выведется счетчик переполнения буфера передачи.
    Если нажать кнопку M перейдем в режим показа длительности посылок в шине.

    За это время было много потрачено много ночей/вечеров. Пробовал эмулировать arduino в VMLAB (получилось, но исходный код не показывается, а отлаживать код на ассеблере у меня интузиазма не вызывает). Собирал драйвер на PCA82C250 & LM239N.
    Пока идеально читается шина на какой-то старинной магнитоле со Spacio 99 года. На голове 56042 уже есть пропуски. (если посмотреть длительность посылок, то встречаются посылки в 5 - 7 мкс. по идее их быть не должно). Хотя пока писал текст убрал голову (в смысле головное устройство) с блока питания и количество ошибок уменьшилось. Может дело было в помехах?

    Chip если есть возможность, сравни чтение шины arduino и комерческого адаптера. Нужно ли здесь, что-то улучшать (хотя я уже пока незнаю как)

    Теоретически отправка сообщения в шину тоже написана. В AVCLan_mini.pde посылка закоментирована. Но я даже еще не брался за ее отладку
    Последний раз редактировалось ak1976; 27.07.2009 в 20:14.

  5. #5
    Местный
    Регистрация
    04.06.2008
    Сообщений
    120
    Вес репутации
    389

    По умолчанию Re: AVCLan-mini или подключение к штатной голове Toyota

    Попробовал сейчас подключить голову к батареи от UPS - ошибки пропали. Получилось идеальное чтение шины. Получается это мне блок питания столько помех выдает. Может дело в том, что он работает без нагрузки (голова не в счет. использую обычный компьютерный блок питания). Все-таки с блоком питания удобнее работать чем с батарейкой.

  6. #6
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    54
    Сообщений
    13,376
    Вес репутации
    10

    По умолчанию Re: AVCLan-mini или подключение к штатной голове Toyota

    Огромный респект!!!
    Завтра посмотрю попробую.
    У тебя на шине какой драйвер стоит? Если ST485 то можно попробовать поиграть с резисторами которые стоят на подтягивании плечь. Оптимальный вариант 3,6к если не достаточное усиление то уменьшаем до 3к , если сильно большое усиление , тогда увеличиваем до 3,9к-4,3к
    Последний раз редактировалось Chip; 28.07.2009 в 02:29.

  7. #7
    Местный
    Регистрация
    04.06.2008
    Сообщений
    120
    Вес репутации
    389

    По умолчанию Re: AVCLan-mini или подключение к штатной голове Toyota

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

  8. #8
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    54
    Сообщений
    13,376
    Вес репутации
    10

    По умолчанию Re: AVCLan-mini или подключение к штатной голове Toyota

    Как у тебя работает Arduino-AVC-LAN? А то я все никак драйвер не спаяю, что бы попробовать проверить.
    Сейчас голову Toyota приобрел 36025, внешний блок нави тоже есть , так что можно посканировать
    Последний раз редактировалось Chip; 13.08.2009 в 20:24.

  9. #9
    Местный
    Регистрация
    04.06.2008
    Сообщений
    120
    Вес репутации
    389

    По умолчанию Re: AVCLan-mini или подключение к штатной голове Toyota

    Цитата Сообщение от Chip Посмотреть сообщение
    Как у тебя работает Arduino-AVC-LAN?
    Честно говоря не очень хорошо работает, точнее не со всеми головами хорошо работает.
    Пока идеально читается шина на какой-то старинной магнитоле со Spacio 99 года.
    На голове 56042 уже есть пропуски (при питании от компьютерного БП, от батарее UPS все нормально)
    На голове 16030 в машине читаются вообще только команды от адаптера AVCLan-mini.
    Пробовал перепаивать резистроры. При 4.3 кОм вообще перестал читать даже от адаптера AVCLan-mini, при 3 кОм стал читать только от адаптера AVCLan-mini. Может нужно еще уменьшить сопротивление.
    Тут ездил в отпуск, поэтому ничем не занимался. Вот думаю, сейчас друг с морей приедет и у него на работе осцилографом померим уровни сигналов с разных голов. И буду думать чего дальше делать.

  10. #10
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    54
    Сообщений
    13,376
    Вес репутации
    10

    По умолчанию Re: AVC-Lan адаптер на Carduino

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

Страница 1 из 34 123456711 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

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