当前位置:首页 > 物联网 > 智能应用
[导读]工业现场的设备协议五花八门——Modbus RTU走RS485、4-20mA模拟量、数字IO干接点、还有各种私有串口协议。把这些异构数据统一采集、预处理后再推上云端,正是边缘数据采集网关的核心价值。本文用一个基于ARM Linux(如RK3568/AM335x)的实际方案,演示如何用C/Python完成多传感器数据聚合,并通过MQTT桥接到阿里云/华为云。


工业现场的设备协议五花八门——Modbus RTU走RS485、4-20mA模拟量、数字IO干接点、还有各种私有串口协议。把这些异构数据统一采集、预处理后再推上云端,正是边缘数据采集网关的核心价值。本文用一个基于ARM Linux(如RK3568/AM335x)的实际方案,演示如何用C/Python完成多传感器数据聚合,并通过MQTT桥接到阿里云/华为云。

硬件接口抽象:一切皆文件

在Linux下,传感器接入无非三类:

串口设备:/dev/ttyS*或/dev/ttyUSB*,用于Modbus RTU/自定义协议

I2C设备:/dev/i2c-*,温度/湿度传感器

GPIO/ADC:通过/sys/class/gpio或/sys/bus/iio/devices

第一步是编写统一的设备抽象层,将不同协议的读取封装成标准函数指针:

typedef struct {

   int (*init)(void *handle);

   int (*read)(void *handle, float *value);

   void (*deinit)(void *handle);

} sensor_driver_t;

例如Modbus温度传感器的实现:

int modbus_read(void *handle, float *temp) {

   uint16_t reg;

   modbus_read_registers((modbus_t*)handle, 0, 1, &reg);

   *temp = reg * 0.01; // 假设精度0.01°C

   return 0;

}

这样上层逻辑只需遍历传感器链表,调用read即可完成轮询。

数据聚合:环形缓冲区 + 滑动窗口

原始传感器数据噪声大,网关层面通常要做滤波和聚合。推荐使用固定大小的环形缓冲区,每采集一轮数据就更新滑动窗口均值:

import collections


class SensorAggregator:

   def __init__(self, window_size=10):

       self.buffer = collections.deque(maxlen=window_size)

   

   def push(self, value):

       self.buffer.append(value)

   

   @property

   def average(self):

       if not self.buffer: return 0

       return sum(self.buffer) / len(self.buffer)

对于高频采样(如振动传感器),还可以加入中值滤波或一阶低通滤波,在网关端减轻云端压力。

MQTT上云:mosquitto + TLS加密

选择Mosquitto作为MQTT Broker(也可用EMQX Nano)。网关作为客户端发布JSON payload到特定Topic:

import paho.mqtt.client as mqtt

import json


client = mqtt.Client(client_id="gateway_001")

client.tls_set("/etc/mosquitto/certs/ca.crt")  # 证书路径

client.username_pw_set("device", "password")

client.connect("iot.aliyun.com", 8883, 60)


while True:

   data = {

       "timestamp": time.time(),

       "sensors": {

           "temperature": agg_temp.average,

           "humidity": agg_hum.average,

           "pressure": pressure_raw

       }

   }

   client.publish("factory/line1/gateway01", json.dumps(data), qos=1)

   time.sleep(5)  # 5秒上报一次

关键点:

使用TLS双向认证,防止非法设备接入

QoS设为1确保至少一次送达

Payload采用扁平JSON,方便云端时序数据库写入

离线缓存与断网续传

工业现场网络不稳定,网关必须具备本地缓存能力。推荐SQLite轻量数据库:

CREATE TABLE sensor_cache (

   id INTEGER PRIMARY KEY AUTOINCREMENT,

   timestamp REAL,

   payload TEXT,

   sent INTEGER DEFAULT 0

);

每次采集先写入SQLite,后台线程定时扫描未发送记录并尝试推送。成功后将sent标记为1,定期清理历史数据。这样即使断网数小时,数据也不会丢失。

性能调优:避免资源过载

ARM Linux网关资源有限,需注意几点:

轮询周期:根据传感器数量合理设置,一般100ms~1s,避免CPU满载

内存泄漏:使用Valgrind或AddressSanitizer检测,特别是C语言实现的Modbus驱动

