当前位置:文档之家› 温湿度检测系统

温湿度检测系统

1)增强学生的理论联系实际的能力
2)通过实训了解企业项目开发流程和学习新技术的方法
3)通过实训项目了解企业项目开发过程中文档的整理方法和问题的分析方法
4)通过实训项目加强学生对基础课程的运用能力,使其认识到基础知识的重要性
5)通过实训争强学生对本专业和未来工作岗位的理解,端正心态,明确就业目标
6)通过实训争强学生的编程技能,培养其良好的编码风格和编码习惯
if(DHT_DATA_STATA)
{
//代表数据1
dht_data[i]<<=1;
dht_data[i]+=1;
}else
{
//代表数据0
dht_data[i]<<=1;
}
}
}
if(dht_data[4]==(dht_data[0]+dht_data[1]+dht_data[2]+dht_data[3]))
上升沿发送、下降沿接收、高位先发送。
上升沿到来的时候,sdo 上的电平将被发送到从设备的寄存器中。
下降沿到来的时候,sdi 上的电平将被接收到主设备的寄存器中。
启动SPI总线协议程序:
void SPI2_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
SPI_InitTypeDef SPI_InitStructure;
通过汉字取模和图片取模软件,把所需要使用汉字和图片转换代码可以调用,并把DHT11数字温湿度传感器获取温湿度数据传输到LCD屏上。
DHT11数字温湿度传感器驱动程序:
if(dht11_runtime[0]>dht11_runtime[1])
{
dht11_runtime[0]=0;
if(config_dht11())
{
char i=0, j=0;
uint32_t timeout = TIME_OUT_MAX;
RCC->APB2ENR|=(0x01<<8);//开G端口的时钟
DHT_OUT_MODE();//推挽输出
DHT_DATA(1);//拉高
DHT_DATA(0);//拉低
Delay_ms(20);//延时20ms
一次完整的数据传输为40bit,高位先出。
数据格式:8bit湿度整数数据+8bit湿度小数数据 +8bi温度整数数据+8bit温度小数数据 +8bit校验和
数据传送正确时校验和数据等于“8bit湿度整数数据+8bit湿度小数数据+8bi 温度整数数据+8bit温度小数数据”所得结果的末8位。
用户MCU发送一次开始信号后,DHT11从低功耗模式转换到高速模式,等待 主机开始信号结束后,DHT11发送响应信号,送出40bit的数据,并触发一次信号采 集,用户可选择读取部分数据.从模式下,DHT11接收到开始信号触发一次温湿度 采集,如果没有接收到主机发送开始信号,DHT11不会主动进行温湿度采集.采集 数据后转换到低速模式。
图二
总线为低电平,说明DHT11发送响应信号,DHT11发送响应信号后,再把总线拉高80us,准备发送数据,每一bit数据都以50us低电平时隙开始,高电平的长短定了数据位是0还是1.格式见下面图示.如果读取响应信号为高电平,则DHT11没有响应,请检查线路是否连接正常.当最后一bit数据传送完毕后,DHT11拉低总线50us,随后总线由上拉电阻拉高进入空闲状态。
GPIOG->CRH|=(0x03<<28);//推挽输出
}
void DHT_IN_MODE(void)
{
GPIOG->CRH&=~(0xFul<<4*7);//清零
GPIOG->CRH|=(0x01<<30);//浮空输入
}
#define TIME_OUT_MAX 0xffff
char config_dht11(void)
nrf_tx_data_buf[15] = '\0';
Draw_Text_8_16_Str(100,150,RED,BLUE,(unsigned char *)nrf_tx_data_buf);
NRF24L01_TxPacket((u8 *)nrf_tx_data_buf);
}
}
四、通过NRF24L01无线通信模块将数据传输到A9开发板上。
DHT_DATA(1);//拉高
Delay_us(30);//延时30us
DHT_IN_MODE();//浮空输入
while(DHT_DATA_STATA)
{
timeout--;
if(!timeout) return 1;
Delay_us(1);
}//等待拉低
timeout = TIME_OUT_MAX;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE );//PORTB时钟使能
RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2, ENABLE );//SPI2时钟使能
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;
1、环境搭建
(1)安装交叉编译器
(2)uboot烧写启动
(3)内核的制作、编译,烧写
(4)文件系统的搭建及securt CRT软件的应用
(5)学习linux系统的基本操作,vim编辑器使用,shell命令使用,熟练使用VI编辑命令和linux常用操作命令。
(6)学习linux系统下驱动开发的基础知识,挂载卸载驱动模块,掌握字符设备驱动程序设计方法。
while(!DHT_DATA_STATA)
{
timeout--;
if(!timeout) return 1;
Delay_us(1);
}//等待拉高
for(i=0;i<5;i++)
{
for(j=0;j<8;j++)
{
timeout = TIME_OUT_MAX;
while(DHT_DATA_STATA)//等待拉低
三、实训报告
3.1项目名称
项目名称:嵌入式远程监测
3.1.1实训内容
1、嵌入式远程监测与语音控制系统包括智能网关(A9内核,Linux Ubuntu操作系统)1个,无线通信节点1个,包含常用的物联网传感器DHT11,STM32开发板,A9开发板。
2、系统每个节点都采用ARM Cortex-M3架构的MCU,可以外接多种传感器以及控制设备。
{
printf("数据正确\r\n");
printf("温度=%d\r\n",dht_data[2]);
printf("湿度=%d\r\n",dht_data[0]);
}else
{
printf("数据错误\r\n");
}
return 0;
}
三、把传感器的数据以及控制设备的状态在2.8寸LCD屏上进行显示
1、DHT11数字温湿度传感器获取温湿度
2、把DHT11数字温湿度传感器获取温湿度传输到stm32节点板上
DATA 用于微处理器与 DHT11之间的通讯和同步,采用单总线数据格式,一 次通讯时间4ms左右,数据分小数部分和整数部分,具体格式在下面说明,当前小数 部分用于以后扩展,现读出为零.操作流程如下:
3、同时把传感器的数据以及控制设备的状态在2.8寸LCD屏上进行显示。
4、节点通过NRF24L01无线通信模块,把节点的数据传输到网关。
5、网关再把数据传输到云服务器。
3.1.2实训过程及相关结果
一、采用STM32F103ZE为硬件开发平台,裸板开发驱动程序:
1)关于STM32开发板的介绍
核心处理器:STM32F103ZET6、主频:72MHZ、引脚:144、GPIO口的管脚个数112
#define DHT_DATA_STATA (!!(GPIOG->IDR & (0x01<<15)))
unsigned char dht_data[5]={0};
unsigned char temp_value=20;
void DHT_OUT_MODE(void)
{
GPIOG->CRH&=~(0xFUL<<4*7);//清零
2、NRF24L01无线通信模块是使用SPI总线协议,。SPI,是一种高速的,全双工,同步的通信总线, 并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为 PCB 的布局上节省空间,提供方便,正是出于这种简单易用的特性,现 在越来越多的芯片集成了这种通信协议。
SPI 是一个环形总线结构,由 ss(cs)、sck、sdi、sdo 构成,其时序其实很简单,主要是在 sck 的控制下,两个双向移位寄存器进行 数据交换。
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //PB13/14/15复用推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);//初始化GPIOB
郑州轻工业大学
实训报告
实训名称:嵌入式软件工程实践
姓名:
院(系):
专业班级:
学号:
指导教师:
实习时间:
一、实训目的
(一)实习目的
相关主题