Zigbee无线传感网实战:基于ZStack与STM32的光敏数据采集系统

物联网实验 对于团队协作与待人处事方面,实验让我们懂得了团队协作的重要性,教导我们以谦虚严谨的态度对待生活中的人与事,以认真负责的态度对待队友,通过实验的积极的讨论,理性的争辩,可以让我们更加接近真理。不过说实话,在做试验之前,我以为不会难做,就像以前做的实验一样,操作应该不会很难,做完实验之后两下子就将实验报告写完,直到做完实验后,我才知道其实并不容易做,要注意其中的很多细节,而且要真正的领悟其中的道理,而不是无脑跟着视频操作,这样我们不会有真正的收获的。这样在做实验,才能做到心中有数,从而把实验做好做细。 阅读详情

1. 项目背景与核心价值

在实际的物联网环境监测项目中,无线传感网络的稳定性和低功耗特性往往是开发者最关心的核心问题。今天我要分享的正是基于Zigbee协议栈ZStack和STM32微控制器的光敏数据采集系统实战经验。这个系统不仅实现了光照强度的无线采集与传输,还结合了Modbus通信协议进行数据交互,非常适合嵌入式开发者和物联网工程师用来构建低功耗无线传感网络。

我在实际项目中多次使用这种方案,特别是在智能农业光照监测和室内环境监控场景中,它的稳定性和低功耗表现真的让人惊喜。整个系统包含协调器节点和终端节点,协调器负责与上位机通信,终端节点则搭载光敏传感器和STM32芯片,通过Zigbee网络实现无线数据传输。相比于Wi-Fi或蓝牙方案,Zigbee在覆盖范围和节点数量上更有优势,特别适合中等范围的物联网应用。

如果你正在寻找一个可落地的无线传感网络方案,这个项目会给你很多实用参考。从硬件选型到协议栈配置,从数据采集到无线传输,我会把每个环节的细节和踩坑经验都分享出来,让你少走弯路。

2. 硬件选型与电路设计

2.1 核心硬件组件选择

在硬件选择上,这个系统主要依赖几个关键组件:Zigbee节点(基于CC2530芯片)、STM32微控制器和光敏传感器。CC2530是TI推出的Zigbee系统级芯片,内置8051内核和RF收发器,支持2.4GHz频段,最高传输速率可达250kbps。我选择它的原因是功耗低且兼容ZStack协议栈,开发起来比较省心。

STM32方面,我推荐使用STM32F103系列,它拥有12位ADC和多个USART接口,完全满足光敏数据采集和串口通信的需求。光敏传感器则选用常规的光敏电阻,它的电阻值会随光照强度变化,通常在无光环境下阻值达到1-2MΩ,有光时降至1-15kΩ。这种传感器成本低、响应快,适合大多数环境监测场景。

除了核心芯片,还需要一些辅助硬件:CC Debugger仿真器用于程序烧录,J-LINK用于STM32调试,以及串口转换模块用于电脑通信。在实际部署时,建议给每个节点配备独立电源,避免共地干扰,同时注意天线布局,尽量远离金属物体以保证信号质量。

2.2 光敏传感器电路详解

光敏传感器的电路设计直接影响到数据采集的准确性。这里采用经典的分压电路设计,将光敏电阻与一个10kΩ的固定电阻串联,连接至STM32的PA4引脚(ADC输入通道)。当光照变化时,光敏电阻的阻值变化会导致分压点电压改变,STM32通过ADC读取这个电压值即可推算光照强度。

根据电路参数计算,在无光环境下(暗电阻2MΩ),分压点电压约为0.016V;在有光环境下(亮电阻15kΩ),电压升至1.3V。STM32的ADC为12位分辨率,参考电压3.3V,因此1.3V对应的ADC值为(1.3/3.3)*4096≈1613。这个值可以作为光照有无的临界阈值,实际应用中你可以根据环境调整阈值范围。

为了提升采集精度,我建议在软件层面做一些优化:首先,采用多次采样取平均的方式降低随机误差;其次,添加简单的滤波算法排除突发干扰;最后,根据实际校准情况调整ADC值的换算公式,因为不同批次的光敏电阻参数可能有细微差异。

