物联网工程设计与实施 - 图文

更新时间:2023-11-26 11:03:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

《物联网工程设计与实施》项目设计

项目课题: 院 系: 专 业: 项目经理: 副 经 理: 项目成员:

基于STM32的温湿度检测 计算机科学与技术学院

物联网工程

于渊 谢金光 李周恒

学号: 123921043 学号: 123921024 学号: 123921002 项目成员: 袁桃 学号: 123921048 项目成员: 颉涛 学号: 123921054 项目成员 肖青 学号: 123921025 项目成员 冯锦融 学号: 123921011 项目成员 唐敏 学号: 123921023

2014 年 12月

目录

摘要 .................................................................................................................................................. 5 Absract .............................................................................................................................................. 7 一.课程设计目的 ........................................................................................................................... 9 二.课程设计方案 ........................................................................................................................... 9 三.实验所需器材 ........................................................................................................................... 9 四.课程设计内容 ........................................................................................................................... 9

4.1 STM32模块 ....................................................................................................................... 9 4.2 AM2302的介绍 ............................................................................................................... 11

4.2.1 产品概述 ............................................................................................................... 11 4.2.2 应用范围 ............................................................................................................... 12 4.2.3 产品亮点 ............................................................................................................... 12 4.2.4 单总线接口定义 ................................................................................................... 12 4.2.5 传感器性能 ........................................................................................................... 13 4.2.6 单总线通信 ........................................................................................................... 13 4.3 Nokia 5110介绍 ............................................................................................................... 15

4.3.1 SPI接口时序写数据/命令 .................................................................................... 15 4.3.2 显示汉字 ............................................................................................................... 16 4.3.3 显示图形 ............................................................................................................... 16 4.4 原理图设计 ...................................................................................................................... 16 4.5 PCB板设计 ...................................................................................................................... 18 五.试验软件设计 ......................................................................................................................... 18

5.1 温湿度传感器DHT22的程序 ........................................................................................ 18 5.2 温湿度显示程序 .............................................................................................................. 22 5.3 主函数程序 ...................................................................................................................... 23 六.作品实物展示 ......................................................................................................................... 32 七.设计总结 ................................................................................................................................. 33

基于STM 32 的温湿度检测

摘要

随着现代社会的高速发展,越来越多的科学技术被应用于农业生产领域。在温室大棚中对温湿度、二氧化碳浓度等外部参数的实时准确的测量和调节更是保证农业高效生产的重要前提。 本次课程设计中实现了一个基于STM32F103VET6的智能温湿度检测系统,目的是实现温湿度的采集和显示,温湿度的采集是作为自动化科学中一个必须掌握的检测技术,也是一项比较实用的技术。本次实验主要作了如下几个方面工作:首先通过对实时性、准确性、经济性和可扩展性等四个方向的分析比较之后,选择了STM32F103VE微控制器作为主控芯片和AM2303温湿度传感器来实现对温湿度数据进行采集;在Nokia5110显示屏上显示出温度和湿度,然后详细介绍了各个模块的工作原理和硬件电路设计思路,实现了温湿度数据实时准确的测量;之后阐述了系统各个部分的软件设计思路;最后对系统在实际应用中采集到的数据进行了处理,分析了误差产生的原因,并通过分段线性插值算法对系统非线性误差进行了校准,同未校准时采集的数据相比,校准后的数据准确度更高,稳定性更好。 在保证测量效果的基础上,本系统设计中充分考虑到性价比和再次开发周期性等,具有成本低、设计开发方便、通用性强等特点,不仅适用于现代农业生产中,还能用于其它工业控制、机械制造等其它领域,具有一定的市场推广价值。

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

图 4.2 STM32芯片实物图 4.2 AM2302的介绍 4.2.1 产品概述

AM2302湿敏电容数字温湿度模块是一款含有己校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电容式感湿元件和一个高精度测温元件,并与一个高性能8位单片机相连接。因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。每个传感器都在极为精确的湿度校验室中进行校准。校准系数以程序的形式储存在单片机中,传感器内部在检测信号的处理过程中要调用这些校准系数。标准单总线接口,使系统集成变得简易快捷。超小的体积、极低的功耗,信号传输距离可达20米以上,使其成为各类应用甚至最为苛刻的应用场合的最佳选择。产品为3引线(单总线接口)连接方便。特殊封装形式可根据用户需求而提供。

