实现功能:使用 Arduino UNO 微控制器,搭建一个 PC 上位机远程湿度检测控制系统。
软件环境:推荐采用 Proteus 8.9 SP2 及以上仿真软件,Arduino IDE,串口调试助手软件,虚拟串口驱动软件 Virtual Serial Port Driver(VSPD)。
这是A测题的题2。
没给软件,这里有下载链接:
打开 VSPD,在右侧点击 Add pair 添加一对虚拟串口:
在虚拟机上安装时 Physical ports 会占用一个串口,无需管它,我们只需要虚拟串口。
点击两次 XCOM 软件,打开两个窗口,串口分别选择 COM1 和 COM2。
注意设置的波特率应该相同,然后在分别下面的发送框输入信息,点击发送向对方发送消息。
测试成功!
注意:
1. 波特率建议默认9600,后面在编程和仿真时也默认9600;
2. 测试后记得把 COM1 串口关闭,点击关闭串口,避免串口占用,COM2 串口保持打开状态
打开 Arduino IDE,首先在IDE的左上角点击项目->加载库->添加.zip库,选择之前下载的 DHT11 库的.zip文件。
同时再点击文件->首选项,将显示详细输出后的编译、上传选上。
再点击左上角工具->端口,选择 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 文件,复制此文件绝对地址。
打开A测网站下载的压缩包中的文件 RHMeasControlSyst.pdsprj。
打开后,双击仿真图中左上角的芯片(就是最大的那个),然后把 Program File 后的文件地址改为上面复制的 .ino.hex 文件的地址,点击确定。
注意:
每次关闭 Arduino IDE 后再次打开运行代码,AppData 中将生成新的文件夹,.ino.hex 文件地址将会改变,需要手动在芯片中修改。
再双击最右下角的串口组件,将端口设为 COM1,波特率设置为和 XCOM 中 COM2 相同(软件默认为9600),点击确定。
连接电机的引脚号为7,连接DHT的引脚号为6。
DHT 传感器上有上下箭头,还有 %RH 和 ℃RT(但是他乱码了...),红色框框出的是指示,绿色框内上面显示的是湿度,下面是温度。单击 %RH 和 ℃RT 中间的双向箭头切换湿度或者温度调节,指示指向谁就是调整谁,点击上下箭头手动调整大小。
点击左下角播放按钮开始仿真。
LCD 被点亮,显示实时环境湿度,串口调试助手 COM2 接收窗口显示实时环境湿度。
然后从 COM2 的发送框中发送学号,在仿真软件中 LCD 上将显示学号。
按照举例学号,此时设定湿度值为32%,我们手动调节 DHT 传感器,逐渐降低湿度到≤32%时,如31%时,可以发现电机启动,转速逐渐提高,COM2 接收窗口中显示实时环境湿度。
然后再手动调高湿度,观察电机停止。
参考了往年学长们的博客做出来的A测,找软件安装软件配置软件花了绝大部分时间
大家多参考参考flovst佬的这篇博客,多亏这篇才做出来,非常感谢大佬