Меню Рубрики

Установка raspberry pi в автомобиле

Car PC на основе Raspberry Pi

Набор модулей для сборки автомобильного компьютера. Базовым программным обеспечением является адаптированный Raspbian Linux со специальной мультимедийной оболочкой-интерфейсом, написанной на Qt5, которая запускается автоматически после загрузки операционной системы. Помимо стандартного программного обеспечения, можно использовать ПО сторонних разработчиков (например XBMC Car PC edition).

Базовый набор модулей включает в себя

  • Сенсорный экран 7« с HDMI-интерфейсом и стандартным 2DIN корпусом
  • 4x50W усилитель (чип TDA-7850)
  • Модуль FM радио с адаптером для подключения к усилителю
  • GPS модуль + GPS антенна
  • Кабель ISO-10487
  • Кнопка-ключ с проводами
  • Активный USB хаб
  • Конвертер 12V-5V с разъёмами для питания RaspberryPi и активного USB-хаба
  • Переходник и аудиокабель для подключения RaspberryPi к усилителю
  • HDMI кабель
  • CSI-Камера с широкоугольным объективом
  • OBD-II адаптер ELM327

Кроме этого к компьютеру можно подключать дополнительные модули по USB — Wi-Fi приёмники, 3g/4g модемы и т.д

В качестве разъёма для подключения в автомобиле выбран стандартный разъём ISO-10487. Таким образом, если в вашем автомобиле разъём для подключения аудиоаппаратуры отличен от ISO-10487, вы можете без проблем приобрести переходник в интернет-магазинах.

Сборка

Питание

Все модули компьютера получают питание через провода +12V (красный провод), GND (чёрный) стандартного разъёма ISO-10487, к которым они подключены параллельно. В разрыв красного провода разъёма вставляется кнопка-ключ.

1. Преобразователя 12V-5V, который питает Raspberry Pi и активный USB-хаб.

4-канальный усилитель подключается к проводам разъёма ISO-10487.

На входы усилителя подаются аудиосигналы сигналы от Raspberry Pi и от FM-приёмника. Управление громкостью звука программное.

Подключение FM-приёмника к усилителю:

Подключение Raspberry Pi к усилителю: .

В связи с тем, что звук с аналогового аудиовыхода Raspberry Pi может оказаться не очень качественным, можно брать цифровой аудиосигнал с HDMI выхода Raspberry Pi и преобразовывать его в аналоговый при помощи конвертера HDMI-HDMI+audio. В этом случае конвертер будет питаться от USB-хаба.

Подключение устройств к Raspberry Pi

К Raspberry Pi подключаются следующие устройства:

1. FM приёмник (к GPIO пинам SDA,SCL,VCC,GND)

2. GPS (к GPIO линиям RX, TX, VCC, GND)

3. К USB входам Raspberry Pi подключается USB-хаб и один из USB-разъёмов экрана, который обеспечивает работу сенсора

4. Экран подключается посредством HDMI интерфейса. На лицевой панели экрана имеется USB-вход. Для того, чтобы он работал, необходимо подсоединить USB-шнур №2 экрана к USB-хабу

5. Подключение камеры. Стандартная камера с широкоугольным объективом используется в качестве видеорегистратора. Выводится на лобовое стекло при помощи удлинителя.

Принцип работы удлинителя:

RasPi -> CSI-кабель -> переходник с CSI на IDC -> IDC кабель (можно сделать любой длины) -> переходник с IDC на CSI-> CSI кабель -> камера

6. Для диагностики ЭСУД и чтения параметров работы двигателя и систем автомобиля используется адаптер ELM-327, который подключается к OBD-II разъёму в автомобиле

Завершение сборки

После того, как все компоненты соединены необходимо уложить их в стандартный 2DIN корпус.

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

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

Программное обеспечение

Базовым программным обеспечением является адаптированный Raspbian Linux со специальной мультимедийной оболочкой-интерфейсом , написанной на Qt5, которая запускается автоматически после загрузки операционной системы. Помимо стандартного программного обеспечения, можно использовать ПО сторонних разработчиков (например XBMC Car PC edition). ПО записывается на карту-памяти SD

Основные возможности

Главный экран

Это главный экран интерфейса — то, что вы видите после того, как загрузилась операционная система и оболочка автоматически запустилась. К этому экрану можно вернуться в любой момент, нажав кнопку «

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

