
HAT для Raspberry Pi с открытым исходным кодом, обеспечивающий 4 интерфейса CAN для тестирования автомобильных шин, атак типа «человек посередине» для CAN и одновременного мониторинга трафика на нескольких шинах через socketcan.
4CAN — это HAT для Raspberry Pi, который предоставляет 4 интерфейса CAN. 4CAN на 100% совместим с socketcan и can-utils, и его очень легко настроить и запустить. В комплект входит адаптер microUSB-UART для упрощения диагностики Pi, а на плате имеются 4 светодиода, 2 из которых двунаправленные (зеленый/красный). И самая лучшая новость: 4CAN имеет открытый исходный код, так что вы можете собрать свой собственный!
Не так много дешевых устройств, которые предлагают 4 интерфейса CAN, совместимы с socketcan, малы, компактны и хорошо подходят к Raspberry Pi. Наличие 4 шин CAN позволяет тестировать 4 шины CAN одновременно, а также выполнять атаку «человек посередине» (CAN-in-the-middle) на 2 шинах одновременно.
Протестировано на следующих образах raspbian с использованием pi3b+
4CAN также работает с Raspberry Pi 4
4CAN должен также работать с pi0w, но рекомендуется использовать по крайней мере pi3b. Также рекомендуется использовать радиатор на Pi, потому что Pi может немного нагреваться при работе с 4 интерфейсами CAN.
запустите скрипт install.sh (требуется sudo) для автоматической установки всего необходимого, а затем перезагрузите систему.
Скрипт установки выполнит следующее:
sudo mkdir /boot/overlays/bak
sudo cp /boot/overlays/mcp2515* /boot/overlays/bak
sudo cp ./dtbo/*.dtbo /boot/overlays
sudo cp /boot/config.txt /boot/config.txt.bak
cat << EOF >> /boot/config.txt
# 4CAN setup
# the order of the interfaces matter
# ie can3,can2,can1,can0 must be preserved
# otherwise can0 will not REALLY be can0
dtparam=spi=on
dtoverlay=spi1-2cs
dtoverlay=mcp2515-can3,oscillator=16000000,interrupt=24
dtoverlay=mcp2515-can2,oscillator=16000000,interrupt=23
dtoverlay=mcp2515-can1,oscillator=16000000,interrupt=25
dtoverlay=mcp2515-can0,oscillator=16000000,interrupt=22
# enable uart
enable_uart=1
EOF
Перед использованием 4CAN убедитесь, что загружен модуль ядра socketcan с помощью sudo modprobe can_dev. Это не должно быть необходимым, так как Pi загрузит правильный модуль ядра на основе дерева устройств, но проверить не помешает.
После установки запустите 4can.sh, чтобы поднять интерфейсы CAN
./4can.sh
Подключите интерфейсы CAN и выполните candump -acc any, чтобы проверить, работают ли они.
примечание: требуется can-utils
для установки: sudo apt install can-utils
Примечание: Иногда интерфейсы поднимаются не по порядку; перезагрузите Pi, и это должно исправить ситуацию. Если нет, возможно, придется изменить /boot/config.txt.
4CAN использует несколько GPIO на Raspberry Pi. Доступные для использования выводы GPIO:
3, 5, 8, 10, 27, 28, 32, 36 (физическая нумерация выводов)
Все контакты земли соединены вместе и могут использоваться как заземление. Контакты 3,3 В и 5 В также могут использоваться для подачи напряжения.
Обратитесь к схеме для получения дополнительных сведений.
Не забудьте подключить внешнюю землю CAN к земле 4CAN (соединение «C» на клеммнике). Это обеспечит хорошую целостность земли и минимизирует ошибки передачи/приема.
![]() | ![]() |
При использовании 4CAN с HyenaPlate провода CAN можно проложить под Pi и подключить к макетной плате. Это в основном для эстетики, но другие преимущества включают отсутствие необходимости постоянно закручивать/откручивать клеммы для создания новых соединений, более простую диагностику и более стабильные соединения.
Для еще большей эстетики можно использовать цветовую маркировку резисторов для назначения цветов сигналам. Например, на изображении выше:
| интерфейс | CAN-L |
|---|
черный можно использовать для земли.
4CAN был вдохновлен и основан на адаптере IndustrialBerry QUAD CAN BUS для Raspberry CanBerry. Хотя мы изменили дизайн в соответствии с нашими потребностями, мы должны отдать должное фантастической работе, проделанной IndustrialBerry. 4CAN, а также IndustrialBerry распространяются по лицензии Creative Commons Attribution Share-Alike.
Также следует выразить благодарность Джорджу Тарновскому (George Tarnovsky) за схему, разводку, сборку и проверку!
| CAN-H |
|---|
| CAN0 | коричневый | красный |
| CAN1 | оранжевый | желтый |
| CAN2 | синий | фиолетовый |
| CAN3 | зеленый | белый |