diff --git a/HLW8032/DS_HLW8032_CN_Rev1.6.pdf b/HLW8032/DS_HLW8032_CN_Rev1.6.pdf
new file mode 100644
index 0000000..80effc6
Binary files /dev/null and b/HLW8032/DS_HLW8032_CN_Rev1.6.pdf differ
diff --git a/V1.5/STM32F103_App1/MDK-ARM/STM32F103rb_App1.uvoptx b/V1.5/STM32F103_App1/MDK-ARM/STM32F103rb_App1.uvoptx
index 4a5fb4f..8b6b5af 100644
--- a/V1.5/STM32F103_App1/MDK-ARM/STM32F103rb_App1.uvoptx
+++ b/V1.5/STM32F103_App1/MDK-ARM/STM32F103rb_App1.uvoptx
@@ -77,7 +77,7 @@
0
1
- 18
+ 255
0
@@ -867,6 +867,19 @@
0
0
0
+ ..\HardWare\USER_CMD\ble_at.c
+ ble_at.c
+ 0
+ 0
+
+
+ 7
+ 46
+ 1
+ 0
+ 0
+ 0
+ 0
..\HardWare\SYSINIT\system.c
system.c
0
@@ -874,7 +887,7 @@
7
- 46
+ 47
1
0
0
@@ -887,7 +900,7 @@
7
- 47
+ 48
1
0
0
@@ -900,7 +913,7 @@
7
- 48
+ 49
1
0
0
@@ -921,7 +934,7 @@
0
8
- 49
+ 50
5
0
0
diff --git a/水产投料机与四路继电器二合一/V1.1/版本说明.md b/水产投料机与四路继电器二合一/V1.1/版本说明.md
new file mode 100644
index 0000000..844c63d
--- /dev/null
+++ b/水产投料机与四路继电器二合一/V1.1/版本说明.md
@@ -0,0 +1,16 @@
+# 版本说明
+
+## V1.1 —— 4G 基础版
+
+最初版本,纯 4G 通信。
+
+### 功能
+- 4G Air780E MQTT 联网(模组内置 MQTT,USART3 DMA+IDLE 接收,波特率自适应 115200→921600 掉电保存)
+- 四路继电器远程控制(sw1~sw4 / feeding 指令),带继电器反馈检测与负载异常应答
+- 两种产品形态宏 `PRODUCT_WITH_FEED_SCALE`:投料机(RS485 称重定量投喂,重量反增/超时保护)/ 基础四路继电器
+- 4G OTA 远程升级:HTTP 分块下载(3072B/块)→ W25Q64 暂存 → CRC16+固件头校验 → BootLoader 备份/搬运/失败回滚(3 次试错)
+- AT24C02 EEPROM 配置存储(MQTT 参数/版本号/继电器状态)
+- 继电器断电记忆:联网后恢复继电器 2~4 上次状态,继电器 1(投喂)上电强制断开防误投料
+- 蓝牙串口调试命令(USART1):RESET/INFO/STATUS/R1ON~R4OFF/OTA/RECOVERY 等
+- 双看门狗:片内 IWDG(~26s) + 外置 TPL5010(7min,LED2 翻转喂狗)
+- 电量检测(PA0 ADC,低电量上报 pow:0)
diff --git a/水产投料机与四路继电器二合一/V1.2/版本说明.md b/水产投料机与四路继电器二合一/V1.2/版本说明.md
new file mode 100644
index 0000000..7ec13b8
--- /dev/null
+++ b/水产投料机与四路继电器二合一/V1.2/版本说明.md
@@ -0,0 +1,34 @@
+# 版本说明
+
+## V1.1 —— 4G 基础版
+
+最初版本,纯 4G 通信。
+
+### 功能
+- 4G Air780E MQTT 联网(模组内置 MQTT,USART3 DMA+IDLE 接收,波特率自适应 115200→921600 掉电保存)
+- 四路继电器远程控制(sw1~sw4 / feeding 指令),带继电器反馈检测与负载异常应答
+- 两种产品形态宏 `PRODUCT_WITH_FEED_SCALE`:投料机(RS485 称重定量投喂,重量反增/超时保护)/ 基础四路继电器
+- 4G OTA 远程升级:HTTP 分块下载(3072B/块)→ W25Q64 暂存 → CRC16+固件头校验 → BootLoader 备份/搬运/失败回滚(3 次试错)
+- AT24C02 EEPROM 配置存储(MQTT 参数/版本号/继电器状态)
+- 继电器断电记忆:联网后恢复继电器 2~4 上次状态,继电器 1(投喂)上电强制断开防误投料
+- 蓝牙串口调试命令(USART1):RESET/INFO/STATUS/R1ON~R4OFF/OTA/RECOVERY 等
+- 双看门狗:片内 IWDG(~26s) + 外置 TPL5010(7min,LED2 翻转喂狗)
+- 电量检测(PA0 ADC,低电量上报 pow:0)
+
+## V1.2 —— 新增 WiFi 通道
+
+### 新增
+- ESP-01S WiFi 通道(UART4,PC10/PC11,RST=PA5):TCP 透传 + MCU 软件 MQTT 3.1.1(不用 AT+MQTT)
+- 网络层抽象:`network.c` 统一 NET_* 接口,4G/WiFi 双后端互斥共享接收缓冲(Rx_Buf/U2_CopyBuff),业务层零改动
+- 通道切换:4G 无 SIM/无信号重试 3 次自动回退 WiFi;WiFi 按"固定热点(60s) → SmartConfig 智能配网(60s)"连接,失败回 4G 循环
+- WiFi/4G 波特率均提升至 921600(WiFi 侧 AT+UART_DEF 掉电保存,探测同步)
+- 4G 信号检测(AT+CSQ 转百分比输出,无信号置标志回退 WiFi)
+- GPS 定位周期上报(Air780EG 内置 GNSS,WGS-84→GCJ-02 高德坐标转换,5min 周期,fix 无效不上报)
+- 状态上报同时携带 sw1 与 feeding 两个字段(平台两个开关同步刷新)
+- 继电器断电记忆完善:改到 MQTT 首次就绪后恢复(修复 WiFi 兜底时永远不恢复的问题);无秤模式四路全恢复;投料模式 SW1 不恢复且强制关闭
+- 新增 RECOVERY 蓝牙命令:WiFi 模块 AT+RESTORE 恢复出厂(测试 SmartConfig 用)
+
+### 修复
+- 透传 CIPSEND 无响应:等 CIPSTART 的 OK 收尾+延时后再发;增加"已在透传态"探测兜底
+- AT 应答陈旧匹配:清缓冲改到发送之后,防止上一条应答尾巴造成"假成功"(曾致 CIPMODE 未生效)
+- UART ORE 导致 HAL 中止 DMA 接收:ErrorCallback 按当前通道自愈重新武装
diff --git a/水产投料机与四路继电器二合一/V1.3/版本说明.md b/水产投料机与四路继电器二合一/V1.3/版本说明.md
new file mode 100644
index 0000000..57ae389
--- /dev/null
+++ b/水产投料机与四路继电器二合一/V1.3/版本说明.md
@@ -0,0 +1,47 @@
+# 版本说明
+
+## V1.1 —— 4G 基础版
+
+最初版本,纯 4G 通信。
+
+### 功能
+- 4G Air780E MQTT 联网(模组内置 MQTT,USART3 DMA+IDLE 接收,波特率自适应 115200→921600 掉电保存)
+- 四路继电器远程控制(sw1~sw4 / feeding 指令),带继电器反馈检测与负载异常应答
+- 两种产品形态宏 `PRODUCT_WITH_FEED_SCALE`:投料机(RS485 称重定量投喂,重量反增/超时保护)/ 基础四路继电器
+- 4G OTA 远程升级:HTTP 分块下载(3072B/块)→ W25Q64 暂存 → CRC16+固件头校验 → BootLoader 备份/搬运/失败回滚(3 次试错)
+- AT24C02 EEPROM 配置存储(MQTT 参数/版本号/继电器状态)
+- 继电器断电记忆:联网后恢复继电器 2~4 上次状态,继电器 1(投喂)上电强制断开防误投料
+- 蓝牙串口调试命令(USART1):RESET/INFO/STATUS/R1ON~R4OFF/OTA/RECOVERY 等
+- 双看门狗:片内 IWDG(~26s) + 外置 TPL5010(7min,LED2 翻转喂狗)
+- 电量检测(PA0 ADC,低电量上报 pow:0)
+
+## V1.2 —— 新增 WiFi 通道
+
+### 新增
+- ESP-01S WiFi 通道(UART4,PC10/PC11,RST=PA5):TCP 透传 + MCU 软件 MQTT 3.1.1(不用 AT+MQTT)
+- 网络层抽象:`network.c` 统一 NET_* 接口,4G/WiFi 双后端互斥共享接收缓冲(Rx_Buf/U2_CopyBuff),业务层零改动
+- 通道切换:4G 无 SIM/无信号重试 3 次自动回退 WiFi;WiFi 按"固定热点(60s) → SmartConfig 智能配网(60s)"连接,失败回 4G 循环
+- WiFi/4G 波特率均提升至 921600(WiFi 侧 AT+UART_DEF 掉电保存,探测同步)
+- 4G 信号检测(AT+CSQ 转百分比输出,无信号置标志回退 WiFi)
+- GPS 定位周期上报(Air780EG 内置 GNSS,WGS-84→GCJ-02 高德坐标转换,5min 周期,fix 无效不上报)
+- 状态上报同时携带 sw1 与 feeding 两个字段(平台两个开关同步刷新)
+- 继电器断电记忆完善:改到 MQTT 首次就绪后恢复(修复 WiFi 兜底时永远不恢复的问题);无秤模式四路全恢复;投料模式 SW1 不恢复且强制关闭
+- 新增 RECOVERY 蓝牙命令:WiFi 模块 AT+RESTORE 恢复出厂(测试 SmartConfig 用)
+
+### 修复
+- 透传 CIPSEND 无响应:等 CIPSTART 的 OK 收尾+延时后再发;增加"已在透传态"探测兜底
+- AT 应答陈旧匹配:清缓冲改到发送之后,防止上一条应答尾巴造成"假成功"(曾致 CIPMODE 未生效)
+- UART ORE 导致 HAL 中止 DMA 接收:ErrorCallback 按当前通道自愈重新武装
+
+## V1.3 —— WiFi OTA + 联网方式记忆
+
+### 新增
+- WiFi 通道 OTA:ESP-01S 透传 TCP 上软件实现 HTTP Range 分块下载(3072B/块,MCU 自定节奏),复用 W25Q64 双槽+CRC+BootLoader 回退体系;下载失败自动重连 MQTT 恢复业务
+- 联网方式记忆(EEPROM 偏移 130):记录上次成功联网方式(4G / WiFi固定热点 / WiFi配网热点),仅变化时写一次,开机优先跑上次成功的方式
+- 已存 AP 自动连接改为 AT+CIPSTATUS 主动查询(修复被动等 "WIFI GOT IP" 打印被清缓冲擦掉、永远等不到的问题)
+
+### 修复
+- WiFi OTA 下载停摆:DMA(NORMAL) 填满 Rx_Buf 后无 IDLE 不触发、接收永久停摆 → 在 HAL_UART_RxCpltCallback 里搬运并重启接收(UART4/USART3 同步加)
+- 服务器整包灌流量冲爆接收缓冲:改 HTTP Range 分块请求自定节奏
+- AT 匹配严格化:二进制安全匹配(strstr 遇 0x00 失明问题)、收到 ERROR/FAIL 快速失败、进透传前 AT+CIPCLOSE 清残留连接、CIPMUX=0 先于 CIPMODE=1
+- SmartConfig 后等 IP 失败:改 CIPSTATUS 主动查询(打印被 CWSTOPSMART 交互擦掉的问题)
diff --git a/水产投料机与四路继电器二合一/V1.4-Chinese/版本说明.md b/水产投料机与四路继电器二合一/V1.4-Chinese/版本说明.md
new file mode 100644
index 0000000..8b1fe04
--- /dev/null
+++ b/水产投料机与四路继电器二合一/V1.4-Chinese/版本说明.md
@@ -0,0 +1,79 @@
+# 版本说明
+
+## V1.1 —— 4G 基础版
+
+最初版本,纯 4G 通信。
+
+### 功能
+- 4G Air780E MQTT 联网(模组内置 MQTT,USART3 DMA+IDLE 接收,波特率自适应 115200→921600 掉电保存)
+- 四路继电器远程控制(sw1~sw4 / feeding 指令),带继电器反馈检测与负载异常应答
+- 两种产品形态宏 `PRODUCT_WITH_FEED_SCALE`:投料机(RS485 称重定量投喂,重量反增/超时保护)/ 基础四路继电器
+- 4G OTA 远程升级:HTTP 分块下载(3072B/块)→ W25Q64 暂存 → CRC16+固件头校验 → BootLoader 备份/搬运/失败回滚(3 次试错)
+- AT24C02 EEPROM 配置存储(MQTT 参数/版本号/继电器状态)
+- 继电器断电记忆:联网后恢复继电器 2~4 上次状态,继电器 1(投喂)上电强制断开防误投料
+- 蓝牙串口调试命令(USART1):RESET/INFO/STATUS/R1ON~R4OFF/OTA/RECOVERY 等
+- 双看门狗:片内 IWDG(~26s) + 外置 TPL5010(7min,LED2 翻转喂狗)
+- 电量检测(PA0 ADC,低电量上报 pow:0)
+
+## V1.2 —— 新增 WiFi 通道
+
+### 新增
+- ESP-01S WiFi 通道(UART4,PC10/PC11,RST=PA5):TCP 透传 + MCU 软件 MQTT 3.1.1(不用 AT+MQTT)
+- 网络层抽象:`network.c` 统一 NET_* 接口,4G/WiFi 双后端互斥共享接收缓冲(Rx_Buf/U2_CopyBuff),业务层零改动
+- 通道切换:4G 无 SIM/无信号重试 3 次自动回退 WiFi;WiFi 按"固定热点(60s) → SmartConfig 智能配网(60s)"连接,失败回 4G 循环
+- WiFi/4G 波特率均提升至 921600(WiFi 侧 AT+UART_DEF 掉电保存,探测同步)
+- 4G 信号检测(AT+CSQ 转百分比输出,无信号置标志回退 WiFi)
+- GPS 定位周期上报(Air780EG 内置 GNSS,WGS-84→GCJ-02 高德坐标转换,5min 周期,fix 无效不上报)
+- 状态上报同时携带 sw1 与 feeding 两个字段(平台两个开关同步刷新)
+- 继电器断电记忆完善:改到 MQTT 首次就绪后恢复(修复 WiFi 兜底时永远不恢复的问题);无秤模式四路全恢复;投料模式 SW1 不恢复且强制关闭
+- 新增 RECOVERY 蓝牙命令:WiFi 模块 AT+RESTORE 恢复出厂(测试 SmartConfig 用)
+
+### 修复
+- 透传 CIPSEND 无响应:等 CIPSTART 的 OK 收尾+延时后再发;增加"已在透传态"探测兜底
+- AT 应答陈旧匹配:清缓冲改到发送之后,防止上一条应答尾巴造成"假成功"(曾致 CIPMODE 未生效)
+- UART ORE 导致 HAL 中止 DMA 接收:ErrorCallback 按当前通道自愈重新武装
+
+## V1.3 —— WiFi OTA + 联网方式记忆
+
+### 新增
+- WiFi 通道 OTA:ESP-01S 透传 TCP 上软件实现 HTTP Range 分块下载(3072B/块,MCU 自定节奏),复用 W25Q64 双槽+CRC+BootLoader 回退体系;下载失败自动重连 MQTT 恢复业务
+- 联网方式记忆(EEPROM 偏移 130):记录上次成功联网方式(4G / WiFi固定热点 / WiFi配网热点),仅变化时写一次,开机优先跑上次成功的方式
+- 已存 AP 自动连接改为 AT+CIPSTATUS 主动查询(修复被动等 "WIFI GOT IP" 打印被清缓冲擦掉、永远等不到的问题)
+
+### 修复
+- WiFi OTA 下载停摆:DMA(NORMAL) 填满 Rx_Buf 后无 IDLE 不触发、接收永久停摆 → 在 HAL_UART_RxCpltCallback 里搬运并重启接收(UART4/USART3 同步加)
+- 服务器整包灌流量冲爆接收缓冲:改 HTTP Range 分块请求自定节奏
+- AT 匹配严格化:二进制安全匹配(strstr 遇 0x00 失明问题)、收到 ERROR/FAIL 快速失败、进透传前 AT+CIPCLOSE 清残留连接、CIPMUX=0 先于 CIPMODE=1
+- SmartConfig 后等 IP 失败:改 CIPSTATUS 主动查询(打印被 CWSTOPSMART 交互擦掉的问题)
+
+## V1.4 —— FreeRTOS 版
+
+### 新增
+- 迁移到 FreeRTOS V10.0.1:net(3)/app(2)/sys(1) 三任务,idle 钩子喂 IWDG;HAL 时基改 TIM2(SysTick 归 RTOS)
+- 互斥锁三把:AT 会话锁(防业务发布与 AT 应答交织)、存储锁(EEPROM/W25Q64 跨任务)、日志锁
+- 无秤模式(PRODUCT_WITH_FEED_SCALE=0)不再上报 zero/onceWt 字段,平台下发设置直接拒绝
+- WiFi 断链处理与 4G 对齐:TCP CLOSED(被平台踢下线)/ 心跳超时(15s) → 打印原因并直接整机复位
+- Uptime 运行时长打印:联网后每 60s 一次(未联网不打印)
+
+### 修复
+- 迁移时漏抄 HAL_TIM_PeriodElapsedCallback(HAL 时基不走)导致开机复位循环
+- RECOVERY 在透传态下直接发 AT+RESTORE 被当 TCP 数据发走:先 "+++" 退透传;RTOS 下改为 net 任务内执行恢复流程
+- NET_LED 一直闪烁:补回 g_net_led_connected 状态映射(连接中闪烁,连上常亮)
+
+## V1.4-Chinese —— 串口日志中文版
+
+### 新增
+- 全部串口日志中文化(UTF-8 输出,Keil 加 `--no_multibyte_chars` 解决 ARMCC 按 GBK 误读 UTF-8 吃引号问题)
+- 重启记录:开机打印最近 10 条"重启原因 + 上次运行时长"(W25Q64 0x100000 环形存储,一记录一扇区滑动覆盖;16 种原因码;BL 把 RCC->CSR 放共享 RAM 传给 APP)
+- 断电保护(法拉电容场景):PA0 检测 12V 断开(连续 3 次 <10% 去抖)→ 立即写断电记录+上报+复位;BootLoader 主电源门禁(12V 未恢复不跳 APP);电量百分比 0~100% 限幅
+- I2C 总线恢复:EEPROM 传输中途被复位拉死 SDA 时,初始化补 9 个时钟释放总线
+- BL:找不到有效 APP 时 3s 快速重试(原等 IWDG 26s);回退分支跳转前校验 APP 有效性;复位原因打印
+- SmartConfig 配网时 NET_LED 100ms 快闪提示;配网超时 60s→100s;新增 PRODUCT_WITH_GPS 宏开关 GPS 功能
+- HardFault 串口兜底打印(轮询 USART1)
+- 工程整理:bin 输出到 OutputBin/、编译对象到 Object/、AfterBuild 拆两条命令修复 bin 不更新
+
+### 修复
+- 首启偶发看门狗复位:I2C 总线被拉死(加上述恢复)
+- 重启记录回卷一次丢 9 条:改一记录一扇区,真正滑动覆盖
+- 电量显示负数:限幅 0~100%(3.3V 基准下跌失真)
+- OTA 结果/确认上报超时:net 任务与业务任务竞争共享接收缓冲 → NET_process 消费加锁、发布改 2s 超时锁
diff --git a/水产投料机与四路继电器二合一/V1.4/版本说明.md b/水产投料机与四路继电器二合一/V1.4/版本说明.md
new file mode 100644
index 0000000..a7ba536
--- /dev/null
+++ b/水产投料机与四路继电器二合一/V1.4/版本说明.md
@@ -0,0 +1,61 @@
+# 版本说明
+
+## V1.1 —— 4G 基础版
+
+最初版本,纯 4G 通信。
+
+### 功能
+- 4G Air780E MQTT 联网(模组内置 MQTT,USART3 DMA+IDLE 接收,波特率自适应 115200→921600 掉电保存)
+- 四路继电器远程控制(sw1~sw4 / feeding 指令),带继电器反馈检测与负载异常应答
+- 两种产品形态宏 `PRODUCT_WITH_FEED_SCALE`:投料机(RS485 称重定量投喂,重量反增/超时保护)/ 基础四路继电器
+- 4G OTA 远程升级:HTTP 分块下载(3072B/块)→ W25Q64 暂存 → CRC16+固件头校验 → BootLoader 备份/搬运/失败回滚(3 次试错)
+- AT24C02 EEPROM 配置存储(MQTT 参数/版本号/继电器状态)
+- 继电器断电记忆:联网后恢复继电器 2~4 上次状态,继电器 1(投喂)上电强制断开防误投料
+- 蓝牙串口调试命令(USART1):RESET/INFO/STATUS/R1ON~R4OFF/OTA/RECOVERY 等
+- 双看门狗:片内 IWDG(~26s) + 外置 TPL5010(7min,LED2 翻转喂狗)
+- 电量检测(PA0 ADC,低电量上报 pow:0)
+
+## V1.2 —— 新增 WiFi 通道
+
+### 新增
+- ESP-01S WiFi 通道(UART4,PC10/PC11,RST=PA5):TCP 透传 + MCU 软件 MQTT 3.1.1(不用 AT+MQTT)
+- 网络层抽象:`network.c` 统一 NET_* 接口,4G/WiFi 双后端互斥共享接收缓冲(Rx_Buf/U2_CopyBuff),业务层零改动
+- 通道切换:4G 无 SIM/无信号重试 3 次自动回退 WiFi;WiFi 按"固定热点(60s) → SmartConfig 智能配网(60s)"连接,失败回 4G 循环
+- WiFi/4G 波特率均提升至 921600(WiFi 侧 AT+UART_DEF 掉电保存,探测同步)
+- 4G 信号检测(AT+CSQ 转百分比输出,无信号置标志回退 WiFi)
+- GPS 定位周期上报(Air780EG 内置 GNSS,WGS-84→GCJ-02 高德坐标转换,5min 周期,fix 无效不上报)
+- 状态上报同时携带 sw1 与 feeding 两个字段(平台两个开关同步刷新)
+- 继电器断电记忆完善:改到 MQTT 首次就绪后恢复(修复 WiFi 兜底时永远不恢复的问题);无秤模式四路全恢复;投料模式 SW1 不恢复且强制关闭
+- 新增 RECOVERY 蓝牙命令:WiFi 模块 AT+RESTORE 恢复出厂(测试 SmartConfig 用)
+
+### 修复
+- 透传 CIPSEND 无响应:等 CIPSTART 的 OK 收尾+延时后再发;增加"已在透传态"探测兜底
+- AT 应答陈旧匹配:清缓冲改到发送之后,防止上一条应答尾巴造成"假成功"(曾致 CIPMODE 未生效)
+- UART ORE 导致 HAL 中止 DMA 接收:ErrorCallback 按当前通道自愈重新武装
+
+## V1.3 —— WiFi OTA + 联网方式记忆
+
+### 新增
+- WiFi 通道 OTA:ESP-01S 透传 TCP 上软件实现 HTTP Range 分块下载(3072B/块,MCU 自定节奏),复用 W25Q64 双槽+CRC+BootLoader 回退体系;下载失败自动重连 MQTT 恢复业务
+- 联网方式记忆(EEPROM 偏移 130):记录上次成功联网方式(4G / WiFi固定热点 / WiFi配网热点),仅变化时写一次,开机优先跑上次成功的方式
+- 已存 AP 自动连接改为 AT+CIPSTATUS 主动查询(修复被动等 "WIFI GOT IP" 打印被清缓冲擦掉、永远等不到的问题)
+
+### 修复
+- WiFi OTA 下载停摆:DMA(NORMAL) 填满 Rx_Buf 后无 IDLE 不触发、接收永久停摆 → 在 HAL_UART_RxCpltCallback 里搬运并重启接收(UART4/USART3 同步加)
+- 服务器整包灌流量冲爆接收缓冲:改 HTTP Range 分块请求自定节奏
+- AT 匹配严格化:二进制安全匹配(strstr 遇 0x00 失明问题)、收到 ERROR/FAIL 快速失败、进透传前 AT+CIPCLOSE 清残留连接、CIPMUX=0 先于 CIPMODE=1
+- SmartConfig 后等 IP 失败:改 CIPSTATUS 主动查询(打印被 CWSTOPSMART 交互擦掉的问题)
+
+## V1.4 —— FreeRTOS 版
+
+### 新增
+- 迁移到 FreeRTOS V10.0.1:net(3)/app(2)/sys(1) 三任务,idle 钩子喂 IWDG;HAL 时基改 TIM2(SysTick 归 RTOS)
+- 互斥锁三把:AT 会话锁(防业务发布与 AT 应答交织)、存储锁(EEPROM/W25Q64 跨任务)、日志锁
+- 无秤模式(PRODUCT_WITH_FEED_SCALE=0)不再上报 zero/onceWt 字段,平台下发设置直接拒绝
+- WiFi 断链处理与 4G 对齐:TCP CLOSED(被平台踢下线)/ 心跳超时(15s) → 打印原因并直接整机复位
+- Uptime 运行时长打印:联网后每 60s 一次(未联网不打印)
+
+### 修复
+- 迁移时漏抄 HAL_TIM_PeriodElapsedCallback(HAL 时基不走)导致开机复位循环
+- RECOVERY 在透传态下直接发 AT+RESTORE 被当 TCP 数据发走:先 "+++" 退透传;RTOS 下改为 net 任务内执行恢复流程
+- NET_LED 一直闪烁:补回 g_net_led_connected 状态映射(连接中闪烁,连上常亮)
diff --git a/水产投料机与四路继电器二合一/V1.5/版本说明.md b/水产投料机与四路继电器二合一/V1.5/版本说明.md
new file mode 100644
index 0000000..cb3d384
--- /dev/null
+++ b/水产投料机与四路继电器二合一/V1.5/版本说明.md
@@ -0,0 +1,95 @@
+# 版本说明
+
+## V1.1 —— 4G 基础版
+
+最初版本,纯 4G 通信。
+
+### 功能
+- 4G Air780E MQTT 联网(模组内置 MQTT,USART3 DMA+IDLE 接收,波特率自适应 115200→921600 掉电保存)
+- 四路继电器远程控制(sw1~sw4 / feeding 指令),带继电器反馈检测与负载异常应答
+- 两种产品形态宏 `PRODUCT_WITH_FEED_SCALE`:投料机(RS485 称重定量投喂,重量反增/超时保护)/ 基础四路继电器
+- 4G OTA 远程升级:HTTP 分块下载(3072B/块)→ W25Q64 暂存 → CRC16+固件头校验 → BootLoader 备份/搬运/失败回滚(3 次试错)
+- AT24C02 EEPROM 配置存储(MQTT 参数/版本号/继电器状态)
+- 继电器断电记忆:联网后恢复继电器 2~4 上次状态,继电器 1(投喂)上电强制断开防误投料
+- 蓝牙串口调试命令(USART1):RESET/INFO/STATUS/R1ON~R4OFF/OTA/RECOVERY 等
+- 双看门狗:片内 IWDG(~26s) + 外置 TPL5010(7min,LED2 翻转喂狗)
+- 电量检测(PA0 ADC,低电量上报 pow:0)
+
+## V1.2 —— 新增 WiFi 通道
+
+### 新增
+- ESP-01S WiFi 通道(UART4,PC10/PC11,RST=PA5):TCP 透传 + MCU 软件 MQTT 3.1.1(不用 AT+MQTT)
+- 网络层抽象:`network.c` 统一 NET_* 接口,4G/WiFi 双后端互斥共享接收缓冲(Rx_Buf/U2_CopyBuff),业务层零改动
+- 通道切换:4G 无 SIM/无信号重试 3 次自动回退 WiFi;WiFi 按"固定热点(60s) → SmartConfig 智能配网(60s)"连接,失败回 4G 循环
+- WiFi/4G 波特率均提升至 921600(WiFi 侧 AT+UART_DEF 掉电保存,探测同步)
+- 4G 信号检测(AT+CSQ 转百分比输出,无信号置标志回退 WiFi)
+- GPS 定位周期上报(Air780EG 内置 GNSS,WGS-84→GCJ-02 高德坐标转换,5min 周期,fix 无效不上报)
+- 状态上报同时携带 sw1 与 feeding 两个字段(平台两个开关同步刷新)
+- 继电器断电记忆完善:改到 MQTT 首次就绪后恢复(修复 WiFi 兜底时永远不恢复的问题);无秤模式四路全恢复;投料模式 SW1 不恢复且强制关闭
+- 新增 RECOVERY 蓝牙命令:WiFi 模块 AT+RESTORE 恢复出厂(测试 SmartConfig 用)
+
+### 修复
+- 透传 CIPSEND 无响应:等 CIPSTART 的 OK 收尾+延时后再发;增加"已在透传态"探测兜底
+- AT 应答陈旧匹配:清缓冲改到发送之后,防止上一条应答尾巴造成"假成功"(曾致 CIPMODE 未生效)
+- UART ORE 导致 HAL 中止 DMA 接收:ErrorCallback 按当前通道自愈重新武装
+
+## V1.3 —— WiFi OTA + 联网方式记忆
+
+### 新增
+- WiFi 通道 OTA:ESP-01S 透传 TCP 上软件实现 HTTP Range 分块下载(3072B/块,MCU 自定节奏),复用 W25Q64 双槽+CRC+BootLoader 回退体系;下载失败自动重连 MQTT 恢复业务
+- 联网方式记忆(EEPROM 偏移 130):记录上次成功联网方式(4G / WiFi固定热点 / WiFi配网热点),仅变化时写一次,开机优先跑上次成功的方式
+- 已存 AP 自动连接改为 AT+CIPSTATUS 主动查询(修复被动等 "WIFI GOT IP" 打印被清缓冲擦掉、永远等不到的问题)
+
+### 修复
+- WiFi OTA 下载停摆:DMA(NORMAL) 填满 Rx_Buf 后无 IDLE 不触发、接收永久停摆 → 在 HAL_UART_RxCpltCallback 里搬运并重启接收(UART4/USART3 同步加)
+- 服务器整包灌流量冲爆接收缓冲:改 HTTP Range 分块请求自定节奏
+- AT 匹配严格化:二进制安全匹配(strstr 遇 0x00 失明问题)、收到 ERROR/FAIL 快速失败、进透传前 AT+CIPCLOSE 清残留连接、CIPMUX=0 先于 CIPMODE=1
+- SmartConfig 后等 IP 失败:改 CIPSTATUS 主动查询(打印被 CWSTOPSMART 交互擦掉的问题)
+
+## V1.4 —— FreeRTOS 版
+
+### 新增
+- 迁移到 FreeRTOS V10.0.1:net(3)/app(2)/sys(1) 三任务,idle 钩子喂 IWDG;HAL 时基改 TIM2(SysTick 归 RTOS)
+- 互斥锁三把:AT 会话锁(防业务发布与 AT 应答交织)、存储锁(EEPROM/W25Q64 跨任务)、日志锁
+- 无秤模式(PRODUCT_WITH_FEED_SCALE=0)不再上报 zero/onceWt 字段,平台下发设置直接拒绝
+- WiFi 断链处理与 4G 对齐:TCP CLOSED(被平台踢下线)/ 心跳超时(15s) → 打印原因并直接整机复位
+- Uptime 运行时长打印:联网后每 60s 一次(未联网不打印)
+
+### 修复
+- 迁移时漏抄 HAL_TIM_PeriodElapsedCallback(HAL 时基不走)导致开机复位循环
+- RECOVERY 在透传态下直接发 AT+RESTORE 被当 TCP 数据发走:先 "+++" 退透传;RTOS 下改为 net 任务内执行恢复流程
+- NET_LED 一直闪烁:补回 g_net_led_connected 状态映射(连接中闪烁,连上常亮)
+
+## V1.4-Chinese —— 串口日志中文版
+
+### 新增
+- 全部串口日志中文化(UTF-8 输出,Keil 加 `--no_multibyte_chars` 解决 ARMCC 按 GBK 误读 UTF-8 吃引号问题)
+- 重启记录:开机打印最近 10 条"重启原因 + 上次运行时长"(W25Q64 0x100000 环形存储,一记录一扇区滑动覆盖;16 种原因码;BL 把 RCC->CSR 放共享 RAM 传给 APP)
+- 断电保护(法拉电容场景):PA0 检测 12V 断开(连续 3 次 <10% 去抖)→ 立即写断电记录+上报+复位;BootLoader 主电源门禁(12V 未恢复不跳 APP);电量百分比 0~100% 限幅
+- I2C 总线恢复:EEPROM 传输中途被复位拉死 SDA 时,初始化补 9 个时钟释放总线
+- BL:找不到有效 APP 时 3s 快速重试(原等 IWDG 26s);回退分支跳转前校验 APP 有效性;复位原因打印
+- SmartConfig 配网时 NET_LED 100ms 快闪提示;配网超时 60s→100s;新增 PRODUCT_WITH_GPS 宏开关 GPS 功能
+- HardFault 串口兜底打印(轮询 USART1)
+- 工程整理:bin 输出到 OutputBin/、编译对象到 Object/、AfterBuild 拆两条命令修复 bin 不更新
+
+### 修复
+- 首启偶发看门狗复位:I2C 总线被拉死(加上述恢复)
+- 重启记录回卷一次丢 9 条:改一记录一扇区,真正滑动覆盖
+- 电量显示负数:限幅 0~100%(3.3V 基准下跌失真)
+- OTA 结果/确认上报超时:net 任务与业务任务竞争共享接收缓冲 → NET_process 消费加锁、发布改 2s 超时锁
+
+## V1.5 —— 蓝牙模块自动配置 + GBK 日志 + 日志等级
+
+### 新增
+- HLK-B40 蓝牙模块自动配置(`ble_at.c`):
+ - PB0(开漏)控制模块 PC5 进 AT 模式,上电设 `AT+NAME=` + GATT UUID(FFE0 服务 + FFE1 收发共用特征,JDY-31/HM-10 同款,通用 BLE 串口 APP 可连),AT+REBOOT 生效
+ - EEPROM(偏移 132)缓存已配置名称:命中则开机**完全跳过 AT 流程**(零 AT 窗口,蓝牙 APP 不再断联,开机最早的重启记录日志都能看到);`BLESET` 命令手动强制重设
+- 串口日志改 GBK 编码输出(源码整体 UTF-8→GBK 转换,串口工具选 GBK 显示中文)
+- 日志等级六档命令:`LOGTRACE/LOGDEBUG/LOGINFO/LOGWARN/LOGERROR/LOGFATAL`(无下划线便于手机输入),`LOG` 查询显示等级名;写 EEPROM(偏移 160)断电保持
+- USART1/USART2 接收 ORE 自愈(蓝牙模块重启乱码不再打死命令通道)
+- U2_CopyBuff 20KB→10KB(RAM 占用 45.8KB→35.8KB)
+
+### 修复
+- 蓝牙改名被撞写:APP 数据撞进 AT 窗口把名字写成 "info" → 改"先查询后设置"幂等流程(名字已对就不开 AT 窗口)
+- 设置后当场回查失败:模块设置重启才生效,改为下次开机查询校验
+- OTA 结果/确认上报超时:net 任务与业务任务竞争共享接收缓冲 → NET_process 消费加锁、发布改 2s 超时锁