振南技术干货集:制冷设备大型IoT监测项目研发纪实(4)
注解目录
1.制冷设备的监测迫在眉睫
1.1 冷食的利润贡献
1.2 冷设监测系统的困难
(制冷设备对于便利店为何如何重要?了解一下你所不知道的便利店和新零售行业。关于电力线载波通信的论战。)
2、电路设计
2.1 防护电路
2.1.1 强电防护
2.1.2 弱电防护
(浪涌、脉冲群、静电、过压、雷击,你的电路扛得住吗?加些防护吧。)
2.2 电路复用(电路设计,仔细思考一下,不要作重复劳动。)
3、协议设计
3.1 内外机通信协议
(电力线通信环境是复杂而恶劣的。振南设计的时分复用与冗余编码协议,了解一下。)
3.2 主机与 WIFI Agent 通信协议
(乐鑫 ESP8266 连接 WIFI,数据上私有云。Json 了解一下。)
4、自动化生产与测试
4.1 自动化烧录
4.2 自动化测试
(芯片预处理、自动化烧录和测试,半个月生产 9000 套硬件,看看我是如何作到的。)
5、工程测试与安装
5.1 工程测试(手机蓝牙远程调试)
5.2 工程安装
(看我们上天入地安装设备。蓝牙调试,几十米外无线烧录,一部手机全搞定。)
6、冷设监测数据分析
(开放一些内部数据,看看实际效果。)
7、冷设监测故障预判作用评估
7.1 故障预判时效
7.2 对维修保养的验收指导作用
7.3 故障报警受气温的影响
(努力没有白费,省下的是实实在在的真金白银。)
8、冷设预警的典型案例
1)申虹路某店
2)恒通商务园某店
(这里有 ABC IOT 系统的内部监测数据,一切的努力都归结于这些曲线上。)
4
自动化生产与测试
ABC 便利店单单在北京就已经超过 1000 家,全国算下来足有 3000 家左右。这套系统需要在每家店进行部署,而且要赶在 2019 年 5 月份之前完成(这套系统研发完成大约是在 2019年3月),2个月完成几千家店的部署,先不说安装调试是一个浩大的工程,这首先对代工厂的生产能力就提出了很高的要求,保证在半个月的时间里把几千套冷设监测设备生产制造出来,而且还要做到很高的良品率。这要求代工厂加工设备、人员人力等方面都要跟得上,更重要的是要有一整套非常高效成熟的测试手段。在如何实现自动化生产及测试方面,振南下了大功夫,来一起看看振南是怎样做的。
此时有人可能会问:“说了这么多,我们还没有看到这套冷设监测设备的庐山真面目呢?”好,振南在这里放一些照片,如图 8.21~7.24 所示。

图 8.21 冷设监测设备一主一从通过电力线进行通信
4.1 自动化烧录
有过电子产品批量化生产经历的人都会知道,生产过程中的固件烧录是一件耗时费力的工作。如果我们想办法实现自动化烧录,那生产效率将会有很大的飞跃。

图 8.22 冷设监测设备主机

图 8.23 冷设监测设备从机(图中所示为温度探头及互感器接口)
冷设监测整套系统一共包括好几个嵌入式软件,如表 8.1 所列。

我们将这些嵌入式文件统一打包成一个大文件,俗称“大 BIN”,如图 8.25 所示。

图 8.24 冷设监测设主机安装于室内(直接插在墙插插座上即可与从机通信)

图 8.25 用于将诸多 BIN 打包成一个大 BIN 的软件
最终会生成一个体积为1MB的 out.bin 文件。
我们在进行批量 SMT 焊接之前,将此 out. bin 文件事先烧录到板上的片外 spiFlash 中还有所有的STM32 芯片都事先烧录好 BL.bin(即 Bootloader),如图 8.26 所示OK,经过 SMT 焊接后的 PCBA 是已经内置了所有嵌入式固件的。上电后,STM32 的BL 会判断此次启动是否为首次启动,依据是其 APP 区是否为空(擦除或未经编程的内部Flash 为全 FF)。若为首次启动,BL 将判断此电路是主机还是从机,依据是所插接的模块是WiFi模块还是采集模块,然后从片外 spiFlash 中读取相应的嵌入式固件烧录到 APP 区中,再

