多语言实现Arduino“高温监控仪”

来源 :电脑报 | 被引量 : 0次 | 上传用户:shuang901014
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  借助于温度传感器、风扇模块和几个LED灯,我们利用Arduino开发制作一个“高温监控仪”:当环境温度处于较适宜的温度范围时(比如28℃以下),绿色LED灯亮,风扇模块无动作;当温度有小幅度升高时(28℃以上、30℃以下),黄色LED灯发光进行预警,同时风扇模块低速转动进行风力降温,直至恢复正常;当温度较高时(30℃以上),红色LED灯发光进行报警,风扇模块高速转动进行风力快速降温……在整个过程中,屏幕每隔3秒钟就显示一次实时检测到的温度数据。

1.实验器材与电路连接


  实验器材:Arduino UNO主板一个,DHT11温湿度传感器一个,风扇模块一个,绿色、黄色和红色LED灯各一支,面包板一块,各色杜邦线若干;对照设计好的电路接线图进行器材连接(如图1)。



  首先,将Arduino的5V和GND通过杜邦线连接至面包板一侧的红色和蓝色线槽;接着,将绿色、黄色和红色LED灯的短腿(负极)均插接至蓝色线槽,长腿(正极)则分别插接至a列某行插孔中,再通过同种颜色的杜邦线将正极与Arduino的11号、12号和13号数字引脚相连;然后,将温度传感器和风扇模块的VCC端和GND端均通过杜邦线与面包板的红色、蓝色线槽连接,二者的信号端则分别插接至Arduino的2号和3号数字引脚;最后,通过数据线将Arduino与计算机USB接口连接,完成电路连接(如图2)。


2.Arduino IDE代码编程实现“高温监控仪”


  在Arduino IDE中对DHT11温湿度传感器进行编程控制的前提是要安装DHT.h库,首先依次点击菜单“项目”-“加载库”-“管理库”项,在弹出的“库管理器”中以“DHT11”为关键词进行搜索,会出现一个名为“DHT sensor library(by Adafruit)”的库,显示支持DHT11(目前最新版本为1.4.2);接着,点击“安装”按钮(如图3),在弹出的提示窗口中点击“Install all”按钮进行下载和安装;结束后返回“加载库”中查看,底部“推荐的库”中就会显示有“DHT sensor library”项,说明安装成功。



  首先导入DHT.h库:“#include <DHT.h>”,并且通过语句“DHT dht(2, DHT11);”对连接在2号数字引脚的温度传感器信号端进行初始化;然后定义Fan、GreenLED、YellowLED和RedLELD四个变量,对风扇模块(3号数字引脚)、绿色(11号)、黄色(12号)和红色(13号)LED灯进行引脚编号声明:“int Fan = 3;”“int GreenLED = 11;”“int YellowLED = 12;”和“int RedLED = 13;”;接下来,在setup()函数中先通过语句“Serial.begin(9600);”设置串口监视器的波特率,再通過语句“dht.begin();”开启DHT11温度传感器的数据通讯,最后通过pinMode()对风扇模块和三个LED灯的引脚模式均设置为输出模式:“pinMode(Fan, OUTPUT);”“pinMode(GreenLED, OUTPUT);”“pinMode(YellowLED, OUTPUT);”和“pinMode(RedLED, OUTPUT);”(如图4)。



  在loop()函数中先定义浮点型变量Temperature,通过“float Temperature = dht.readTemperature();”语句实现对检测温度数据的读取,然后将该数据在串口监视器中输出:“Serial.print("当前温度为:");”“Serial.print(Temperature);”和“Serial.println("℃");”;接着,构建“if…else if…else…”三分支选择结构,对温度数据进行数值区间判断:如果温度在28℃以下——“if (Temperature <= 28.00)”,则控制绿色LED灯发光:“digitalWrite(GreenLED, HIGH);”;如果温度在28℃-30℃之间——“else if (Temperature > 28.00 && Temperature <= 30.00)”,则控制黄色LED灯发光、风扇低速转动:“digitalWrite(YellowLED,HIGH);”“analogWrite(Fan, 127);”;如果温度超过30℃,则控制红色LED发光、风扇高速转动:“digitalWrite(RedLED, HIGH);”“analogWrite(Fan, 255);”。   注意,DHT11温湿度传感器的数据采样频率不能太高,因此通过语句“delay(3000);”来实现3秒钟的延迟;最后,关闭LED灯和风扇模式:“digitalWrite(GreenLED, LOW);”“digitalWrite(YellowLED, LOW);”“digitalWrite(RedLED, LOW);”和“analogWrite(Fan, 0);”,完成程序的编写(如图5)。



  将程序保存、编译、上传至Arduino,对“高温监控仪”进行三种不同环境温度情况的测试,串口显示器3秒钟就显示一次温度数据的实时检测值,同时还会触发不同颜色的LED灯或风扇模块产生对应的预设“动作”。