3. 软件环境搭建与配置

3.1 开发工具与协议栈安装

软件开发需要准备两个环境:IAR Embedded Workbench用于ZStack协议栈开发,Keil MDK用于STM32固件编写。IAR版本建议使用8.10以上,确保兼容ZStack-CC2530-2.5.0协议栈。安装完成后,记得添加CC2530的设备支持包,否则编译时会报错找不到芯片定义。

ZStack协议栈需要从TI官网下载,或者使用实验配套的资源包。解压后注意工程路径不要包含中文或特殊字符,否则IAR可能无法正常打开。我在第一次搭建环境时就遇到了路径问题,后来把整个工程移到桌面才解决。STM32开发环境使用Keil MDK,安装STM32F1系列的设备包,并配置好J-LINK驱动。

除了基础工具,还需要准备串口调试助手和CRC计算工具,用于测试和验证Modbus通信。这些工具虽然简单,但在调试阶段能帮大忙。整个环境搭建大概需要半天时间,遇到问题时多查阅官方文档,大部分常见问题都有解决方案。

3.2 工程配置与编译设置

ZStack工程配置有几个关键点:首先是PANID设置,默认是0xFF11,但如果多人同时实验,建议修改为独立值(0x0000-0xFFFF),避免网络冲突。修改方法是在IAR工程的f8wConfig.cfg文件中,找到DEFINE=ZDO_CONFIG_PAN_ID参数,将其值改为自定义的PANID。

其次是设备类型选择,ZStack支持协调器、路由器和终端设备三种角色。在这个系统中,协调器负责连接上位机,终端设备连接传感器。编译前需要在工程选项的C/C++ Compiler -> Preprocessor中,修改DEVICE_TYPE变量为COORDINATOR或END_DEVICE。

STM32工程配置相对简单,主要注意ADC和USART的初始化设置。ADC采用12位分辨率,启用连续转换模式;USART配置为9600波特率、8数据位、无校验、1停止位,与Zigbee节点的串口参数一致。编译时确保芯片型号选择正确,STM32F103的Flash和RAM大小与其它型号有所不同。

4. 数据采集与处理实现

4.1 STM32 ADC采集与数据转换

STM32的ADC采集通过HAL库函数实现,初始化完成后调用HAL_ADC_Start()启动转换,然后使用HAL_ADC_GetValue()读取转换结果。光敏传感器的ADC值需要转换为实际电压值,公式为:电压值 = (ADC值 * 3.3) / 4096。这个电压值再结合电路参数,就可以推算出光照强度。

为了提升数据可靠性,我通常采用均值滤波处理:连续采集10次ADC值,去掉最高和最低值后取平均。这样可以有效抑制随机干扰,特别是在光照缓慢变化的场景中,数据曲线会更加平滑。转换后的数据通过串口发送给CC2530节点,采用Modbus RTU格式封装,包含设备地址、功能码、数据内容和CRC校验。

在代码实现上,STM32端需要编写Modbus从机协议栈,解析接收到的指令并返回采集数据。当收到读取光敏数据的指令(如08 03 00 2A 00 01)时,STM32读取当前ADC值,打包成Modbus响应帧(如08 03 02 0A C1)并通过串口发出。整个处理过程最好在中断中完成,避免阻塞主循环。

4.2 Zigbee无线传输机制

ZStack协议栈提供了完整的无线通信框架,应用层主要通过GenericApp工程实现数据收发。在协调器端,收到上位机的串口数据后,调用GenericApp_SendTheMessage()函数将数据发送至终端设备。这个函数会自动处理数据分包和ACK确认,确保传输可靠性。

终端设备收到无线数据后,通过串口转发给STM32,同时监听STM32的返回数据。当串口收到光敏数据时,调用afIncomingDataRequest()函数将数据无线回传给协调器。整个过程中,ZStack会自动处理路由和网络维护,开发者只需关注应用层数据交换。

