原创 使用LabVIEW来玩耍Arduino-Day1-LabVIEW通过串口方式控制Arduino板载LED

2022-5-19 20:31 4960 10 3 分类: MCU/ 嵌入式 文集: 使用LabVIEW玩耍Arduino
因为种种原因开始接触Arduino和LabVIEW,科班出身有些基础,一开始感觉LabVIEW相较于文本编程来说也太麻烦了,但是直到这几天接触了《Arduino与LabVIEW开发实战》这本书,感觉LabVIEW还是不错的,从2022.5.19开始记录学习《Arduino与LabVIEW开发实战》的过程,会把学习的过程记录下来,分享学习中的一些心得和写的程序。如果有啥问题,欢迎联系交流。
一、准备工作

器材:开发板一块(型号以Arduino Uno为例)、LabVIEW2017安装包、破解工具NI License Activator

获取方法:Arduino开发板可以自己打板焊元件也可以直接淘宝购买(国产的几十块钱,意大利原装的需要一两百);LabVIEW2017安装包在(Index of /evaluation/labview/ekit/other/downloader (ni.com))网址获得(可以通过浏览器搜索功能,快捷键ctrl+F,搜索2017LV-WinChn.exe,点击即可下载);破解工具NI License Activator可通过百度网盘获取(链接:https://pan.baidu.com/s/1dwsyMuX8IQRYNWeB_cZoGQ 提取码:hx2v,如果链接失效,可以网上搜索)。

软件安装(以LabVIEW2018为例,其他版本类似):

1)双击 ,进入解压软件界面,如图1-1


1-1 【解压LabVIEW2018

2)解压完成(如图1-2)后,自动启动setup.exe,如果未启动,请到第一步的解压路径中手动双击setup.exe。前面的安装过程直接选择下一步即可.


1-2 【解压完成】

3)这步不需要填入序列号,直接下一步,如图1-3


1-3 【无须填入序列号】

4)选择合适路径安装,安装内容默认即可,如图1-4

1-4 【安装路径和安装内容】

5)取消产品通知,接受许可,然后等待安装完成,如图1-5


1-5 【无须通知,接受许可】

6)等待安装过程中,会询问如图1-6所示的问题,选择不需要支持即可,最后可以看到安装完成的通知。


1-6 【安装问题和安装完成】

7)安装完成后,先不着急运行软件,双击 ,将所有的模块都右击-ActivateActivate成功的软件或者工具包前面的方框将显示绿色,否则显示白色,如图1-7


1-7 【激活软件】

至此,LabVIEW2018中文版就安装完成,可以正常使用。

二、 连接LabVIEWArduino

本节将详细地介绍ArduinoLabVIEW的连接方式,主要包括LabVIEW Interface for Arduino方式、串口控制方式、无线串口方式和Ethernet方式,并给出详细的实验示例,包含实现原理和具体代码其实,从本质上来说,前三种方式都是通过串口实现ArduinoLabVIEW的连接的,而且需要使用VISA插件实现LabVIEW串口编程,但是三者各有特点:

1LabVIEW Interface for Arduino方式,只需要将给定的Arduino程序烧写进Arduino控制器,然后完成LabVIEW部分的编程即可,由于不涉及Arduino程序设计,只使用官方给出的Arduino函数库,Arduino的传感器选用上有很大的局限性,可扩展性较差。

2)串口控制方式,需要完成ArduinoLabVIEW两部分的编程,使用USB to Serial电缆连接,Arduino部分有着很好的可扩展性,两者需要制定合适的通信协议。

3)无线串口方式,使用串口无线数传模块替代串口连接电缆线,实现了ArduinoLabVIEW的无线连接,扩展了ArduinoLabVIEW的应用范围,而且可以通过选择不同类型和不同功率的无线传输模块,以实现近距离、中距离和远距离的无线数据传输。

与前三种方式使用串口来实现ArduinoLabVIEW的连接不同,Ethernet方式采用网络编程来实现二者的连接。Arduino端需要采用网络扩展板,并连接至路由器上,而不是仅仅通过串口;LabVIEW端需要使用TCP协议函数库来完成程序设计,而不是使用VISA插件来实现串口编程的。与其他三种连接方式相比,Ethernet方式将ArduinoLabVIEW都接入了网络中,极大地扩展了应用范围;由于互联网无处不在,若将二者都接入互联网中,则可以通过互联网来构建基于ArduinoLabVIEW的远程测控系统。

