基于STM的温湿度监测Word下载.docx

上传人:b****8 文档编号:22461289 上传时间:2023-02-04 格式:DOCX 页数:32 大小:653.39KB
下载 相关 举报
基于STM的温湿度监测Word下载.docx_第1页
第1页 / 共32页
基于STM的温湿度监测Word下载.docx_第2页
第2页 / 共32页
基于STM的温湿度监测Word下载.docx_第3页
第3页 / 共32页
基于STM的温湿度监测Word下载.docx_第4页
第4页 / 共32页
基于STM的温湿度监测Word下载.docx_第5页
第5页 / 共32页
点击查看更多>>
下载资源
资源描述

基于STM的温湿度监测Word下载.docx

《基于STM的温湿度监测Word下载.docx》由会员分享,可在线阅读,更多相关《基于STM的温湿度监测Word下载.docx(32页珍藏版)》请在冰豆网上搜索。

基于STM的温湿度监测Word下载.docx

4.2.5传感器性能13

4.2.6单总线通信14

4.3Nokia5110介绍15

4.3.1SPI接口时序写数据/命令15

4.3.2显示汉字16

4.3.4显示图形16

4.4原理图设计16

4.5PCB板设计17五.实验软件设计18

5.1温湿度传感器DHT22的程序18

5.2湿度显示函数21

5.3主函数程序23

5.3.1显屏程序23六.作品实物展示32七.设计总结33

基于STM32的温湿度检测

摘要

随着现代社会的高速发展,越来越多的科学技术被应用于农业生产领域。

在温室大棚中对温湿度、二氧化碳浓度等外部参数的实时准确的测量和调节更是保证农业高效生产的重要前提。

本次课程设计中实现了一个基于STM32F103VET6的智能温湿度检测系统,目的是实现温湿度的采集和显示,温湿度的采集是作为自动化科学中一个必须掌握的检测技术,也是一项比较实用的技术。

本次实验主要作了如下几个方面工作:

首先通过对实时性、准确性、经济性和可扩展性等四个方向的分析比较之后,选择了STM32F103V微控制器作为主控芯片和AM2303温湿度传感器来实现对温湿度数据进行采集;

在Nokia5110显示屏上显示出温度和湿度,然后详细介绍了各个模块的工作原理和硬件电路设计思路,实现了温湿度数据实时准确的测量;

之后阐述了系统各个部分的软件设计思路;

最后对系统在实际应用中采集到的数据进行了处理,分析了误差产生的原因,并通过分段线性插值算法对系统非线性误差进行了校准,同未校准时采集的数据相比,校准后的数据准确度更高,稳定性更好。

在保证测量效果的基础上,本系统设计中充分考虑到性价比和再次开发周期性等,具有成本低、设计开发方便、通用性强等特点,不仅适用于现代农业生产中,还能用于其它工业控制、机械制造等其它领域,具有一定的市场推广价值。

【关键词】:

嵌入式技术,电路设计,STM32,AM2302温湿度采集,Nokia5110显示屏,程序设计

Absract

InthedesignofthecurriculumimplementsasmarttemperatureandhumiditydetectionsystembasedonSTM32F103VET6,thepurposeistorealizetheacquisitionanddisplayofthetemperatureandhumidity,temperatureandhumidityoftheacquisitionasamustmasterinautomationsciencedetectiontechnology,isalsoapracticaltechnology.Thisexperimentmainlymadethefollowingseveralaspectswork:

firstofall,basedonthereal-time,accuracy,economyandexpansibilityetc.Afteranalysisandcomparisonoffourdirections,STM32F103VEmicro-controllerasthemastercontrolchipandAM2303temperatureandhumiditysensorstoachievetemperatureandhumiditydataacquisition;

OntheNokia5110screendisplaythetemperatureandhumidity,andthenintroducesindetailtheworkingprincipleofeachmoduleandthehardwarecircuitdesign,realizedthereal-timeaccuratemeasurementoftemperatureandhumiditydata;

Elaboratedthesystemaftereachpartofthesoftwaredesignidea;

Finally,thesysteminthepracticalapplicationofdealingwiththedatacollected,analyzedthereasonsoftheerror,andthroughthepiecewiselinearinterpolationalgorithmforsystemofnonlinearerrorcalibration,comparedwithnotcalibrationdata,aftercalibrationdatawithhigheraccuracyandbetterstability.Keywords:

