今天有一位客户请教我做一个程序,实现LabVIEW与Arduino硬件的通讯,具体需求为:
1、Arduino硬件(其开发板单片机型号为AT89C52)采集传感器数据,并通过串口将数据传递出来;
2、通过LabVIEW制作上位机软件,实现对Arduino硬件传递过来的传感器数据的可视化显示(以曲线图的形式显示历史数据),以及将所有数据存储下来。
需求还是比较简单而且明确的,具体实施也比较简单,以下详细介绍下实现过程。
一、Arduino硬件端的程序开发
我这边采用Arduino UNO R3硬件采集一个传感器数据,并每隔0.5s通过串口传递1个数据出来,具体实现代码如下图所示。
Arduino 代码实现
二、LabVIEW端上位机的程序开发
LabVIEW端直接采用NI-VISA函数即可实现串口数据的读取,再通过“写入电子表格文件”子函数将数据存储到一个.csv格式的电子表格文件中,具体实现代码如下图所示。
LabVIEW 程序框图
具体实现流程为:打开串口(波特率需要设置正确)→清空串口缓冲区数据→While循环(检查串口缓冲区是否有有数据可读取,若有则将数据读取出来,并将数据还原为浮点型数值型数据,并传递给波形图表,同时还设置了若采集数据超过设定的限值时亮报警指示灯的功能),当用户点击了停止采集的按钮时,会将所有采集到的数据一次性保存到指定路径下的电子表格中。
三、效果展示
效果如下图所示。
Arduino IDE 端监视数据
LabVIEW上位机软件采集到的数据
存储的电子表格数据
四、延伸
我们的物联网模块或一般的单片机模块可以用于采集一些传感器数据,但最终做上位机软件还是得依靠一些比较强大且方便开发和展示的编程语言,如本文中提到的LabVIEW软件,用LabVIEW软件做上位机软件还是比较合适的,一来这个软件的编制是图形化编制的,比较容易上手,二来该软件很方便做一些可视化的展示。
全部0条评论
快来发表一下你的评论吧 !