В центральной чаcти экрана 6 больших кнопок для перехода в соответствующие разделы приложения: Media, Radio, Navigation, Car DVR, Trip Computer

Кнопка Applications пока не активна.

В верхней части интерфейса расположен аудиоплеер, который отображается всегда в верхней части приложения.

Для загрузки нового плейлиста нужно перейти в раздел «Media»->»Media Audio».

FM радио

Интерфейс FM радио. Для перехода к интернет-радио нажмите кнопку «Internet radio» в верхнем правом углу экрана.

Интерфейс разделён на 2 части — левая часть содержит информацию о текущей радиостанции и кнопки управления, правая часть — список избранных радиостанций.

Верхний аудиоплеер останавливает воспроизведение, когда вы выбираете радиостанцию из списка избранных или начинаете поиск новой станции.

Интернет радио

Для прослушивание интернет радио необходимо подключение к интернету.

Вы можете использовать Wi-Fi приёмник для подключения к беспроводной сети либо 3g/4g usb модем

Нажмите кнопку «Add new station», чтобы добавить новую станцию. После ввода названия станции и адреса потока станция появится в списке.

Для удаления станции нажмите кнопку «Delete selected station»

Вы также можете переключаться между станциями нажимая кнопки «Следующий/Предыдущий» в верхнем аудиоплеере

Медиацентр

Медиацентр состоит из 2 частей — Media Audio и Media Video.

Раздел Media Audio предназначен для просмотра аудифайлов и их добавления в плейлист аудиоплеера.

Чтобы выбрать папку с аудиофайлами нажмите кнопку «Select audio folder». После выбора папки нажмите кнопку «Scan folder».

Найденные аудиофайлы в выбранной папке и вложенных папках отобразятся в списке и будут добавлены в плейлист аудиоплеера.

Медиацентр основан на backend’e gstreamer.. Все популярные аудиоформаты поддерживаются по умолчанию. Если нужный аудиоформат не поддерживается просто скачайте соответствующий плагин к gstreamer’у из репозитория для обеспечения поддержки формата.

Раздел Media Video предназначен для просмотра видеофайлов (включая видеофайлы, записанные автомобильным видеорегистратором). Видеоплеер основан на OMXPlayer, который поддерживает аппаратное видеоускорение. Кнопки управления позволяют Воспроизводить/Останавливать/Ставить на паузу видео, перематывать вперёд/назад, регулировать громкость, открывать полноэкранный режим.

Видеорегистратор

Для начала записи нажмите кнопку «Start video record»

Для просмотра записанных видеофайлов нажмите кнопку «Recorded videos»

В разделе «Settings» можно задать

  • Папку для записи видеофайлов
  • Максимальный размер папки для записи (при достижении лимита старые файлы будут перезаписываться новыми)
  • Продолжительность 1 видеофайла (по истечении этого времени начнётся запись нового видеофайла)
  • Битрейт
  • Видеоразрешение

Бортовой диагностический компьютер

Бортовой диагностический OBD-II компьютер показывает параметры различных систем автомобиля — температуру охлаждающей жидкости, скорость, обороты двигателя, расход топлива, расход воздуха, напряжение на датчиках кислорода и т.д

Также может показывать диагностические коды ошибок

GPS навигация

В качестве программы GPS навигации используется Navit.

Читайте также:  Газовая установка на автомобиль славута карбюратор

Вам нужно вырезать нужный регион из карты OpenStreet при помощи сервиса http://maps5.navit-project.org/ и сохранить его как /usr/share/maps/MyMap.bin file

Конфигурационный файл Navit’а — /etc/navit/navit.xml позволит легко кастомизировать программу по этим инструкциям — http://wiki.navit-project.org/index.php/Configuration

Настройки

Wi-Fi Settings — список доступных беспроводных сетей. Для подключения нажмите кнопку «Connect» напротив нужной сети и введите пароль для установки беспроводного соединения.

Modem settings — настройки 3g/4g modem. Введите APN логин, APN пароль (если требуется), адрес APN точки доступа и нажмите кнопку «Connect» для соединения с мобильным интернетом.

Media settings — настройки медиацентра. Здесь можно задать форматы файлов, которые будут распознаваться как медиаконтент.

