我们都熟悉“自动化”一词,其中人与人之间的互动极少,并且可以自动或远程控制事物。家庭自动化是电子领域中非常流行且要求很高的概念,并且我们也在尽最大努力使该概念在电子项目中易于理解和管理。我们之前已经开发了几种类型的家庭自动化项目,并提供了有效的视频和代码,请检查:
- 基于DTMF的家庭自动化
- 使用Arduino的基于GSM的家庭自动化
- 使用Arduino的PC控制的家庭自动化
- 使用8051的蓝牙控制家庭自动化
- 使用Arduino的IR远程控制家庭自动化
在这个项目中,我们将使用MATLAB和Arduino构建下一个家庭自动化项目,这是使用Arduino和MATLAB的基于GUI的家庭自动化系统
组件:
- Arduino UNO
- USB电缆
- ULN2003
- 继电器5伏
- 带支架灯泡
- 连接线
- 笔记本电脑
- 电源供应
- 聚四氟乙烯
工作说明:
在这个项目中,我们将MATLAB与Arduino结合使用,通过Computer中的图形用户界面来控制家用电器。在这里,我们使用有线通信将数据从计算机(MATLAB)发送到Arduino。在计算机方面,我们已在MATLAB中使用GUI来创建一些用于控制家用电器的按钮。为了在Arduino和MATLAB之间进行通信,我们首先需要安装“ Arduino的MATLAB和Simulink支持”或“ Arduino IO包”。为此,请按照以下步骤操作或查看以下视频:
- 从此处下载Arduino IO软件包。您需要先注册才能下载。
- 然后使用Arduino IDE将adioe.pde文件刻录/上传到Arduino。这个adioe.pde文件可以在Arduino IO包中找到– ArduinoIO \ pde \ adioe \ adioe.pde
- 然后打开MATLAB软件,浏览Arduino IO文件夹,打开install_arduino.m文件并在Matlab中运行它。您将在MATLAB的命令窗口中看到“将Arduino文件夹添加到路径”消息,这意味着MATLAB路径已更新为Arduino文件夹。
这就是我们使Arduino与MATLAB通讯的方式。以上方法适用于“ MATLAB R2013b或更早版本”,如果您使用的是更高版本的MATLAB(例如R2015b或R2016a),则可以直接单击MATLAB中的“加载项”选项卡,然后单击“获取硬件支持包”,从那里可以安装MATLAB的Arduino软件包。
安装文件后,现在可以为家庭自动化项目创建GUI。基本上在GUI中,我们正在创建用于从计算机控制家用电器的按钮。可以通过进入MATLAB的“新建”菜单中的“图形用户界面”来创建按钮。此外,我们可以设置这些按钮的名称和颜色,我们创建了8个按钮,其中六个按钮分别用于打开和关闭三个家用电器,两个按钮同时用于打开和关闭所有家用电器。
现在,在创建按钮之后,当您在该GUI窗口中单击“运行”按钮时,它将要求您保存此GUI文件(扩展名为.fig),也称为“无花果文件”。保存文件后,它将自动创建一个代码文件(扩展名为.m),也称为“ M文件”(请参见下面的屏幕快照),您可以在其中放置代码(在下面的“代码”部分给出)。您可以从以下位置下载该项目的GUI文件和代码文件:Home_Automation_system.fig和Home_Automation_system.m(右键单击并选择“另存为…”),也可以按照我们的说明自行创建它们。
编码后,您现在终于可以从代码窗口运行.m文件,您将在命令窗口中看到“正在尝试连接..”。如果一切顺利,则会出现“ Arduino成功连接”消息。最后,您将在GUI窗口中看到以前创建的GUI(按钮),您可以在其中通过单击“计算机”中的按钮来控制家用电器。确保Arduino通过USB电缆连接到Arduino。在此项目中,我们使用了3个灯泡进行演示,它们分别表示风扇,电灯和电视。
从安装Arduino MATLAB支持包到打开或关闭设备的整个项目的工作都可以在视频结尾处了解。
电路说明:
这个项目的电路非常简单。在这里,我们使用了Arduino UNO板和继电器驱动器ULN2003来驱动继电器。三个5伏SPDT继电器通过继电器驱动器ULN2003连接到Arduino的3、4和5号插针,分别用于控制LIGHT,FAN和TV。
编程说明:
当我们从GUI窗口按下任何按钮时,它将向Arduino发送一些命令,然后Arduino进行该操作。安装Arduino MATLAB IO支持包后,我们可以使用相同的Arduino函数从MATLAB访问Arduino,但有一些小的变化,例如:
为了在Arduino 中将引脚设置 为高电平,我们将代码编写为 digitalWrite(pin,HIGH)
在MATLAB中,我们将在对象或变量(例如,
等等。
在执行此操作之前,我们必须像这样初始化变量:
在这个项目中,除了Arduino MATLAB支持包代码或文件之外,没有Arduino代码。如前所述,该代码文件(.m文件)是在保存GUI文件(.fig文件)时自动生成的。.m文件中已经预先编写了一些代码。基本上,这些是按钮的回调函数,这意味着我们可以定义单击这些按钮时应发生的情况。
在MATLAB代码中,首先我们初始化串口,并使用变量将其设为对象。然后,我们可以使用变量开始像Arduino一样进行编程。
清除ar 全局ar ar = arduino('COM13'); ar.pinMode(3,'OUTPUT'); ar.pinMode(4,'OUTPUT'); ar.pinMode(5,'OUTPUT'); ar.pinMode(13,'OUTPUT');
在每个按钮的回调功能中,我们编写了通过中继连接到Arduino的相应家用电器的开或关相关代码。例如,下面给出了Light ON的回调函数:
函数light_on_Callback(hObject,eventdata,handles)%hObject_light_on的句柄(请参阅GCBO)保留的事件数据-在以后的MATLAB版本中定义。ar.digitalWrite(3,1); ar.digitalWrite(13,1);
同样,我们可以在所有按钮的回调函数中编写代码,以控制其他连接的家用电器,请检查下面的完整MATLAB代码(.m文件)。