2023西电A测:湿度测控仿真系统

题目

实现功能:使用 Arduino UNO 微控制器,搭建一个 PC 上位机远程湿度检测控制系统。

软件环境:推荐采用 Proteus 8.9 SP2 及以上仿真软件,Arduino IDE,串口调试助手软件,虚拟串口驱动软件 Virtual Serial Port Driver(VSPD)。

这是A测题的题2。

软件

没给软件,这里有下载链接:

  • Proteus:仿真软件;
  • Virtual Serial Port Driver(VSPD)和串口调试助手 XCOM:虚拟串口驱动软件和调试软件;
  • Arduino IDE(百度网盘7ed8):芯片编程(官网也可下载,但是新版本使用时似乎无法与串口通信,不推荐);
  • DHT11 库(可以在 Github 找到):驱动 DHT11 传感器。在网页中间位置,点击 Download as a zip 即可。

    2023西电A测:湿度测控仿真系统_第1张图片

流程

创建串口

打开 VSPD,在右侧点击 Add pair 添加一对虚拟串口:

2023西电A测:湿度测控仿真系统_第2张图片

在虚拟机上安装时 Physical ports 会占用一个串口,无需管它,我们只需要虚拟串口。

使用串口调试助手测试串口连通性

点击两次 XCOM 软件,打开两个窗口,串口分别选择 COM1 和 COM2。

2023西电A测:湿度测控仿真系统_第3张图片

注意设置的波特率应该相同,然后在分别下面的发送框输入信息,点击发送向对方发送消息。

2023西电A测:湿度测控仿真系统_第4张图片

2023西电A测:湿度测控仿真系统_第5张图片

测试成功!

注意:

1. 波特率建议默认9600,后面在编程和仿真时也默认9600;

2. 测试后记得把 COM1 串口关闭,点击关闭串口,避免串口占用,COM2 串口保持打开状态

编程

IDE 设置

打开 Arduino IDE,首先在IDE的左上角点击项目->加载库->添加.zip库,选择之前下载的 DHT11 库的.zip文件。

同时再点击文件->首选项,将显示详细输出后的编译、上传选上。

2023西电A测:湿度测控仿真系统_第6张图片

再点击左上角工具->端口,选择 COM1。

源码

# include 
# include  // DHT11库
# include  // LCD控制相关库

// 定义引脚
# define DHT11PIN 6
# define EMPIN 7

LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // 初始化LCD
dht11 DHT11;
String str = ""; // 定义字符串str,接收学号
int length_, last = 0;
int setHumidity, realHumidity = 0;

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600); // 初始化串口,设置波特率为9600
  lcd.begin(16, 2);
  pinMode(EMPIN, OUTPUT); // 设置连接直流电机引脚工作模式
}

void loop() {
  // put your main code here, to run repeatedly:
  DHT11.read(DHT11PIN);
  realHumidity = (int)DHT11.humidity;
  lcd.print("ID:");

  if (Serial.available() > 0) { // 串口接收到数据
    while (Serial.available() > 0) {
      str += (char)Serial.read();
      delay(10); 
    }
    lcd.println(str);
    
    length_ = str.length();
    last = str.substring(length_ - 3, length_ - 2).toInt(); // 取末尾数字
    setHumidity = 30 + last;
    
    str = "";
    length_ = 0;
    last = 0;
  }
  
  lcd.setCursor(0, 1); // 将光标定位在第0列,第1行
  lcd.print("RH:");
  lcd.print(realHumidity);
  lcd.println("%");
  lcd.home(); // 光标返回左上角
    
  Serial.print("Humidity:");
  Serial.print(realHumidity); 
  Serial.println("%");
  
  if (realHumidity <= setHumidity) {
    digitalWrite(EMPIN, HIGH); // 电机转动
  } else {
    digitalWrite(EMPIN, LOW);
  }

  delay(1000);
}

点击左上角验证(那个),等待程序运行完毕,完成后打开右下角目录,注意 AppData 为隐藏目录,直接在地址栏中输入地址就可以找到:

在目录中找到 .ino.hex 文件,复制此文件绝对地址。

2023西电A测:湿度测控仿真系统_第7张图片

仿真

配置

打开A测网站下载的压缩包中的文件 RHMeasControlSyst.pdsprj

打开后,双击仿真图中左上角的芯片(就是最大的那个),然后把 Program File 后的文件地址改为上面复制的 .ino.hex 文件的地址,点击确定。

2023西电A测:湿度测控仿真系统_第8张图片

注意:

每次关闭 Arduino IDE 后再次打开运行代码,AppData 中将生成新的文件夹,.ino.hex 文件地址将会改变,需要手动在芯片中修改。

再双击最右下角的串口组件,将端口设为 COM1,波特率设置为和 XCOM 中 COM2 相同(软件默认为9600),点击确定。

2023西电A测:湿度测控仿真系统_第9张图片

电机和 DHT 传感器

连接电机的引脚号为7,连接DHT的引脚号为6。

DHT 传感器上有上下箭头,还有 %RH 和 ℃RT(但是他乱码了...),红色框框出的是指示,绿色框内上面显示的是湿度,下面是温度。单击 %RH 和 ℃RT 中间的双向箭头切换湿度或者温度调节,指示指向谁就是调整谁,点击上下箭头手动调整大小。

2023西电A测:湿度测控仿真系统_第10张图片

开始仿真

点击左下角播放按钮开始仿真。

2023西电A测:湿度测控仿真系统_第11张图片

LCD 被点亮,显示实时环境湿度,串口调试助手 COM2 接收窗口显示实时环境湿度。

2023西电A测:湿度测控仿真系统_第12张图片

然后从 COM2 的发送框中发送学号,在仿真软件中 LCD 上将显示学号。

2023西电A测:湿度测控仿真系统_第13张图片

按照举例学号,此时设定湿度值为32%,我们手动调节 DHT 传感器,逐渐降低湿度到≤32%时,如31%时,可以发现电机启动,转速逐渐提高,COM2 接收窗口中显示实时环境湿度。

2023西电A测:湿度测控仿真系统_第14张图片

2023西电A测:湿度测控仿真系统_第15张图片

然后再手动调高湿度,观察电机停止。

最后

参考了往年学长们的博客做出来的A测,找软件安装软件配置软件花了绝大部分时间

大家多参考参考flovst佬的这篇博客,多亏这篇才做出来,非常感谢大佬

你可能感兴趣的:(经验分享,课程设计)