图 8.26 将嵌入式固件事先烧录到片上 spiFlash 与 STM32 中
完成 WiFi Agent 的固件烧录。这样,就实现了自动化烧录。
“你说起来倒是轻描淡写,自动化烧录应该没那么简单,比如如何判断插接的是什么模块?再比如 BL 如何烧写 Wifi Agent(ESP8266),这个烧写协议应该不简单吧?”
振南在主板与模块的接口中专门留了一个 I/0 用于模块的识别,不同的模块对此 I/0 进行了上拉或下拉。BL 依此 I/0 的高低电平状态来确认需要烧录哪个固件(关于 BL 更深入的内容请参见“深人浅出话 Bootloader”一章或者振南的《高手C》课程)。而 ESP8266 的烧写,其实并没有很复杂,感兴趣的读者可以看一下串口 SLIP 协议(ESP8266 的烧写不是本章的重点,故不在这里展开来讲,网上这方面的教程比较多,大家可以自行学习)。
4.2 自动化测试
自动化测试是依靠测试工装来实现的(关于测试工装我想我不必赘述,有经验的工程师都知道测试工装是什么)。振南还是直接上图吧,如图 8.27 所示。
从这张流程图中可以看到,我们需要在 PCBA、工装及上位机之间制定一套协议,以便PCBA 告知上位机其当前的状态,是因为首次上电而准备进行程序烧录,或是即将以主机或从机身份进行自测试,再或是已完成某一项自测试,成功还是失败。自测试项涵盖电路上所有重要功能,比如电力线通信、WiFi 模块工作状态、温度检测、电流检测等等。嵌入式进入自测试程序之后,会依次完成所有自测试项,并将测试结果告知上位机。最终由上位机裁决自测试是否通过,对于测试通过的主机,会直接打印二维码标签(此二维码的意义就是主机的 MAC 地址),由人工贴于 PCBA 上;而对于从机则会打印接线图,以便指导人员对温度探头和互感器进行安装,这样起到一个简易说明书的作用。如果测试未通过,则将未通过的测试项打印出来,仍然由人工贴在 PCBA 上,以便检修。
“打签这个想法确实非常新颖,不错!”为了提高生产和测试,乃至于后期工程安装的效率我们确实想了很多的办法。大家可以猜一下,那个主机上的二维码贴签有什么作用(可以扫一扫试试),如图 8.28 所示。在后面要讲到的工程安装中,它将大有用处。
有这些自动烧录和自动测试手段的加持,我们在半个月内完成了 9000 套电路的生产(包含 3000台主机和 6000 台从机)。

图 8.27 依靠工装及上位机实现自动化测试

