接口与程序课程设计-Arduino.docx
接口与控制课程设计基于Arduino的温湿度测量仪指导教师:纪建伟付立思班级:14级农业电气化一班组员:刘晓旭徐梓桐杨康佳信息与电气工程学院2016年12月目录摘要1第一章课程设计的根本思路2第二章单元模块设计信息22.1面包板22.2杜邦线32.3DHTll数字温湿度传感器模块42.4电位器62.516021cd字符型液晶显示器62.6ArduinoUnor3微处理器72.7色环电阻82.89v电源82.9LCD引脚接线1602采用标准的16脚接口,其中:8第三章设计程序及注释IO第四章设计实物图及成果展示15第五章总结165.1本次设计进程中遇到的问题及解决方法165.2本次设计的心得体会16摘要本次设计是基于ArduinoUnor3为控制核心,结合dhtll数字温湿度传感器模块、1602LCD字符型液晶显示器的温湿度测量仪。该系统用于检测空气中的温湿度并传递到LCD显示器上。其量程温度为050°C,量程湿度为20-90%RHo关键词:Arduino温湿度测量LCD第一章课程设计的根本思路本次设计为实现对空气中的温湿度测量,我们方案选用以ArdUino为核心,其他模块为根底,以积木式的方法搭建出整个硬件系统。为此我们先学习了ArdUino控制板上各引脚的功能及用途,再学习温湿度传感器和arduino之间信息传递的方式,发现dhtll输出的是数字信号,Arduino可直接通过数字引脚采集传感器输出的温湿度数据。最后,我们学习LCD各引脚功能,以实现ArdUinO采集的温湿度数据信息的显示。第二章单元模块设计信息2.1面包板面包板是由于板子上有很多小插孔,专为电子电路的无焊接实验设计制造的。由于各种电子元器件可根据需要随意插入或拔出,免去数个横向插孔内部结构外观和另外数个横向摘向的数个插孔互相连通 / 插孔之间不连通面包板上半部分结构图外观纵向的5个插孔互相连通 用于隔离上下横向的插扎都不连通两部,插孔的凹槽面包板中间部分结构图了焊接,节省了电路的组装时间,而且元件可以重复使用,所以非常适合电子电路的组装、调试和训练。面包板的得名可以追溯到真空管电路的年代,当时的电路元器件大都体积较大,人们通常通过螺丝和钉子将他们固定在一块切面包用的木板上进行连接,后来电路元器件体积越来越小,但面包板的名称沿用了下来。面包板就是有母板作为底座,并且电源接入有专用接线柱,甚至有些能够进行高压实验的还有地线接线柱的面包实验板。这种板子使用起来比拟方便,就是把电源直接接入接线柱,然后单面包板插入元件进行实验(插元件的过程中要断开电源)遇到多于5个元件或一组插孔插不下时,就需要用面包板连接线(也叫面包线,见参考资料)把多组插孔连接起来。2.2杜邦线是美国杜邦公司生产的有特殊效用的缝纫线。电子行业杜邦线可用于实验板的引脚扩展,增加实验工程等。可以非常牢靠地和插针连接,无需焊接,可以快速进行电路试验。2.3DHTll数字温湿度传感器模块DHTll数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性,本钱低、相对湿度和温度测量、超快响应、抗干扰能力强、超长的信号传输距离、数字信号输出、精确校准。传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。可用于暖通空调、除湿器、测试及检测设备、消费品、汽车、自动控制、数据记录器、气象站、家电、湿度调节器、医疗、其他相关湿度检测控制。产品参数:相对湿度分辨率:16Bit重复性:±1%RH精度:25±5%RH互换性:可完全互换响应时间:le(63%)25°C6slm/s空气6s迟滞:±0.3%RH长期稳定性:±0.5%RHyr温度分辨率:16Bit重复性:±0.2°C量程范围:25±2响应时间:le(63%)IOS电气特性供电:DC3.55.5V供电电流:测量0.3mA待机60HA采样周期:次大于2秒引脚说明1、VDD供电355.5VDC2、DATA串行数据,单总线3、NC空脚4、GND接地,电源负极本公司生产的湿敏电阻湿度传感器器是采用有机高分子材料的一种新型的湿度敏感元件,具有感湿范围宽,响应迅速,抗污染能力强,无需加热清洗及长期使用性能稳定可靠等诸多特点。本设计中,采用的是dhtll数字温湿度传感器模块,可以直插直用。2.4电位器电位器是具有三个引出端、阻值可按某种变化规律调节的电阻元件。电位器通常由电阻体和可移动的电刷组成。当电刷沿电阻体移动时,在输出端即获得与位移量成一定关系的电阻值或电压。电位器既可作三端元件使用也可作二端元件使用。后者可视作一可变电阻器,由于它在电路中的作用是获得与输入电压(外加电压)成一定关系得输出电压,因此称之为电位器。2.51602ICd字符型液晶显示器1602是字符型液晶,它是16*2的显示的。每个字符由5乘7的点阵组成。1602字符型LCD通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线。引脚说明:VCC(15脚)和地线GND(16脚),其控制原理与14脚的LCD完全一样。Arduino是一款便捷灵活、方便上手2.6ArduinoUnor3微处理器的开源电子原型平台。包含硬件(各种型号的ArdUino板)和软件(ArduinoIDE)o由一个欧洲开发团队于2005年冬季开发。其成员包括MassimoBanzi、DavidCuartielles、TornIgoe、GianlucaMartino、DavidMellis和NicholasZambettio它构建于开放原始码simpleI/O介面版,并且具有使用类似Java、C语言的ProCeSSing/Wiring开发环境。主要包含两个主要的局部:硬件局部是可以用来做电路连接的Arduino电路板;另外一个那么是ArdUinoIDE,你的计算机中的程序开发环境。你只要在IDE中编写程序代码,将程序上传到ArdUinO电路板后,程序便会告诉ArdUinO电路板要做些什么了。Arduino能通过各种各样的传感器来感知环境,通过控制灯光、马达和其他的装置来反应、影响环境。板子上的微控制器可以通过Arduino的编程语言来编写程序,编译成二进制文件,烧录进微控制器。对Arduino的编程是利用Arduino编程语言(基于Wiring)和Arduino开发环境(基于ProCeSSing)来实现的。基于Arduino的工程,可以只包含Arduino,也可以包含ArdUino和其他一些在PC上运行的软件,他们之间进行通信(比方Flash,Processing,MaXMSP)来实现。2.7色环电阻色环电阻,是在电阻封装上(即电阻外表)涂上一定颜色的色环,来代表这个电阻的阻值。2. 89v电源2.9LCD引脚接线1602采用标准的16脚接口,其中:第1脚:VSS为电源地第2脚:VCC接5V电源正极第3脚:VO为液晶显示器比照度调整端,接正电源时比照度最弱,接地电源时比照度最高(比照度过高时会产生“鬼影”,使用时可以通过一个IOK的电位器调整比照度)。第4脚:RS为存放器选择,高电平1时选择数据存放器、低电平0时选择指令存放器。第5脚:RW为读写信号线,高电平时进行读操作,低电平(0)时进行写操作。第6脚:E(或EN)端为使能(enable)端,高电平时读取信息,负跳变时执行指令。第714脚:D0D7为8位双向数据端。第1516脚:空脚或背灯电源。15脚背光正极,16脚背光负极。LCD引脚Arduino引脚编号RS4号引脚EN5号引脚D46号引脚D57号引脚D68号引脚D79号引脚Arduino的2号引脚与DHTlldata引脚相连1.CD的3号引脚与电位器相连,起比照度调节的作用1.CD的15号引脚可以串联适当大小的电阻来调节其背光亮度第三章设计程序及注释/ExampletestingsketchforvariousDHThumidity/temperaturesensors/WrittenbyIadyada,publicdomaininclude"DHT.h"#include<LiquidCrystal.h>包含头文件#defineDHTPIN2/whatdigitalpinwe'reconnectedto/Uncommentwhatevertypeyou'reusing!#defineDHTTYPEDHTll/DHT11constintPOT=IO;constintTH=11;1.iquidCrystaIlcd(4,5,6,7,8,9);用接口引脚编号初始化库自定义温度标识符bytedegree8=BOOllO,B01001,BOlOOl,BOOllOzB00000zB00000,B00000zB00000,;/#defineDHTTYPEDHT22/DHT22(AM2302)zAM2321/#defineDHTTYPEDHT21/DHT21(AM2301)/Connectpin1(ontheleft)ofthesensorto+5V/NOTE:Ifusingaboardwith3.3VlogiclikeanArduinoDueconnectpin1/to3.3Vinsteadof5V!/Connectpin2ofthesensortowhateveryourDHTPINis/Connectpin4(ontheright)ofthesensortoGROUND/Connecta10Kresistorfrompin2(data)topin1(power)ofthesensor/InitializeDHTsensor./Notethatolderversionsofthislibrarytookanoptionalthirdparameterto/tweakthetimingsforfasterprocessors.Thisparameterisnolongerneeded/asthecurrentDHTreadingalgorithmadjustsitselftoworkonfasterprocs.DHTdht(DHTPIN,DHTTYPE);voidsetup()Serial.begin(9600);Serial.println("DHTxxtest!");dht.begin();设置1011号引脚输出5v电压lcd.begin(16z2);PinMode(POTOUTPUT);PinMode(TH7OUTPUT);CligitaIWrite(POTHIGH);CligitaIWrite(THzHIGH);生成自定义字符lcd.createChar(Ozdegree);在LCD上输出一条静态消息lcd.setCursor(0,0);lcd.print("Templcd.setCursor(10,0);lcd.write(byte)O);lcd.setCursor(llzO);lcd.print("C");lcd.setCursor(Ozl);lcd.print("Humlcd.setCursor(10,l);lcd.print("%");)voidloop()/Waitafewsecondsbetweenmeasurements.delay(2000);/Readingtemperatureorhumiditytakesabout250milliseconds!/Sensorreadingsmayalsobeupto2seconds'old'(itsaveryslowsensor)inth=dht.readHumidity();/ReadtemperatureasCelsius(thedefault)intt=dht.readTemperature();/ReadtemperatureasFahrenheit(isFahrenheit=true)floatf=dht.readTemperature(true);/Checkifanyreadsfailedandexitearly(totryagain).if(isnan(h)11isnan(t)11isnan(f)SeriaLprintInC1FaiIedtoreadfromDHTsensor!");return;)/ComputeheatindexinFahrenheit(thedefault)floathif=dhtputeHeatlnde×(f,h);/ComputeheatindexinCelsius(isFahreheit=false)floathie=dhtputeHeatlnde×(t,h,false);Serial.print("Humidity:");Serial.print(h);Serial.print("%t");Serial.print("Temperature:");Serial.print(t);Serial.print("C");Serial.print(f);Serial.print("Ft");Serial.print("Heatindex:");Serial.print(hic);Serial.print("C");Serial.print(hif);Serial.println(F");/IrJled输出数据lcd.setCursor(8,0);lcd.print(t);lcd.setCursor(8,l);Icd.print(h);第四章设计实物图及成果展示第五章总结5.1 本次设计进程中遇到的问题及解决方法在仿真过程中,设计前期我们方案使用仿真软件proteus来进行硬件搭建前的仿真测试,但是在本设计中我们使用了各种模块进行了积木式的搭建,用仿真软件反而增大了设计复杂程度。故我们直接选择用硬件来实现本次设计。在向LCD输出数据时,第一次输出时LCD只有第一行有输出,第二行处于未工作状态。而且在输出结果时,第二行的结果将程序中规定的第一行输出值局部覆盖,导致输出信息的混乱状态。原因是在程序中没有对LCD初始化进行设置。解决方案是voidSetUP()函数中增加一行代码,使LCD显示16X2个字符,其代码是led.begin(16,2);5.2 本次设计的心得体会通过本次设计,我们初步掌握了arduino的根本知识和程序的修改。LCD的引脚设置,自定义字符显示。认识到arduino的功能强大和便捷及继续学习的重要性。假设有时机,将此设计改良如下:使用XBee收发器进行无线通信。LCD在不同的温湿度时显示不同的符号,例如:在25,湿度为30%时显示太阳的符号。