OBD settings — настройки диагностического бортового компьютера.

Language settings — Выбор языка интерфейса. Доступны английский и русский.

Где скачать?

ПО будет доступно для скачивания в конце этой недели.

Альтернативное программное обеспечение

В качестве альтернативного ПО можно использовать сборку медиацентра XBMC Car PC edition

Список альтернативного ПО будет пополняться.

источник

Всего понемногу: автомобиль, облако, Raspberry Pi и CAN

Развлекательный центр (in-vehicle infotainment, IVI) стал неотъемлемой частью современного автомобиля. Если раньше это был просто радиоприемник, затем кассетный магнитофон, потом музыку можно было слушать просто с флэшки, а теперь едва хватает двух дисплеев по 10.25-дюймов для приборной панели и развлекательного центра в новом Mercedes A-класса. Кстати, IVI – это уже не только музыка, но и навигация, доступ к Интернет и многие другие возможности внутри транспортного средства, которые потихоньку дают старт воплощению концепции «подключенного автомобиля» (Connected Car). Пожалуй, автотранспорт так же очень близок к реализации концепции Интернета вещей (IoT). И все это достигается благодаря «ассимиляции» компьютера и автомобиля.

В продолжении предыдущей заметки «Автомобиль, Интернет вещей и прочие технологии» хотелось бы рассмотреть идеи для воплощения автомобильного компьютера на уровне открытых проектов и немного затронуть современные тенденции в этом ключе.


Image: Bringing its A game: new 2018 Mercedes A-class hatch revealed – CAR Magazine

Интернет вещей – это не призрак далекого будущего, а вполне реализуемая концепция настоящего. Начиная от лампочек и завершая домашними голосовыми ассистентами – все эти устройства уже имеют доступ в Интернет и могут взаимодействовать между собой. Да, сейчас для этого нужно немного настроить, например, сервис IFTTT и т.п., но прогресс уже не остановить. Как следствие – компьютер начинает проникать в автомобиль, как базовый компонент развлекательного центра. Для автопрома есть вполне обоснованные ограничения, которые прямо влияют на скорость развития IVI – это соблюдение всех мер безопасности. В любом случае, нельзя пренебрегать безопасностью как своей, так и других участников дорожного движения. Автомобиль и дорога – не место для экспериментов. Поэтому проекты энтузиастов, которые хочется рассмотреть в этой заметке – лишь идеи, которые возможно перерастут в будущие прототипы, но уже для коммерческих предложений. Конечно, если речь заходит о безопасности, то доверять следует сертифицированным изделиям, за которыми стоят часы разработок и тестирования.

Поскольку речь пошла о Connected Car и IVI, то стает очевидным использование ресурсов облака с функциями IoT, для реализации на «верхнем уровне» соответствующей программно-аппаратной архитектуры. Например, большинство универсальных облачных платформ, таких как Amazon AWS, Microsoft Azure, IBM Watson или др., содержат практически универсальные сервисы для построения Интернета вещей. По сравнению с сними, будут интересны и открытые решения в этой сфере. Проект Kaa является одним из таких примеров.


Picture: Веб-интерфейс платформы Kaa

Разработчики позиционируют Kaa, как многоцелевую платформу промежуточного уровня для решений IoT, нацеленную на создание приложений для подключенных устройств и интеллектуальных систем. Платформа Kaa представляет собой открытый, многофункциональный инструментарий для разработки встраиваемых систем и решений для облака. Платформа выпущена под лицензией Apache Software License 2.0. Для быстрого ознакомления с платформой можно скачать образ для VirtualBox или развернуть систему в облаке AWS.

Идея Kaa заключается в том, что разработчикам предоставляется SDK для создания приложений с использованием API рассматриваемой платформы, и соответствующие сервисы в облаке, включая компиляцию низкоуровневых программ. В текущей версии поддерживаются языки: C, C++, Java, Objective-C и операционные системы Linux, Windows, Android и iOS, а также заявлена поддержка множества встраиваемых аппаратных платформ, например, Raspberry Pi, Intel Edison.