embeddedtechnology,circuitdesign,STM32,collectingAM2302temperatureandhumidity,Nokia5110display,theprogramdesign

一.设计目标本次设计要求实现对周围环境温湿度的感知以及显示。

要求学生对STM32有一定程度的理解,熟悉STM32串口以及中断的使用,会基本的C语言和java,熟练掌握keilforARM软件的使用与程序下载以及手机软件开发环境。

二.设计方案

(1)了解温湿度传感器工作原理,根据原理画好PCB原理图。

(2)根据PCB原理图自制PCB板电路,将液晶屏,温湿度传感器,变压器,stm32开发板等相关元件设备进行集成。

(3)测试PCB电路,检查相关电路能否正常工作,以及STM32核心板的能否正常调试。

(4)在完成电路调试后,用jlink下载器下载调试程序成功完成程序对相关元件的驱动。

(5)实验完成后做好相应的实验总结。

三.实验所需器材

1.STM32F核心板2.温湿度传感器(DHT223.电容

4.3MM红光LED发光二极管5.稳压集成块(L7805)

6.整流桥7.电解电容8.保险座9.散热器

10.电阻11.变压器12.电位器

13.排座14.5110液晶屏模块

四.设计内容

4.1STM32模块

芯片的选择:

STM32VET6

芯片的介绍:

内核:

ARM32位的Cortex?

-M3CPU

-最高72MHz工作频率,在存储器的0等待周期访问时可达1.25DMips/MHz(Dhrystone2.1)

-单周期乘法和硬件除法

■存储器

-从64K或128K字节的闪存程序存储器

-高达20K字节的SRAM

■时钟、复位和电源管理

-2.0〜3.6伏供电和I/O引脚

-上电/断电复位(POR/PDR、)可编程电压监测器(PVD)

-4〜16MHz晶体振荡器

-内嵌经出厂调校的8MHZ的RC振荡器

-内嵌带校准的40kHz的RC振荡器

-产生CPU时钟的PLL

-带校准功能的32kHzRTC振荡器

■低功耗

-睡眠、停机和待机模式

-VBAT为RTC和后备寄存器供电

■2个12位模数转换器,1卩s转换时间(多达16个输入通道)

-转换范围:

0至3.6V

-双采样和保持功能

-温度传感器

■DMA:

-7通道DMA控制器

-支持的外设:

定时器、ADC、SPI、I2C和USART

HF”阳平j怦伴祎平产祈帘什甲t甲州卸秤笛许陌平护ffFi平?

§

图4.1STM32VET芯片引脚图

图4.2STM32芯片实物图

4.2AM2302介绍

4.2.1产品概述

AM2302湿敏电容数字温湿度模块是一款含有己校准数字信号输出的温

湿度复合传感器。

它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。

传感器包括一个电容式感

湿元件和一个高精度测温元件,并与一个高性能8位单片机相连接。

因此

该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。

每个传感器都在极为精确的湿度校验室中进行校准。

校准系数以程序的形式储存在单片机中,传感器内部在检测信号的处理过程中要调用这些校准系

数。

标准单总线接口,使系统集成变得简易快捷。

超小的体积、极低的功

耗,信号传输距离可达20米以上,使其成为各类应用甚至最为苛刻的应用场合的最佳选择。

产品为3引线(单总线接口)连接方便。

特殊圭寸装形式可根据用户需求而提供。

图4.3实物图

外形尺寸(单位:

mrh

4.2.2应用范围

暖通空调、除湿器、测试及检测设备、消费品、汽车、自动控制、数据记录器、家电、湿度调节器、医疗、气象站、及其他相关湿度检测控制等。

4.2.3产品亮点

超低能耗、传输距离远、全部自动化校准、采用电容式湿敏元件、完全互换、标准数字单总线输出、卓越的长期稳定性、采用高精度测温元件。

4.2.4单总线接口定义

引脚

名称

描述

VDD

电源(3.5V-5.5V)

SDA

串行数据,双向口

NC

空脚

GND

表4.1AM2302引脚分配表

图4.4AM2302引脚分配图

AM2302的供电电压范围为3.5V-5.5V,建议供电电压为5V。

数据线SDA引脚为

三态结构,用于读写传感器数据

425传感器性能

图4.525C时AM2302的相对湿度最大误差温度传感器的温最大误差

参数

条件

m

typ

ma

单位

分辨率

i

0.1

x

%RH

16

bit

精度1]

25C

±

2

重复性

互换性

u・3完全互;

响应时间」

1/e(63

<

5

S

%)

迟滞

0.

3

漂移3]