3.Python实现“高温监控仪”


  首先,通过语句“import time”和“from pinpong.board import Board,Pin,DHT11”导入time和pinpong库的相关内容,并且初始化Arduino uno开发板:“Board(“uno”).begin()”;接着,通过五个语句分别对DHT11温湿度传感器、风扇模块和三个LED灯的对应引脚进行声明,包括引脚号和输入或输出模式(注意风扇模块是PWM输出):“dht11 = DHT11(Pin(Pin.D2))”“Fan = Pin(Pin.D3, Pin.PWM)”“GreenLED = Pin(Pin.D11, Pin.OUT)”“YellowLED = Pin(Pin.D12, Pin.OUT)”和“RedLED = Pin(Pin.D13, Pin.OUT)”。
  在“while True:”循环结构中,先建立变量Temperature并為其赋值:“Temperature = dht11.temp_c()”,即获取温度传感器的摄氏度数据,并且将它打印输出:“print('当前温度为: ',Temperature,'℃')”;然后再建立“if…elif…else…”三分支选择结构,对变量Temperature的数值进行判断,当检测的环境温度在28℃以下时:“if Temperature <= 28.00:”,绿色LED灯发光:“GreenLED.write_digital(1)”;当温度在28℃-30℃之间时:“elif (Temperature > 28.00 and Temperature <= 30.00):”,黄色LED灯发光、风扇模块中速转动:“YellowLED.write_digital(1)”“Fan.write_analog(127)”;当温度超过30℃时(else语句),红色LED灯发光、风扇模块高速转动:“RedLED.write_digital(1)”、“Fan.write_analog(255)”;最后,添加延迟3秒钟的“time.sleep()”语句,并且将三支LED灯和风扇模块均关闭:“GreenLED.write_digital(0)”“YellowLED.write_digital(0)”“RedLED.write_digital(0)”和“Fan.write_analog(0)”。



  保存程序,按功能键F5运行,测试Arduino“高温监控仪”,效果与使用Arduino IDE代码编程的实现效果是完全一致的(如图6)。

4.Mind+图形化编程实现“高温监控仪”


  首先,点击Mind+左下角的“扩展”项,将Arduino Uno主控板和DHT11/22温湿度传感器加载至主界面;接着,在“循环执行”中建立名为“温度”的变量,为其赋值为“读取引脚2'DHT1'温度(℃)”,并且在串口监视器中以9600的波特率进行字符串输出;然后建立“如果…那么执行…否则如果…那么执行…否则…”三分支选择结构,分别对变量“温度”的值进行数值区间判断:如果小于等于28℃,则“设置数字引脚11输出为高电平”(绿色LED灯发光);如果大于28℃且小于等于30℃,则“设置数字引脚12输出为高电平”(黄色LED灯发光)、“设置PWM引脚3输出127”(风扇模块中速转动);否则(即大于30℃时),执行“设置数字引脚13输出为高电平”(红色LED灯发光)、“设置PWM引脚3输出255”(风扇模块高速转动);最后,等待3秒钟,将三支LED均设置为低电平、风扇模块设置PWM值为0进行关闭操作。
  将程序保存后点击“上传到设备”项,测试Arduino“高温监控仪”,同样也会实现每隔3秒钟检测一次环境温度的功能,并且对不同的温度数据进行开关对应颜色的LED灯及风扇模块不同转速的控制,与使用代码编程实现的效果是完全一致的(如图7)。