日志管理:使用logrotate切割日志,防止SD卡写爆

看门狗:启用硬件看门狗,防止程序卡死导致网关失联

# 启用系统看门狗

echo 1 > /dev/watchdog

# 或在应用层周期性喂狗

#include <linux/watchdog.h>

写在最后

这套方案已在多个产线落地:Modbus RTU采集温湿度、PLC通过以太网传递产量计数、IO模块监控急停信号——全部通过同一网关汇聚,经MQTT上传至工厂MES系统。关键在于抽象层的设计,让新增传感器只需实现read函数,其余逻辑完全复用。从设备树到MQTT,Linux的边缘网关之路,本质上就是把"万物"变成"文件",再把"文件"变成"消息"。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读

边缘计算要求在靠近数据源的地方完成实时处理,而不是把所有原始数据都丢到云端。传统观点认为Java太重,不适合嵌入式设备——但Spring Boot配合GraalVM Native Image,可以将应用编译为原生可执行文...

关键字: Spring Boot 边缘计算 嵌入式Java

在物联网系统中,单一语言往往难以兼顾底层硬件控制和上层业务逻辑。Python擅长快速开发、数据处理和AI推理,但在高并发后端服务和企业级集成方面力不从心;Java则以稳定、可扩展的生态著称,但直接操作硬件寄存器效率低下。...

关键字: Python Java 边缘计算

在分布式供水泵站、户外环保监测、跨省租售设备中,PLC产线往往分散在几百公里外。工程师不可能为一次参数微调就驱车前往现场——让PLC数据通过4G网络直达云端,在浏览器或手机端实时查看设备状态,是现代工业运维的标配能力。本...

关键字: PLC远程监控 4G上云 MQTT

在工业4.0架构中,PLC位于控制层,MES/ERP位于管理层,中间的数据桥梁就是边缘计算网关。OPC UA(统一架构)作为跨平台、安全加密、信息模型丰富的通信标准,正在取代传统OPC DA和私有协议,成为PLC数据上行...

关键字: OPC UA 边缘计算 PLC数据采集

在嵌入式Linux设备上用Java对接阿里云IoT平台,是边缘网关、工业数采、智能终端的常见需求。阿里云提供了Java Link SDK,但很多开发者为了减小依赖、深度定制,更倾向于直接使用Eclipse Paho MQ...

关键字: MQTT 阿里云IoT 嵌入式Java

当AI模型从云端下沉到产线相机、无人机、农业传感器等边缘节点,算力受限、功耗敏感、实时性要求高成为新常态。轻量模型(MobileNet、YOLO-Nano、TinyBERT)搭配推理加速引擎,可以在几瓦功耗下实现毫秒级推...

关键字: 边缘计算 AI推理 嵌入式Linux

随着物联网、人工智能、自动驾驶技术的快速普及,海量终端设备产生的数据不再完全依赖云端处理,边缘计算凭借低延迟、高隐私、低能耗的优势,成为新一代算力架构的核心支柱。而在边缘计算落地普及的过程中,ARM架构始终扮演着底层核心...

关键字: 边缘计算 算力 架构

随着5G普及、传感设备全面落地,物联网产业迎来爆发式增长,海量终端设备全天候产生海量数据,覆盖工业生产、智慧城市、智能家居、智慧医疗等万千场景。传统物联网依赖云端集中计算的模式,逐渐暴露高延迟、带宽不足、数据安全薄弱等诸...

关键字: 边缘计算 物联网 智能化

随着5G普及、万物互联时代加速到来,物联网设备迎来爆发式增长,海量感知数据、实时交互需求、多元场景应用,让传统云计算架构的短板日益凸显。作为物联网数据处理的核心载体,边缘计算早已摆脱单纯的本地化算力辅助定位,正向智能边缘...

关键字: 边缘计算 物联网 数据处理

随着5G普及、智能制造、智慧城市建设持续推进,物联网设备迎来爆发式增长,万物互联的时代全面到来。海量终端设备全天候产生海量数据,传统依赖云端集中计算的物联网架构,逐渐暴露出时延过高、带宽拥堵、数据安全薄弱、运维成本高昂等...

关键字: 物联网 边缘计算 网关
关闭