典型值

%RH/yr

表4.2AM2302相对湿度性能表

mi

max

n

C

一精度

0.5

1

里程范围

-4

80「

0.2

完全互换

响应时间

1

漂移

C/yr

表4.3AM2302相对温度性能表

426单总线通信

1AM2302器件采用简化的单总线通信。

单总线即只有一根数据线,系统中的数据交换、控制均由数据线完成。

设备(微处理器)通过一个漏极

开路或三态端口连至该数据线,以允许设备在不发送数据时能够释放总线,而让其它设备使用总线;

单总线通常要求外接一个约5.1kQ的上拉电阻,

这样,当总线闲置时,其状态为高电平。

由于它们是主从结构,只有主机呼叫传感器时,传感器才会应答,因此主机访问传感器都必须严格遵循单总线序列,如果出现序列混乱,传感器将不响应主机。

2SDA用于微处理器与AM2302之间的通讯和同步,采用单总线数据格

式,一次传送40位数据,高位先出。

具体通信时序如图4.5所示,通信格

式说明见表4.3。

图4.5AM2302单总线通信协议

单总线格式定义

起始信号

微处理器把数据总线(SDA拉低一段时间(至少800卩s)[1],通知传感器准备数据。

响应信号

传感器把数据总线(SDA)拉低80卩s,再接高80卩s以响应主机的起始信号。

数据格式

收到主机起始信号后,传感器一次性从数据总线(SDA串出

40位数据,高位先出

湿度

湿度分辨率是16Bit,高位在前;

传感器串出的湿度值是实际湿度值的10倍。

温度

温度分辨率是16Bit,高位在前;

传感器串出的温度值是实际温度值的10倍;

温度最高位(Bit15)等于1表示负温度,温度最高位(Bit15)等于0表示正温度;

温度除了最高位

(Bit14~Bit0)表示温度值。

校验位

校验位=湿度咼位+湿度低位+温度咼位+温度低位

表4.3:

AM2302通信格式说明

3用户主机(MCU发送一次起始信号(把数据总线SDA拉低至少800卩s)后,AM2302从休眠模式转换到高速模式。

待主机开始信号结束后,AM2302发送

响应信号,从数据总线SDA串行送出40Bit的数据,先发送字节的高位;

发送

的数据依次为湿度高位、湿度低位、温度高位、温度低位、校验位,发送数据结束触发一次信息采集,采集结束传感器自动转入休眠模式,直到下一次通信来临。

4.3Nokia5110介绍

1)84x48的点阵LCD可以显示4行汉字,

2)采用串行接口与主处理器进行通信,接口信号线数量大幅度减少,包括电源

和地在内的信号线仅有9条。

支持多种串行通信协议(如AVR单片机的SPI、MCS51的串口模式0等),传输速率高达4Mbps可全速写入显示数据,无等待时间。

3)可通过导电胶连接模块与印制版,而不用连接电缆,用模块上的金属钩可将模块固定到印制板上,因而非常便于安装和更换。

4)LCD控制器/驱动器芯片已绑定到LCD晶片上,模块的体积很小。

5)采用低电压供电,工作电压为3,3V,正常显示时的工作电流在200卩A以下,且具有掉电模式。

4.3.1SPI接口时序写数据/命令

Nokia5110(PCD8544)的通信协议是一个没有MISO只有MOSI的SPI协议,如果

单片机有富裕的SPI接口,也可以利用硬件SPI,但通常没有必要,只需要软件程序

模拟即可

432显示汉字

显示汉字可以采用两种点阵方式,一种是12*12点阵,一种是16*16点阵,网上也有一个自动提取字模的小软件“3310液晶显示屏汉字提取程序”,这个小程序只适用于水平寻址(V=0)o

采用12*12点阵汉字时,由于不是8的整数倍数,因此行与行之间只能隔开,这样才能完整显示一个汉字。

4.3.4显示图形

显示的图形像素大小不能超过84*48。

也有一个字模提取小软件Zimo21可以帮助我们得到图像的像素数组。