Тут хочется отвлечься и заметить, что, примерно, как когда-то давно в начале 2000-х годов Intel ушла с рынка микроконтроллеров со своим интереснейшим решением – MCS-51, а сейчас, фактически, мы являемся свидетелями подобного – завершение разработки систем Galileo, Joule и Edison, это не осталось не замеченным у сообщества разработчиков и энтузиастов. Многие идеи из предыдущих систем станут началом для новых устройств и решений. Конечно, если для кристалла i8051 (MCS-51), компания Intel продолжила лицензировать его архитектуру, даже после своего ухода с рынка микроконтроллеров, то сейчас, пожалуй, значительно укрепятся позиции Raspberry Pi и Arduino (на классической платформе микроконтроллеров Atmel), как основных инструментов прототипирования встраиваемых устройств. Но не стоит забывать, что для IoT также интересны разработки на основе устройств ESP8266/ ESP32 Espressif и подобные системы с интегрированным интерфейсом Wi-Fi на кристалле.

Возвращаясь к проекту Kaa, следует отметить, что существует ряд архитектурных особенностей, которые делают разработку IoT на этой платформе исключительно быстрой и легкой. Решения на Kaa не должны зависеть от конкретной аппаратной платформы и, таким образом, проект является совместим практически с любыми подключенными устройствами, датчиками и шлюзами. Конечно, это достигается за счет использования универсальных протоколов связи и стандартизированных интерфейсов между компонентами системы. Также Kaa обеспечивает четкую структуру функций и расширений IoT для различных типов приложений. Они могут использоваться, почти по аналогии технологии plug-and-play, с минимальным кодом, который все-таки должен доработать разработчик для своих систем и устройств. Эти возможности, в сочетании с аналитикой в облаке, делают Kaa достаточно привлекательной платформой для Connected Car и др. решений.

Проект Kaa успешно развивается и совершенствуется, но есть и другая, можно сказать, обратная задача для построения решений Connected Car. Суть ее лежит в выполнении задач тестирования программной части облачной системы и непосредственной эмуляции поведения множества подключенных к облаку автомобилей. Для этой задачи интересны проекты с открытым кодом, например, AutoSIM компании Automatski, который разрабатывается с поддержкой двух лицензий: GPLv3 и коммерческой. В данной системе используются основные протоколы передачи данных, включая MQTT, AMQP, CoAP и др. Пользователь при помощи Rest/Json API управляет работой сервера для симуляции требуемых процессов. AutoSIM теоретически позволяет имитировать поток данных от более чем 100 миллионов устройств.

Читайте также:  Преимущество установки гбо для автомобилей

Kaa и AutoSIM – замечательные примеры открытых систем и, возможно, решений, которые станут очень востребованными для автопрома. Но уже сейчас, на нижнем уровне встраиваемых систем для автомобиля, есть множество интересных открытых решений, которые успешно взаимодействуют с облачными сервисами. Например, платформа Android Auto компании Google. Это решение базируется на Android Automotive и нацелено на объединение смартфона и автомобильного медиа-центра в единую платформу, расширяющую функционал IVI-систем.

Поскольку в современном автомобиле присутствуют множество блоков, которые непосредственно взаимодействуют с медиа-центром, например, с использованием сетей Controller Area Network (CAN), Local Interconnect Network (LIN), Media Oriented Systems Transport (MOST), а также более привычные Ethernet и протоколы TCP/IP, то Android Automotive предлагает некоторую абстракцию – hardware abstraction layer (HAL) между физическими сетями автомобиля и функционалом операционной системы Android, доступного разработчикам.


Figure: Vehicle HAL and Android automotive architecture

Но, если Android вполне прогнозируемое решение от Google, то использование Linux, в качестве платформы для автомобильного развлекательного центра, пожалуй, уже стала классикой жанра. И, как говорится, кто-нибудь определенно должен был предложить проект, например, Automotive Grade Linux. Это открытая разработка, объединяющая автопроизводителей, поставщиков и технологические компании под эгидой The Linux Foundation. Конечно, AGL доступен в виде исходного кода, а для первоначального знакомства можно скачать образ виртуальной машины, например, для запуска в VirtualBox или вполне можно запустить дистрибутив систему на Raspberry Pi. Для работы с AGL SDK потребуется Docker.


Picture: Automotive Grade Linux – Getting Started

