无线传感器网络(6)教程

上传人:我** 文档编号:116913531 上传时间:2019-11-17 格式:PPT 页数:53 大小:5.64MB
返回 下载 相关 举报
无线传感器网络(6)教程_第1页
第1页 / 共53页
无线传感器网络(6)教程_第2页
第2页 / 共53页
无线传感器网络(6)教程_第3页
第3页 / 共53页
无线传感器网络(6)教程_第4页
第4页 / 共53页
无线传感器网络(6)教程_第5页
第5页 / 共53页
点击查看更多>>
资源描述

《无线传感器网络(6)教程》由会员分享,可在线阅读,更多相关《无线传感器网络(6)教程(53页珍藏版)》请在金锄头文库上搜索。

1、无线传感器网络 第6章 常用传传感器 计计算机科学系 宋文强 2 6.1 数字温湿度传感器DHT11 含有已校准数字信号输出的温湿度复合传感器。 应用数字模块采集技术和温湿度传感技术,确保产 品具有极高的可靠性与长期稳定性。 传感器包括一个电阻式感湿元件和一个NTC测温元 件,并与一个高性能8位单片机相连接。 3 DHT11典型应用电路 4 DHT11连接实体图 5 DHT11串行接口 DATA 引脚用于单片机与DHT11之间的通讯和同步,采用单总线 数据格式,一次通讯时间4ms,数据分小数部分和整数部分,具体 格式在下面说明,当前小数部分用于以后扩展,现读出为零。操 作流程如下: u 一次完

2、整的数据传输为40bit,高位先出。 u 数据格式: u 8bit湿度整数数据 + 8bit湿度小数数据 u +8bit温度整数数据 + 8bit温度小数数据 u +8bit校验和 u 数据传送正确时,校验和数据等于“8bit湿度整数数据+8bit湿 度小数数据+8bi温度整数数据+8bit温度小数数据”所得结果的 末8位。 6 用户MCU发送一次开始信号后,DHT11从低功耗模式 转换到高速模式,等待主机开始信号结束后,DHT11发 送响应信号,送出40bit的数据,并触发一次信号采集, 用户可选择读取部分数据。 如果没有接收到主机发送开始信号,DHT11不会主动 进行温湿度采集.采集数据后

3、转换到低速模式。 7 DHT11串行接口通讯过程 总线空闲状态为高电平,主机把总线拉低等待DHT11响应,主机 把总线拉低必须大于18毫秒,保证DHT11能检测到起始信号。 DHT11接收到主机的开始信号后,等待主机开始信号结束,然后 发送80us低电平响应信号。 主机发送开始信号结束后,延时等待20-40us后, 读取DHT11 的响应信号,主机发送开始信号后,可以切换到输入模式,或 者输出高电平均可, 总线由上拉电阻拉高,总线为低电平,说明 DHT11发送响应信号,DHT11发送响应信号后,再把总线拉高 80us,准备发送数据。 如果读取响应信号为高电平,则DHT11没有响应,请检查线路

4、是否连接正常。当最后一bit数据传送完毕后,DHT11拉低总 线50us,随后总线由上拉电阻拉高进入空闲状态。 8 串行接口通讯过程 9 DHT11串行接口每一位数据都以50us低电平时隙开始,高电平长短定了数据位是0还是1 10 数字1信号表示方法 11 6.1.5 实验:DHT11实验 (1)实验目的:编程实现不断读取DHT11的温湿度 值并通过串口发送给PC,掌握DHT11温湿度传感 器编程的方法 12 简单实验程序 #include #include #include “UART.H“ #include “DHT11.H“ void main(void) uchar temp3; uc

5、har humidity3; uchar strTemp13=“Temperature:“; uchar strHumidity10=“Humidity:“; Delay_ms(1000); / 让设备稳定 InitUart(); / 串口初始化 13 while(1) memset(temp, 0, 3); memset(humidity, 0, 3); DHT11(); / 获取温湿度 temp0=wendu_shi+0x30; / 将温湿度的转换成字符串 temp1=wendu_ge+0x30; humidity0=shidu_shi+0x30; humidity1=shidu_ge+0

6、x30; UartSendString(strTemp, 12); / 获得的温湿度通过串口输出到电脑显示 UartSendString(temp, 2); UartSendString(“ “, 3); UartSendString(strHumidity, 9); UartSendString(humidity, 2); UartSendString(“n“, 1); Delay_ms(2000); / 延时,2S 读取 1 次 14 实验效果 15 6.2 红外人体感应模块 菲涅尔透镜 16 6.2 红外人体感应模块 (1)全自动感应:人进入其感应范围则输出高电平, 人离开 感应范围则自

7、动延时关闭高电平,输出低电平。 (2)工作电压范围宽:默认工作电压DC 4.5V-20V。 (3)微功耗:静态电流 2;/ 低2位无效,去掉 value = ADCH;/ 得到结果高字节 value |= (value0; i/=2) LIGHT_SCL_0(); delay_us(5) if(i else LIGHT_DTA_0(); LIGHT_SCL_1(); delay_us(6); delay_us(1) LIGHT_SCL_0(); LIGHT_DTA_1(); SDA_R(); P1INP = 0; P2INP = 0; LIGHT_SCL_1(); delay_ms(6) if

8、(LIGHT_DTA() ack = 0; else ack = 1; LIGHT_SCL_0(); delay_us(6) return error; 46 I2C应答 void sendACK(char ack) SDA_W(); if(ack) LIGHT_DTA_1(); else LIGHT_DTA_0(); LIGHT_SCL_1(); delay_us(6); 47 I2C字节读 char read_byte() uint i; char val = 0; LIGHT_DTA_1(); SDA_R() for(i=0x80; i0; i/=2) LIGHT_SCL_1(); de

9、lay_us(5); if(LIGHT_DTA() val = (val | i); LIGHT_SCL_01(); delay_us(5); return val; 48 单字节写入 void Single_Write_BH1750(char REG_Address) start_i2c(); send_byte(SlaveAddress); send_byte(REG_Address); stop_i2c(); 49 连续读出BH1750 内部数据 void Multiple_read_BH1750() char i; start_i2c(); send_byte(SlaveAddress

10、+1);/ 发送设备地址+写信号 for(i=0; i3; i+)/ 连续读3个地址数据,存储到BUF BUFi = read_byte(); if(i = 3) sendACK(1);/ 最后一个数据需要回应NOACK else sendACK(0);/ 回应ACK stop_i2c(); delay_ms(5); 50 测量光强度 float get_light() uint t0; float t; Single_Write_BH1750(0x01); Single_Write_BH1750(0x10); delay_ms(180); Multiple_read_BH1750(); t0

11、 = BUF0; t0 = (t08)+BUF1; t = (float)t0/1.2; return t; 51 主函数 void main() initUARTSEND(); UartTX_Send_String(Txdata,12); int l = conversion(get_light(); UartTX_Send_String(lux, l); 52 人有了知识,就会具备各种分析能力, 明辨是非的能力。 所以我们要勤恳读书,广泛阅读, 古人说“书中自有黄金屋。 ”通过阅读科技书籍,我们能丰富知识, 培养逻辑思维能力; 通过阅读文学作品,我们能提高文学鉴赏水平, 培养文学情趣; 通过阅读报刊,我们能增长见识,扩大自己的知识面。 有许多书籍还能培养我们的道德情操, 给我们巨大的精神力量, 鼓舞我们前进。 53

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号