按时间记录的工程笔记。
围绕真实项目里遇到的问题写成短文,覆盖 STM32 / RT-Thread / Flutter Web / 部署细节。每篇文章对应项目里一个具体环节。
最近更新
继电器控制与 DI 去抖:手动/自动模式
STM32 的继电器输出控制、DI 输入去抖处理、手动/自动模式切换,以及本地按键与远程控制的优先级设计。
2026-05-06服务端架构:Mosquitto + Node API + WebSocket
Mill 系统的服务端设计:MQTT broker 订阅设备数据、Node.js API 持久化与鉴权、WebSocket 实时广播。
2026-05-05Modbus 寄存器映射:现场主站与维护从站
STM32 双角色 Modbus 设计:USART2 主站轮询传感器,USART3 从站暴露 91 个寄存器供 G780s 和远程维护使用。
2026-05-04Flutter 磨坊客户端:实时监控与历史回溯
com.varka.mill 的 Flutter 客户端设计,覆盖实时 WebSocket 数据、历史趋势图、告警管理和继电器远程控制。
2026-05-03G780s 边缘 JSON 与 MQTT 上云
G780s 通信模块的 AT 配置、边缘 JSON 组包、MQTT over TLS 上云,以及服务端字段映射的实现。
2026-05-02OTA 桌面工具:从本地升级到远程维护
.NET / WPF 架构的 OTA 工具设计,覆盖本地 YMODEM 升级、虚拟串口远程升级和 Modbus 维护帧生成。
2026-05-01A/B 双槽位固件升级:Bootloader 设计与回退机制
STM32 的 Flash 分区策略、Bootloader 升级流程、CRC32 + SHA-256 + 向量表三重校验,以及连续失败自动回退的实现细节。
2026-04-30Mill 磨坊系统综述:STM32F103 工业控制与远程维护
围绕 STM32F103 + G780s 构建的工业磨坊控制与维护系统,覆盖 Modbus 现场采集、A/B 双槽位固件升级、远程 MQTT 通信和 Flutter 移动端监控。
2026-04-29FAL 分区与 LittleFS:SPI NOR Flash 的可靠存储
从 Flash 分区表到 LittleFS 文件系统挂载,详解 PipeMonitor 如何在 SPI NOR Flash 上构建断电安全的存储层。
2026-04-28字节序问题:流量计 REAL4 解析与联调踩坑
Modbus RTU 的 32 位数据传输涉及字节序和字序的组合,不同厂商的习惯不同。详解 PipeMonitor 如何用可配置的解析策略解决联调时的字节序问题。
2026-04-27嵌入式浮点处理:避免 %f 的定点格式化技巧
在 newlib-nano 不支持 %f 的环境下,如何用纯整数运算实现浮点数的定点格式化,保证 LCD 和 JSON 输出的精度与对齐。
2026-04-26报警系统:阈值判定、边沿触发与多级严重性
PipeMonitor 的报警设计:如何避免同一条规则每 2 秒刷一次报警,如何区分警告和严重故障,如何让上行线程即时上报。
2026-04-25Modbus 服务层:邮箱队列与总线串行化
通过邮箱 + 信号量实现 Modbus 总线的串行化访问,让多个业务线程安全地共享同一条 RS485 总线,避免时序冲突。
2026-04-24传感器驱动抽象:流量计、温压、PT100 的统一设计模式
详解 PipeMonitor 三类传感器驱动的分层设计:设备层屏蔽硬件差异,服务层提供统一接口,业务层只关心测量值。
2026-04-23离线缓存与断点补传:LittleFS 上的可靠存储
PipeMonitor 的双层存储设计:CSV 落盘供离线分析,pending.jsonl 缓存未送达的上行帧,网络恢复后自动补传,保证数据不丢。
2026-04-22按键输入与 LCD 电源管理:PA15 复用与防残影策略
从硬件引脚复用到软件消抖,从 LCD 背光控制到周期性 IC 重初始化,详解 PipeMonitor 的人机交互与显示维护设计。
2026-04-21看门狗与多任务健康监控:不止是喂狗
PipeMonitor 的看门狗设计:不止是简单的 IWDG 喂狗,而是对采集、显示、心跳、上行四个关键线程分别做健康检查,任一线程卡死都能自动复位恢复。
2026-04-20上行通信:JSON 编码、云端 ACK 与断点补传
详解 PipeMonitor 的上行服务设计:手写 JSON 编码器、DR154 透传链路、云端确认机制,以及网络中断时的离线缓存与自动补传策略。
2026-04-19云端确认与历史去重:cloud_ack 下行链路 + UNIQUE(device_id, seq)
tele / alarm 先落库再回 cloud_ack,历史表用 (device_id, seq) 唯一键 + ON DUPLICATE KEY 兜底重放,配合 heart_count 心跳计数把上行链路的可靠性闭环。
2026-04-18PipeMonitor 多线程架构:RT-Thread 事件驱动设计
围绕 STM32H562 + RT-Thread 的多线程分离架构,详解采集、显示、存储、上行四大线程如何通过事件位与消息队列解耦协作。
2026-04-17Flutter Web 接入 pipe-monitor.varka.cn/scada 的部署契约
PipeMonitor 的 Flutter Web 端通过 base-href 编排部署到 /scada/,与 API 和 WebSocket 共用 pipe-monitor.varka.cn,Nginx 子路径单独做 SPA 回退。
2026-04-16LCD 防闪烁与 LittleFS CSV 存储
UI 线程通过脏数据局部重绘消除闪烁;LittleFS 上的 measurements.csv 按时间批量刷盘并自动 Rotate,保证现场无网络也能离线溯源。
2026-04-15Modbus RTU 主站与 nanomodbus 封装
Modbus_Master / Modbus_Service / nanomodbus 三层划分,统一管理采集间隔、超时容错和异常节点过滤,支撑 PXW、超声波、PT100 三类传感器接入。
2026-04-14PipeMonitor 项目综述:STM32H562 + RT-Thread 边缘管道监测
围绕 STM32H562 与 RT-Thread 完整版搭建的 Modbus RTU 主站,统一接入压力、温度、流量传感器,本地 LCD 实时显示并落盘 CSV。