Разработка приложений для AGL предусмотрена на HTML5, Qt OpenGL. Сама платформа автомобильного Linux сосредоточена на безопасности. Например, архитектура решения предполагает гипервизор и, конечно, изоляцию критически-важных приложений, систем мультимедиа и развлечений. Приложения и компоненты AGL строятся по модульному принципу с интерфейсами в виде сигналов/событий, что позволяет скрыть сложную программную реализацию низкоуровневых решений, например, реализацию интерфейса CAN-шины, и предоставить простой API для приложений.


Figure: Upgraded Security Blueprint 2017. AGL security overview — Automotive Grade Linux Documentation

Интересно, что разработчики Automotive Grade Linux присматриваются к реализациям уровня архитектуры из других проектов, впрочем, что характерно для всего движения открытых систем. Например, интересным решением в проекте OpenXC является принцип описания в формате JSON всех сигналов CAN, которые нужно обрабатывать. Программный генератор преобразовывает такое описание в файл на языке C ++, которая может быть скомпилирована и т.п.


Figure: OpenXC is an open source, data-focused API for your car

Если говорить о проекте OpenXC, то в нем используется комбинация аппаратного и программного обеспечения с открытым исходным кодом, которое позволяет расширить функционал автомобиля с помощью специальных приложений и подключаемых модулей. Проект сконцентрирован на получении данных об автомобиле и использует стандартный интерфейс диагностического разъема OBD-II. Фактически проект позволяет разработать свое мобильное приложение под Android, iOS или использовать для разработки Python, а в качестве основной автомобильной платформы выбрана марка Ford.

Возвращаясь к проекту Automotive Grade Linux стоит заметить, что в нем Raspberry Pi используется скорее для целей демонстрации и прототипирования, а вот для промышленной платформы выбраны специализированные решения, например, системы на базе ARM SoCs (система на чипе) компании Renesas Electronics серии R-Car Generation 3 и некоторые др.


Figure: R-Car H3. System Block Diagram – Renesas Electronics

Поскольку можно и дальше рассматривать различные платформы для построения IVI-систем, то хочется сделать небольшой вывод об уже приведенных примерах. Все говорит о том, что текущий, 2018 год, будет годом доставляемых пользователю и разработчику приложений. Ведь, как в проекте облака Kaa, так и решениях для операционной системы AGL, используется принцип предоставления практически готового приложения в виде SDK для разработчика. Также широко используется подход на основе описания критериев разрабатываемой системы, например, в формате JSON, и генерации на их основе каркаса приложения. Это чем-то напоминает идеи раскрытые ранее в публикации: «Быстрое прототипирование устройств Интернета вещей», где были рассмотрены решения, в которых разработчики микросхем предоставляют стартовые наборы и т.п. для быстрого ознакомления с их компонентами. Действительно, для программиста, разрабатывающего проект для IoT, всегда будет удобно начать разработку не с детального ознакомления с «неким» API, а с уже готового каркаса приложения.

Давайте обратим внимание на немного другой уровень IVI, где не используются такие многофункциональные системы, как Renesas или др. Интересно рассмотреть подходы на основе уже традиционного решения Raspberry Pi. Понятно, что все это скорее прототипы, т.к. Raspberry Pi вряд ли можно сравнить с промышленной платой, специально разработанной для автомобильных применений, но всегда интересны идеи и подходы энтузиастов. Так, одним из любопытных решений для медиа-центра стоит отметить проект CarPC, который фактически является разработкой и совершенствованием графического интерфейса и дополнительного функционала для известного кроссплатформенного медиапроигрывателя Kodi (ранее проект XBMC).


Picture: CarPC-touch for Kodi

Но Kodi или другой медиа-центр не позволят получить и отобразить данные из бортовой сети автомобиля. Для этого проще всего подключиться к диагностическому разъему автомобиля, как было рассмотрено в нашей предыдущей публикации: «Разъем диагностики OBD-II, как интерфейс для IoT». И тут интересен проект Carberry, представляющий из себя плату расширения для Raspberry Pi.


Picture: Carberry for RPi 3 – Paser

Плата Carberry итальянской компании Paser стоит 123.83 € (евро). Она подключается к стандартному порту расширения Raspberry Pi 3 и поддерживает: CANBUS, GMLAN, инфракрасный приемник и другой функционал. Плата расширения служит отличным дополнением к программным решениям, например, уже упомянутому CarPC. Следует отметить, что программно-аппаратный проект постоянно развивается в сторону расширения функционала и т.д.


