Меню

andipanda.dev

CaRadio: как я вернулся к самодельной магнитоле и дошёл до CarPlay

После первой самодельной магнитолы на Raspberry Pi я довольно долго не возвращался к этой идее. Проект работал, свою задачу выполнял, а затем изменились и автомобиль, и требования к тому, что вообще должно уметь современное головное устройство.

Следующим автомобилем стал Nissan. В нём уже был штатный бортовой компьютер с экраном и камерой заднего вида. Камера была уже далеко не в лучшем состоянии, но работала и выводила изображение на штатный экран. При этом полезной информации на нём отображалось немного, а музыку с телефона я слушал через Bluetooth FM-модулятор. Решение работало, но далеко не идеально. В загруженном FM-диапазоне периодически появлялись помехи, приходилось искать свободную частоту, а иногда вся эта конструкция просто начинала глючить.

Снова Raspberry Pi и 7-дюймовый экран

К тому времени мне уже был хорошо знаком 7" HDMI-дисплей Waveshare, который я использовал в предыдущих проектах. Поэтому, когда на Allegro мне попался недорогой клон такого экрана, я купил его практически не раздумывая.

Экран был. Raspberry Pi я тоже хорошо знал. Оставалось придумать, что именно из этого сделать.

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

Одним из главных вопросов была навигация. Делать собственную навигационную систему, поддерживать карты и пытаться повторить то, что уже нормально работает на смартфоне, особого смысла не было.

Поэтому нужно было другое решение.

А что, если запустить CarPlay на Raspberry Pi?

В поисках решения в какой-то момент мне попалась информация в интернете, из которой я узнал, что на Raspberry Pi можно запустить Apple CarPlay.

И это полностью изменило идею проекта.

Вместо попыток самостоятельно реализовать навигацию, музыку, звонки и остальные функции можно было использовать интерфейс телефона, а Raspberry Pi превратить в полноценное головное устройство.

На Allegro я нашёл Carlinkit-донгл по вполне приемлемой цене и решил попробовать.

Однако первые эксперименты оказались не слишком удачными.

Готовые программные решения на Python, которые мне удалось найти, работали медленно. Интерфейс тормозил, периодически всё зависало, и в таком состоянии использовать систему в автомобиле мне не хотелось.

Тогда появилась мысль перенести всё на C++.

Я сделал несколько попыток, но ни одна из них не привела к действительно рабочему результату. Сейчас я уже даже не помню, что именно стало последней причиной остановки разработки, но в итоге проект снова оказался на полке.

И пролежал там довольно долго.

Новый автомобиль — новая попытка

За это время снова поменялся автомобиль. Вместо Nissan появился Volkswagen Golf со штатной магнитолой RCD510.

Сама RCD510 была вполне неплохой магнитолой для своего времени, поэтому первоначально необходимости срочно заменять её не было.

Более того, на некоторое время моё внимание вообще ушло в другую сторону — мне стало интересно, насколько глубоко можно разобраться в самой RCD510. Но это уже отдельная история, которая заслуживает своей статьи.

А идея собственного головного устройства тем временем никуда не исчезла.

Весной 2026 года я снова вернулся к CarPlay на Raspberry Pi. И на этот раз ситуация оказалась значительно интереснее: мне удалось найти FastCarPlay — уже существующий проект на C++.

Это было именно то направление, к которому я пытался прийти самостоятельно несколькими годами ранее.

Я снова достал Raspberry Pi, Carlinkit и тот самый 7-дюймовый экран.

На этот раз CarPlay действительно заработал.

И именно с этого момента начинается история CaRadio в её нынешнем виде.

Продолжение: CaRadio: CarPlay на Raspberry Pi и Linux