蓝牙是嵌入式系统中用于短距离无线通信的最简单,最受欢迎的协议。蓝牙不仅用于将数据从一台设备传输到另一台设备,而且还用于无线控制设备。如今,几乎每个电子小工具都具有蓝牙支持,因此明智的选择是在嵌入式应用程序中具有蓝牙控制选项。
在本教程的此处,我们将学习如何在MATLAB中使用蓝牙进行无线通信。我们将在一侧使用带有MATLAB的计算机内置蓝牙,在另一侧使用Arduino的HC-05。有两种方法可以通过蓝牙设置MATLAB和Arduino之间的通信,一种方法是使用命令窗口,另一种方法是使用MATLAB GUI。两种方法的Arduino代码将保持不变。如果您不熟悉MATLAB,建议您使用MATLAB的简单的LED闪烁程序开始学习MATLAB的基本术语。您可以进一步探索更多的MATLAB项目:
- MATLAB与Arduino之间的串行通信
- 使用MATLAB和Arduino的直流电动机控制
- 使用MATLAB和Arduino的步进电机控制
- 使用MATLAB进行图像处理入门
所需组件
- MATLAB安装的笔记本电脑(首选:R2016a或更高版本)
- Arduino UNO
- 蓝牙模块(HC-05)
- LED(任何颜色)
- 电阻(330欧姆)
- 跳线
要了解有关HC-05及其与Arduino接口的更多信息,请查看以下文章。
- 使用Arduino的蓝牙控制伺服电机
- 使用Arduino和蓝牙的语音控制LED
- 使用Arduino和蓝牙的手机控制AC
电路原理图
下面给出了MATLAB与Arduino之间的蓝牙通信的 示意图 :
使用MATLAB命令窗口的蓝牙通信
这是在Arduino和MATLAB之间设置蓝牙通信的简单方法。在这里,MATLAB使用笔记本电脑的蓝牙连接与Arduino连接的HC-05。首先,我们必须对Arduino进行编码,以读取来自MATLAB的串行输入数据(使用笔记本电脑的蓝牙)。
然后,从MATLAB发送的蓝牙数据可用于控制连接到Arduino的任何设备。在这里,我们已经将LED连接到Arduino,可以使用MATLAB从LAPTOP对其进行控制。
首先,将给定的Arduino代码上传到Arduino UNO中,然后在MATLAB Command Window中开始编码。
#包括
然后,将下面的MATLAB代码复制并粘贴到Command窗口中,以实现MATLAB和Arduino之间的蓝牙通信。
instrhwinfo('Bluetooth','HC-05'); bt =蓝牙('HC-05',1); fopen(bt);
在下面的代码中,命令 fprintf(bt,'0') 用于通过向Arduino发送'0'来关闭LED。现在,如果要打开LED,请使用以下命令发送“ 1”而不是“ 0”。
fprintf (bt,'1');
要检查有关可用硬件的信息,请使用以下命令
instrhwinfo ('类型','设备名称');
要打开蓝牙端口,请使用以下命令
fopen (bt);
观看下面的视频,了解使用蓝牙从MATLAB向Arduino发送数据的完整过程 。
使用MATLAB GUI进行蓝牙通信
为了演示使用MATLAB GUI的蓝牙通信,我们将在MATLAB中创建三个图形按钮以打开,关闭和闪烁连接到Arduino的LED。单击这些图形按钮,数据将从MATLAB从蓝牙发送到HC-05。Arduino包含用于接收从MATLAB到HC-05的蓝牙传输数据并根据接收到的数据控制LED的代码。Arduino代码将保持与以前的代码相同,唯一的区别是,以前我们通过MATLAB的命令窗口发送数据“ 1”和“ 0”,现在单击三个图形按钮将发送相同的数据。
要启动GUI,请在 命令窗口中 键入以下命令
指南
将会打开一个弹出窗口,然后选择新的 空白GUI ,如下图所示,
现在,选择三个按钮来打开,关闭和闪烁LED,如下所示,
要调整按钮的大小或更改按钮的形状,只需单击它,就可以拖动按钮的各个角。通过双击按钮,可以更改特定按钮的颜色,字符串和标签。我们定制了三个按钮,如下图所示。
您可以根据需要自定义按钮。现在,当您保存此代码时,将在MATLAB的“ 编辑器”窗口 中生成一个代码。根据您希望Arduino在使用MATLAB GUI接收蓝牙数据时执行的任务来编辑此代码。因此,下面我们编辑了MATLAB代码。您可以在MATLAB入门教程中了解有关命令窗口,编辑器窗口等的更多信息。
该项目的末尾给出了完整的MATLAB代码,用于通过蓝牙控制来自MATLAB的LED。此外,我们在此处包括要下载的GUI文件(.fig)和代码文件(.m),您可以使用它们根据需要自定义按钮。以下是我们为控制与Arduino连接的LED所做的一些调整。
将以下代码复制并粘贴到行号。74将MATLAB设置或连接到笔记本电脑的蓝牙。
全部清除; 全球债务 instrhwinfo('Bluetooth','HC-05'); bt =蓝牙('HC-05',1); fopen(bt);
其中, fopen(bt) 用于打开蓝牙端口以传输数据。
现在,向下滚动时,您将看到在GUI中为三个按钮创建了三个功能。现在,根据您要在单击时执行的任务,在函数中编写代码。
在 LED ON 按钮的功能中,将以下代码复制并粘贴在该功能结束之前以将LED点亮。在下面的代码中, fprintf(bt,'1') 用于使用笔记本电脑的蓝牙从MATLAB向HC-05发送“ 1”。Arduino将通过HC-05接收到此数据“ 1”,并通过将其第11引脚设为高电平来使LED发光。
全球债务 fprintf (bt,'1');
在“ LED熄灭” 按钮的功能中,将以下代码复制并粘贴在该功能结束之前以关闭LED。在下面的代码中, fprintf(bt,'0') 用于使用笔记本电脑的蓝牙从MATLAB向HC-05发送“ 0”。Arduino将通过HC-05接收到“ 0”,并通过将其第11引脚设为低电平来关闭LED 。
全球债务 fprintf (bt,'0');
在 BLINK 按钮的功能中,使用以下代码使LED闪烁。一个 for 循环用于使LED闪烁10次。
全球债务 因为我= 1:10 fprintf(bt,'1'); 暂停(0.5); fprintf(bt,'0'); 暂停(0.5); 结束
完成MATLAB GUI编码并根据电路图设置硬件后,只需单击运行按钮即可运行.m文件中的已编辑代码。
MATLAB可能需要几秒钟来做出响应,在MATLAB显示BUSY指示之前,不要单击任何GUI按钮,您可以在屏幕的左下角看到该指示,如下所示,
一切准备就绪后,依次单击LED-ON,LED OFF和BLINK按钮以分别打开,关闭和闪烁LED。可以从此处下载该项目的所有代码文件,也可以使用下面给出的代码。
请查看下面的视频,以了解使用MATLAB GUI通过蓝牙将数据从MATLAB发送到Arduino的完整过程 。