图4.3 实物图 4.2.2 应用范围

外形尺寸(单位:mm)

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

4.2.3 产品亮点

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

引脚 ① ② ③ ④

名称 描述 VDD 电源(3.5V-5.5V) SDA NC GND 串行数据,双向口 空脚 地 表4.1 AM2302引脚分配表

图4.4 AM2302引脚分配图

AM2302的供电电压范围为3.5V-5.5V,建议供电电压为5V。数据线SDA引脚为三态结构,用于读写传感器数据。

4.2.5 传感器性能

参数 分辨率 分辨率 [1] 重复性 互换性 [2] 迟滞 [3] 25℃ 1/e(63 典型值 条件 m typ 0.1 16 ma 单位 %RH bit %RH ±2 ± %RH 完全互换 <5 S %RH %RH/yr <0.<0.表 4.2 AM2302相对湿度性能表

参数 分辨率 分辨率 精度 量程范围 重复性 互换性 响应时间 漂移

条件 1/e(63 mi -4 typ max 单位 0.1 ℃ 16 bit ±0.5 ±1 ℃ 80 ℃ ±0.2 ℃ 完全互换 <1 S ± ℃/yr 表4.3 AM2302相对温度性能表

图4.5 25℃时 AM2302 的相对湿度最大误差 温度传感器的温最大误差

4.2.6 单总线通信

① AM2302器件采用简化的单总线通信。单总线即只有一根数据线,系统中的数据交换、控制均由数据线完成。设备(微处理器)通过一个漏极

开路或三态端口连至该数据线,以允许设备在不发送数据时能够释放总线,而让其它设备使用总线;单总线通常要求外接一个约5.1kΩ的上拉电阻,这样,当总线闲置时,其状态为高电平。由于它们是主从结构,只有主机呼叫传感器时,传感器才会应答,因此主机访问传感器都必须严格遵循单总线序列,如果出现序列混乱,传感器将不响应主机。

②SDA用于微处理器与AM2302之间的通讯和同步,采用单总线数据格式,一次传送40位数据,高位先出。具体通信时序如图4.5所示,通信格式说明见表4.3。

图4.5 AM2302单总线通信协议

名称 单总线格式定义 起始信号 微处理器把数据总线(SDA)拉低一段时间(至少 800μs) [1],通知传感器准备数据。 响应信号 传感器把数据总线(SDA)拉低 80μs,再接高 80μs 以响应主机的起始信号。 数据格式 收到主机起始信号后,传感器一次性从数据总线(SDA)串出 40 位数据,高位先出 湿度 湿度分辨率是 16Bit,高位在前;传感器串出的湿度值是实际湿度值的 10 倍。 温度 温度分辨率是 16Bit,高位在前;传感器串出的温度值是实际温度值的 10 倍;温度最高位(Bit15)等于 1 表示负温度,温度最高位(Bit15)等于 0 表示正温度;温度除了最高位(Bit14~Bit0)表示温度值。 校验位 校验位=湿度高位+湿度低位+温度高位+温度低位 表4.3:AM2302 通信格式说明

③用户主机(MCU)发送一次起始信号(把数据总线SDA拉低至少800μs)

后,AM2302从休眠模式转换到高速模式。待主机开始信号结束后,AM2302发送响应信号,从数据总线SDA串行送出40Bit的数据,先发送字节的高位;发送的数据依次为湿度高位、湿度低位、温度高位、温度低位、校验位,发送数据结束触发一次信息采集,采集结束传感器自动转入休眠模式,直到下一次通信来临。 4.3 Nokia 5110介绍

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

2)采用串行接口与主处理器进行通信,接口信号线数量大幅度减少,包括电源和地在内的信号线仅有9 条。支持多种串行通信协议(如AVR 单片机的SPI、MCS51 的串口模式0等),传输速率高达4Mbps,可全速写入显示数据,无等待时间。

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

4)LCD 控制器/驱动器芯片已绑定到LCD 晶片上,模块的体积很小。 5)采用低电压供电,工作电压为3,3V,正常显示时的工作电流在200μA 以下,且具有掉电模式。

LPH7366 的这些特点非常适合于电池供电的便携式通信设备和测试设备中。

图4.6 LPH7366 供电电路图 4.3.1 SPI接口时序写数据/命令

return dat; } /

u8 DHT22_Read_Data(u8 *temp,u8 *humi) { u8 buf[5]; }