但要注意Zimo21软件的设置,不然的话就显示不了想要的图片。

4.4原理图设计

图4.8传感器电路

图4.95110显示屏电路

图4.10电源电路

图4.11实验原理图

4.5PCB板设计

要制作封装库首先必须对所需封装资料进行了解其长、宽、焊盘大小模块资料上都会有提供,另外还包括管脚信息,管脚标号都要明确了解

图4.12

五•实验软件设计

5.1温湿度传感器DHT22的程序

#include<

stm32f10x_lib.h>

#include"

dht22.h"

//复位DHT22

voidDHT22_Rst(void)

{

DHT22_IO_OUT();

//SETOUTPUT

DHT22_DQ_OUT=0;

//拉低DQdelay_ms(20);

//拉低至少18ms

DHT22_DQ_OUT=1;

//DQ=1

delay_us(30);

//主机拉高20~40us

}

u8DHT22_Check(void)

u8retry=0;

DHT22_IO_IN();

//SETINPUT

while(DHT22_DQ_IN&

&

retry<

100)//DHT22会拉低40~80us

retry++;

delay_us

(1);

};

if(retry>

=100)return1;

elseretry=0;

40~80us

while(!

DHT22_DQ_IN&

100)//DHT22拉低后会再次拉高

return0;

//从DHT22读取一个位

//返回值:

1/0

u8DHT22_Read_Bit(void)

while(DHT22_DQ_IN&

100)//等待变为低电平

retry=0;

while(!

100)//等待变高电平

delay_us(40);

//等待40us

if(DHT22_DQ_IN)return1;

elsereturn0;

//从DHT22读取一个字节

//返回值:

读到的数据

u8DHT22_Read_Byte(void)

u8i,dat;

dat=0;

for(i=0;

i<

8;

i++)

dat<

=1;

dat|=DHT22_Read_Bit();

returndat;

/

u8DHT22_Read_Data(u8*temp,u8*humi)

u8buf[5];

u8i;

DHT22_Rst();

if(DHT22_Check()==0)

for(i=0;

5;

i++)//读取40位数据

buf[i]=DHT22_Read_Byte();

if((buf[0]+buf[1]+buf[2]+buf[3])==buf[4])

*humi=buf[0];

*temp=buf[2];

}elsereturn1;

u8DHT22_Init(void)

RCC->

APB2ENR|=1<

2;

//使能PORT口时钟

GPIOA->

CRH&

=0XFFFF0FFF;

//PA11推挽输出

CRH|=0X00003000;

ODR|=1<

11;

//输出1

returnDHT22_Check();

5.2湿度显示函数

voidHumidity_display(void)

uchartable0[]={"

Temp:

00.00C"

uchartable1[]={"

Humi:

00.00%"

u8t=0;

u8temperature,tem;

u8humidity,hum;

intnum;

if(t%10==0)〃每100ms读取一次

//显示温度值

table0[5]=temperature/10+0x30;

table0[6]=temperature%10+0x30;

tem=temperature*100;

table0[8]=tem/10%10+0x30;

table0[9]=tem%10+0x30;

//显示湿度值table1[5]=humidity/10+0x30;

table1[6]=humidity%10+0x30;

hum=humidity*100;

table1[8]=hum/10%10+0x30;

table1[9]=hum%10+0x30;

write_1602_com(0x80);

for(num=0;

num<

16;

num++)

write_1602_dat(table0[num]);

delay_ms(8);

write_1602_com(0x80+0x40);

write_1602_dat(table1[num]);

delay_ms(10);

t++;

if(t==10)

t=0;

5.3主函数程序

#include"

stm32f10x.h"

5110LCD.h"

main.h"

externunsignedcharchinese1;

intmain(void)

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD,ENABLE);

GPIO_Configuration_LCD();

LCD_Init();

LCD_Clear();

while

(1)

LCD_WriteString_en(0,0,"

wendu:

"

);

LCD_WriteString_en(0,1,"

shidu:

}

5.3.1显屏程序

#include"

voiddelay_ms(intt)

inti,j;

for(i=t;

i>

0;

i--)

for(j=110;

j>

j--);

voidGPIO_Configuration_LCD(void)

GPIO_InitTypeDefGPIO_InitStructure;

GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8|GPIO_Pin_10;

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;

GPIO_InitStructure.GPIO_Speed

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 军事

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1