三、LabVIEW Interface for Arduino方式

LabVIEW Interface for Arduino ToolkitLIAT)是NI公司(美国国家仪器公司)为Arduino开发的接口工具包,借助于这个工具包,可以很方便地使用LabVIEW软件与Arduino控制器实现联合开发。

目前,LIAT支持LabVIEW2010及更高版本,提供的函数库中传感器有热敏电阻、光敏电阻、8段数码管、RGB灯、舵机等。在LabVIEW中使用打开、读写、关闭等库函数,就可以实现对Arduino控制器的数字、模拟、PWMI2CSPI信号的读取与控制。但是,LIAT仅支持Arduino UnoArduino2009Mega2560控制板,而且库函数的数量有限,传感器类型较为单一,存在一定的局限性,极大地限制了对Arduino的开发使用。当使用的传感器不是官方函数库中已有函数的传感器时,就无法使用LabVIEWArduino进行交互控制。

由于LabVIEW Interface for Arduino只需要对LabVIEW编程,而不需要对Arduino编程,甚至不需要底层硬件知识,适合了解LabVIEW编程而不懂Arduino编程的玩家或入门爱好者,由于其简单、易操作,所以也不失为新手入门的一个路径。

下面介绍该方法的操作方式

1LIAT的下载与安装。想要利用LIAT函数库来实现LabVIEW软件与Arduino控制器的交互需要安装三个软件:12010及以上版本的LabVIEW软件;2)与LabVIEW软件配套的VI Packge Manager3LabVIEW Interface for Arduino ToolkitLabVIEW2017版本及之后的版本都已经将VI Packge Manager集成进去,不需要额外安装,所以只需要打开VI Packge Manager 搜索Arduino找到LabVIEW Interface for Arduino即可完成安装。

2LIAT函数库及使用。当LabVIEW安装LabVIEW Interface for Arduino工具包之后,在前面板和程序框图中的函数栏目中就会出现Arduino控件和操作函数库。Arduino控件包含模拟I/O、数字I/OPin ModeBoard Type和连接方式等,如图3-6所示;操作函数库包含有Arduino INITArduino CLOSELow LevelSensorsExamples等,如图3-7所示。其中,Arduino INITArduino CLOSE是每个程序必备的,即与Arduino控制器建立连接,完成对Arduino预先设定的操作之后,断开与Arduino控制器的连接,释放Arduino控制器的串口资源。

12.2.2 串口控制方式

本节将采用有线串口连接的方式实现ArduinoLabVIEW的连接,并介绍LabVIEW VISA串口编程。VISA的下载地址是(下载NI-VISA - NI),下载版本选择最低的5.4即可

VISA是虚拟仪器软件体系结构(Virtual Instruments Software Architecture)的缩写,实质上是一个I/O口软件库及其规范的总称。VISA是应用于仪器编程的标准I/O应用程序接口,是工业界通用的仪器驱动器标准API(应用程序接口),采用面向对象编程,具有很好的兼容性、扩展性和独立性。用户可用一个API控制包括VXIGPIB及串口仪器在内的不同种类的仪器。它还支持多平台工作、多接口控制,是一个多类型的函数库。

LabVIEW中利用VISA节点进行串行通信编程。为了方便用户使用,LabVIEW将这些VISA节点单独组成一个子模块,共包含8个节点,分别实现初始化串口、串口写、串口读、中断以及关闭串口等功能。安装VISA之后,在程序框图界面上右击鼠标,依次选择“函数”→“仪器I/O”→“串口”,即会出现如图3-80所示的串口函数。

LabVIEW中,普通串口通信的基本步骤分为3步:

1)串口初始化,利用VISA Configure SerialPort节点设定串口的端口号、波特率、停止位、校验位、数据位。

2)读写串口,利用VISA Read节点和VISA Write节点对串口进行读写。

3)关闭串口,停止所有读写操作,释放串口资源。

按照串口编程的3个基本步骤,图3-85给出了典型的串口读写程序框图。首先,对所选择的串口进行配置(初始化),然后将需要发送的数据写入串口,等待合适的时间,接着判断出串口中数据的字节数并从串口中读取数据,最后关闭串口,释放串口资源。

实验:ArduinoLabVIEW串口通信的实现

实验分为两个部分:1LabVIEW控制Arduino板载LEDLabVIEW发送开关命令,Arduino接收开关命令,并控制板载LED灯的亮灭;2)虚拟电压表:Arduino测量电压并通过串口发送,LabVIEW接收电压值并显示在前面板的仪表板上。

