图形表示总是有助于可视化数据,通过查看它们变得非常容易找到趋势和模式。有许多软件可用于根据输入值绘制图形,但在嵌入式系统中,MATLAB是最流行的软件之一,它不仅可以以图形格式显示结果,而且可以轻松地与硬件和微控制器集成。
在本篇文章中,我们将学习如何使用MATLAB以图形格式记录和显示数据。在这里,我们使用Arduino和MATLAB记录DHT11的实时温度和湿度数据。
需要的组件
● 安装MATLAB的笔记本电脑
● Arduino UNO开发板
● DHT11温湿度传感器
电路原理图
Circuit-Diagram-for-Plotting-DHT11-Sensor-readings-on-MATLAB.png (29.26 KB, 下载次数: 24)
2019-6-27 10:50 上传
Circuit-Hardware-for-Plotting-DHT11-Sensor-readings-on-MATLAB.jpg (65.71 KB, 下载次数: 25)
2019-6-27 10:50 上传
用于DHT11的Arduino代码与MATLAB连接
将DHT11传感器与Arduino连接后,使用Arduino IDE将代码上传到Arduino。在文章的末尾处给出了完整的Arduino代码,用于将温度和湿度数据记录和可视化到MATLAB中。让我们了解代码是如何工作的。
首先包括用于DHT11传感器的库,即'DHT.h'。
#include 复制代码
然后定义连接到Arduino的DHT11数据引脚。本例中,使用的是4号引脚。
#define DHTPIN 4复制代码
在void setup()函数中初始化串口和DHT11传感器。
void setup() {
Serial.begin(9600);
delay(2000);
dht.begin(); // initialise DHT11 sensor
}复制代码
在void loop()函数中,将温度和湿度的值设置为浮点类型。使用命令float temp = dht.readTemperature()和float humi = dht.readHumidity()从Arduino读取温度和湿度数据。然后在串行监视器上打印这些值,以便MATLAB能够连续读取值。
void loop() {
float temp = dht.readTemperature(); //read temperature data
float humi = dht.readHumidity(); //read temperature data
Serial.print(temp);
Serial.print(humi);
delay(2000);
}复制代码
用于记录和绘制数据的MATLAB代码
在系统中打开MATLAB,然后在编辑器窗口中开始编写代码。可以通过单击MATLAB中的“新脚本”打开编辑器窗口,如下图所示。
Creating-New-Editor-script-in-MATLAB.png (7.22 KB, 下载次数: 25)
2019-6-27 10:52 上传
DHT11传感器数据记录的完整MATLAB代码在本文末尾给出。
首先定义一个从MATLAB到Arduino的串行通信变量。 COM18是Arduino连接的端口,您可以相应地进行更改。
s = serial('COM18');复制代码
在下面的代码中,fopen()用于Arduino和MATLAB之间的串行通信。然后我们将串行数据保存到名为'out'的变量中。 out变量是一个九位数的字符串,其中前四位数字存储温度数据,其余数字存储湿度数据。因此,通过使用Temp(i)=str2num(out(1:4))和Humi(i)=str2num(out(5:9)),我们分别读取温度和湿度数据。
fopen(s)
out = fscanf(s)
Temp(i)=str2num(out(1:4));
Humi(i)=str2num(out(5:9));复制代码
现在,将完整的代码粘贴到编辑器窗口中。单击“运行”按钮处理代码,如下图所示。
Run-MATLAB-GUI.png (15.71 KB, 下载次数: 29)
2019-6-27 10:54 上传
等到MATLAB在屏幕左下角显示忙碌,如下图所示。这表明MATLAB正在处理代码。
Processing-MATLAB-GUI-Program.png (1.3 KB, 下载次数: 28)
2019-6-27 10:54 上传
如果代码执行时没有任何错误,则实时图形窗口将出现在屏幕上,如下所示。这里,数据将每两秒更新一次,因为DHT11传感器将数据发送到串行端口需要两秒钟。
Plotting-DHT11-Sensor-readings-on-MATLAB.png (14.81 KB, 下载次数: 29)
2019-6-27 10:55 上传
要检查温度和湿度的实时记录值,请双击工作区窗口中的相应变量,如下图所示。
Checking-DHT11-Logged-Data-on-Matlab.png (16.18 KB, 下载次数: 25)
2019-6-27 10:56 上传
将出现一个对话框,其中包含特定变量中的所有已保存值。
Checking-DHT11-Logged-Humidity-Data-on-Matlab.png (4.88 KB, 下载次数: 28)
2019-6-27 10:56 上传
Checking-DHT11-Logged-Temperature-Data-on-Matlab.png (4.54 KB, 下载次数: 32)
2019-6-27 10:56 上传
以上就是您如何使用MATLAB基于任何数据记录、可视化和绘制图形。如果遇到任何问题,请在本帖下面进行回复。
代码
本文使用的完整代码如下(包含Arduino和Matlab代码):
main.rar
(608 Bytes, 下载次数: 54)
2019-6-27 11:03 上传
点击文件名下载附件