# Dart24-飞镖充电桩 **Repository Path**: weixiao2016/dart24-dart-charging-station ## Basic Information - **Project Name**: Dart24-飞镖充电桩 - **Description**: 24赛季东南大学3SE战队飞镖充电桩硬件&软件开源。 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2024-11-17 - **Last Updated**: 2024-11-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 东南大学3SE战队飞镖充电桩 > 无线通讯功能仅供充放电/检录电源控制使用,使用时请注意不要触犯比赛规则。移植使用时请注意通讯信道的合法性和安全性,防止干扰其他设备或者被恶意控制。 > 本项目开源不为上述问题负责,使用者需自行承担因为触犯赛规、信道非法或安全设置不当而导致的后果。 > 本项目HARDWARE文件夹内不设`README.md`文件,由本文件进行所有说明。 ## 项目背景 对于飞镖系统而言,无控机械飞镖的精密配重、镖体标定和单枚飞镖的发射一致性都至关重要。但是,飞镖触发装置的供电板在比赛中需要频繁充放电,而且飞镖的触发装置需要通过开关飞镖触发装置的电源进行检录设置,在一体成型的飞镖中,这一过程需要拆卸飞镖,十分不便。为此,我们设计了一套无线供电系统,无需任何拆装即可为飞镖触发装置进行检录设置或为供电板进行充电。 除此之外,该系统远期扩展还有飞镖飞行数据存储、数据传输的功能,为飞镖的制导化提供了一定的基础设施积累。 本项目为充电桩部分,使用了无线供电技术,为飞镖触发装置提供电力;使用触摸屏进行`HMI交互`,为用户提供操作界面和状态反馈,可判断飞镖触发装置的电量水平和模块状态。远期可以作为地面站进行数据同步、制导机械自检等操作。 ## 硬件设计 ### 使用说明 1. 插入支持`20V 3A`标准`PD`协议挡位的电源适配器,接入板上`Type-C`接口。 2. 上电后程序会自动检查`PD`电压是否符合要求(`12V`以上挡位),以免程序调试时误开启`DCDC`导致故障。不符合最低电压要求时不会自动开启`DCDC`输出,如有需求可以手动开启。 3. 确保飞镖触发装置的无线供电接收线圈与充电桩的无线供电发射端线圈对齐,供电控制板和充电桩底部的黄灯会亮起,表示供电握手成功。与此同时,充电时充电控制板的`5V`输出会启动,充电时不可关断。 4. 触摸屏显示界面会显示飞镖触发装置的电量水平和模块状态。 5. 充电到一定电量后,可以通过触摸屏关闭`DCDC`输出,断开供电,或者将飞镖取下充电桩。 6. 通过触摸屏`总开`或`总关`按钮可以控制所有飞镖的开关状态。 ### 原理介绍 1. 电源树 ![alt text](PowerTree.png) 2. HMI交互:由于ESP32`串行SPI`硬件DMA数据长度限制,大屏SPI帧率上限低,所以使用`RGB`接口的`LCD`显示屏进行显示。`RGB`接口是一种典型的并口显示屏接口,由于ESP32-S3有大量`GPIO`和高达2MB的`PSRAM`,可以通过`GPIO MUX`连接至硬件`RGB LCD`控制器,利用`PSRAM`的空间作为显存,实现显示功能。 3. `USB-PD`协议是一种基于`USB-C`接口的电源协议,可以通过`CC1`和`CC2`两根线进行通信,由`VBUS`引脚执行电源输出。一般可以使用支持`PD`的移动电源进行`5~20V`的便携供电,大大提高赛场上部署充电桩的灵活性。使用`PD`芯片,一方面利用`USB-C`定义的`CC1`和`CC2`负责与适配器进行`PD`协议通信,另一方面通过`I2C`与`ESP32-S3`通信,提供当前适配器支持的握手电压、协议电流等信息,可决定是否开启`DCDC`输出。 4. 无线供电:如电源树所示,`PD`电源经`9V` `DCDC`芯片连接至四路`IP6829`无线充电`TX` `MCU`,使用`Qi`标准无线供电协议与飞镖供电控制板进行电流通信握手并启动电力传输。 > 受物料批次限制,实际使用的无线供电芯片`IP6829`允许接收的最大电压从`12V`降至`9V`,使用者需要根据实际物料情况调整开关电源外围分压反馈网络。 5. 保护电路:为减少功率电路浪涌,设计了缓启动;为保护笔记本电脑等设备,所有`USB-C`相关信号引脚均使用`TVS`二极管进行保护;分割了功率地、数字地、模拟地,减少地回流干扰模拟信号通讯。 ### 方案验证 1. 设计`IP6829`无线供电芯片的方案验证电路,使用`PD`协议电源供电,通过`Qi`标准无线供电协议与飞镖供电控制板握手并启动电力传输。此步骤验证了无线供电芯片的供电和通信功能。 2. 设计`RGB LCD`显示屏的方案验证电路,使用嘉立创`ESP32-S3`开发板,使用RGB 16接口触摸屏通过杜邦线连接至开发板,经由ESP32-S3的GPIO-MUX连接至硬件RGB LCD控制器。触摸部分使用GT911电容触摸芯片连接到主控的I2C接口。基于此验证电路,完成`LVGL`驱动移植、`GUI Guider`生成器移植、触摸屏校准。 3. 整合以上两个验证电路,完成充电桩的整体设计。 ### DFM信息 > 本人与商家无任何利益关系,仅供参考。事实上我希望你们能找到更便宜的物料,他们卖的实在太贵了。 - [微雪4.3寸电容触摸屏液晶屏RGB,颜色分类:4.3inch Capacitive Touch LCD](https://item.taobao.com/item.htm?spm=a1z09.2.0.0.26472e8d32KQSu&id=590738503661&_u=t20h554mpbccd9) - [IP6829无线供电芯片](https://item.taobao.com/item.htm?spm=a1z09.2.0.0.26472e8d32KQSu&id=747247702102&_u=t20h554mpbaeb3) - [散热风扇,颜色分类:台式机22110款黑色套装不带线](https://item.taobao.com/item.htm?spm=a1z09.2.0.0.26472e8d32KQSu&id=591931024110&_u=t20h554mpbb53c) - [导热硅胶](https://item.taobao.com/item.htm?spm=a1z09.2.0.0.26472e8d32KQSu&id=574233882009&_u=t20h554mpb80f5) ## 软件设计 ### 1. 技术点 - GUI框架:`LVGL`是一个开源的图形库,支持多种显示屏。通过`GUI Guider`生成器可以快速生成`LVGL`界面代码,支持触摸屏操作。`LVGL`支持`ESP32-S3`,通过`ESP-IDF`自带组件可以快速移植。 - 通讯框架:基于ESP-NOW协议实现了OneMessage话题通讯中间件的移植,通过广播或单播信道进行通信,可以控制飞镖镖体的供电状态。该框架支持自动拆包、校验、丢包重传、误包丢弃,可以传输任意长度的数据,并具有一定的鲁棒性。 ### 2. 项目结构 `HARDWARE/` 硬件工程文件夹,包括原理图、PCB布线图、BOM表、贴装坐标文件。 `components/` 修改过的ESP-NOW通讯组件、屏幕驱动组件和移植的OneMessage通讯中间件。 `managed_components/` ESP软件仓库中的组件,包括按钮、CMake组件、WS2812驱动和其他前置依赖组件。 `main/` 主程序 - `main/ui/` 生成的界面代码 - `main/bsp_dart.cpp` 充电桩HAL层,存放`PD`芯片驱动库、`PWM`散热风扇驱动函数。 - `main/bsp_dart.h` 充电桩HAL层头文件 - `main/dart_database.h` 飞镖数据库头文件 - `main/Dart_Events.h` 飞镖事件定义,OTA库历史遗留 - `main/firmware.cpp` OTA及固件管理库 - `main/firmware.h` OTA及固件管理库头文件 - `main/main.cpp` 主程序入口 - `main/main.h` 主程序头文件 `partitions.csv` 分区表 `sdkconfig` ESP-IDF SDK配置 ### 3. 通讯时序 飞镖镖体供电板在线,充电桩上位机在线。 - 充电桩上位机广播Ping消息,飞镖镖体供电板收到Ping消息后回复自身状态消息。 - 充电桩上位机广播供电控制指令,飞镖镖体供电板收到供电控制指令后执行供电控制操作,回复操作结果消息。 - 充电桩上位机单播供电控制指令,飞镖镖体供电板收到供电控制指令后执行供电控制操作,回复操作结果消息。 - 充电桩上位机广播固件升级指令,飞镖镖体供电板收到固件升级指令后执行固件升级操作,回复操作结果消息。 ### 4. 消息格式 ```cpp enum state_m{ IDLE, IDLE_ACTIVATED, ACTIVATED, // RESERVED }; enum operation_m{ OPERATION_PWR, OPERATION_OTA }; enum pwr_m{ PWR_ON, PWR_OFF }; enum ota_m{ OTA_TRIGGGER, OTA_ENABLE, OTA_DISABLE }; enum errorCode_m{ OPERATION_OK, OPERATION_FAIL_WIFI, OPERATION_FAIL_HARWARE, OPERATION_FAIL_BATTERY, OPERATION_FAIL_TIMEOUT, OPERATION_FAIL_RESERVED }; // MAC地址包头 struct stdMsg_t { // char topic; uint8_t selfMAC[6]; uint8_t destMAC[6]; }; // Ping申请包 struct requestPing_t { stdMsg_t stdMsg; uint8_t connectedDevice; char deviceMAC[DEVICE_NUMBER][6]; }; // 操作申请包 struct requestOperation_t { stdMsg_t stdMsg; uint16_t session; uint16_t operation; int operationParam; }; // 状态回复包 struct responseStatus_t { stdMsg_t stdMsg; uint16_t batteryVoltage; uint8_t batteryLevel; bool boostState; bool chargeState; float chargeCurrent; float chargeVoltage; }; // 操作回复包 struct responseOperation_t { stdMsg_t stdMsg; uint16_t session; uint16_t errorCode; }; ``` 消息经过OneMessage中间件封装函数进行编解码。具体可以参考`components/OneMessage/om/src/app/om_com.c`和`components/OneMessage/om/src/app/om_com.h`。 编解码后通过ESP-NOW协议进行传输,具体可以参考`https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32c3/api-reference/network/esp_now.html`。 ### 5. 界面设计 可参考我们在开源页面上提供的操作视频。除了那一页之外都没做,是为保留功能。 GUI设计器:[`NXP GUI Guider`](https://www.nxp.com/design/design-center/software/development-software/gui-guider:GUI-GUIDER#design-resources) ## 测试结论 1. 实测亏电启动充电时间为`20-30分钟`,充电电流为`1.0A`,充电截止电压为`4.26V`。 2. 实测续航时间大于`40分钟`,可以满足`BO3`比赛的需求。 3. 充电时对线圈的位置要求较高,线圈握手后,TX、RX线圈间距需小于`5mm`范围,否则会造成电压波动,波动范围较大,对飞镖引导头的影响较大,有一定概率导致损毁。改进方案为增加二级LDO、增加磁吸设计、扩大滤波电容阵列等。 4. 充电线圈选型电阻较大,工作温度`60~90℃`,需要注意散热以及线圈托盘的材料。我们的`PLA`和`TPU`全都被烤化压扁了。而且,不要手欠去摸线圈,参考触摸点烟器后留下的蚊香圈。 5. 四槽位同时充电峰值功率:`40W`,四槽位满电截止功率:`10W`。 ## 已知问题 1. 电源树`5V`节点为`DCDC`芯片,该芯片`TPS5430`存在最低压降限制,意味着通过笔记本等进行烧录时,`MCU`电源域无法正常供电。解决方法是使用预留的串口端子接入`5V`电源后再利用`Type-C`端口进行烧录。 ## 开源引用 - [ESP-IDF v5.2.0](https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32c3/get-started/index.html) - [OneMessageCPP接口](https://github.com/Jiu-xiao/OneMessageCPP) - [OneMessage中间件](https://github.com/Jiu-xiao/OneMessage) - [ESP-NOW协议](https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32c3/api-reference/network/esp_now.html) - [`NXP GUI Guider`](https://www.nxp.com/design/design-center/software/development-software/gui-guider:GUI-GUIDER#design-resources) ## 贡献 软硬件、报告撰写 程浩