CarPC (Начало)
Часть Один: История, общая концепция, выбор железа и остальной кипиш, связанный с началом проекта
На сегодня кое-что уже написано 🙂
1) Начало
2) Часть Два
3) Часть Три
4) Приложение
Всем привет! Решил поделиться своими результатами по %SUBJ%-у. Давно витала идея строительства CarPC, еще со времен владения Chevrolet Niva The small gray submarine Первоначально планировал строить на Raspberry PI 2, но наткнулся на шедевр наших друзей из Поднебесной, позиционируемый производителем, как конкурент Малины (на первый взгляд так оно и есть), но ценой намного меньше. Долго думал и решал… И вот встречайте, герой того дня, когда я заказал его на али.
Для экспериментов с видео была приобретена за недорого вебкамера Creative live cam sync hd vf0770,
В качестве дисплея планирую AT070TN90 witch touch panel
Тач цепляется по USB. Монитор 7″, цепляется по HDMI, есть аналоговый вход для камеры, легко переделывается под автовключение при наличии сигнала камеры (это я для КЗВ планирую), надо распаять разъем на (товарищ уже сделал). Монитор будет установлен в штатное место, вместо GID (Graphic Information Display), который в свою очередь переедет на потолочную консоль. (авто Opel Astra H)
Также будет установлен модуль точного времени DS3231, OPI имеет свои часы, но их надо каждый раз устанавливать. Подключаются по I2C.
В качестве камеры для регистратора будет родная (Orange PI)
В качестве камеры заднего вида (КЗВ) будет аналоговая. Может быть будут добавлены парктроники (работать вместе с КЗВ) с возможностью их отключения.
В качестве медиаплеера хочу подобрать из уже существующих, самому писать не охота.
Не проработан вопрос по организации питания от бортовой сети. Отложен на потом
Это была программа минимум по железу и функционалу
В планах сделать CAN-BUS сниффер, чтобы читать ошибки и управлять кнопками с руля. Например на базе MCP2515
А также реализовать Hands Free
Выбор ПО
ОС
В качестве ОС выбран Linux, так как гораздо надежнее и стабильнее Android, хоть я и фанат FreeBSD ( начиная с версии 2.2.6 ), но однозначно Linux, ввиду огромного количества софта для конечного пользователя. Вопрос только какой (одна из причин моего скептического отношения к Linux-y, уж очень их много и все разные)? Встал вопрос выбора. Как говорится, не попробуешь — не поймешь.
Пункт 1. Довольно быстрое, автором проделана огромная работа, за что ему огромная благодарность. Но к сожалению похоже он перестал развивать свой проект. Поэтому на основе его наработок развивают другие (Пункт 2.). По обоим пунктам довольно шустрые дистрибутивы, нв первый взгляд все есть, но меня несовсем они устраивают по двум критериям: а) греются (лечится патчем script.bin) б) большая загрузка процессора (от 3.5 до 5 попугаев по показаниям top ), что и предопределило мой выбор в пользу Пункт3, который тоже не без греха, по загрузке и температуре у него гораздо лучшие показатели по сравнению с Пунктом1 и Пункт2, но замечены «тормоза» при обновлении текстового видеобуфера (очень хорошо видно в mc) и при первом чтении каталога. В остальном все меня устраивает. Кстати на нем я спокойно устанавливал и запускал КОДИ (но это отдельная история).
Оболочка CarPC
Собственная разработка. Написана на C под GTK+2.0
Полностью модульная. Все настройки (оформление, подключаемые модули) через конфигурационный файл в формате XML, который соответствует стандарту GLADE, что облегчает задачу малознакомым с XML форматом людям. Поддерживает до 18 пунктов меню.
Модуль AVR (видеорегистратор, Клиент-Серверное приложение)
Собственная разработка. Сервер написан на Shell с использованием пакета gstreamer0.10. Клиент написан на C под GTK+2.0, с использованием библиотек gstreamer0.10.
Возможности приложения:
Отображение в реальном времени с наложением: свободной информации пользователя (например госномер авто), текущей даты/времени и GPS данных (координаты, скорость).
Запись циклического архива в MJPEG (60 файлов продолжительностью 1 минута каждый) за последний час работы.
Предусмотрена утилита просмотра архива.
GPS и навигация
В качестве навигационного ПО выбрана программа навигации «Семь дорог»
Выложу несколько скриншотов результатов своего труда.
Пришел GPS и корпус под него. Так как в корпус будут установлены плата и антенна GPS, пришлось немного порезать корпус, иначе не хватает высоты корпуса. Версия1
Собрал и подключил GPS (распиновку смотри выше, я немного ее изменил, мне так было удобнее, задействовав 3 соседних пина 9, 11 и 13, использовал разъем USB с того же старого системника)
На сегодняшний день добавлено:
1) Написал программу для чтения данных GPS и их отображении в видерегистраторе (AVR)
2) Решил проблему одновременного чтения данных GPS различными программами (службами), в моем случае это AVRServer и 7ways (навигационная программа «Семь дорог»), т.к. у меня AVRServer (если ранее был запущен) пишет в фоне.
Служба(сервис) эмуляции серийного порта GPS данных для 7ways запускается при старте системы через systemd
Для этого требуется установка gpsd, gpsd-clients и socat
apt-get install gpsd
apt-get install gpsd-clients
apt-get install socat
Одним очень хорошим человек был осуществлен «подгон» мне крышки от GPS-антены одного очень известного производителя радиооборудрвания. В результате чего родился корпус для моего GPS-приемника Версия 2. По образцу этой крышки из 3-х мм пластика было вырезано основание, из 1 мм пластика — донышко, при помощи термопистолета, саморезов и дрели был собран GPS-приемник в новом обличии.
Начал работу над мультимедиа
Велосипед изобретать не буду. Будет VLC со своим скином.
Скин в процессе.
ЗЫ: Процесс продолжается. В качестве модуля для работы с CAN-шиной остановился на интересном девайсе
CarPC: Начало.
Долго я шел к этому, много думал, смотрел, читал, спрашивал. И вот, наконец решился начать проект по внедрению полноценного мини-компьютера с блекджеком и бабами навигацией и интернетом.
CarPC будет собран на базе одноплатного ПК Orange PI PC. На данном этапе, дабы дать старт проекту, были заказаны некоторые комплектующие:
Orange PI PC + акриловый корпус + кабель питания от USB:
Сам одноплатный мини-компьютер — сердце моего проекта. Выбрал именно его, т.к. цена его составляла всего 15$, а по характеристикам он превосходит RPI более, чем в 2 раза.
Медиа — пульт ДУ для управления всем этим делом:
Изначально задумывался, как единственное и основное средство управления CarPC, но позднее мне в голову пришла мысль, как внедрить сенсорное управления в сочетании с родным дисплеем.
Конвертер HDMI to 3RCA:
Несмотря на то, что у моего мини-ПК есть аналоговый аудио-видео выход, я решил прикупить этот конвертер. т.к. по отзывам звук и видео с этого аналогового выхода оставляет желать лучшего, да еще и не на всех ОС он работает. Проверил его на старом телевизоре — работает! Отличная штука, рекомендую!
Конвертер/стабилизатор 12V to 5V:
Orange PI PC работает только от 5V, по этому пришлось заказать еще и конвертер.
Ну и плюс ко всему этому был заказан еще набор переходничков RCA и HDMI кабель 1.5 метра.
Подчеркну, что CarPC будет работать в связке с родным монитором, что очень важно, т.к. вмешательств в интерьер салона я не приемлю. Компьютер будет спрятан под панель вместе со всей периферией, коей будет довольно много, а именно:
— TV\FM тюнер;
— GPS адаптер;
— Wi-Fi адаптер;
— активный USB хаб;
В качестве ОС планирую использовать OpenELEC с KODI, но пока не решен вопрос, как на нем наладить GPS-навигацию. Андроид не рассматриваю по объективным причинам, хотя и не откидываю пока этот вариант.
В данный момент готов скин CarPC для KODI, который я нашел в интернете и переделал под себя. Думаю над созданием своего, с нуля, благо знаний и умений хватает. В машину еще не ставил, т.к. пока не решены некоторые важные вопросы, но в ближайшие две недели планирую тестово запустить в машине.
На этом пока все. Работы в этом направлении еще очень много, проект, думаю, растянется надолго, т.к. идей просто немерено.
Следите, по мере продвижения работы результаты буду выкладывать в БЖ!
Проект CarPC в E83. Часть 2 — едем дальше, или основная концепция.
После описанных мною событий по неудачной реализации проекта pibus в связи с кражей контроллера, а также пониманием, что в CarPC нужен именно Android ( для Raspberry Pi 3 не существует сколь-либо адекватной прошивки), я начал поиск альтернативных решений. Что из этого вышло читайте ниже).
В качестве собственно компьютера была выбрана платформа Orange Pi в связи с выпускаемыми Android-ROM’ами от производителя (как впоследствии оказалось — не совсем, пришлось допиливать вручную), а также распространенностью чипсета AllWinner H3 на всякого рода китайских ТВ боксах. На всем известном Aliexpress была заказана модификация Orange Pi Plus 2E, обладающая следующими ТТХ:
Процессор: 4-ядерный Allwinner H3 4×1600 мГц с поддержкой аппаратного декодирования H.264, H265 4K видео;
ОЗУ: 2 ГБ;
Хранилище: 16 ГБ eMMC на борту + слот microSD;
Сеть: 1 х Gigabit Ethernet, встроенный модуль wifi (Realtek RTL8189ETV) с антеннкой;
Порты ввода-вывода: 1 x HDMI, 3 x USB 2.0 Type A, 1x microUSB OTG, инфракрасный порт, комбинированный аналоговый A/V разъем 3.5 мм, стандартный для таких устройств 40-pin GPIO, отдельный разъем debugging uart, штыревой разъем для питания, микрофон, интерфейс подключения камеры CSI.
Железяка в общем достойная, мощности для CarPC хватит за глаза, единственный минус в плане железа — отсутствие встроенного bluetooth, Raspberry Pi3 может похвастаться его наличием. Но это опять же решается установкой USB-свистка, которые сейчас стоят копейки, а по размерам неприлично малы.
Вторым по важности моментом была интеграция в существующую бортовую сеть авто. Основным требованием было управлениеCarPC штатными кнопками на консоли/руле, отсутствие валяющихся мышек, клавиатур, пультов ДУ, т.е. внешне никакого колхоза и ничего лишнего. Для реализации данной задачи пришлось перевернуть тучу форумов об автомобильной электронике и автомобильном компьютеростроении, но решение было найдено. На одном из форумов некогда братской страны местный электронщик предлагал универсальный USB-hid контроллер, возможности которого просто поражают!
Изучив материал добавилась еще одна хотелка — установка контроллера iDrive, который незамедлительно был приобретен. Пока, к сожалению, не могу предоставить фото его установки, поскольку в результате моих экспериментов он приказал долго жить и я теперь в поисках такого же, в любом случае скоро постараюсь эту проблему решить (главное, оно работает!). Кстати, если кто продает такой — маякните в личку, возможно договоримся).
Решив глобальные вопросы, я приступил к обдумыванию функционала и иных мелочей. В первую очередь важнейшей после мультимедийных функций является навигация. На том же Ali продается полно GPS модулей с USB интерфейсом, однако стартующий ценник за неизвестный чип в 35$ не радовал. Как оказалось, все можно сделать гораздо проще — приобретенный для интеграции в бортовую сеть контроллер эмулирует USB GPS модуль, в то время как модуль аппаратно подключается по UART. Таких модулей очень много, причем от именитых фирм. Я приобрел модуль GPS на базе чипа uBlox M6N с распаянной на плате керамической антенной примерно за 650 руб., что в разы ниже.
В дальнейшем хочу заменить его на аналогичный модуль на чипе uBlox NEO M8N с поддержкой ГЛОНАСС и более точным позиционированием. Каково было моё удивление, когда после получения посылки и распайки модуля я обнаружил, что Android его не видит! Это был эпик фейл, однако я начал искать решение проблемы (и нашел, просто еще не решил запостить ли ковыряние с софтом в отдельную запись, либо разместить здесь). Главное, что убедился, что модуль рабочий — подключив его к домашнему ПК посредством опять же контроллера все завелось, с подоконника поймал 14 спутников.
Что же касается мультимедиа — она работает из коробки, звук передается и по 3.5мм штекеру и по HDMI, как впрочем и видео, однако качество звука на такого плана SoC оставляет желать лучшего. В планах подключить внешний USB-ЦАП, который обеспечит значительно лучший звук. Выбора не так много, но есть вполне достойные варианты по приемлемым ценам. В ближайшее время определюсь и закажу. Вопрос поддержки его прошивкой Orange пока остается открытым, но по моим предварительным изысканиям, должен завестись без особых проблем.
Следующей хотелкой стало подключение CarPC к интернету, планирую это осуществить через USB 3g модем, также должен завестись согласно моим предварительным изысканиям по данному вопросу, надеюсь, в ближайшее время проверю.
При проектировании и сборке CarPC немаловажным моментом является размещение его компонентом. Вариантов всего 2 — либо навесной монтаж куда-нибуть в авто с кучей соплей, либо упаковка в корпус и размещение соплей внутри. Естественно, был выбрал 2й вариант. В одном из строительно-хозяйственных супермаркетов была приобретена коробочка из полупрозрачного пластика, изначально задуманная для хранения мелких инструментов или иных мелких вещей, разделенная на 3 отсека. Размеры её составляют примерно 190х130х45 мм, крышка откидная. Определившись с примерным составом необходимых компонентов, я принялся кромсать коробку согласно своей идеи. Учитывая отсутствие мастерской или гаража и сколь-либо нормального набора инструментов, все делалось на коленке подручными средствами и в большинстве из подручных материалов, естествено с точки эстетики получилось мягко говоря не очень, поэтому прошу строго не судить.
Что мы имеем внутри на данный момент:
1. Первая слева собственно Orange Pi Plus 2e – её доработка ограничилась установкой алюминиевого радиатора на термопасту + немного клея. Четко по размерам радиатор найти не удалось, использовал наиболее подходящий распилив его полотном от электролобзика)). Без радиатора данный одноплатник эксплуатировать категорически не рекомендуется. С радиатором греется также ощутимо, палец держать некомфортно. Поэтому, на крышку был приспособлен небольшой кулер, закрытый снаружи декоративной решеткой.
2. Поскольку возникла необходимость подключения внешней периферии — GPS модуля, idrive контроллера, бортовой шины iBus необходимо было установить какую-то многоконтактную колодку или разъем минимум на 7 контактов. Решение максимально простое — гнездо Ethernet RJ-45, которое я подключил припаяв небольшой жгут проводов. В нем 8 контактов, лишний решил запараллелить с контактом ACC разъема питания. Находится справа от Orange.
3. Далее я разместил 4-портовый USB-хаб, точнее его внутренности. Пришлось его немного доработать — входной разъем USB Type A был заменен на microUSB OTG, питание на него решил брать отдельно, поскольку на контроллере взаимодействия с бортовой сетью имеется встроенный стабилизатор на 5В с током до 2А и 2 соответствующих вывода — управляемый и постоянный. Думаю, что 2А должно хватит для bluetooth, 3g модема и USB ЦАП. Естественно красный провод из разъёма OTG (+5В от USB) я не запаивал.
4. Правее от USB-хаба собственно контроллер для взаимодействия с бортовой сетью авто. У него уже распаян microUSB разъем, однако также на плате разведены его контакты. К ним то и был запаян хвостик с разъемом USB Type A чтобы не искать короткий USB → microUSB шнурок и закреплен к плате на термоклей.
5. Ниже находятся компоненты, отвечающие за питание CarPC – круглый 4-контактный разъем для подключения к (+) и (-) аккумулятора и зажиганию. Один вывод остался лишним — запаял на него отдельный проводник, который использую в целях тестирования. После разъема установлен выключатель, разрывающий плюсовой (+) контакт.
6. Далее установлено небольшое реле с ТТХ 12В 5А, обеспечивающее коммутацию питания Orange Pi, управляется контроллером для взаимодействия с бортовой сетью авто.
7. Сразу после реле установлен широко известный линейный стабилизатор DC-DC конвертер на базе чипа LM2596, настроенный выдавать 5В на выходе, если не ошибаюсь, может выдавать до 3А. По информации на форумах, Orange может потреблять в пике до 3А, однако считаю это маловероятным и скорее всего при условии подключения «прожорливой» периферии к её встроенным USB. Тем более, мы запитываем USB-устройства от внешнего источника. Но все же я решил приклеить на микросхему небольшой алюминиевый радиатор (также с термопастой). На входные контакты преобразователя запараллелен вентилятор охлаждения, включаемый соответственно при включении одноплатника. В процессе эксплуатации греется не сильно (думаю, около 2А нагрузка). Изначально питание подводилось к Orange через стандартный штыревой разъем, но это оказалось громоздко и бессмысленно, поэтому запитал её через GPIO.
Пока что планирую это все подключить к штатному бортовому монитору, но в ближайшем будущем хочу его заменить на hdmi lcd панель с тачскрином (надо продумать, либо дорабатывать имеющийся монитор заменой матрицы, что не очень выгодно поскольку все детали авто для уродования доработки предпочитаю покупать отдельно, чтобы в случае необходимости вернуть прежний вид и функционал, а стоит он солидно. Как вариант думаю реализовать собственную конструкцию выдвижного монитора, надо ее только продумать.
Остальные доработки, а также установку и настройку ПО, тестирование в авто опишу в следующих постах. Вопросы, предложения, критика — приветствуются.
Car PC хенд мейд (часть вторая— выбор платформы)
OrangePi
Первое, что мне попалось на глаза — Orange Pi. Вначале купил Orange Pi Pc (долларов 30). Потом увидел чуть (на 5 баксов) дороже Orange Pi PC Plus с Вифи и EMMC и поменял на эту.
Плюсы.
1. Цена — долларов 30-35
2. звук на борту (в моём случае не нужен особо — звук собираюсь выводить через Bluetooth на гарнитуру громкой связи. Но, всё равно, лишним не будет)
3. Вифи на борту (не удалось запустить на Андроиде)
4. EMMC в комплекте (работает быстрее, чем SD карта, правда, ненамного)
5. есть интерфейс для камеры (камер для Оранжа всего пару штук для этого интерфейса и длина шлейфа 20 см максимум)
6. НЧ видео выход (хз куда б его применить — качество там так себе)
7. микрофон (мне не надо, но можно было б замутить громкую связь)
Минусы
1.Поддержка. Это отдельная песня. О чём можно говорить, если даже на оф. сайте упоминаются не все Оранжи, которые выпускаются? На оф. форуме, похоже, производители не пишут ничего. На почту практически не отвечают.
2. Андроид. Вроде, на оф. сайте есть оф. Андроид для Оранжа. Только он не работает практически. Хотя, только на нём заработал онбоард ВиФи. Есть более десятка других прошивок Андроида. Но они собраны на основе каких-то непонятных исходников (от ТВ боксов, например) и работают, мягко говоря, нехорошо (ЮСБ работают не все, реакция на кнопку включения непонятная и т.д.).
3. Нагрев. Потребляя от 5 вольт примерно полампера, Оранж греется не по-детски. Производители почему-то не установили радиатор. Ладно, можно и самому поставить. Но и с радиатором всё плохо. Тепература радиатора при нагрузке «просто посерфить в инете» возрастает до величин, при которых руку держать затруднительно — горячо. И это «в тепличных условиях» — на столе. Что будет, если его поместить в устройство, в котором вентиляция будет хуже? И какой выход? Вентилятор? Большой радиатор?
Как оказалось, в этих сборках Андроид вырезаны некоторые части ядра Линукс, которые мне были нужны. Например, мне так и не удалось запустить GPS не через USB (через USB заработало, но тоже не идеально). Дело в том, что у Оранжа (да и у других компьютеров такого типа) есть порты, выведенные на штырьки. Хотелось подключить GPS датчик непосредственно к ним чтобы сэкономить ЮСБ (которых у Оранжа аж 4, правда, в зависимости от прошивки, могут работать не все) и уменьшить количество устройств (ГПС датчики изначально не имеют ЮСБ интерфейса и подключаются к ЮСБ через преобразователи).
Odroid C2
Через некоторое время попался мне на глаза такой себе Odroid С2.
Минусы
1. Дороговато. Бу плата мне досталась за 50 баксов, а новая стоит все 60 — в два раза дороже Оранжа
2. Дорого. На борту нету ЕММС, но есть разъём, в который её можно воткнуть (понятное дело, только спецовые для Одроид). Стоит она ещё долларов 25 за 8 Гигов (на минутку, за такие деньги можно купить целый микрокомпьютер Оранж). Можно вполне пользоваться и обычной микро СД картой. Говорят, что с ЕММС быстрее. Не пробовал — пока жаба сильнее.
3. Онборд звука нет. Есть I2C разъём для такого дела (опять же — приобретаем спецовый шилд или отдельную плату, или собираем) или пользуемся ЮСБ звуковухой.
4. Нет и микрофона (USB звуковуха решает вопрос).
5. Нет ВиФи онбоард. Хотя, с учётом того, что на Оранже он так и не заработал, непонятно, это минус или нет.
6. Меньше UART интерфейсов. Всего 2, из них один привязан на дебаг. Т.е., если не заморачиваться, в пользовании только один. В моей разработке один и нужен.
Плюсы
1. Штатный Андроид работает без проблем. Периодически обновляется. Скомпилирован специально для Одроида.
2. Поддержка. На форуме разработчик бывает каждый день и реально помогает. Есть ещё люди, которые что-то делают и могут помочь. Хотя, русскоязычного форума нет (у Оранжа есть — и что. Там ничего узнать не получается). К плюсам можно отнести обновления ПО. Например, за время изготовления этого КарПС вышло штук пять обновлений Андроида. Причём, в обновления включают багфиксы, о которых пишут на форуме.
3. ЮСБ на один больше, чем у Оранжа (четыре обычных и один OTG).
4. Греется намного меньше. Странно, ибо потребляет примерно столько же.
5. Есть аналоговые входы АЦП в кол-ве 2 шт. Хз куда их применить.
6. По-моему, есть и ШИМ.
ГПС датчик подключился с полтыка (читайте далее в блоге).
Кстати, датчик у меня такой.
Подключается к плате тремя проводами.
Внимание!
У Одроида линии ввода-вывода не толерантны к 5 вольтам (так говорят разработчики). Для ГПСа это пофиг — он может питаться и от 3.3 вольт. Но надо иметь ввиду. У Оранжа — в этом смысле всё гуд.
Orange Pi на автомойке ч.3
Как понятно из заголовка перешли на использование Orange Pi One. Машинка гораздо поинтереснее Arduino. Выбран среди себе подобных в основном из-за цены. По сравнению в Arduino лучше решает следующие задачи:
— сеть (проблем пока нет)
— подключение монитора вместо табло
— возможность использования тач-панели
— возможность использования базы данных
— возможность установки на «себя» веб-сервера
В качестве операционной системы выбрана DietPi. Программирование в QT. Купюроприёмник подключен через последовательный порт. Монитор в HDMI. Тач панель в USB. Выходы на реле 29, 31, 33, 35, 37. Подключен жетоноприёмник на 22 ногу через делитель напряжения.
Также реализован режим приёма денег через кассу с выдачей клиенту пин-кода. Сервером для хранения статуса пин-кода может быть один из апельсинов. Выдача и контроль пин-кода через веб-страницу например со смартфона. Таким образом можно экономить на купюроприёмниках.
Некоторые лайф-хаки апельсина:
Останавливаем консоль на UART для купюрника
Поворот экрана (файл /etc/X11/xorg.conf)
Включаем поддержку некоторых тач-панелей (файл /etc/modules)
Запрещаем спать ( файл /etc/X11/xorg.conf.d/10-dpms.conf)
Выставляем режим работы выхода.
Краткие выводы на текущий момент:
— Orange пока работает стабильно, вылетов флеш-памяти не зафиксировано.
— От тач-панелей устойчивой работы не добились, переходим на кнопки.
— подключение индуктивных петель для фиксации наличия машины
— создание личного кабинета клиента с возможностью запоминания и дальнейшего использования остатка денежных средств на любом аппарате сети автомоек.






