在实际测试中,我发现无线传输的稳定性受环境影响较大。建议在代码中添加重传机制,如果发送失败最多重试3次;同时设置合理的发送功率和信道,避免与Wi-Fi信号冲突。ZStack默认使用信道11,如果干扰较大可以尝试切换至信道15、20或25。

5. Modbus通信协议解析

5.1 协议帧格式与校验机制

Modbus RTU协议采用二进制格式,每个帧以至少3.5个字符时间的静默间隔开始,后接设备地址、功能码、数据内容和CRC校验。在这个系统中,上位机发送的查询帧格式为:设备地址(1字节) + 功能码(1字节) + 起始地址(2字节) + 寄存器数量(2字节) + CRC(2字节)。

以光敏数据查询指令为例:08 03 00 2A 00 01 A5 5B

  • 08:终端设备地址
  • 03:读取保持寄存器功能码
  • 00 2A:起始地址(42号寄存器)
  • 00 01:读取1个寄存器
  • A5 5B:CRC校验值

终端设备返回的响应帧格式为:设备地址 + 功能码 + 字节计数 + 数据内容 + CRC。例如:08 03 02 0A C1 A3 75

  • 08:终端设备地址
  • 03:读取功能码
  • 02:后续字节数
  • 0A C1:光敏ADC值(十进制2753)
  • A3 75:CRC校验

CRC校验采用Modbus标准的CRC-16算法,多项式为0x8005。在代码实现时,可以先预计算常用指令的CRC值,减少实时计算开销。如果CRC校验失败,直接丢弃该帧不做响应,避免错误数据处理。

5.2 协议实现与异常处理

在STM32端,需要实现Modbus从机协议栈,包括帧解析、功能处理和响应生成。帧解析时注意处理静默时间,超过3.5个字符时间间隔才认为新帧开始。功能处理主要支持03号(读保持寄存器)和06号(写单个寄存器)功能码,其它功能码返回异常响应。

异常处理是Modbus实现的关键部分。当收到非法地址或长度超限时,应返回异常响应码:设备地址 + (功能码|0x80) + 异常码 + CRC。例如,如果请求读取不存在的寄存器,返回08 83 02 CRC,其中83表示03功能码的异常响应,02表示非法数据地址。

在Zigbee传输层,由于无线延迟可能影响Modbus的响应超时,建议上位机将超时时间设置为500ms以上。同时,协调器需要缓存最近的请求帧,如果收到重复请求直接返回缓存响应,避免重复访问STM32造成资源浪费。

6. 系统集成与联合调试

6.1 硬件连接与节点配置

系统集成的第一步是硬件连接。协调器节点通过串口线与电脑连接,终端节点通过杜邦线与STM32开发板连接。注意串口线的TX/RX要交叉连接,即电脑的TX接协调器的RX,电脑的RX接协调器的TX。终端节点与STM32的连接同样遵循这个规则。

节点配置包括协调器组网和终端入网两个步骤。协调器上电后会自动创建Zigbee网络,终端设备上电后会自动搜索并加入网络。可以通过LED指示灯状态判断网络状态:协调器LED常亮表示网络就绪,终端设备LED闪烁表示正在入网,常亮表示入网成功。

如果终端设备长时间无法入网,可能是PANID冲突或信号强度不足。可以通过Z-Tool工具监控网络状态,查看节点的短地址和信号强度。在实际部署时,协调器和终端之间的距离最好不要超过50米,中间尽量避免厚墙或金属障碍物。

6.2 数据流调试与故障排除

整个系统的数据流涉及多个环节:上位机 -> 协调器 -> 终端 -> STM32 -> 终端 -> 协调器 -> 上位机。调试时建议分段验证,首先测试上位机与协调器的串口通信,然后测试协调器与终端的无线通信,最后测试终端与STM32的串口通信。

常用的调试方法包括LED指示、串口打印和无线抓包。在每个关键节点添加LED状态指示,比如数据收发时LED闪烁;在代码中添加调试打印,输出关键变量和状态信息;使用CC2530嗅探器抓取无线数据包,分析Zigbee通信质量。

遇到通信故障时,首先检查硬件连接和电源供应,然后验证软件配置和协议一致性。常见问题包括串口波特率不匹配、Modbus CRC错误、Zigbee信道干扰等。通过分段排查和逐步验证,大多数问题都能快速定位和解决。

