奥迪远程控制系统 - 2024.5
近年来,国产新能源汽车品牌迅速崛起和物联网技术的发展,几年前火爆的智能家居风潮,如今已经蔓延到了汽车领域。现在的汽车如果没有配备一个专属 APP,简直就像是无法登台的古董。作为一名 iOS 开发爱好者和燃油车爱好者,我当然不会闲着。我打算通过自己的尝试,对这辆“老古董”进行一番改造,使其变得更 City 一些。
传统与智能的碰撞
我一直对智能技术充满了兴趣。从智能手机到智能家居,科技改变了我们生活的方方面面。然而,当我看到自己心爱的燃油车时,我总觉得它有些落伍。它那次世代的车机系统缺少现代科技的加持,也没有各种酷炫的 APP 可以进行远程查看车辆状态,远程启动等。但对机械和内燃机十分着迷的我,迟迟不舍得放弃内燃机加入电车行列。因此,我决定通过自己的努力,给它注入一些现代化的元素。
第一步:构思与规划
自己改造一辆车听起来并不简单,尤其是对于汽车系统没有相关经验的我来说。为了确保这次改造能够顺利进行,我做了大量的研究,阅读并研究了国内外许多关于智能汽车改装的文章和案例。经过一番思考,我决定开发一套车辆远程监测控制系统。
用户需求:
1. 实时监控车辆状态,各部件保养记录,以确保行车安全。
2. 通过手机 APP 远程控制车辆,提升便利性。
3. 直观的界面设计和简单的操作流程。
功能需求:
1. 车辆状态监控:展示车辆的速度、油耗、发动机各项状态等实时数据。
2. 远程控制:实现远程启动引擎、解锁/上锁车门、开关车窗等功能。
3. 历史数据 LOG 记录:记录车辆的行驶历史、油耗、发动机各项状态实时数据记录等。
4. GPS 定位:实时获取车辆当前位置,航行,历史轨迹,车身姿态等。
系统设计
客户端:iOS 应用,负责与用户交互,发送控制命令和展示车辆状态。
服务器端:使用树莓派4B作为车载主机,搭建 NodeJS 后台服务,使用 Websocket 实时接受来自客户端的请求,转发给车载设备,并将车载设备的数据实时返回给客户端。搭建 Redis 服务做数据缓存暂存,使用 Mysql 数据库做数据持久化存储。
车载设备:CAN 协议数据分析仪,通过 CAN 线与车辆 ECU 直接连接,获取车辆实时数据并接收控制命令。
网络通讯:使用移远 RM500U-CN 5G 模块,配合开发板进行蜂窝数据的传输及 5G 模块的串口控制。使用 GL-MT3000 WiFi 路由器提供最高 2402 Mbps (5GHz) 车载 Wi-Fi 访问速度。
GPS定位:使用 U-Blox ZED-F9K 车规级高精 GPS 模块,实现分米级定位精度,并配合自带高精度惯性导航芯片,实现进入隧道、地库等 GPS 信号死角仍可继续定位。
继电器:使用树莓派 GPIO 对继电器进行控制,用于模拟车钥匙的解锁/上锁。奥迪的车辆协议无法直接通过 CAN 协议解锁车辆,只能预埋一个车钥匙,并从钥匙 PCB 按钮上飞线接到继电器上,由继电器进行控制模拟。
供电:整套系统需长时间通电运行,原车铅酸蓄电池肯定维持不了该系统的长期运行,所以额外增加了一块 110Ah 的磷酸铁锂电池作为该系统的主要供电来源。配合 40A 的车载行车充电器,可在车辆行驶时,对该电池进行补能充电。
硬件外壳:根据各个模块尺寸,使用 Sketch 画尺寸图,定制专用铝壳。
总结
通过本次项目的开发,我成功实现了一款功能齐全的车辆远程控制系统,给6年前落伍的燃油车配上了 APP 远程控制,车载 5G 高速 Wifi 等。在此过程中,对车辆的 CAN 协议、抓包和逆向工程也有了更深的了解。