Модуль интеграции Raspberry PI 3
Модуль интеграции представляет собой управляемый микроконтроллером Arduino Nano блок питания для одноплатного компьютера Raspberry PI 3 для установки его в автомобиле.
В моем случае Raspberry работает как источник качественного звука в аудиосистеме и сервер потокового видео для камеры заднего хода, но этим его применяемость не ограничивается.
Функционал модуля:
- Импульсный блок питания +5В 3А с гальванической развязкой (модуль Mornsun VRB1205LD-15WR2)
- Управление одной тактовой кнопкой со светодиодной индикацией режимов
- КМОП логика управления, обеспечивающая низкое энергопотребление в ждущем режиме
- Контроль работы Raspberry через GPIO
- Адаптер кнопок руля с проводным выходом по схеме Pioneer
- Bluetooth-модуль для передачи команд с кнопок руля на Android-приложение, для управления медиа-плеером
- Контроль автомобильного питания по линии ACC и сигнала с фонаря заднего хода
Схема была разработана и смоделирована в симуляторе Proteus, позволяющего смоделировать работу Arduino Nano в реальном времени.
На схеме присутствуют некоторые элементы, отсутствующие в готовом устройстве, необходимые для корректной симуляции. Блок ИИП Mornsun был заменен на узел Q1-U1. Гальваническая развязка между бортовой сетью и +5В обусловила необходимость развязки всех сигнальных линий посредством оптопар. Реле RL1 используется исключительно под особенности моей инсталляции (коммутация питания ГУ Pioneer P88RS, запитанного тоже через гальваническую развязку 12 - 12В с целью устранения земляной петли и помех в динамиках).
Напряжение бортовой сети поступает через диод Шоттки D1 на буферный аккумулятор B2 (1.2Ач), необходимый для удержания питания во время запуска двигателя, и далее на ИИП Mornsun - фабричный модуль производства China, ценой порядка 15$ с доставкой. Модуль управляется подачей логического 0 на управляющий контакт (выключается по 0), также имеет контакт Trim для регулировки Uвых в небольших пределах, порядка +-10%. Я установил его на уровне 5.2В подтяжкой Trim к земле резистором 35К. На входе и выходе модуля установлены LC - фильтры ( в схеме нет), а также пленочные конденсаторы малой емкости между входными и выходными линиями - в соответствии с даташитом на модуль.
Кнопка питания заведена на тактовую ножку CLK счетчика U6 (4018, аналог К561ИЕ19), счетчик переключается по фронту, подавая на выход Q0 инверсное значение с ножки D. В выключенном состоянии это лог. 1 через R16.
Нажимаем кнопку и держим 3-4 секунды, при этом стартует ИИП, запускается Arduino, и сразу после запуска подпирает через оптопару U3 сигнал управления ИИП через U8:D, и подает лог. 0 на вход D счетчика, а также включает светодиод индикации через опторару U5. Все, кнопку можно отпускать.
На элементах U2:F, U2:C, U8:A, U8:C реализован переключатель сигнала кнопки. При лог. 1 на входе D счетчика (контроллер выключен) — сигнал идет на U2:D и далее на управление ИИП, при лог. 0 (контроллер работает) — на оптопару U4 и далее на Arduino. Таким образом, пока контроллер работает, все последующие нажания кнопки идут только на Arduino, которая их мониторит.
По одиночному короткому нажатию кнопки Arduino отправляет лог. 1 на вывод 24 GPIO Raspberry, где запущен сервис мониторинга GPIO, который тут же гасит ОС командой shutdown. В свою очередь, этот сервис на Raspberry в фоновом режиме подает меандр частотой 1Гц на выходную ножку 25 GPIO, а Arduino через делитель R27+R30 мониторит этот сигнал, и по пропадению пульсаций через 12 сек выключает питание. Таким образом, питание снимается корректно, когда ОС на Raspberry остановлена, и вероятность испортить флэш-карту и само устройство — минимальна. На схеме введена оптопара U11 с генератором на входе для симуляции данного режима.
По долгому нажатию (более 4 сек) тактовой кнопки — Arduino отключает питание независимо от наличия сигнала с Raspberry, на случай непредвиденных ситуаций — как в блоках питания АТХ.
Сигнал ACC нужен для контроля дежурного режима. Если нужно ненадолго покинуть машину, но не хочется выключать Raspberry, можно оставить ее включенной, вынуть ключ и закрыть машину. По отсутствию ACC включается таймер на полтора часа, после чего система корректно выключается. При этом светодиод кнопки питания начинает помаргивать с частотой 1Гц, короткими затуханиями, со все возрастающей скважностью, и под конец задержки моргает еле заметными вспышками. При подаче АСС таймер останавливается, система переходит в обычный режим, светодиод горит непрерывно.
В схеме адаптера кнопок руля использован электронный потенциометр MCP41050, а также 2 ключа Q2 и Q3 для управления двумя сигнальными линиями для входа проводного управления Pioneer. Резисторы R3 и R21нужны для симуляции, в рельном устройстве они не нужны, так как имеются в схеме Pioneer.
Помимо проводного управления, сигнал кнопок руля декодируется и отправляется в Bluetooth-модуль HC-05, подключенный к Ардуине по шине SPI, и далее — в Андроид приложение.
Сигнал включения заднего хода транслируется через оптопару U10 на 23-ю ножку GPIO, по его включению на Raspberry запускается сервер потокового видео VLCD, который получает сырой видеопоток с камеры ЗХ, оцифрованный устройством видеозахвата EasyCap USB 2.0 Video Capture Adapter на чипе UTV007. По выключению ЗХ сервер останавливается, таким образом процессор не загружается ненужной работой.
Поток конвертируется в MJPEG частотой 15 кадров/сек. Кроме того, команда заднего хода через Bluetooth отправляется в Андроид-приложение, которое стартует Activity с WebView, отображающее картинку с камеры на весь экран, разворачивая изображение по длинной стороне. Данная конфигурация дает запаздывание картинки с камеры порядка 0.5сек, уменьшить ее в данной конфигурации не удалось. Ездить не глядя в зеркала с такой задержкой конечно не стоит, но для аккуратной парковки в принципе некритично. Кроме того, весь функционал с видео заднего хода задумывался как экспериментальный, без особой надежды на его полную реализацию.
Плата разведена в SprintLayout 6. Arduino Nano установлена китайского производства, на чипе CH340, ее разводка отличается от оригинальной Nano, это следует учитывать при повторе платы.
Поскольку Raspberry используется с платой DAC Aoide DACII на чипе ESS ES9018K2M - вся линейка GPIO занята разъемом DAC, и пришлось припаяться к ней с обратной стороны.
Там же рядом припаян разъем питания +5В (на фото его еще нет).
В процессе тестирования готового изделия были отмечены и устранены некоторые незначительные дефекты, на вышеприведенной разводке платы и во вложеном lay6 файле они уже исправлены.
Корпус устройства был спроектирован в Google Sketchup и распечатан на 3D-принтере.
Архив с проектом Proteus, скетчем Arduino, проектом SL6 и серверным скриптом GPIO.
На Raspberry установлена сборка Volumio 2.555, работающая в качестве DLNA-рендерера. Источником служит смартфон Samsung Galaxy A50 с установленным медиа плеером Neutron, хотя этот выбор не принципиален.
На смартфоне поднята точка доступа Wi-Fi, к которой подключается Volumio.
Для управления медиа-плеером было разработано простое Андроид-приложение, представляющее собой фоновый сервис, декодирующий команды от кнопок руля через Bluetooth-модуль HC-05, и транслирующий их в Андроид как события KeyEvent.
Это же приложение отображает видеопоток камеры заднего хода с Raspberry.
Предусмотрен функционал выбора bluetooth-устройства, поиска Volumio в сети (для отображения видео), есть экранные кнопки для проверки управления медиа-плеером, и некоторые другие функции. Схема декодирования кнопок руля в медиа-события Андороид пока прописана в коде, в плане разработка гибкой настройки.
Медиа-команды реализованы трех видов:
- короткое одиночное нажание, срабатывает по фронту;
- длинные очереди (нажал и держишь): по фронту срабатывает первое нажатие, через 750мс — стартует очередь команд с периодом 150мс, пока не отпустишь кнопку;
- короткое/долгое нажатие (как Source на Pioneer'е) — короткое нажатие срабатывает по отпусканию кнопки ранее чем через 750мс, долгое нажатие — генерируется после 750мс однократно, даже если кнопка все еще нажата.
Cистема в действии. Volumio стартует через 45-50 сек после подачи питания, и сразу начинается воспроизведение.
0 Комментариев
Рекомендуемые комментарии
Комментариев нет
Присоединяйтесь к обсуждению
Вы публикуете как гость. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.