Picture: What is AutoPi and What Does It Do? – AutoPi.io

Так же активно развивается немецкий стартап AutoPi, представляющий собой проект автомобильной IoT-платформы. Интересной в AutoPi является аппаратная часть на базе Raspberry Pi Zero и наличием интерфейса OBD-II, а также: 3G/4G, Bluetooth, WiFi, GPS-приемника и других компонентов, умещающихся в достаточно небольшом устройстве.

На фоне всех рассмотренных систем прямо напрашивается вопрос: как подключить к Raspberry Pi интерфейс OBD-II? Очевидным ответом будет использование готовой платы, например, PiCAN2 CAN-Bus Board for Raspberry Pi 2/3 по цене от £26.90 (в фунтах без европейского НДС) или что-то похожее. Но очень заманчиво использовать широко распространённый модуль CAN Bus на базе MCP2515/TJA1050, который доступен на AliExpress от USD $1.36 и чуть дороже. Например, такой модуль значительно дешевле плат расширения на базе MCP2515 для Arduino.

Читайте также:  Установка газа на автомобиль выгода

Стоит заметить, что низкая цена модуля MCP2515/TJA1050 обусловлена его скромным размером и количеством элементов на плате. Она отлично подходит для работы с платами Arduino, но в таком случае при программировании следует не забывать, что в основном на модуль MCP2515/TJA1050 разработчики устанавливают кристалл кварца 8 MHz, а не 16 MHz, который обычно присутствует на большинстве плат Arduino CAN-BUS Shield. Таким образом, само-собой напрашивается использование модуля MCP2515/TJA1050 для подключения к Raspberry Pi и работа с шиной CAN, например, с эмулятором OBD-II, рассмотренным все в той-же статье «Разъем диагностики OBD-II, как интерфейс для IoT» или напрямую с модулем ELM327 и т.п.


Picture: Модуль CAN Bus на базе MCP2515/TJA1050

Но работая с электронными модулями всегда нужно внимательно относиться к напряжению питания и ограничениям по линиям передачи данных. При использовании стандартного интерфейса расширения GPIO платы Raspberry Pi это достаточно актуально. Дело в том, что на разъеме Raspberry Pi присутствуют напряжения 5В и 3.3В, которыми можно запитать внешние схемы, однако, линии ввода-вывода платы работают только с уровнями до 3.3В. Соответственно, плату модуля MCP2515/TJA1050, рассчитанную только на 5В не следует сразу подключать к Raspberry Pi.


Schematic: CAN bus on raspberry pi with MCP2515 – Raspberry Pi Foundation Forum

Решением может стать простой двухсторонний преобразователь уровней 3.3В/5.5В. Таких готовых модулей для шины SPI предостаточно, но MCP2515 имеет дополнительный вывод прерывания, свидетельствующий о готовности данных. Такой вывод позволит процессору Raspberry Pi выполнять свою работу и реагировать на данные от MCP2515 только в требуемые моменты времени, не отвлекаясь постоянно на мониторинг SPI-интерфейса. Следовательно, готовый модуль сопряжения не будет иметь дополнительного контакта и нужно будет просто сделать свою схему.


Picture: Небольшая доработка модуля CAN Bus на базе MCP2515/TJA1050 для работы с Raspberry Pi

Есть и совершенно простое решение, но конечно, не лучшее. Оно основано на том, что микросхема MCP2515 вполне работоспособна с уровнем напряжений от 2.7В до 5.5В, значит ее можно запитать 3.3В с Raspberry Pi, а линии интерфейса SPI и прерывания INT – подключить к GPIO. Для TJA1050 потребуется питание 5В, которое можно подключить все с того же разъема GPIO, но на модуле MCP2515/TJA1050 потребуется аккуратно перерезать дорожку общего питания и подпаяться к ней.

