2. 顺便完善了底层通信类的封装,基于websocket,基准测试通过,但存在一点很小的线程bug,似乎是来自于esp32 idf底层的问题,待解决
9.2 KiB
项目开发日志
此文件用于记录本项目开发过程中所一步步完成的事情,以及遇到的一些问题及其对应的解决方案
2025.8.22 ~ 8.24 官方驱动测试
Day1 2025.8.22
主要目标:测试开发板官方提供的例程中的驱动能否使用
实际完成任务:
- 1. 实现了Linux下的esp idf的一键编译,烧录,与监视,并且监视具有交互能力
- 2. 测试了QMI8658的驱动,正常读出x,y,z轴数据,得到的pitch, roll, yaw正常
Day2 2025.8.23
主要目标:测试开发板官方提供的例程中的驱动能否使用
实际完成任务:
- 1. 测试了电池adc的驱动,正常读出数据,且电压与万用表示一致,测试通过
- 2. 测试了wifi的驱动,连带着蓝牙一同测试,带着蓝牙则测试不通过,需要重写蓝牙驱动代码
Day3 2025.8.24
主要目标:测试开发板官方提供的例程中的驱动能否使用
实际完成任务:
-
1. 修改wifi的驱动代码,并且进行了测试,测试通过
Found 5 WiFi APs: 1: SSID: Misaki-2.4G, BSSID: 14:EA:A1:1C:32:FA, RSSI: -38, Auth: 4 2: SSID: FAST_3711, BSSID: D4:83:04:6C:37:11, RSSI: -81, Auth: 0 3: SSID: Tenda_E25070, BSSID: 08:40:F3:E2:50:74, RSSI: -82, Auth: 3 4: SSID: zhangyanyan, BSSID: 76:54:27:19:5B:D3, RSSI: -90, Auth: 4 5: SSID: zhangyanyan, BSSID: 74:54:27:39:5B:D3, RSSI: -91, Auth: 4 -
2. 蓝牙,wifi测试成功
Found 8 WiFi APs: 1: SSID: sakimi, BSSID: 16:29:EF:3D:0E:9E, RSSI: -26, Auth: 3 2: SSID: Misaki-2.4G, BSSID: 14:EA:A1:1C:32:FA, RSSI: -38, Auth: 4 3: SSID: Tenda_E25070, BSSID: 08:40:F3:E2:50:74, RSSI: -76, Auth: 3 4: SSID: TP-LINK_FCBF, BSSID: 94:D9:B3:1F:FC:BF, RSSI: -87, Auth: 4 5: SSID: FAST_3711, BSSID: D4:83:04:6C:37:11, RSSI: -88, Auth: 0 6: SSID: zhangyanyan, BSSID: 76:54:27:19:5B:D3, RSSI: -91, Auth: 4 7: SSID: MERCURY_2.4G_8192, BSSID: 00:5C:C2:E2:81:92, RSSI: -92, Auth: 4 8: SSID: zhangyanyan, BSSID: 74:54:27:39:5B:D3, RSSI: -93, Auth: 4 Found 3 BLE devices: 1: Name: Unknown, Address: 4C:1F:A1:B9:79:21, RSSI: -59 2: Name: Unknown, Address: 4C:D5:B2:FF:9C:21, RSSI: -65 3: Name: Unknown, Address: 5C:DF:7A:44:9E:95, RSSI: -94 -
3. 新增分区表,为板载16M的flash作分区规划,预留ota
# Name, Type, SubType, Offset, Size, Flags nvs, data, nvs, , 0x6000, otadata, data, ota, , 0x2000, phy_init, data, phy, , 0x1000, ota_0, app, ota_0, , 6M, ota_1, app, ota_1, , 6M, storage, data, spiffs, , 3M, coredump, data, coredump,, 64K, -
4. 测试了SD卡的驱动,正常读出数据,测试通过
Name: SD32G Type: SDHC/SDXC Speed: 20.00 MHz (limit: 20.00 MHz) Size: 30436MB CSD: ver=2, sector_size=512, capacity=62333952 read_bl_len=9 SSR: bus_width=1 SD卡初始化成功,容量: 30436 MB 2. 获取Flash大小... Flash size: 16 MB Flash大小: 16 MB 3. 测试文件写入... I (461) SD: Opening file /sdcard/test.txt I (481) SD: File written 文件写入成功: /sdcard/test.txt 4. 测试文件读取... I (481) SD: Reading file /sdcard/test.txt I (491) SD: Read from file: '这是一段测试数据,用于验证SD卡写入功能。' 5. 测试文件打开功能... I (501) SD: Attempting to open file: /sdcard/test.txt File /sdcard/test.txt was successfully opened. 文件打开成功 6. 测试文件夹检索功能... File found: /sdcard/test.txt I (521) SD: Retrieved 1 files with extension '.txt' 找到 1 个txt文件: 1. test.txt === SD卡模块测试完成 === -
5. 新增了CMake配置,just_monitor(monitor_only.sh),只监视,无编译,无烧录
# 只监视,而不做编译与烧录 add_custom_target(just_monitor COMMAND ${CMAKE_COMMAND} -E env "IDF_PATH=$ENV{IDF_PATH}" ${CMAKE_SOURCE_DIR}/monitor_only.sh WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} USES_TERMINAL COMMENT "Launch Konsole with idf.py monitor (no build/flash)" ) -
6. 测试了外部高精度RTC(PCF85063)的驱动,时钟功能正常,测试通过
驱动位置位于:Lib/PCF85063 -
7. 测试了IO拓展芯片TCA9554PWR,测试结果正常,测试通过
I (356) TCA9554PWR_TEST: ====== TCA9554PWR 综合测试开始 ====== I (366) I2C: I2C initialized successfully I (366) TCA9554PWR_TEST: >> 测试1:输出寄存器读写测试 I (386) TCA9554PWR_TEST: 写入 0xAA,读回 0xAA I (386) TCA9554PWR_TEST: 测试1 通过 I (386) TCA9554PWR_TEST: >> 测试2:配置寄存器读写测试 I (396) TCA9554PWR_TEST: 写入 0xFF(全输入),读回 0xFF I (406) TCA9554PWR_TEST: 写入 0x00(全输出),读回 0x00 I (406) TCA9554PWR_TEST: 测试2 通过 I (406) TCA9554PWR_TEST: >> 测试3:单管脚输出翻转测试 I (426) TCA9554PWR_TEST: IO1 置高,请观察电平 I (926) TCA9554PWR_TEST: IO1 置低,请观察电平 I (1426) TCA9554PWR_TEST: IO1 Toggle 1 I (1926) TCA9554PWR_TEST: IO1 Toggle 2 I (2426) TCA9554PWR_TEST: 测试3 完成(请确认 LED/万用表现象) I (2426) TCA9554PWR_TEST: >> 测试4:8位整体输出测试 I (2436) TCA9554PWR_TEST: 输出 0x55 (二进制: 01010101) I (3436) TCA9554PWR_TEST: 输出 0xAA (二进制: 10101010) I (4436) TCA9554PWR_TEST: 输出 0xFF (二进制: 11111111) I (5436) TCA9554PWR_TEST: 输出 0x00 (二进制: 00000000) -
8. 添加了esp-idf的几个组件,基于main/idf_component.yml的配置,用于应用层快速开发
dependencies: idf: ">=4.4" lvgl/lvgl: "~8.3.0" chmorgan/esp-audio-player: "==1.0.7" chmorgan/esp-libhelix-mp3: "==1.0.3" espressif/esp-sr: "~1.9.4" -
9. 测试了音频播放功能,测试通过
Day4 2025.8.25
主要目标:测试开发板官方提供的例程中的驱动能否使用
实际完成任务:
-
1. 测试了屏幕驱动,lvgl,触摸,驱动文件在Lib/Display当中。全部通过(修改了sdkconfig,以适配lvgl)
-
2. 新增了优雅的C语言错误处理
-
3. 完成了gif的显示测试(使用lvgl当中的gif解码器),测试通过
Day5 2025.8.26
主要目标:测试开发板官方提供的例程中的驱动能否使用
实际完成任务:
- 1. 优化了项目结构
Day6 2025.8.27
主要目标:测试开发板官方提供的例程中的驱动能否使用
实际完成任务:
- 1. 完成了SDMMC的超频,从20MHz提升到40MHz,测试通过
Day7 2025.8.27
主要目标:测试开发板官方提供的例程中的驱动能否使用
实际完成任务:
- 1. 完成了PWR按键相关的测试,测试通过
Day8 2025.9.1
主要目标:测试开发板官方提供的例程中的驱动能否使用
实际完成任务:
- 1. 完成了语言识别测试,测试基本通过,后续需要修改从sd卡导入模型以配合ota
Day9 2025.9.2
主要目标:完成具体业务开发&各种优化
实际完成任务:
-
1. 进一步拓展了语音识别,目前可以从sd卡导入模型,避免了model文件占用flash分区大小
-
2. 进一步修改了语音识别,关闭了关键词唤醒功能,只保留了指令识别功能
Day10 2025.9.3
主要目标:完成具体业务开发&各种优化
实际完成任务:
- 1. 构建了业务层的基本框架(增加了底层驱动对于的C++兼容),业务代码采用C++编写,启用了RTTI(运行时类型识别)
Day11 2025.9.4
主要目标:完成具体业务开发&各种优化
实际完成任务:
-
1. 完成了ota功能的基本测试,测试通过
-
2. 封装了一个模板线程类,支持创建来自单例类的成员函数线程,普通类的线程,普通函数线程
-
3. 封装了一个Wifi模块类,支持Wifi的各种基本配置
Day12 2025.9.9(前三天在打数学建模国赛)
主要目标:完成具体业务开发&各种优化
实际完成任务:
-
1. 完整封装并拓展了SD卡文件管理类,支持基本文件管理功能
-
2. 简单封装了LVGL渲染类,已经封装好了gif渲染功能
-
3. 修复了硬件厂商提供的驱动的Bug
-
4. 初步定义了宠物基类的抽象信息
Day13 2025.9.12(前两天在忙考研复习)
主要目标:完成具体业务开发&各种优化
实际完成任务:
-
1. 完成了对音频播放类的完整C++封装,测试通过
-
2. 修复了LVGL渲染类当中的一些小bug
-
3. 增加了一些CPU资源占用的日志打印函数,运行在主线程当中
-
4. 完善了底层通信类的封装,基于websocket,尚未测试
Day14 2025.9.15
主要目标:完成具体业务开发&各种优化
实际完成任务:
-
1. 历时两天,完整且完美的设计了宠物类,使用到了多种设计模式,完成了低耦合,高内聚的完美代码,测试也完美通过。
-
2. 顺便完善了底层通信类的封装,基于websocket,基准测试通过,但存在一点很小的线程bug,似乎是来自于esp32 idf底层的问题,待解决