7. 实际应用与优化建议

7.1 典型应用场景部署

这个系统在智能农业光照监测中表现尤为出色。我曾经在一个温室大棚项目中部署了20个终端节点,实时监测不同区域的光照强度。协调器安装在控制室,终端节点分布在大棚各处,通过Zigbee网络将数据传回中央控制器。系统每5分钟采集一次数据,持续运行了半年没有出现节点掉线。

在室内环境监控中,系统可以用于智能照明控制。终端节点安装在各个房间,监测自然光照强度,当光照不足时自动开启灯具。由于Zigbee的低功耗特性,终端节点采用电池供电即可工作数月,无需布线施工,大大降低了安装成本。

实际部署时要注意节点布局和天线方向。协调器尽量位于网络中心位置,终端节点均匀分布周围。天线尽量竖直向上,避免被金属物体遮挡。如果覆盖范围不足,可以添加路由器节点扩展网络,或者采用网状网络拓扑提升可靠性。

7.2 性能优化与扩展方向

为了进一步提升系统性能,可以考虑几个优化方向:首先是功耗优化,终端节点采用休眠模式,只有收到查询指令时才唤醒采集数据,可以将电池寿命延长至1年以上。其次是传输优化,采用数据压缩和差分传输机制,减少无线数据传输量。

在扩展性方面,可以添加更多的传感器类型,比如温湿度、二氧化碳浓度等,构建多参数环境监测系统。也可以增加执行器控制,比如根据光照强度自动调节窗帘开合,实现闭环控制。网络规模扩大时,可以采用分簇管理机制,降低协调器负载。

长期运行的系统还需要考虑固件升级机制。通过Zigbee网络实现无线固件升级(OTA),可以远程修复漏洞和添加新功能

形位公差标注的常见误区与优化策略 本文深入解析机械设计中形位公差标注的常见误区与优化策略,特别针对NX2406用户提供实用技巧。从标注冗余、基准选择到公差值设定等五大误区入手,结合工程图实例展示如何提升标注精度与效率,帮助工程师避免常见错误,优化设计流程,确保零件功能实现与制造可行性。 阅读详情

相关推荐

尚硅谷课程【笔记】——大数据之Shell【一】

【【尚硅谷】Shell脚本从入门到实战】笔记

n04j04h06的博客 1322

Zigbee无线传感网光敏数据采集实战

本文详细介绍了Zigbee无线传感网在物联网领域的光敏数据采集实战,涵盖硬件连接、软件配置、传感器原理和通信协议。通过手把手教程,帮助开发者掌握环境光照监测技术,适用于智能家居、农业大棚等物联网应用场景。

svm4gardener的博客 204

嘉立创EDA报错:元件引脚与焊盘未对应报错解决记录

原件引脚与焊盘未对应报错解决方法,一文总结!

2303_77013775的博客 1万+

从光敏电阻到无线数据流:一场跨越硬件的物联网通信之旅

本文详细介绍了从光敏传感器采集数据到通过Zigbee无线传输的完整物联网通信流程。重点解析了STM32的ADC信号转换、Modbus协议封装和ZStack协议栈部署,为智能农业光照监测提供了一套完整的硬件协同与数据流处理解决方案,助力开发者构建可靠的物联网系统。

tcp8optimizer的博客 147

【UE5】多用户协同编辑实战:从配置到实时协作

本文详细介绍了在虚幻引擎5中配置和使用多用户协同编辑功能的完整流程。从启用Multi-User Editing插件、配置UDP Messaging网络通信,到启动服务器、创建会话并实现实时协作,提供了从环境准备到实战协作的清晰指南。文章还分享了资产同步、场景分批、对象锁定等实用技巧,并强调了网络配置与版本一致性等关键避坑点,旨在帮助中小型团队提升关卡设计和原型开发的协作效率。

weixin_29001683的博客 269

UE5 StateTree实战:用分层状态机重构你的AI行为逻辑(附蓝图配置避坑点)