图 8.28 主机上贴有用于表达其 MAC 地址与 SN 号的二维码标签
相关文章:
振南技术干货集:制冷设备大型IoT监测项目研发纪实(4)
注解目录 1.制冷设备的监测迫在眉睫 1.1 冷食的利润贡献 1.2 冷设监测系统的困难 (制冷设备对于便利店为何如何重要?了解一下你所不知道的便利店和新零售行业。关于电力线载波通信的论战。) 2、电路设计 2.1 防护电路 2.1.1 强电防护 …...
Android线程优化——整体思路与方法
**在日常开发APP的过程中,难免需要使用第二方库和第三方库来帮助开发者快速实现一些功能,提高开发效率。但是,这些库也可能会给线程带来一定的压力,主要表现在以下几个方面: 线程数量增多:一些库可能会在后…...
论防火墙的体系结构
防火墙的体系结构 防火墙的体系结构 双重宿主主机体系结构。屏蔽主机体系结构。屏蔽子网体系结构。 双重宿主主机体系结构 双重宿主主机体系结构是指以一台具有双重宿主的主机计算机作为防火墙系统的主体,执行分离外部网络与内部网络的任务。该计算机至少有两个…...
BeansTalkd 做消息队列服务
无意间看到这个仓库讲php关于 BeanStalkd 的扩展,然后就去了解了一下beanstalkd,用它可以用来做队列服务。 话不多说,安装一下试试。 首先 sudo apt search beanstalk 搜索一下发现 Sorting... Done Full Text Search... Done awscli/focal…...
csv文件添加文件内容和读取
append content to file import numpy as np acc_listnp.array([0.97,0.92,0.93,0.89]) # 注意这个地方添加文件不需要特别声明是什么文件 file open("result.csv", "a") print("{:.2f}, {:.2f}".format(acc_list.mean(), acc_list.std()), f…...
关于禅道的安装配置以及项目管理、团队协同工作
目录 一、禅道是什么? 二、特点和功能 三、安装禅道 3.1 下载官网 3.2 版本考虑 3.3 禅道使用手册参考 3.4 Windows端安装禅道 四、启动禅道 4.1 访问禅道 四、禅道部分功能的使用 4.1 添加项目集 4.2 启动/关闭项目 4.3 项目计划仪表盘/阶段目标/研发…...
使用Wireshark提取流量中图片方法
0.前言 记得一次CTF当中有一题是给了一个pcapng格式的流量包,flag好像在某个响应中的图片里。比较简单,后来也遇到过类似的情况,所以总结和记录一下使用Wireshark提取图片的方法。 提取的前提是HTTP协议,至于HTTPS的协议需要导入服…...
C#,简单修改Visual Studio 2022设置以支持C#最新版本的编译器,尊享编程之趣
1 PLS README & CHAPTER 5 用一个超简单的例子说明各版本 C# 的差异。 使用新版本(比如C#.11),当然有一定的好处。我们在写程序的时候一般这样: Visual Studio 2022 默认只能这样写: string imageFile Path.C…...
小程序Tab栏与页面滚动联动
小程序tab栏切换与页面滚动联动 tab栏与页面滚动联动点击tab栏页面跳到指定位置滚动页面时切换tab栏 tab栏与页面滚动联动 在进行小程序开发时,需要实现点击tab栏页面滚动到某一指定位置,并且滚动页面时,小程序的tab栏进行切换。 在一开始&a…...
Java,数据结构与集合源码,关于List接口的实现类(ArrayList、Vector、LinkedList)的源码剖析
目录 ArrayList ArrayList的特点: ArrayList源码解析: Vector Vector的特点: Vector源码解析: LinkedList LinkedList的特点: LinkedList的源码剖析: 使用说明: ArrayList ArrayList的…...
算法基础(python版本)
第二章 算法设计思想 一、搜索排序 1.排序算法 https://visualgo.net/zh/sorting (1)冒泡排序 # 思路: # (1)比较相邻元素,如果第一个比第二个大,则交换他们 # (2)第一轮下来,可以保证最后一个数一定是最大的;第二…...
使用Arrays.Sort并定制Comparator排序解决合并区间
合并区间-力扣算法题56题 以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。 示例 1: 输入&am…...
【机器学习】039_合理初始化
一、稳定训练 目标:使梯度值在更合理的范围内 常见方法如下: 将乘法变为加法 ResNet:当层数较多时,会加入一些加法进去 LSTM:如果时序序列较长时,把一些对时序的乘法做加法 归一化 梯度归一化&…...
使用Arrays.asList与不使用的区别
在写算法的时候,遇到了有的题解使用的是Arrays.asList,也有的是直接新建一个List集合将元素加进去的。 看了一下算法的时间,两者居然相差了9秒。 算法原地址: 力扣(LeetCode)官网 - 全球极客挚爱的技术成长…...
基于可变形卷积和注意力机制的带钢表面缺陷快速检测网络DCAM-Net(论文阅读笔记)
原论文链接->DCAM-Net: A Rapid Detection Network for Strip Steel Surface Defects Based on Deformable Convolution and Attention Mechanism | IEEE Journals & Magazine | IEEE Xplore DCAM-Net: A Rapid Detection Network for Strip Steel Surface Defects Base…...
el-table 对循环产生的空白列赋默认值
1. el-table 空白列赋值 对el-table中未传数据存在空白的列赋默认值0。使用el-table 提供的插槽 slot-scope:{{ row || ‘0’ }} 原数据: <el-table-column label"集镇" :propcity ><template slot-scope"{row}">{{…...
新一代网络监控技术——Telemetry
一、Telemetry的背景 传统的网络设备监控方式有SNMP、CLI、Syslog、NetStream、sFlow,其中SNMP为主流的监控数据方式。而随着网络系统规模的扩大,网络设备数量的增多,网络结构的复杂,相应监控要求也不断提升,如今这些…...
java斗牛,咋金花
无聊时间,打发下游戏 简单说下思路 目录 1.创建牌对象 2.创建52张牌,不包含大小王 3.洗牌 4.发牌 1.创建牌对象 2.创建52张牌,不包含大小王 3.洗牌 4.发牌 /*** 扑克牌*/ public class Poker {/*** 花色*/private String cardSuits…...
深信服技术认证“SCSA-S”划重点:信息收集
为帮助大家更加系统化地学习网络安全知识,以及更高效地通过深信服安全服务认证工程师考核,深信服特别推出“SCSA-S认证备考秘笈”共十期内容,“考试重点”内容框架,帮助大家快速get重点知识~ 划重点来啦 深信服安全服务认证工程师…...
代码逻辑修复与其他爬虫ip库的应用
在一个项目中,由于需要设置 http_proxy 来爬虫IP访问网络,但在使用 requests 库下载文件时遇到了问题。具体表现为在执行 Python 脚本时,程序会阻塞并最终超时,无法正常完成文件下载。 解决方案 针对这个问题,我们可以…...
为什么92%的嵌入式团队仍在用MD5做固件校验?——深度拆解SHA-256+HMAC+物理不可克隆函数(PUF)在C固件中的零信任落地实践
更多请点击: https://intelliparadigm.com 第一章:军工级 C 语言防篡改固件开发 在高安全嵌入式场景中,固件完整性是系统可信启动的基石。军工级要求不仅需抵御静态逆向分析,还必须防范运行时内存篡改、闪存重写及物理侧信道攻击…...
从源码交付到低代码集成:解析 GB28181/RTSP 视频中台的二次开发架构,如何节省 95% 开发成本?
从源码交付到低代码集成:解析 GB28181/RTSP 视频中台的二次开发架构,如何节省 95% 开发成本? 引言:安防开发者的“围城” 作为一名深耕安防领域十年的架构师,我见过太多集成商在项目落地的最后一步“踩坑”ÿ…...
【Android】歌歌AI写歌软件|AI一键原创作曲,声音克隆轻松做音乐
【Android】歌歌AI写歌软件|AI一键原创作曲,声音克隆轻松做音乐 链接:https://pan.xunlei.com/s/VOrDBwN20uV0INGDWDCQm11WA1?pwdwewt# 歌歌AI写歌软件app,AI智能写歌神器,输入灵感歌词即刻生成原创曲目。 支持人声…...
认知元素框架:解析人类与LLM推理差异
1. 认知元素框架:理解推理的基本构件 在认知科学领域,人类思维过程可以被分解为一系列相互作用的认知元素。这些元素构成了我们理解复杂问题和寻找解决方案的基础能力。就像乐高积木一样,单个认知元素看似简单,但当它们被灵活组合…...
Golang怎么实现分布式追踪采样_Golang如何设置采样率控制Trace数据的采集比例【技巧】
Go 的 oteltrace.Tracer 默认使用 sdktrace.NeverSample() 全丢弃 span,必须通过 TracerProvider 配置 sdktrace.WithSampler(如 ParentBased TraceIDRatioBased)并确保 trace context 正确传播。Go 的 oteltrace.Tracer 默认不采样…...
DINO-SAE:结合预训练视觉模型的高保真图像重建技术
1. 项目概述DINO-SAE(DINO Spherical Autoencoder)是一种创新的图像重建与生成框架,它巧妙地将预训练视觉基础模型(VFM)的语义提取能力与高保真重建需求相结合。这项技术的核心突破在于解决了传统方法中语义保持与像素…...
终极麻将AI助手:Akagi实战部署与深度定制完整指南
终极麻将AI助手:Akagi实战部署与深度定制完整指南 【免费下载链接】Akagi 支持雀魂、天鳳、麻雀一番街、天月麻將,能夠使用自定義的AI模型實時分析對局並給出建議,內建Mortal AI作為示例。 Supports Majsoul, Tenhou, Riichi City, Amatsuki,…...
RAG 工程实践:分块策略、Rerank、混合检索,这些细节决定效果上限
上一篇我们把 Milvus 从零搭起来,完成了语义检索的底座建设。但我发现很多同学搭完之后,效果一般,明明向量库有答案,就是检索不出来——这篇讲的,就是那些把 RAG 效果从"能用"拉到"好用"的工程细节…...
开源配置管理库opencode-config:轻量级、强类型、动态刷新的Java配置解决方案
1. 项目概述:一个开源配置管理库的诞生与价值在软件开发中,配置管理是个老生常谈却又常谈常新的问题。从单体应用时代写在application.properties里的几行键值对,到微服务架构下动辄上百个服务的环境变量、数据库连接串、第三方API密钥&#…...
CMHG数据集:中国少数民族语言标题生成研究突破
1. CMHG数据集:填补中国少数民族语言标题生成研究空白在自然语言处理领域,标题生成技术一直是个既基础又关键的研究方向。想象一下,当你浏览新闻网站时,那些吸引你点击的标题背后,正是这项技术的实际应用。然而&#x…...
