项目简介
本项目是基于Arduino和ESP32 S3开发的蓝牙CAN - BUS读取器。开发者在尝试现有相关项目失败后,受已有项目启发自行实现。该读取器能够把汽车CAN总线数据通过蓝牙进行传输,适用于汽车数据记录场景,可与RaceChrono软件搭配使用。
项目的主要特性和功能
- 芯片兼容性:支持ESP32 S3和C3两种芯片变体,经测试二者性能相近,蓝牙传输速度是实际瓶颈。
- 多任务处理:借助FreeRTOS任务,将CAN和蓝牙工作负载分配到可用核心,能处理单核心(C3)和双核心(S3)情况。在Google Pixel 7上报告频率可达120Hz,单个PID报告速率实际接近200Hz。
- 速率限制:支持按PID进行速率限制,可对特定PID设置不同的更新频率,区分不同数据的优先级。
- 日志配置:支持可配置的串口日志级别,开启调试级别能输出性能统计信息。
安装使用步骤
硬件准备
使用ESP32 - S3 Supermini开发板、SN65HVD230 CAN收发器breakout板和通用12V转5V DC - DC降压转换器,通过OBD - II公头插头连接汽车电源和CAN总线。可添加电源开关和5V LED,并将所有部件装入自定义3D打印外壳。
库安装
需要安装以下Arduino库: - NimBLE - Arduino:https://www.arduino.cc/reference/en/libraries/nimble - arduino - EasyLogger:https://www.arduino.cc/reference/en/libraries/easylogger
Arduino配置
可按需调整配置,但Events和Arduino必须在核心1上运行。参考配置如下: - USB CDC On Boot: Enabled - Events Run on: Core 1 - Arduino Runs On: Core 1 - Partition scheme: Default - Upload Mode: USB - OTG CDC (TinyUSB) - USB Mode: Hardware CDC and JTAG - Upload speed: 115200
配置文件设置
项目提供了 config.h.example
文件,需将其复制或重命名为 config.h
后再编译Arduino项目。config.h
包含所有用户可配置参数,如设备蓝牙名称、日志级别、CAN收发器连接的GPIO引脚、是否启用BLE 5.0功能、全局更新速率等。还可在文件中设置每个PID的更新频率。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】