其他文献
摘要:目的:研究营养护理质量指标用于消化内科护理质量管理的价值。方法:2019年4月-2021年3月本院消化内科接诊病患74例,隨机均分2组。研究组用营养护理质量指标,对照组行常规营养护理质量管理。对比护理效果等指标。结果:针对护理有效率,研究组94.59%,比对照组75.68%高,P<0.05。针对满意度,研究组97.3%,比对照组81.08%高,P0.05,具有可比性。  1.2 排除标准[2
期刊
音效视觉化的设计我们在之前的几何节点教程中曾经教过大家一个立体式的方法,不过该方法虽然很酷,但不足在于比较抽象,不及我们日常看到的音频频谱柱形图那么直观,那么在Blender里我们要怎样才能实现传统的音频柱状图,又能不能玩出一点花样来呢?第一步:建立柱形图的模型  参考音视频编辑软件中的音频柱形图不难发现,它是由一个个的小方块“堆砌”而成,所以我们首先是新建一个长方形的平面,然后放到中心轴,比如Y
期刊
摘要:慢性伤口区别于普通的伤口,具有恢复缓慢、感染率高的特点,处置不当,对患者的健康造成影响,甚至危及生命健康。若没有完善的管理对策分析,不仅造成医患关系紧张,更对患者的病情控制造成不良的影响,耽误病情的诊治。因此,针对患者不同的慢性伤口的情况,做好积极的管理对策分析,显得十分必要。  关键字:慢性伤口;风险;管理;对策分析  伤口在临床医学中常见,一般普通的伤口可以短期内愈合,但是有一类伤口具有
期刊
到了NVIDIA的30系移动显卡这一波,由于性能提升很大,所以即便是入门级的3050,也被冠上了RTX字样,而我们之前的测试也证明,相对于NVIDIA上一代入门级游戏显卡GTX1650Ti,仅仅60W的RTX 3050也有最高40%的性能提升。但实际上,RTX 3050的功率上限是95W,这,就让人有了极大的憧憬!  本文的主角,就是为数不多的95W RTX 3050机型之一,机械革命新款Z3 A
期刊
摘要:目的:探讨产妇产后开展品管圈活动对首次泌乳时间、泌乳量的影响。方法:抽取我院2020年1月至2020年12月收治的产妇180例为研究对象,90例行常规护理者作为对照组,90例行品管圈护理者作为实验组,统计两组产后首次泌乳时间及不同时段泌乳量。结果:①实验组首次泌乳时间显著短于对照组(P<0.05);②实验组产后1、2、3d泌乳量显著多于对照组(P0.05)。  1.2 方法  对照组:予以常
期刊
摘要:目的:研究优质护理用于老年股骨颈骨折的价值。方法:2019年5月-2021年4月本科接诊老年股骨颈骨折病患86例,随机均分2组。研究组采取优质护理,对照组行常规护理。对比Harris评分等指标。结果:针对Harris评分,研究组出院时(80.41±3.65)分,比对照组(73.45±4.79)分高,P<0.05。针对并发症发生率,研究组2.33%,比对照组16.28%低,P0.05,具有可比
期刊
大家都不喜欢垄断,因为垄断往往意味着价格居高不下,意味着停滞不前。在显卡领域,虽然不能说NVIDIA停滞不前,但垄断是事实。所以,AMD推出的RX6600M/6700M/6800M移动显卡,被寄予厚望,大家都希望能够借此打破NVIDIA的垄断。  前期我们评测了RX 6800M,或许当时驱动程序还不够成熟,所以部分游戏表现并不理想,或者说“未达预期”。当然,RX 6800M本身定位高端,也不是主流
期刊
摘要:目的:探究护理干预对老年急性胃穿孔患者手术效果和预后的影响。方法:筛选我院2019年1月至2020年5月收治的108例老年急性胃穿孔患者,随机分为实验对照组(54例,采用常规护理干预措施+针对性护理干预措施)和常规对照组(54例,单独采用常规护理干预措施),比较两组相应接受护理干预后相关手术效果以及并发症发生比例。结果:护理后,实验对照组的患者手术平均时间、住院平均时间、术后首次排气时间以及
期刊
摘要:目的:探讨持续质量改进对急诊科护理质量管理的应用效果。方法:将我院50例急诊科患者,双盲随机法分二组。对照组给予常规法护理,实验组实施持续质量改进护理。比较两组满意度、护理服务质量评分。结果:实验组满意度高于对照组,护理服务质量评分高于对照组,P0.05。  1.2方法  对照组给予常规法护理。 实验组实施持续质量改进护理。(1)分析护理质量管理问题。急诊护理管理中发现,病人病情、临床症状记
期刊
摘要:目的:探讨优化急诊护理流程在急诊心梗护理中的应用效果。方法:选择我院2017年1月至2019年1月的60例急诊心梗患者,随机分组,常规急诊护理流程组给予的是常规急诊护理流程,优化急诊护理流程组则采取了优化急诊护理流程。比较两组急诊心梗抢救成功率;急诊的时间、球囊扩张时间、急诊室进出的时间、总住院时间;护理前后SAS焦虑评分、左心射血分数;院内复发率。结果:优化急诊护理流程组急诊心梗抢救成功率
期刊