本文详细介绍了UE5中StateTree分层状态机的实战应用,帮助开发者重构AI行为逻辑。通过核心概念解析、迁移策略、高级技巧和避坑指南,展示了StateTree在灵活性、可维护性和并行处理方面的优势,特别适合复杂AI行为的开发与优化。

weixin_42558257的博客 249

electronica 2026|SC236亮相,面向AIoT终端的新一代智能模组

该产品基于高通跃龙™ Q-2390处理器打造,融合计算、多媒体处理与无线连接能力,为AIoT终端提供从连接、计算到应用承载的一体化能力,助力客户打造面向未来的智能设备。面向无线智能支付终端、工业手持设备、执法仪、行车记录仪等行业设备,SC236融合计算、多媒体与无线连接能力,为终端提供更丰富的交互体验和智能化应用能力。相比传统连接型模组,SC236进一步增强设备本地处理能力,使终端能够承载更多智能应用功能,推动行业设备从“连接”向“智能”演进。

Fibocom_Wireless的博客 211

告别命令行恐惧!用TBtools的MCScanX插件,5分钟搞定拟南芥和水稻的基因组共线性分析

本文介绍如何利用TBtools的MCScanX插件快速完成拟南芥和水稻的基因组共线性分析,无需命令行操作,5分钟即可生成专业可视化结果。通过图形化界面简化传统MCScanX的复杂流程,特别适合非生物信息背景的研究者,显著提升基因组数据分析效率。

dianzhuique8587的博客 378

注塑机智能数据采集网关 ZK-D1/D3:如何把工艺参数与 SPC 监测数据送到 MES 和 IoT 平台

注塑车间设备型号杂、通信协议不一,ZK-D1/D3智能采集网关作为“协议翻译+数据建模+边缘计算”中间件,实现多机型兼容与数据标准化。通过控制器接口、IO信号及辅助设备数据融合,按模次组织工艺参数,生成含质量标记的SPC数据,支持断网缓存与补传。数据以统一模型对接MES与IoT平台,助力良率分析与过程优化。实施关键:摸清接口、统一字典、保障断网可靠性。

专业采集注塑机数据,为mes系统提供数据服务! 299

【用unity实现100个游戏之15】开发一个类保卫萝卜的Unity2D塔防游戏5(附项目源码,完结)

本期是本项目的最后一篇,主要内容是配置环境、生成不同敌人、结束重开。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 2576

锂电池的充电和放电曲线解读

锂电池充放电曲线是反映其性能的关键指标。充电曲线分为恒流和恒压两阶段:恒流阶段电压快速上升,恒压阶段电流逐渐降低;放电曲线则呈现平台期和快速衰减期特征。这些曲线受温度、充放电倍率及材料体系(如三元锂或磷酸铁锂)显著影响。通过分析曲线特征,可优化电池管理系统,实现精准的SOC估算、快充策略制定及故障诊断,从而在电池性能与安全性间取得平衡。不同应用场景(如新能源汽车或消费电子)对曲线形态有特定要求。

start_up_go的博客 5075

注塑机数据采集网关 ZK-D1/D3:读取控制器哪些数据对接 MES/IoT 平台

ZK-D1/D3数据采集网关可统一接入多品牌注塑机,采集设备状态、生产计数、工艺参数、报警及能耗等核心数据,通过MQTT/HTTP等协议标准化上传至MES/IoT平台。实现“一次接入、统一建模”,支撑OEE分析、产量看板、质量追溯与故障闭环管理。关键在于规范数据映射、合理设置采集频率、保障时间同步与安全传输,最终将设备数据转化为生产效率与质量管理价值。

专业采集注塑机数据,为mes系统提供数据服务! 512

面试问题总结——关于YOLO系列(三)

接着上篇的的YOLO系列面试问题总结,加油,冲! 三.YOLOv3 1.YOLOv3主干网络BackBone——Darknet-53网络结构(因为有53个卷积层) (原论文中Darknet53的尺寸是在图片分类训练集上训练的,所以输入的图像尺寸是256x256,而在YOLOv3中输入尺寸是416×416)   ①上图中,Top-1 Accuracy和Top-5 Accuracy是指什么呢?区别在哪呢?   我们知道ImageNet有大概1000个分类,而模型预测某张图片时,会给出1000个按概率从高.

