构建一个用在嵌入式系统中的实时故障检测平台
现代嵌入式系统需要在多个处理单元之间实现可靠的通信,同时具备较强的抗故障和信号干扰能力。本项目提出了一种混合通信平台,结合Arduino Pro Micro和Raspberry Pi 4,实现实时的信号生成、传输、处理与分析。
该系统支持多种波形类型,可执行幅度调制(AM),注入通信故障,并通过自定义的故障检测与隔离(FDI)算法自动识别故障来源。图形用户界面(GUI)可实时可视化生成、处理和调制后的信号,使该平台适用于嵌入式系统教学、通信实验及故障诊断研究。
系统架构
硬件设计
该硬件平台由两个嵌入式设备组成,通过UART串行接口连接。Arduino Pro Micro 负责生成三种不同的波形类型(正弦、方波和三角波),通过两个电位器控制信号的频率和幅度,并注入通信故障,如噪声、尖峰和信号丢失。
Raspberry Pi 4 Model B 以 115200 波特率通过 UART 接收生成的样本,执行信号处理和 AM 调制,运行故障检测与隔离(FDI)算法,并通过图形用户界面(GUI)显示结果。
这种硬件架构支持异构嵌入式系统之间的实时通信,同时为测试通信可靠性及故障诊断提供了灵活的环境。
软件设计
软件被划分为两个独立模块,分别运行在不同的嵌入式平台上。
Arduino 的固件生成正弦、方波和三角波,并持续采样两个电位器以控制信号的频率和幅度。在故障模式下,Arduino 会注入通信干扰,包括随机噪声、尖峰和暂时性信号丢失。树莓派软件通过UART接收采样数据,执行数字调幅(AM)调制,运行故障检测与隔离(FDI)算法,并使用Python和Matplotlib对所有处理后的信号进行可视化。该软件还可本地注入额外的故障,以区分传输故障和处理故障。
故障检测与隔离(FDI)
故障检测与隔离(FDI)算法会同时分析接收到的信号和处理后的信号,以判断是否发生故障并确定其起因。
故障可能源自Arduino的信号生成过程,也可能源自树莓派的信号处理过程。算法通过计算连续样本之间的平均绝对差值来评估信号的粗糙程度。如果接收到的信号本身已表现出异常的粗糙度,则将故障归类为由Arduino引起;否则,若经过本地处理后,处理后的信号变得显著更粗糙,则认为故障源于树莓派。这种简单而有效的方案无需复杂的机器学习模型或额外硬件,即可实现自动故障定位。
实验结果
系统在正常和故障运行条件下,均成功对正弦、方波和三角波进行了测试。实时可视化确认了波形生成和调幅(AM)调制的正确性。故障诊断与隔离(FDI)算法准确识别出故障是源自信号生成阶段的Arduino,还是信号处理阶段的树莓派。整个实验过程中,所提出的平台展现出可靠的通信能力、精确的故障定位以及稳定的实时性能。
代码
本文编译自hackster.io





