0xCAFEDECAF/VanLiveConnect

GitHub: 0xCAFEDECAF/VanLiveConnect

基于 ESP8266/ESP32,通过 Wi-Fi 将老旧 PSA 车辆的 VAN 总线数据实时投射到手机屏幕的开源方案。

Stars: 51 | Forks: 6

PSA (Peugeot, Citroën) VAN bus 实时连接

直接从 VAN 总线获取 PSA 车辆 (Peugeot, Citroën) 的实时数据,并在您的智能手机或平板电脑上显示。

[![发布版本](https://img.shields.io/github/release/0xCAFEDECAF/VanLiveConnect.svg?style=plastic)](https://github.com/0xCAFEDECAF/VanLiveConnect/releases/latest/) [![发布日期](https://img.shields.io/github/release-date/0xCAFEDECAF/VanLiveConnect.svg?style=plastic)](https://github.com/0xCAFEDECAF/VanLiveConnect/releases/latest/) [![平台 ESP8266](https://img.shields.io/badge/Platform-Espressif8266-yellow)](https://github.com/esp8266/Arduino) [![平台 ESP32](https://img.shields.io/badge/Platform-Espressif32-orange)](https://github.com/espressif/arduino-esp32) [![框架](https://img.shields.io/badge/Framework-Arduino-blue)](https://www.arduino.cc/) [![构建 Sketch](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/e3f62efde5121909.svg)](https://github.com/0xCAFEDECAF/VanLiveConnect/actions/workflows/compile.yml) ## 📝 目录 - [截图](#screenshots) - [描述](#description) - [技术细节](#details) - [电路图](#schematics) - [构建项目](#building) - [提示与技巧](#hints_tips) - [使用的库](#libraries) - [待完成工作](#todo) - [常见问题](#faq) - [参考资料](#extref) - [许可证](#license) ## 📟 截图 别废话了,给我们看截图! **主界面:** ![screen](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/9a2a944bf2121910.png) **调谐器:** ![screen](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/34e3faf201121911.png) **调谐器预设弹出窗口:** ![screen](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/fec0eef639121913.png) **音频设置:** ![screen](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/25029d4a86121914.png) **CD 播放器:** ![screen](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/bf8a7272a3121916.png) **CD 换碟机:** ![screen](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/fee3eb7958121917.png) **第二行程计数器:** ![screen](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/95e9fa6cef121919.png) **“飞行前”检查:** ![screen](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/4f18ecb7b9121920.png) **仪表盘 (YMMV 🤣):** ![screen](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/832341399a121922.png) **当前位置:** ![screen](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/0e3663b735121923.png) **卫星导航主菜单:** ![screen](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/c370b3125e121925.png) **卫星导航输入目的地 - 城市:** ![screen](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/8fcbf025e1121927.png) **卫星导航 - 个人地址输入(非本人!):** ![screen](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/e8eaedd61b121928.png) **卫星导航指引:** ![screen](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/add6a11010121930.png) **车门开启提示:** ![screen](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/346b6d3ffc121932.png) **警告提示:** ![screen](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/0bde8c1110121933.png) ## 🎈 描述 此应用程序创建一个 Wi-Fi 热点,您可以使用智能手机连接该热点。 它包含一个强制门户,因此一旦您连接成功,手机上就会显示一条登录消息。 如果您点击该消息,浏览器将打开,实时可视化显示从 VAN 总线读取的数据。 * Wi-Fi 热点的 SSID 是:"PSA display AP"(带空格,不带引号)。 * 密码是 "12345678"(不带引号)。 当然,您可以通过编辑 [`Config.h`](VanLiveConnect/Config.h#L26) 文件来修改 SSID 并选择您自己的密码(或不设置密码)。 ## 🕹️ 支持的 MFD 功能 另请参阅上方的[截图](#screenshots)。 * 带外部温度的时钟 * 仪表(速度、转速、燃油量、发动机温度、灯光和指示灯) * “飞行前”检查(机油和燃油量、发动机温度) * 里程表和行程计数器 * 实时燃油数据(消耗量、剩余里程) * 收音机(调谐器) * 磁带播放机(嗯……如今连 CD 都已成古董 😉) * 主机内置 CD 播放器 * CD 换碟机单元 * 通知和警告 * 卫星导航(地图已过时,但这是个不错的小玩意 😇) * 多语言:英语、法语、德语、西班牙语、意大利语和荷兰语 * 设置颜色主题和亮度 * 设置格式和单位 不支持的功能: * 设置日期和时间:您的智能手机已经知道了…… ## ⚙️ 技术细节 在 2000 年代初期,PSA 集团(Peugeot 和 Citroën)使用 ["VAN" bus] 作为各种舒适性设备之间的通信协议。后来,大约在 2005 年,他们开始在新车中用 CAN bus 协议取代此协议,但部分车型直到 2009 年内部仍使用 VAN bus。 [此概览](https://github.com/morcibacsi/PSAVanCanBridge#compatibility) 列出了据称配备了 VAN(舒适性)总线的车辆。 该应用程序将接入车辆的 VAN 总线,并在您的智能手机、平板电脑、笔记本电脑或任何其他运行网页浏览器的设备上的浏览器中可视化捕获的数据。该应用程序可在任何基于 ESP8266 / ESP8285 的开发板上运行,例如支持 [Wemos/Lolin D1 mini]。也支持 ESP32,例如 [LilyGO TTGO T7 Mini32]。 该应用程序将在标准端口 80 上托管 HTML 网页。它还将在标准端口 81 上托管 WebSocket 服务器。提供的网页附带一些 JavaScript,这些 JavaScript 连接到此 WebSocket 服务器以流式传输要可视化的实时数据。 由此 sketch 提供服务的网页本身使用并自托管以下开源包: * jQuery v3.5.1 - 压缩版,生产版本 - 原始下载 [此处](https://code.jquery.com/jquery-3.5.1.min.js)。 * FontAwesome v5.15.2 - 原始下载 [此处](https://use.fontawesome.com/releases/v5.15.2/fontawesome-free-5.15.2-web.zip)。 如前所述,提供的网页自托管所有资源。不需要互联网连接! ## 🔌 电路图 您通常可以在主机(车载收音机)的 ISO 块 "A" 的引脚 2 和 3 上找到 VAN 总线。请参阅 http://web.archive.org/web/20230315215552/https://en.wikipedia.org/wiki/Connectors_for_car_audio 和 https://github.com/morcibacsi/esp32_rmt_van_rx#schematics 。 将基于 ESP32/ESP8266 的开发板连接到车辆 VAN 总线有多种方法: 1. 使用 [MCP2551] 收发器,将其 CANH 和 CANL 引脚连接到车辆的 VAN 总线。 由于 MCP2551 具有 5V 逻辑,因此需要一个 5V ↔ 3.3V [电平转换器] 将收发器的 CRX / RXD / R 引脚通过电平转换器连接到 ESP 开发板的 GPIO 引脚。 可以在此处订购带有 MCP2551 收发器的开发板,例如 [此处](https://domoticx.net/webshop/can-bus-transceiver-module-5v-mcp2551/) 或 [此处](https://nl.aliexpress.com/item/1005003450161614.html)。 有两种可能的变体: * 使用 +12 伏开关线(ISO 连接器 "A" 块的引脚 4): ![schema](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/d8a4f14722121935.png) * 使用 +12 伏常电线路(ISO 连接器 "A" 块的引脚 7)。为了防止电池耗尽,ESP 开发板将在 5 分钟后进入睡眠状态([可在 `Config.h` 中配置](VanLiveConnect/Config.h#L82))。 此设置需要连接 [GPIO 线路 D1](VanLiveConnect/Config.h#L118),以便 ESP 开发板在 VAN 总线上发生任何活动时立即唤醒。 ![schema](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/f9834c9143121937.png) * 同上(使用 +12 伏常电线路),使用 ESP32 开发板: ![schema](https://raw.githubusercontent.com/0xCAFEDECAF/VanLiveConnect/main/extras/Schematics/Schematic%20with%20ESP32%20using%20MCP2551%20permanent%20%2B12V_bb.png) 2. 使用 [SN65HVD230] 收发器,将其 CANH 和 CANL 引脚连接到车辆的 VAN 总线。 SN65HVD230 收发器已经具有 3.3V 逻辑,因此可以将收发器的 CRX / RXD / R 引脚直接连接到 ESP32/ESP8266 开发板的 GPIO 引脚。 可以在此处订购带有 SN65HVD230 收发器的开发板,例如 [此处](https://domoticx.net/webshop/can-bus-transceiver-module-3-3v-sn65hvd230-vp230/) 或 [此处](https://eu.robotshop.com/products/waveshare-can-board-sn65hvd230)。 ![schema](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/6dbb9a6d6f121940.png) 上述描述的“+12 伏常电”变体也适用于此设置。 3. 最简单的原理图是完全不使用收发器,而是使用两个 4.7 kOhm 电阻将 VAN DATA 线连接到地。将 ESP8266 开发板的 GPIO 引脚连接到由此两个电阻形成的 1:2 [分压器]。效果可能因情况而异。 ![schema](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/c4c3c56216121943.png) ### Wi-Fi 连接 #### 电源 经过数小时的实验,我发现当电源供电不稳定或质量不佳时,ESP 开发板的 Wi-Fi 连接性能会严重下降。Wi-Fi 功耗负载具有突发性,因此请务必使用高质量的电源。尽量减少使用耗电的设备和外围设备,例如内置 LED。 #### 位置 我注意到,当 ESP 开发板被其他电子设备或线路包围时,其 Wi-Fi 连接性能会下降。性能下降可能是由于电子干扰,或者仅仅是因为这些区域内的环境温度较高。Wi-Fi 接入点需要周围有大量的空气! 建议不要将 ESP 开发板放置在其他电子设备附近或大量线路附近(例如中控台内部、原始 MFD 或主机后面)。一个好的位置似乎是脚踏处(例如手套箱下方)。我使用 [此线材套装](https://www.tinytronics.nl/en/cables-and-connectors/cables-and-adapters/prototyping-wires/dupont-compatible-and-jumper/dupont-jumper-wire-female-female-100cm-10-wires) 将开发板及其外围设备连接到 ISO 10487 连接器。 ### 红外控制 当使用 IR 遥控器进行导航(例如在卫星导航菜单中)时,这通常不会反映在舒适性总线上。因此,仅读取 VAN 舒适性总线不足以检测例如菜单或列表的滚动。 要在浏览器屏幕上查看菜单和列表中的导航,只需连接一个红外接收器,例如 [这种](https://www.tinytronics.nl/shop/en/communication/infrared/hx1838-ir-receiver-38khz),连接到引脚 D5、D6 和 D7 (ESP8266) 或 18、19 和 23 (ESP32),面朝外;另请参阅上方的原理图。 ## 🚀 构建项目 在继续此项目之前,请确保检查所有以下先决条件。 ### 安装 Arduino IDE 请参阅 [Arduino IDE](https://www.arduino.cc/en/software)。我目前使用的是 [版本 1.8.19](https://downloads.arduino.cc/arduino-1.8.19-windows.exe),但其他版本可能也能正常工作。 ### 基于 ESP8266 的开发板 基于 ESP8266 的开发板的一个示例是 [Wemos D1 mini]。 #### 1. 在 Arduino IDE 中安装开发板包 我们将使用 Arduino IDE 对 ESP8266 进行编程,因此您必须安装 ESP8266 插件。您需要: * [Arduino IDE](https://www.arduino.cc/en/software),并安装了 * [ESP8266 开发板包](https://arduino-esp8266.readthedocs.io/en/stable/installing.html)。 我目前使用的是 [版本 3.1.2](https://github.com/esp8266/Arduino/releases/tag/3.1.2),但其他版本似乎也能正常工作(我测试了版本 2.6.3 ... 3.1.2)。 按照下一个教程安装 IDE 和 ESP8266 开发板包: * [在 Arduino IDE 中安装 ESP8266 开发板 (Windows, Mac OS X, Linux)](https://randomnerdtutorials.com/how-to-install-esp8266-board-arduino-ide/) #### 2. 安装库 在 Arduino IDE 中,转到 "Sketch" 菜单 → "Include Library" → "Manage Libraries..."。确保安装: * [VAN bus 库](https://github.com/0xCAFEDECAF/VanBus) - 测试了版本 0.2.4 及更高版本。最好使用 [最新版本](https://github.com/0xCAFEDECAF/VanBus/archive/refs/heads/master.zip)。 * [me-no-dev 的 "ESP Async TCP" 库,由 ESP32Async 分支](https://github.com/ESP32Async/ESPAsyncTCP) - 测试了版本 2.0.0 。 * [me-no-dev 的 "ESP Async WebServer" 库,由 ESP32Async 分支](https://github.com/ESP32Async/ESPAsyncWebServer) - 测试了版本 3.8.0、3.9.0 和 3.9.2 。 有关使用 库管理器的更多说明,您可以浏览: * [Arduino 的此教程](https://docs.arduino.cc/software/ide-v1/tutorials/installing-libraries),以及 * [Adafruit 的此说明](https://learn.adafruit.com/adafruit-all-about-arduino-libraries-install-use/library-manager) #### 3. 开发板设置 我使用开发板 "LOLIN(WEMOS) D1 R2 & mini" 进行了测试。其他基于 ESP8266 的开发板可能也可以工作。 在 Arduino IDE 中,转到 "Tools" 菜单,然后选择: * CPU frequency: "160 MHz" * Flash size: "4MB (FS:1MB OTA:~1019KB)" * lwIP variant: "v2 Higher Bandwidth (no features)" * SSL support: "Basic SSL ciphers (lower ROM use)" 这是经测试可用的开发板设置图片: ![Board settings](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/36b02838ec121945.png) 通过将变量 `build.sdk` 设置为: ``` build.sdk=NONOSDK22x_191122 ``` 在以下文件中: ``` %LOCALAPPDATA%\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\platform.txt (Windows) $HOME/.arduino15/packages/esp8266/hardware/esp8266/3.1.2/platform.txt (Linux) ``` 我似乎获得了更好的 Wi-Fi 性能。 #### 4. 编译 下载 https://github.com/0xCAFEDECAF/VanLiveConnect/archive/refs/heads/main.zip 并解压。导航到其子文件夹 `VanLiveConnect` 并双击 `ESP8266_IDE.bat` 文件 或 `ESP8266_IDE.sh` 文件。这将打开具有所有正确开发板设置的 Arduino IDE。 #### 5. 上传 要上传编译后的项目,您需要以下内容: * [COM 端口驱动程序](https://www.wemos.cc/en/latest/ch340_driver.html),用于通过 USB 串口上传。 首次上传始终通过 USB 串口进行。之后,"Over The Air" (OTA) 更新功能将允许在 Arduino IDE 中使用 "网络端口" 通过 Wi-Fi 进行上传。请参阅 [此文档](https://arduino-esp8266.readthedocs.io/en/latest/ota_updates/readme.html) 以获取有关使用 arduino-esp8266 的 OTA 功能的帮助。 ![Compile and upload](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/5cba9ca607121947.png) 如果您没有编译和上传的经验,请查看这个优秀的 [Wemos D1 mini 开发板教程](https://www.youtube.com/watch?v=WnRk8w7SyTo) #### 6. 首次运行 当编译后的 sketch 首次在全新硬件上启动时,需要几秒钟来初始化基于 Flash 的文件系统。根据我的经验,上传到全新硬件的 sketch 二进制文件有时会导致开发板第一次崩溃,但之后它可以正常工作(上传)。 ### 基于 ESP32 的开发板 基于 ESP32 的开发板的一个示例是 [LilyGO TTGO T7 Mini32]。 #### 1. 在 Arduino IDE 中安装开发板包 对于基于 ESP32 的开发板,您需要安装 ESP32 开发板包。 我目前使用的是 [版本 3.3.3](https://github.com/espressif/arduino-esp32/releases/tag/3.3.3),但其他版本可能也能正常工作。(我测试了版本 1.0.6、2.0.17 和 3.3.3 。) 按照 [此教程](https://randomnerdtutorials.com/installing-the-esp32-board-in-arduino-ide-windows-instructions/) 安装 ESP32 开发板包。或者,转到 [此页面](https://docs.espressif.com/projects/arduino-esp32/en/latest/installing.html) 获取说明。 #### 2. 安装库 在 Arduino IDE 中,转到 "Sketch" 菜单 → "Include Library" → "Manage Libraries..."。确保安装: * [VAN bus 库](https://github.com/0xCAFEDECAF/VanBus) - 测试了版本 0.2.4 及更高版本。最好使用 [最新版本](https://github.com/0xCAFEDECAF/VanBus/archive/refs/heads/master.zip)。 * [me-no-dev 的 "Async TCP" 库,由 ESP32Async 分支](https://github.com/ESP32Async/AsyncTCP) - 测试了版本 3.4.9 。 * [me-no-dev 的 "ESP Async WebServer" 库,由 ESP32Async 分支](https://github.com/ESP32Async/ESPAsyncWebServer) - 测试了版本 3.8.0、3.9.0 和 3.9.2 。 对于 ESP32 开发板包版本 1.0.6 及更低版本,您仍然需要旧的分支: * [me-no-dev 的 AsyncTCP 库,由 dvarrel 分支](https://github.com/dvarrel/AsyncTCP) - 测试了版本 1.1.4 。 * [me-no-dev 的 ESPAsyncWebSrv 库,由 dvarrel 分支](https://github.com/dvarrel/ESPAsyncWebSrv) - 测试了版本 1.2.6 和 1.2.7。跳过版本 1.2.8 和 1.2.9:它们无法在 ESP32 1.0.6 及更低版本上编译。 有关使用 Arduino 库管理器的更多说明,您可以浏览: * [Arduino 的此教程](https://docs.arduino.cc/software/ide-v1/tutorials/installing-libraries),以及 * [Adafruit 的此说明](https://learn.adafruit.com/adafruit-all-about-arduino-libraries-install-use/library-manager) #### 3. 开发板设置 在 Arduino IDE 中,转到 "Tools" 菜单,然后选择: * CPU frequency: 240 MHz (WiFi/BT) * Partition scheme: Minimal SPIFFS (1.9MB APP with OTA/190KB SPIFFS) 这是经测试可用的开发板设置图片: ![Board settings](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/e06a21ce4f121948.png) #### 4. 编译 下载 https://github.com/0xCAFEDECAF/VanLiveConnect/archive/refs/heads/main.zip 并解压。导航到其子文件夹 `VanLiveConnect` 并双击 `ESP32_IDE.bat` 文件 或 `ESP32_IDE.sh` 文件。这将打开具有所有正确开发板设置的 Arduino IDE。 #### 5. 上传 请参阅上方的 [“上传”](#uploading) 部分。 ## 💡 提示、技巧 ### Android 同时连接 Wi-Fi 和移动数据 理想情况下,我们希望所有 Android 应用程序都能够通过移动数据连接到互联网,同时 Android 客户端设备显示通过(非互联网)"PSA display AP" Wi-Fi 连接传入的车辆数据。 但是,Android 不喜欢没有互联网连接的 Wi-Fi 连接。默认情况下,它不会使用它。 我们希望说服 Android,它可以将 Wi-Fi 连接用于 "PSA display AP",而将移动数据连接用于访问互联网。为此,我们需要做几件事: #### 设置 **第 1 步。** 当连接到 ESP 提供的 Wi-Fi 热点时,您的 Android 设备将显示系统通知 "PSA display AP has no Internet connection. Tap for options.",类似于: 点击时,会出现如下弹出窗口: 确保选中 "Don't ask again for this network",然后点击 "Yes"。 顶部的 Wi-Fi 图标现在显示,但其中有一个小 "X"。这个小 "X" 表示 Wi-Fi 连接不提供互联网连接。尽管如此,ESP 的登录页面 'http://<...>/MFD.html' 可以成功访问。 尽管 Android 设备现在正在使用 Wi-Fi 进行 "互联网访问",但它仍然看到连接非常有限。Android 尝试访问各种其他互联网地址,(显然)失败了。因此,Android 设备现在显示不同的系统通知:"PSA display AP has limited connectivity. Tap to connect anyway.": **第 2 步。** 当出现此 "limited connectivity" 通知时,确保选中 "Don't ask again for this network",然后点击 "Yes": 顶部的 Wi-Fi 图标现在显示,没有小 "X"。现在可以通过 Wi-Fi 访问 ESP 的登录页面,即使启用了移动数据。 但是,Android 设备现在无法访问互联网。所有网络访问都路由到不提供互联网的 Wi-Fi 连接。虽然这有利于访问 "PSA display AP",但这会阻止任何应用程序访问互联网。 **第 3 步。** 为了使 Android 设备能够在连接到 "PSA display AP" 的同时访问互联网,请转到 "Settings > Network & internet > Wi-Fi > Wi-Fi preferences > Advanced" 并打开 "Switch to mobile data automatically": #### 技术细节 为了使 Wi-Fi 连接用于 "PSA display AP",移动数据连接用于访问互联网,ESP 中的 Web 服务器 ("WebServer.ino") 提供了一个特殊功能:[它将响应任何对 '.../generate_204' 的请求](https://github.com/0xCAFEDECAF/VanLiveConnect/blob/07993f7bd99c61f70cf326d0882f82bfa13e7644/VanLiveConnect/WebServer.ino#L267)。 这使 Android 相信 Wi-Fi 连接具有互联网连接,因此它选择 Wi-Fi 作为首选介质。 不幸的是,结果是现在所有应用程序都将尝试使用(非互联网)Wi-Fi 连接,因此所有应用程序都无法访问互联网。 解决方案是让 ESP 中的 Web 服务器在 ESP 和 Android 设备之间的数据 连接建立良好后,[停止响应](https://github.com/0xCAFEDECAF/VanLiveConnect/blob/07993f7bd99c61f70cf326d0882f82bfa13e7644/VanLiveConnect/WebServer.ino#L256) 对 '.../generate_204' 的请求。 这样,会发生以下事件序列: 1. 一旦 ESP 通电(或从睡眠中唤醒),它就会开始提供其 "PSA display AP" Wi-Fi 热点。 2. Android 设备连接到 Wi-Fi 热点。顶部的 Wi-Fi 图标现在显示,没有小 "X"(因为 ESP 正在响应 '.../generate_204' 请求)。 3. Android 设备上的浏览器可以使用 Wi-Fi 连接访问 ESP 的登录页面 'http://<...>/MFD.html'。 4. 登录页面中的 JavaScript 代码建立 WebSocket 连接:车辆数据被发送到 Android 设备并显示在其浏览器中。 5. 大约在 WebSocket 连接建立 [7 秒](https://github.com/0xCAFEDECAF/VanLiveConnect/blob/07993f7bd99c61f70cf326d0882f82bfa13e7644/VanLiveConnect/WebServer.ino#L245) 后,ESP 上的 Web 服务器停止响应 '.../generate_204' 请求。 6. 经过几次重试后,Android 现在认为 Wi-Fi 热点不再提供互联网连接。因此,它切换到其移动连接。但是,WebSocket (TCP/IP) 连接保持建立状态! 7. Android 设备上的应用程序现在可以通过移动连接访问互联网,而车辆数据通过刚刚建立的 WebSocket (TCP/IP) 连接传入。 更多背景信息和说明可以在 [此处](https://www.reddit.com/r/HomeNetworking/comments/r0sruo/android_ignores_routing_table_uses_phone_data/) 和 [此处](https://superuser.com/questions/701956/android-devices-dont-know-route-to-a-host-located-in-the-same-network) 找到。 ### OpenVPN 如果您在 "Always-on VPN" 模式下使用 [OpenVPN for Android](https://f-droid.org/en/packages/de.blinkt.openvpn/),则需要添加到本地网络的路由。如果没有此路由,您的智能手机或平板电脑设备在连接到 ESP 的 Wi-Fi 热点后将无法找到 ESP 设备。 添加路由: * 打开 "OpenVPN for Android" 应用程序 * 点击连接配置文件旁边的 'pen' 图标 * 点击 'ADVANCED' 选项卡 - 确保 'Persistent tun' *未* 选中 * 点击 'ROUTING' 选项卡 - 确保选中 'Bypass VPN for local networks' * 在同一选项卡中,在 'IPv4' 部分下: - 确保 *未* 选中 'Use default route' - 点击 'Excluded Networks' - 输入 `192.168.4.0/24`(注意:`"192.168.4."` 部分必须与 [`Config.h`](VanLiveConnect/Config.h#L32) 中指定的 IP 地址匹配)。 - 点击 'OK' 'ROUTING' 选项卡将如下所示: 完成上述设置后,按 Android 'Back' 按钮返回连接配置文件概览。 ### 自动化您的智能手机或平板电脑 自动化所有必要的操作以便在您进入车辆后立即在智能手机或平板电脑上显示车辆信息是可能的(而且非常方便!)。提供所有必要功能的一个优秀应用程序是 [MacroDroid - Device Automation] 以下是显示两个执行所有必要操作的宏的截图: || | |---|---| ||| #### "VanLiveConnect" 宏 连接到 Wi-Fi SSID "PSA display AP" 后,执行以下操作: * 将屏幕超时值设置为 500 分钟,以防止屏幕在驾驶时变黑 * 浏览到主屏幕 (http://192.168.4.1/MFD.html) * 将屏幕亮度设置为 100% * 进入 "全屏" #### "VanLiveDisconnect" 宏 与 "PSA display AP" 断开连接后,执行以下操作: * 将屏幕亮度恢复为 88% * 将屏幕超时值恢复为 2 分钟 * 返回系统主(启动器)屏幕 当然,上述操作只是建议。根据您的喜好自定义! ## 📚 使用的库 在 Arduino IDE 中,使用了以下库: * [VAN 总线库](https://github.com/0xCAFEDECAF/VanBus) - 至少需要版本 0.2.4 。 此外,对于 **Arduino/ESP32**,使用了以下库: * [me-no-dev 的 "Async TCP" 库,由 ESP32Async 分支](https://github.com/ESP32Async/AsyncTCP) - 测试了版本 3.4.9 。 * [me-no-dev 的 "ESP Async WebServer" 库,由 ESP32Async 分支](https://github.com/ESP32Async/ESPAsyncWebServer) - 测试了版本3.8.0、3.9.0 和 3.9.2 。 对于 ESP32 开发板包版本 1.0.6 及更低版本,您仍然需要旧的分支: * [me-no-dev 的 AsyncTCP 库,由 dvarrel 分支](https://github.com/dvarrel/AsyncTCP) - 测试了版本 1.1.4 。 * [me-no-dev 的 ESPAsyncWebSrv 库,由 dvarrel 分支](https://github.com/dvarrel/ESPAsyncWebSrv) - 测试了版本 1.2.6 和 1.2.7。跳过版本 1.2.8 和 1.2.9:它们无法在 ESP32 1.0.6 及更低版本上编译。 此外,对于 **Arduino/ESP8266**,使用了以下库: * [me-no-dev 的 "ESP Async TCP" 库,由 ESP32Async 分支](https://github.com/ESP32Async/ESPAsyncTCP) - 测试了版本 2.0.0 。 * [me-no-dev 的 "ESP Async WebServer" 库,由 ESP32Async 分支](https://github.com/ESP32Async/ESPAsyncWebServer) - 测试了版本 3.8.0、3.9.0 和 3.9.2 。 ### 归属 应用程序本身嵌入了: * John Resig 的 Javascript 库 [jQuery v3.5.1 (compressed, production version)](https://code.jquery.com/jquery-3.5.1.min.js) [已获许可](https://github.com/jquery/jquery/blob/main/LICENSE.txt),依据 [MIT 许可证](https://opensource.org/licenses/MIT)。 * [Dave Gandy](https://davegandy.github.io/) 的字体/图标 [Font Awesome v5.15.2](https://use.fontawesome.com/releases/v5.15.2/fontawesome-free-5.15.2-web.zip) [已获许可](https://fontawesome.com/license/free),依据以下许可证: - Icons: [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/) - Fonts: [SIL OFL 1.1](https://scripts.sil.org/OFL) - Code: [MIT](https://opensource.org/licenses/MIT) * [Austin Andrews](https://github.com/Templarian) 的字体/图标 [Material Design](https://github.com/Templarian/MaterialDesign) [已获许可](https://github.com/Templarian/MaterialDesign/blob/master/LICENSE),依据以下许可证: - Icons: [Apache 2.0](https://www.apache.org/licenses/LICENSE-2.0) - Fonts: [Apache 2.0](https://www.apache.org/licenses/LICENSE-2.0) - Code: [MIT](https://opensource.org/licenses/MIT) * Peugeot Design Lab (http://www.peugeotdesignlab.com) 的 Emmanuel Benoist 设计的字体 [Peugeot New](https://www.cdnfonts.com/peugeot-new.font)
许可证:未知 ## 👷 待完成工作 * 没有计划 😊 ## ❓ 常见问题 问题: 这在我的车上能用吗? 回答: 我只在一辆车上测试过:2003 年的 406 [DAM 号码 / 制造代码:9586](http://www.406coupeclub.org/Apps_BuildCodeTranslator.php);另请参阅 [此页面](https://web.archive.org/web/20200211061106/http://www.kleinopslag.nl/damnr/)(荷兰语)。 我的车辆有一个所谓的 ["type C" 多功能显示屏 (MFD)](https://github.com/0xCAFEDECAF/Peugeot406MfdTypecIrSendArduino#-description)。 如果您有大约 1996-2004 年的 Peugeot,并且配备了 VAN 舒适性总线,它将起作用(至少在某种程度上)。 如前所述,PSA 集团(Peugeot 和 Citroën)在 2000 年代初期使用 VAN 总线作为各种舒适性设备之间的通信协议。后来,大约在 2005 年,他们开始在新车中用 CAN 总线协议取代此协议。 [此概览](https://github.com/morcibacsi/PSAVanCanBridge#compatibility) 列出了据称配备了 VAN(舒适性)总线的车辆。 问题: 我仍然需要原始的多功能显示屏 (MFD) 吗? 回答: 是的,您需要。但您不需要它的(糟糕的)LCD 工作。MFD 仅用于生成必要的 VAN 总线数据包来驱动设备(调谐器、CD 换碟机、卫星导航等)。也许在稍后阶段,我将能够逆向工程 MFD 实现的更高级别协议和状态机。但这需要时间…… 问题: 这适用于哪些网页浏览器? 回答: 我已成功测试: * Windows 桌面 * Firefox,任何最新版本 * Chrome,任何最新版本 * 移动设备 * Android Firefox 68.11.0 及更高版本 * Android Chrome 88.0 及更高版本 ## 📜 参考资料 背景阅读: - [车辆信息服务规范](https://www.w3.org/TR/vehicle-information-service/) - 定义了基于 WebSocket 的 API,用于车辆信息服务 (VIS),以使客户端应用程序能够获取、设置、订阅和取消订阅车辆信号和数据属性。 ## 📖 许可证 此应用程序是开源的,并根据 [MIT 许可证](http://opensource.org/licenses/MIT) 授权。 您可以随意使用,但希望您能做出贡献!
标签:Arduino, CAN总线替代, DIY工具, ESP32, ESP8266, PSA集团, VAN总线, 仪表盘, 实时数据, 嵌入式开发, 智能座舱, 标致, 汽车改装, 汽车电子, 物联网, 硬件接口, 移动应用, 车联网, 车载系统, 车辆诊断, 遥测, 雪铁龙