boss-dog 1万+

注塑机数据采集网关 ZK-D1/D3 困局解析:如何实现与 MES/IoT 平台的实时数据对接

注塑车间数字化困局源于设备异构导致的数据采集难题。中科晟达ZK-D1/D3网关虽具备多协议适配与边缘采集能力,但常遇“采得到却采不准”“与MES对不上”“实时性与稳定性难兼顾”等挑战。核心问题在于点位映射错误、状态判定单一、数据模型错位及断网丢数。破解之道需构建四层架构:通过协议模板库与远程配置降低实施成本;以多信号组合+状态机实现精准状态判定;在网关侧下沉计算逻辑,完成数据预聚合与清洗;采用分级传输、消息幂等、本地缓存与统一时间同步,确保数据可信、实时、可消费。最终实现从“设备语义”到“业务语义”的高效转

专业采集注塑机数据,为mes系统提供数据服务! 385

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

009基于物联网的智能厨房安全监测系统

本文讲解物联网毕业设计选题《基于物联网的智能厨房安全监测系统》的实现:ESP32 搭配 MQ-2 燃气传感器采集可燃气体浓度、DHT11 采集温湿度,按浓度区分预警与危险两级做分级声光报警;危险时自动驱动常闭电磁阀切断气源,并通过 WiFi 推送告警到微信,数据上传云平台留存,隐患排除后可按键复位。内容含硬件清单与接线、传感器预热与阈值标定、分级报警与危险锁存设计、.h/.c 分离的多模块代码,并附测试验收、开题表述与答辩问答。照着做即可。

x1649545783的博客 392

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

设备iot--[McgsIot]报警处理

设备iot--[McgsIot]报警处理

胡锦波的博客 198

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

锅炉房已经有PLC,还需要IoT吗?从安全控制到全局能效的智能化升级

无论是工业蒸汽锅炉房,还是酒店、医院等商业热水场景,改造都可以从现有条件出发:先梳理控制系统、仪表和通信情况,再明确安全边界与数据需求;盈电物联网的云边协同思路,是在尽量保留原有控制与仪表设备的基础上,通过IOT控制器补齐数据接入和边缘处理能力,再与云端平台协同,逐步建立运行、能耗与运维之间的数据闭环。锅炉房智能化,不是用IoT取代PLC,也不是简单增加一块远程大屏,而是在保障安全控制独立可靠的基础上,让分散的数据真正服务于运行管理。将告警、排查、处理、复核和维修记录串联起来,形成可追溯的设备档案。

olzorange的博客 292

IoT 固件安全与 Pwn 实战学习笔记

本文基于D-Link DCS-935L固件(版本1.09.02)分析漏洞CVE-2025-10779,系统梳理从固件解包到栈溢出利用的全流程。通过binwalk提取根文件系统,结合inittab与rcS定位HTTP/HNAP服务;利用httpd.ini映射路由,确认/HNAP1/可被外部访问;在MIPS大端架构下,使用qemu-mips-L+GDB调试运行CGI程序,发现strcpy(haystack, getenv("HNAP_AUTH"))存在无边界复制漏洞。通过构造含空格分隔符的载

2503_91800161的博客 420

注塑机智能数据采集网关 ZK-D1/D3 对接 MES/IoT/ERP 平台数据展示实践

ZK-D1/D3注塑机数据采集网关支持多品牌设备接入,实现运行状态、工艺参数、生产计数等数据的实时采集与标准化上报。通过MQTT、HTTP、OPCUA等协议对接MES、IoT、ERP平台,采用“边缘采集—网关汇聚—平台展示”架构,统一数据模型映射,实现设备透明化管理与生产数据闭环。实施中需注重网络规划、时间同步、断点续传与安全防护,助力工厂实现生产可追溯、决策数据化。

专业采集注塑机数据,为mes系统提供数据服务! 294

【RHCA+】iotop命令(实时监控磁盘IO)