今天先完成实验的第一部分:LabVIEW控制Arduino板载LED

1)实验目的

通过LabVIEW前面板上的开关按钮实现对Arduino Uno控制板上13号管脚上LED灯开关控制,实现LabVIEWArduino单向数据传输(由LabVIEWArduino控制板发送数据)。

2)硬件连接

本实验只需要使用USB电缆将Arduino Uno控制板连接至电脑USB端口即可。

3Arduino程序设计

Arduino Uno控制器通过串口获取LabVIEW上位机发来的命令码,判断接收到的命令是为“打开”命令还是“关闭”命令,并执行“打开”或“关闭”命令。程序代码如下:

byte  comdata;                                // 定义变量,用于存放串口读取的数据

int LED = 13;                                 // 定义数字口13为LED的控制引脚

void setup() {

  // put your setup code here, to run once:

  Serial.begin(9600);                         // 初始化串口波特率为9600

  pinMode(LED, OUTPUT);                       // 将LED控制引脚设置为输出

}

void loop() {

  // put your main code here, to run repeatedly:

  if (Serial.available() > 0)                 // 不断检测串口缓冲区是否有数据

   {

       comdata =Serial.read();            // 从串口缓冲区读取一个字节的数据

       if(comdata == 0x01)                // 判断是否为关灯命令

       {

         digitalWrite(LED, LOW);        // 关闭LED灯

       }

       if(comdata ==0x02 )              // 判断是否为开灯命令

       {

         digitalWrite(LED,HIGH);        // 打开LED灯

       }

   }

}

由以上程序,可以知道Arduino程序的基本框架由setup()loop()两部分组成。在Arduino控制器中程序运行时将首先执行setup()函数,然后执行loop()函数,并且不断循环执行loop()函数。每次Arduino上电或重启后,都会首先执行setup()函数,而且setup()函数只运行一次。setup()函数用于设置引脚的输入/输出类型、配置串口、引入类库文件、外围器件使用前的初始化等。loop()函数在程序运行过程中不断地循环,根据所编写的程序,完成指定的输入/输出功能。

4LabVIEW程序设计

LabVIEW通过事件结构来响应“打开”和“关闭”的指令,分别发送不同的指令,并通过串口电缆发送至Arduino Uno控制板,Arduino Uno控制板通过读取串口缓冲区中的数据,然后分析数据并执行“打开”或“关闭”的动作。

LabVIEW软件的前面板如图3-86所示。

LabVIEW程序框图如图3-87和图3-88所示。

分析一下这个LabVIEW的程序框图程序,该程序由函数选板->“编程”->“结构”中的 分割成三个部分,这三个部分也就对应上面介绍的串口通信的三个步骤:(1VISA配置串口 ,完成串口初始化,LED灯初始化为关闭状态;(2While循环结构中放置了一个事件结构,该事件结构中有两个分支,一个是打开按钮值改变时控制LED灯亮起,一个是关闭按钮值改变时控制LED灯关闭。这个控制由VISA写入 将“2”和“1”分别发送给Arduino;(3)最后一部分就是用VISA关闭 将串口连接关闭。简易错误处理器   显示错误信息。“2”和“1”的转换操作可以通过LabVIEW提供的即时帮助和LabVIEW帮助手册观察一下VISA写入 所需要的输入,就可以理解“2”和“1”的转换操作是怎么一回事了。

找了很久也没找到《Arduino与LabVIEW开发实战》中这里的配套程序,想想还是自己敲了。之前学了不少编程语言,编程语言基本要素差不多一样,不想再学一遍LabVIEW的了,就连蒙带猜地观察3-87和图3-88,把程序给捣鼓了出来,明天和实验的第二部分一起上传到百度网盘吧,和小伙伴们分享一下。敲完这个程序终于让我有种恍然大悟的感觉,LabVIEW是可以用的。但是对比起文本编程还是感觉勉勉强强,各有各的好吧,针对人群不一样,而且LabVIEW这是把上位机编程也完成了,而且是可视化的那种,和普通的串口调试助手还不一样。

作者: 都白白, 来源:面包板社区

链接: https://mbb.eet-china.com/blog/uid-me-3968342.html

版权声明:本文为博主原创,未经本人允许,禁止转载!

文章评论0条评论)

登录后参与讨论
我要评论
0
10
关闭 站长推荐上一条 /2 下一条