dc420c3b7a
2. 顺便完善了底层通信类的封装,基于websocket,基准测试通过,但存在一点很小的线程bug,似乎是来自于esp32 idf底层的问题,待解决
227 lines
9.2 KiB
Markdown
227 lines
9.2 KiB
Markdown
## 项目开发日志
|
||
|
||
#### 此文件用于记录本项目开发过程中所一步步完成的事情,以及遇到的一些问题及其对应的解决方案
|
||
|
||
#### 2025.8.22 ~ 8.24 官方驱动测试
|
||
#### Day1 2025.8.22
|
||
##### 主要目标:测试开发板官方提供的例程中的驱动能否使用
|
||
实际完成任务:
|
||
- [x] 1. 实现了Linux下的esp idf的一键编译,烧录,与监视,并且监视具有交互能力
|
||
- [x] 2. 测试了QMI8658的驱动,正常读出x,y,z轴数据,得到的pitch, roll, yaw正常
|
||
|
||
#### Day2 2025.8.23
|
||
##### 主要目标:测试开发板官方提供的例程中的驱动能否使用
|
||
实际完成任务:
|
||
- [x] 1. 测试了电池adc的驱动,正常读出数据,且电压与万用表示一致,测试通过
|
||
- [x] 2. 测试了wifi的驱动,连带着蓝牙一同测试,带着蓝牙则测试不通过,需要重写蓝牙驱动代码
|
||
|
||
#### Day3 2025.8.24
|
||
##### 主要目标:测试开发板官方提供的例程中的驱动能否使用
|
||
实际完成任务:
|
||
- [x] 1. 修改wifi的驱动代码,并且进行了测试,测试通过
|
||
```shell
|
||
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
|
||
```
|
||
- [x] 2. 蓝牙,wifi测试成功
|
||
```shell
|
||
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
|
||
```
|
||
|
||
- [x] 3. 新增分区表,为板载16M的flash作分区规划,预留ota
|
||
```text
|
||
# 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,
|
||
```
|
||
|
||
- [x] 4. 测试了SD卡的驱动,正常读出数据,测试通过
|
||
```shell
|
||
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卡模块测试完成 ===
|
||
```
|
||
|
||
- [x] 5. 新增了CMake配置,just_monitor(monitor_only.sh),只监视,无编译,无烧录
|
||
```cmake
|
||
# 只监视,而不做编译与烧录
|
||
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)"
|
||
)
|
||
```
|
||
|
||
- [x] 6. 测试了外部高精度RTC(PCF85063)的驱动,时钟功能正常,测试通过
|
||
```text
|
||
驱动位置位于:Lib/PCF85063
|
||
```
|
||
|
||
- [x] 7. 测试了IO拓展芯片TCA9554PWR,测试结果正常,测试通过
|
||
```shell
|
||
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)
|
||
```
|
||
|
||
- [x] 8. 添加了esp-idf的几个组件,基于main/idf_component.yml的配置,用于应用层快速开发
|
||
```yaml
|
||
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"
|
||
```
|
||
|
||
- [x] 9. 测试了音频播放功能,测试通过
|
||
|
||
#### Day4 2025.8.25
|
||
##### 主要目标:测试开发板官方提供的例程中的驱动能否使用
|
||
实际完成任务:
|
||
- [x] 1. 测试了屏幕驱动,lvgl,触摸,驱动文件在Lib/Display当中。全部通过(修改了sdkconfig,以适配lvgl)
|
||
|
||
- [x] 2. 新增了优雅的C语言错误处理
|
||
|
||
- [x] 3. 完成了gif的显示测试(使用lvgl当中的gif解码器),测试通过
|
||
|
||
#### Day5 2025.8.26
|
||
##### 主要目标:测试开发板官方提供的例程中的驱动能否使用
|
||
实际完成任务:
|
||
- [x] 1. 优化了项目结构
|
||
|
||
#### Day6 2025.8.27
|
||
##### 主要目标:测试开发板官方提供的例程中的驱动能否使用
|
||
实际完成任务:
|
||
- [x] 1. 完成了SDMMC的超频,从20MHz提升到40MHz,测试通过
|
||
|
||
#### Day7 2025.8.27
|
||
##### 主要目标:测试开发板官方提供的例程中的驱动能否使用
|
||
实际完成任务:
|
||
- [x] 1. 完成了PWR按键相关的测试,测试通过
|
||
|
||
#### Day8 2025.9.1
|
||
##### 主要目标:测试开发板官方提供的例程中的驱动能否使用
|
||
实际完成任务:
|
||
- [x] 1. 完成了语言识别测试,测试基本通过,后续需要修改从sd卡导入模型以配合ota
|
||
|
||
#### Day9 2025.9.2
|
||
##### 主要目标:完成具体业务开发&各种优化
|
||
实际完成任务:
|
||
- [x] 1. 进一步拓展了语音识别,目前可以从sd卡导入模型,避免了model文件占用flash分区大小
|
||
|
||
- [x] 2. 进一步修改了语音识别,关闭了关键词唤醒功能,只保留了指令识别功能
|
||
|
||
#### Day10 2025.9.3
|
||
##### 主要目标:完成具体业务开发&各种优化
|
||
实际完成任务:
|
||
- [x] 1. 构建了业务层的基本框架(增加了底层驱动对于的C++兼容),业务代码采用C++编写,启用了RTTI(运行时类型识别)
|
||
|
||
#### Day11 2025.9.4
|
||
##### 主要目标:完成具体业务开发&各种优化
|
||
实际完成任务:
|
||
- [x] 1. 完成了ota功能的基本测试,测试通过
|
||
|
||
- [x] 2. 封装了一个模板线程类,支持创建来自单例类的成员函数线程,普通类的线程,普通函数线程
|
||
|
||
- [x] 3. 封装了一个Wifi模块类,支持Wifi的各种基本配置
|
||
|
||
#### Day12 2025.9.9(前三天在打数学建模国赛)
|
||
##### 主要目标:完成具体业务开发&各种优化
|
||
实际完成任务:
|
||
- [x] 1. 完整封装并拓展了SD卡文件管理类,支持基本文件管理功能
|
||
|
||
- [x] 2. 简单封装了LVGL渲染类,已经封装好了gif渲染功能
|
||
|
||
- [x] 3. 修复了硬件厂商提供的驱动的Bug
|
||
|
||
- [x] 4. 初步定义了宠物基类的抽象信息
|
||
|
||
#### Day13 2025.9.12(前两天在忙考研复习)
|
||
##### 主要目标:完成具体业务开发&各种优化
|
||
实际完成任务:
|
||
- [x] 1. 完成了对音频播放类的完整C++封装,测试通过
|
||
|
||
- [x] 2. 修复了LVGL渲染类当中的一些小bug
|
||
|
||
- [x] 3. 增加了一些CPU资源占用的日志打印函数,运行在主线程当中
|
||
|
||
- [x] 4. 完善了底层通信类的封装,基于websocket,尚未测试
|
||
|
||
#### Day14 2025.9.15
|
||
##### 主要目标:完成具体业务开发&各种优化
|
||
实际完成任务:
|
||
- [x] 1. 历时两天,完整且完美的设计了宠物类,使用到了多种设计模式,完成了低耦合,高内聚的完美代码,测试也完美通过。
|
||
|
||
- [x] 2. 顺便完善了底层通信类的封装,基于websocket,基准测试通过,但存在一点很小的线程bug,似乎是来自于esp32 idf底层的问题,待解决
|