目录:RHCA+ -> 12 系统监控 -> 43 iotop命令(实时监控磁盘IO) ”[root@wuzuniao ~]# yum -y install iotop #安装工具。[root@wuzuniao ~]# iotop #实时监控磁盘io。语法格式:iotop。

302

注塑机数据采集网关 ZK-D1/D3 如何与 MES/IOT 平台对接并展示数据

本文系统阐述注塑车间数据采集难题及ZK-D1/D3网关解决方案,聚焦设备异构协议统一、数据建模规范与四层链路对接。通过明确设备唯一标识、统一命名规则与上行协议选择,实现多品牌注塑机数据标准化采集与传输。结合MQTT/HTTP/OPCUA多协议支持,构建从设备层到MES/IOT平台的完整链路,支撑实时看板、历史趋势、OEE分析与报警管理。强调前期标准化与端到端验证的重要性,确保数据可靠落地,赋能智能制造。

专业采集注塑机数据,为mes系统提供数据服务! 254

IIOT数据中台是什么?有什么应用场景?

它本质上是一种集成了多源异构数据采集、边缘预处理与统一数据服务能力的工业数据平台,能够将 PLC、CNC、工业机器人、传感器、能源仪表等设备产生的实时数据,以及 ERP、MES、WMS 等系统的业务数据,统一汇聚、治理、建模后,以标准 API 或数据服务形式供上层应用调用,让工业互联网平台回归分析决策与业务创新的核心职能。针对电表、水表、气表等能源仪表数据,数据中台统一采集并标准化电、水、气、汽等能耗口径,按产线、工序、班组等维度进行分项计量与统计分析。OEE 分析与效率优化。设备互联与产线透明化。

2403_88612619的博客 114

银行、电力、医疗和物联网行业证书

银行、电力、医疗和物联网行业证书

humors221的专栏 288

定位数据怎么推给 IoT 平台?消息协议选型与接入准备

园区定位数据推送方式应基于消费方数量、实时性、数据量级与网络条件选择:多系统、高频小数据量且弱网络场景推荐消息中间件(发布订阅);单系统、内网环境可选接口回调或定时拉取。需合理设计主题结构,保障数据一致性与幂等性,提前规划鉴权、监控与异常处理机制。建议先小范围验证端到端性能,再逐步扩展,具体协议与规范以项目交付文档为准。

QXWZ_的博客 138

填完一张场景表单,SagooIoT 在后台生成一条规则链

链上的functions节点最终要调到一个 Go 函数。msg进、msg出。业务参数从反序列化,执行结果通过交回链上,同时塞进执行日志(下一节讲)。设置属性把界面上的属性数组摊平成一个 map,交给。下行指令走的是平台既有的属性设置通道,和 REST 接口下发的指令是同一条路——场景不是旁路,它用的是同一套下行能力。获取属性按属性列表逐个调,把结果收集成 map。这样"先读当前状态、再决定动作"也能在一个动作里完成。功能调用把和parameter交给,也就是物模型里的"服务调用"。发送通知。

辛佳雨的专栏 195

中科晟达注塑机数据采集网关 ZK-D1/D3:如何读取各品牌注塑机系统数据并对接 MES/IoT 平台

注塑车间数字化改造核心挑战在于多品牌、多协议设备的数据采集。中科晟达ZK-D1/D3网关通过边缘计算,兼容海天、发那科等主流机型及私有协议,支持EUROMAP63/77、Modbus、OPCUA等标准,实现南向多协议解析与北向标准化上行(MQTT/OPCUA/HTTP)。结合统一点位模型设计与断网续传机制,助力MES高效对接。部署中需重点确认通信权限、合理配置轮询周期、保障时间同步与数据去重,可有效解决“采不到数”“数据不准”等痛点,为OEE分析、工艺追溯与智能运维提供可靠数据底座。

专业采集注塑机数据,为mes系统提供数据服务! 301
上一篇: 超越树莓派:OAK-FFC如何用VPU和M12镜头重新定义边缘AI视觉
下一篇: STM32 LCD中英文混合显示:从字模生成到GBK编码实战
sql99
博客等级 码龄19年 168粉丝 1905原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值