edyang

我干了什么 究竟拿了时间换了什么
技术分享时间线软件开发、设备接入、视觉与运维实践

Darknet 与 YOLOv2:检测头输出的是什么

检测框和类别不是图像里所有语义。

检测框和类别不是图像里所有语义。理解网络输出,才能判断能否迁移到文档标题与印章。 本文使用原版 Darknet 固定历史提交、YOLOv2/YOLOv3 与演示图片。目标检测回答对象类别与位置,不自动识别全部文字或判断印章真伪。文中的训练与部署方案属于可复现方法,没有给出未经测试的准确率、速度或客户验收成绩。 1. 从现象推到机制 YOLOv2(第二代单阶段检测器)在网格位置预测边界框...

Darknet 研究:先跑通 CPU,再核对 GPU 构建

编译器、CUDA 和 cuDNN 同时变化时,出错很难定位。

编译器、CUDA 和 cuDNN 同时变化时,出错很难定位。先用最小计算路径确认代码与输入。 本文使用原版 Darknet 固定历史提交、YOLOv2/YOLOv3 与演示图片。目标检测回答对象类别与位置,不自动识别全部文字或判断印章真伪。文中的训练与部署方案属于可复现方法,没有给出未经测试的准确率、速度或客户验收成绩。 1. 从现象推到机制 Darknet 使用构建选项选择 CPU/...

Node-RED 接米家思路:用适配层隔开设备协议

规则直接依赖某个品牌的原始字段,换设备时就要重画全部流程。

规则直接依赖某个品牌的原始字段,换设备时就要重画全部流程。适配层可以保留业务语义。 本文使用米家设备、网关与 Node-RED 的架构研究,接入能力按具体型号确认。米家不是一个所有设备都开放相同本地接口的统一协议。设备型号、网关和固件会影响可用能力,本文不声称任意设备都能绕过云端或直接接受自定义控制。 1. 从现象推到机制 设备适配器把原始字段转换为统一能力,例如温度读取和灯状态,规则...

智能家居规则:阈值附近抖动要用迟滞处理

温度在阈值附近波动,设备就反复开关。

温度在阈值附近波动,设备就反复开关。规则不仅要判断数值,还要考虑当前状态和时间。 本文使用米家设备、网关与 Node-RED 的架构研究,接入能力按具体型号确认。米家不是一个所有设备都开放相同本地接口的统一协议。设备型号、网关和固件会影响可用能力,本文不声称任意设备都能绕过云端或直接接受自定义控制。 1. 从现象推到机制 迟滞使用不同的开与关阈值,在中间区间保持现状;最小保持时间减少短...

米家与本地自动化:断网后哪些能力仍然成立

“支持本地控制”需要说明是哪条链路。

“支持本地控制”需要说明是哪条链路。手机、网关与设备的网络依赖可能各不相同。 本文使用米家设备、网关与 Node-RED 的架构研究,接入能力按具体型号确认。米家不是一个所有设备都开放相同本地接口的统一协议。设备型号、网关和固件会影响可用能力,本文不声称任意设备都能绕过云端或直接接受自定义控制。 1. 从现象推到机制 状态读取、下发命令、规则触发和账号登录可能分属不同路径。断开外网但保...

树莓派研究:UART 能接上软件之前先确认电平

串口编号、TX/RX 和电平都正确,才有机会讨论协议。

串口编号、TX/RX 和电平都正确,才有机会讨论协议。GPIO 不能因为接口长得像就直接连接。 本文使用树莓派 3 Model B 与 Raspbian,使用独立测试存储卡。树莓派把 Linux 软件环境与实际供电、存储和接口连接起来。命令执行成功不证明电气连接正确,服务运行也不代表采集数据具有正确单位。 1. 从现象推到机制 UART(异步串行接口)定义收发时序,TTL 电平、RS-...

树莓派研究:把采集脚本交给 systemd 管理

SSH 断开后采集停止,说明脚本仍依赖终端会话。

SSH 断开后采集停止,说明脚本仍依赖终端会话。长期服务需要明确启动与退出管理。 本文使用树莓派 3 Model B 与 Raspbian,使用独立测试存储卡。树莓派把 Linux 软件环境与实际供电、存储和接口连接起来。命令执行成功不证明电气连接正确,服务运行也不代表采集数据具有正确单位。 1. 从现象推到机制 systemd(服务管理器)按单元配置运行身份、工作目录、重启和日志。n...

树莓派研究:随机重启先查供电与存储

程序偶发退出、文件系统异常或板子重启,不一定是业务代码造成。

程序偶发退出、文件系统异常或板子重启,不一定是业务代码造成。电源和存储属于基础条件。 本文使用树莓派 3 Model B 与 Raspbian,使用独立测试存储卡。树莓派把 Linux 软件环境与实际供电、存储和接口连接起来。命令执行成功不证明电气连接正确,服务运行也不代表采集数据具有正确单位。 1. 从现象推到机制 外设瞬时负载、电源线压降与不稳定适配器都可能影响运行。存储卡写入异常...

Arduino 串口:先定义一条命令怎样结束

串口读到一两个字节就解析,可能把半条命令当完整消息。

串口读到一两个字节就解析,可能把半条命令当完整消息。边界与长度需要写进协议。 本文使用Arduino IDE 1.8.5、Uno 级演示板与该版本配套核心库。Arduino(开源微控制器平台)简化编译和烧录,仍需要理解循环、计时与硬件状态。不同板卡的电压、编号和库支持不能互相默认兼容。 1. 从现象推到机制 串口也是字节流,分隔符或长度字段决定帧结束。缓冲区必须有上限,接收超时后丢弃半...

Arduino 编程:用 millis 替代长时间 delay

长时间 delay 让灯按计划闪,却也让按键与通信处理暂停。

长时间 delay 让灯按计划闪,却也让按键与通信处理暂停。多个任务需要协作式安排。 本文使用Arduino IDE 1.8.5、Uno 级演示板与该版本配套核心库。Arduino(开源微控制器平台)简化编译和烧录,仍需要理解循环、计时与硬件状态。不同板卡的电压、编号和库支持不能互相默认兼容。 1. 从现象推到机制 loop 持续检查当前时间与上次执行时间,让每个短任务按条件运行。mi...