В качестве правильного усовершенствования такой схемы очень разумно использовать делитель напряжения для согласования уровней 5В микросхемы трансивера TJA1050, кстати, можно использовать аналог MCP2551 от компании Microchip или др., и CAN-контроллера MCP2515 с питанием 3.3В (см. рис.). Также интересен проект CAN Simulator на основе Raspberry Pi и, конечно, MCP2515. В качестве трансивера в симуляторе используется микросхема TJA1049, которая хотя и требует питание 5В, но работает без дополнительных компонентов согласования уровней с 3-х вольтовыми системами. Если выбирать самое интересное решение, то, пожалуй, проект CAN-Bus Interface with galvanic isolation самый интересный, так как предлагает использовать трансивер MCP2562, позволяющий без дополнительных элементов подключить контроллер с напряжениями в диапазоне от 1.8В до 5В.


Schematic: CAN + Raspberry Pi

Определившись с аппаратной частью можно переходить к работе с Raspberry Pi на программном уровне. В качестве операционной системы выберем достаточно традиционное решение Raspbian Stretch. А для работы с CAN поддержку драйвера MCP2515 уровня ядра Linux.


Picture: Передача данных между Raspberry Pi и Arduino по шине CAN

Для корректной работы Raspberry Pi с платой интерфейса CAN на базе MCP2515 нужно точно знать версию ядра установленной операционной системы. Для этого следует выполнить команду:
$ uname -a

В нашем случае – это Linux raspberrypi 4.9.59+. Более детальную информацию о дистрибутиве и самой плате можно узнать, используя команды:
$ cat /etc/debian_version – версия базового дистрибутива Debian;
$ cat /etc/os-release – особенности релиза;
$ cat /proc/cpuinfo – версия аппаратной платформы (подробности можно узнать из статьи: «How to Check the Software and Hardware Version of a Raspberry Pi»).

Для работы SPI с микросхемой MCP2515 нужно добавить параметры в конфигурационный файл /boot/config.txt операционной системы:
# Uncomment some or all of these to enable the optional hardware interfaces
dtparam=spi=on
dtoverlay=mcp2515-can0, oscillator=8000000, interrupt=25

Понятно, что если кварц на плате 16 МГц, то нужно указать число «16000000».
# dtoverlay=spi-bcm2835-overlay
Драйвер bcm2835 потребуется явно указывать в конфиге только для старых ядер Linux до kernel 4.4.x+

Следующий параметр следует раскомментировать для современных систем:
# dtoverlay=spi1-1cs

А, вот, после долгих поисков нашлась актуальная строчка, которая позволила заработать нужному модулю на ядре Linux raspberrypi 4.9.59+ в текущей системе:
dtoverlay=spi0-hw-cs

После перезагрузки можно просто «поднять» сетевой интерфейс:
$ sudo ip link set can0 up type can bitrate 500000

Действительно, получается очень удобно, что CAN стает в Raspberry Pi своеобразным сетевым интерфейсом и, например, выполнить посылку или получить дамп принимаемых данных, а также узнать статистику работы:
$ cansend can0 127#DEADBEEF
$ candump can0
$ ip -details -statistics link show can0

Чтобы каждый раз при старте системы не «поднимать» интерфейс, можно добавить пару стандартных строк в файл конфигурации /etc/network/interfaces и т.п.

Screenshot: Передача данных между Raspberry Pi и эмулятором OBD-II на базе платы Arduino
Дальше остается писать новый код или использовать готовые библиотеки. Поскольку драйвер MCP2515 фактически дает системе новый сетевой интерфейс, то разработку можно выполнять практически на любом языке. И тут сразу хочется сказать немного о Go, кроссплатформенном, компилируемом, многопоточном языке программирования, разработанным компанией Google. Этот язык однозначно очень интересен в плане разработки встраиваемых систем и, конечно, будет совсем не сложно найти под него уже готовую библиотеку, подходящую для проекта, например, CAN bus in Go. А если зайти дальше, то следует рассмотреть и проект Gobot – фреймворк, направленный на создание роботов, решений для IoT и т.д. Но, пожалуй, для этой публикации это будет уже слишком много.

К вопросам программирования на Go обязательно следует вернуться, но уже в следующих публикациях. Так же нужно будет не забыть об операционной системе Tizen, на которой ранее базировалась Automotive Grade Linux, а также рассмотреть тренд этого года – голосовые ассистенты в салоне автомобиля и многое др. А в завершении авто тематики текущей публикации просто вспомним о платформе цифровой кабины, представленной Samsung и HARMAN на CES 2018 и немного вдохновимся идеями дизайнеров и инженеров, разработавших этот концепт.

источник

Добавить комментарий

Adblock
detector