u8 DHT22_Init(void) {

RCC->APB2ENR|=1<<2; //使能PORTA口时钟 GPIOA->CRH&=0XFFFF0FFF; //PA11 推挽输出 GPIOA->CRH|=0X00003000;

GPIOA->ODR|=1<<11; //输出1

u8 i; DHT22_Rst(); if(DHT22_Check()==0) {

for(i=0;i<5;i++)//读取40位数据 { }

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

*humi=buf[0]; *temp=buf[2];

buf[i]=DHT22_Read_Byte();

}else return 1; return 0;

DHT22_Rst();

return DHT22_Check();

}

5.2 温湿度显示程序

void Humidity_display(void) { uchar table0[]={\ uchar table1[]={\ u8 t=0;

u8 temperature,tem;

u8 humidity,hum;

int num;

if(t==0)//每100ms读取一次 {

DHT22_Read_Data(&temperature,&humidity); //显示温度值

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

table0[6]=temperature+0x30; tem=temperature*100;

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

table0[9]=tem+0x30;

//显示湿度值

table1[5]=humidity/10+0x30; table1[6]=humidity+0x30; hum=humidity*100;

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

table1[9]=hum+0x30;

//读取温湿度值

write_1602_com(0x80); for(num=0;num<16;num++) { write_1602_dat(table0[num]); delay_ms(8);

}

write_1602_com(0x80+0x40); for(num=0;num<16;num++) { write_1602_dat(table1[num]); delay_ms(8);

}

}

delay_ms(10); t++; if(t==10) { t=0;

}

}

5.3 主函数程序 #include \#include \#include \

extern unsigned char chinese1; int main(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,\

}

LCD_WriteString_en(0,1,\

#include\void delay_ms(int t) { }

void GPIO_Configuration_LCD(void) {

GPIO_InitTypeDef GPIO_InitStructure;

int i,j;

for(i=t;i>0;i--)

for(j=110;j>0;j--);

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 = GPIO_Speed_50MHz; GPIO_Init(GPIOD, &GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin= GPIO_Pin_14| GPIO_Pin_15| GPIO_Pin_13;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO_InitStructure); }

#define WIDTH 6

#define HEIGHT 8 #define WIDTH_CN 13 #define HEIGHT_CN 16

unsigned char lcd_display[]=\const unsigned char font[][6] = { { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // sp { 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00 }, // ! { 0x00, 0x00, 0x07, 0x00, 0x07, 0x00 }, // \ { 0x00, 0x14, 0x7f, 0x14, 0x7f, 0x14 }, // # { 0x00, 0x24, 0x2a, 0x7f, 0x2a, 0x12 }, // $ { 0x00, 0x62, 0x64, 0x08, 0x13, 0x23 }, // % { 0x00, 0x36, 0x49, 0x55, 0x22, 0x50 }, // & { 0x00, 0x00, 0x05, 0x03, 0x00, 0x00 }, // ' { 0x00, 0x00, 0x1c, 0x22, 0x41, 0x00 }, // ( { 0x00, 0x00, 0x41, 0x22, 0x1c, 0x00 }, // ) { 0x00, 0x14, 0x08, 0x3E, 0x08, 0x14 }, // * { 0x00, 0x08, 0x08, 0x3E, 0x08, 0x08 }, // + { 0x00, 0x00, 0x00, 0xA0, 0x60, 0x00 }, // , { 0x00, 0x08, 0x08, 0x08, 0x08, 0x08 }, // - { 0x00, 0x00, 0x60, 0x60, 0x00, 0x00 }, // . { 0x00, 0x20, 0x10, 0x08, 0x04, 0x02 }, // / { 0x00, 0x3E, 0x51, 0x49, 0x45, 0x3E }, // 0 { 0x00, 0x00, 0x42, 0x7F, 0x40, 0x00 }, // 1 { 0x00, 0x42, 0x61, 0x51, 0x49, 0x46 }, // 2 { 0x00, 0x21, 0x41, 0x45, 0x4B, 0x31 }, // 3 { 0x00, 0x18, 0x14, 0x12, 0x7F, 0x10 }, // 4 { 0x00, 0x27, 0x45, 0x45, 0x45, 0x39 }, // 5

{ 0x00, 0x3C, 0x4A, 0x49, 0x49, 0x30 }, // 6

本文来源:https://www.bwwdw.com/article/j8nt.html

Top