无线传感器网络实验指导书20140506F.doc

上传人:豆**** 文档编号:17606096 上传时间:2022-05-25 格式:DOC 页数:26 大小:737.50KB
返回 下载 相关 举报
无线传感器网络实验指导书20140506F.doc_第1页
第1页 / 共26页
无线传感器网络实验指导书20140506F.doc_第2页
第2页 / 共26页
点击查看更多>>
资源描述

《无线传感器网络实验指导书20140506F.doc》由会员分享,可在线阅读,更多相关《无线传感器网络实验指导书20140506F.doc(26页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、【精品文档】如有侵权,请联系网站删除,仅供学习与交流无线传感器网络实验指导书20140506F.精品文档.无 线 传 感 器 网 络 实 验 指 导 书电子信息工程教研室目 录实验一 光照传感器实验1实验二 红外反射传感器实验6实验三 温湿度传感器实验9实验四 LED灯控制实验15实验五 片上温度AD实验18实验六 模拟电压AD转换实验22实验七 串口收发数据实验25实验八 串口控制LED实验29实验九 点对点无线通信实验33实验十 基于Z-Stack的无线组网实验34实验十一 基于Z-Stack的串口控制LED实验36实验一光照传感器实验一、实验目的了解光敏电阻传感器的特性,掌握其工作原理。

2、二、实验环境光照传感器模块、ST-Link仿真器、USB2UART模块、IAR for STM8 1.30开发软件、AccessPort串口调试软件。三、实验原理1、光敏电阻光敏电阻是一种对光敏感的元件,它的电阻值能随着外界光照强弱变化而变化。光敏电阻的结构如图1所示,光照特性曲线如图2所示。图1 光敏电阻结构 图2 光照特性曲线图3 电路原理图2、光敏传感器模块原理图 如图3所示,光敏电阻阻值随着光照强度变化时,在引脚Light_AD输出电压也随之变化。STM8的PD2引脚采集Light_AD电压模拟量转化为数字量,当采集的AD值大于某一阈值时,则将PD3即Light_IO引脚置低,表明有光

3、照。传感器使用的光敏电阻的暗电阻为 2M 欧姆左右,亮电阻为 10K 左右。可以计算出:在黑暗条件下,Light_AD 的数值为 3.3V * 2000K /(2000K + 10K) = 3.28V。在光照条件下,Light_AD 的数值为 3.3V * 10K/(10K + 10K) = 1.65V。STM8单片机内部带有 10 位 AD 转换器,参考电压为供电电压 3.3V。根据上面计算结果,选定1.65V(需要根据实际测量结果进行调整)作为临界值。当 Light_AD 为 1.65V 时,AD读数为 1.65 / 3.3 * 1024 = 512。 当AD读数大于512时说明无光照,当

4、 AD 读数小于 512 时说明有光照,并点亮 LED3 作为指示。并通过串口函数来传送触发(有光照时)信号。3、源码分析#include main.hu8 CMD_rx_buf8; / 命令缓冲区u8 DATA_tx_buf14; / 返回数据缓冲区u8 CMD_ID = 0; / 命令序号u8 Sensor_Type = 0; / 传感器类型编号u8 Sensor_ID = 0; / 相同类型传感器编号u8 Sensor_Data6; / 传感器数据区u8 Sensor_Data_Digital = 0; / 数字类型传感器数据u16 Sensor_Data_Analog = 0; / 模

5、拟类型传感器数据 u16 Sensor_Data_Threshod = 0;/ 模拟传感器阈值void main(void) u8 i = 0; CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1); / 设置内部时钟16M为主时钟 Uart1_Init(); LED_Init(); for(i = 0;i 14;i+) DATA_tx_bufi = 0; for(i = 0;i 8;i+) CMD_rx_bufi = 0; /* 根据不同类型的传感器进行修改 */ Sensor_Type = 2; Sensor_ID = 1; CMD_ID = 1; D

6、ATA_tx_buf0 = 0xEE; DATA_tx_buf1 = 0xCC; DATA_tx_buf2 = Sensor_Type; DATA_tx_buf3 = Sensor_ID; DATA_tx_buf4 = CMD_ID; DATA_tx_buf13 = 0xFF; GPIO_Init(GPIOD, GPIO_PIN_3, GPIO_MODE_OUT_PP_HIGH_SLOW); / ADC ADC1_Init(ADC1_CONVERSIONMODE_CONTINUOUS, ADC1_CHANNEL_3, ADC1_PRESSEL_FCPU_D4, ADC1_EXTTRIG_TIM

7、, DISABLE, ADC1_ALIGN_RIGHT, ADC1_SCHMITTTRIG_CHANNEL3, DISABLE); ADC1_Cmd(ENABLE); ADC1_StartConversion(); Sensor_Data_Analog = 0; Sensor_Data_Threshod = 700; delay_ms(1000); while (1) / 获取传感器数据 Sensor_Data_Analog = ADC1_GetConversionValue(); if(Sensor_Data_Analog Sensor_Data_Threshod) Sensor_Data_

8、Digital = 0; / 无光照 GPIO_WriteHigh(GPIOD, GPIO_PIN_3); else Sensor_Data_Digital = 1; / 有光照 GPIO_WriteLow(GPIOD, GPIO_PIN_3); / 组合数据帧 DATA_tx_buf10 = Sensor_Data_Digital; / 发送数据帧 UART1_SendString(DATA_tx_buf, 14); LED_Toggle(); delay_ms(1000);#ifdef USE_FULL_ASSERTvoid assert_failed(uint8_t* file, uin

9、t32_t line) /* User can add his own implementation to report the file name and line number, ex: printf(Wrong parameters value: file %s on line %drn, file, line) */ /* Infinite loop */ while (1)#endif四、实验步骤1)首先,我们要把传感器模块插到USB2UART模块上,再把ST-Link插到JTAG 口上,最后把两根USB线插到PC机的USB端口。2)我们用 IAR SWSTM8 1.30软件,打开.

10、2-Sensor_光照传感器ProjectSensor.ewp。然后,在窗口左侧的User文件夹下的main.c中输入上述源代码。3)打开后点击“Project”的“Rebuil All”或者选中工程文件右键“Rebuil All”把我们的工程编译一下。4)点击“Rebuil All”编译完后,无警告,无错误。5)编译完后我们要把程序烧到模块里,点击中间的Download and Debug进行烧写。6)打开串口工具.AccessPort.exe,配置好串口参数,波特率115200,8个数据位,1个停止位,无校验位。单片机采集的信息发送给PC机。7)传感器底层串口协议返回14个字节,第1位字节

11、和2位字节是包头,第3位字节是传感器类型,第4位字节是传感器ID,第5位字节是节点命令ID,第6位字节到11位字节是数据位,其中第11位字节是传感器的状态位,第12位字节和第13位字节是保留位,第14位字节是包尾。例如:返回“EE CC 02 01 01 00 00 00 00 00 00 00 00 FF”时,第11位字节为“0”时,表示无光照,返回“EE CC 02 01 01 00 00 00 00 00 01 00 00 FF”时,第11位字节为“1”是表示有光照。测试结果如图4所示。 图4 测试结果五、思考题1、如何编程控制PD3输出高低电平?2、编程实现求解光敏电阻的阻值。实验二红

12、外反射传感器实验一、实验目的了解红外反射传感器的特性,掌握其工作原理。二、实验环境红外反射传感器模块、ST-Link仿真器、USB2UART模块、IAR for STM8 1.30开发软件、AccessPort串口调试软件。三、实验原理1、红外反射传感器 红外反射传感器使用的是反射型红外光电开关,反射型红外光电开关把一个红外光发射器和一个红外光接收器装在一个同一面上,前方装有滤镜,滤除干扰光。发光器能发出红外光,在无阻情况下光接收器不能收到光。但当前方有障碍物时,光被反射回接收器,光电开关便动作,输出一个开关控制信号,切断或接通负载电流,从而完成一次控制动作。图5电路原理图2、红外反射传感器模

13、块原理图如图5所示,红外光电开关U3供电电压为5V,集电极开路输出。当无障碍物时,U3的1脚输出高电平,Q1导通,IR_DATA为低电平;当有障碍物时,U3的1脚输出低电平,Q1截止,IR_DATA为高电平。通过STM8单片机读取 IR_DATA的高低电平状态,即可获知红外反射传感器是否检测到障碍物,当检测到障碍物时,可以点亮 LED3作为指示。通过串口传输信号。3、源码分析#include main.hu8 CMD_rx_buf8; / 命令缓冲区u8 DATA_tx_buf14; / 返回数据缓冲区u8 CMD_ID = 0; / 命令序号u8 Sensor_Type = 0; / 传感器

14、类型编号u8 Sensor_ID = 0; / 相同类型传感器编号u8 Sensor_Data6; / 传感器数据区u8 Sensor_Data_Digital = 0; / 数字类型传感器数据u16 Sensor_Data_Analog = 0; / 模拟类型传感器数据 u16 Sensor_Data_Threshod = 0;/ 模拟传感器阈值void main(void) u8 i = 0; CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1); / 设置内部时钟16M为主时钟 Uart1_Init(); LED_Init(); GPIO_Init(

15、GPIOD, GPIO_PIN_3, GPIO_MODE_IN_FL_NO_IT); GPIO_Init(GPIOD, GPIO_PIN_2, GPIO_MODE_OUT_PP_HIGH_SLOW); for(i = 0;i 14;i+) DATA_tx_bufi = 0; for(i = 0;i 8;i+) CMD_rx_bufi = 0; /* 根据不同类型的传感器进行修改 */ Sensor_Type = 4; Sensor_ID = 1; CMD_ID = 1; DATA_tx_buf0 = 0xEE; DATA_tx_buf1 = 0xCC; DATA_tx_buf2 = Senso

16、r_Type; DATA_tx_buf3 = Sensor_ID; DATA_tx_buf4 = CMD_ID; DATA_tx_buf13 = 0xFF; delay_ms(1000); while (1) / 获取传感器数据 if(!GPIO_ReadInputPin(GPIOD, GPIO_PIN_3) Sensor_Data_Digital = 0; / 无障碍 GPIO_WriteHigh(GPIOD, GPIO_PIN_2); else Sensor_Data_Digital = 1; / 有障碍 GPIO_WriteLow(GPIOD, GPIO_PIN_2); / 组合数据帧

17、DATA_tx_buf10 = Sensor_Data_Digital; / 发送数据帧 UART1_SendString(DATA_tx_buf, 14); LED_Toggle(); delay_ms(1000);#ifdef USE_FULL_ASSERTvoid assert_failed(uint8_t* file, uint32_t line) /* User can add his own implementation to report the file name and line number, ex: printf(Wrong parameters value: file

18、%s on line %drn, file, line) */ /* Infinite loop */ while (1)#endif四、实验步骤我们把红外反射传感器模块插到USB2UART模块上,重复第1个实验的编译、链接、下载代码、与PC机通信过程。例如:返回“EE CC 04 01 01 00 00 00 00 00 00 00 00 FF”时,第11位字节为“0”时,表示无障碍,返回“EE CC 04 01 01 00 00 00 00 00 01 00 00 FF”时,第11位字节为“1”是表示有障碍。五、思考题1、简述红外反射传感器模块IR_DATA引脚电平变化原理。2、编程实现计

19、数,红外反射传感器模块被障碍物挡住的次数。实验三温湿度传感器实验一、实验目的了解温湿度传感器的特性,掌握其工作原理。二、实验环境 温湿度传感器模块、ST-Link仿真器、USB2UART模块、IAR for STM8 1.30开发软件、AccessPort串口调试软件。三、实验原理1、温湿度传感器AM2302湿敏电容数字温湿度模块是一款含有己校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电容式感湿元件和一个高精度测温元件,并与一个高性能8位单片机相连接。如图6所示,AM2302引脚图。图6 AM230

20、2引脚图图7 AM2302单总线通信协议AM2302器件采用简化的单总线通信,单总线通信协议如图7所示,单总线通信格式如图8所示。单总线即只有一根数据线,系统中的数据交换、控制均由数据线完成。设备(微处理器)通过一个漏极开路或三态端口连至该数据线,以允许设备在不发送数据时能够释放总线,而让其它设备使用总线;单总线通常要求外接一个约5.1k的上拉电阻,这样,当总线闲置时,其状态为高电平。由于它们是主从结构,只有主机呼叫传感器时,传感器才会应答,因此主机访问传感器都必须严格遵循单总线序列,如果出现序列混乱,传感器将不响应主机。图8 AM2302单总线通信格式2、温湿度传感器模块原理图如图9所示,A

21、M2302通过DATA与单片机相连。图9温湿度传感器原理图3、源码分析#include main.hu8 CMD_rx_buf8; / 命令缓冲区u8 DATA_tx_buf14; / 返回数据缓冲区u8 CMD_ID = 0; / 命令序号u8 Sensor_Type = 0; / 传感器类型编号u8 Sensor_ID = 0; / 相同类型传感器编号u8 Sensor_Data6; / 传感器数据区u8 Sensor_Data_Digital = 0; / 数字类型传感器数据u16 Sensor_Data_Analog = 0; / 模拟类型传感器数据 u16 Sensor_Data_T

22、hreshod = 0;/ 模拟传感器阈值void main(void) u8 i = 0; CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1); / 设置内部时钟16M为主时钟 Uart1_Init(); LED_Init(); DHT22_Init(); for(i = 0;i 14;i+) DATA_tx_bufi = 0; for(i = 0;i 8; Sensor_Data3 = Humidity&0xFF; Sensor_Data4 = Temperature 8; Sensor_Data5 = Temperature&0xFF; / 组合数

23、据帧 for(i = 0;i 6;i+) DATA_tx_buf5+i = Sensor_Datai; / 发送数据帧 UART1_SendString(DATA_tx_buf, 14); LED_Toggle(); delay_ms(1000);#ifdef USE_FULL_ASSERTvoid assert_failed(uint8_t* file, uint32_t line) /* User can add his own implementation to report the file name and line number, ex: printf(Wrong paramete

24、rs value: file %s on line %drn, file, line) */ /* Infinite loop */ while (1)#endif四、实验步骤我们把温湿度传感器模块插到USB2UART模块上,重复第1个实验的编译、链接、下载代码、与PC机通信过程。例如:返回 EE CC 0A 01 01 00 00 HH HL TH TL 00 00 FF,HH,HL代表温度变化,TH,TL代表湿度变化。五、思考题1、计算温湿度传感器输出的温度值、湿度值。2、分析C语言实现单总线协议的过程。3、编程实现模拟报警系统,当温度超过某一阈值时,LED闪烁。实验四LED灯控制实验一、

25、实验目的 掌握CC2530芯片的输入输出端口编程控制。二、实验环境 实验开发箱平台、ZigBee(CC2530)模块、J-Link仿真器、IAR for MCS-51 开发软件、AccessPort串口调试软件。三、实验原理原理图如图10所示,ZigBee(CC2530)模块硬件上设计有2个LED灯,2个按键,用来编程调试使用。2个LED灯分别连接 CC2530的P1_0、P1_1两个IO引脚。从原理图上可以看出,2个LED灯共阳极,当P1_0、P1_1引脚为低电平时候,LED灯点亮。图10 输入输出原理图2、源码分析#include #define uint unsigned int#def

26、ine uchar unsigned char/定义控制LED灯的端口#define LED1 P1_0/定义LED1为P10口控制#define LED2 P1_1/定义LED2为P11口控制/函数声明void Delay(uint);/延时函数void Initial(void);/初始化P1口/延时函数void Delay(uint n)uint i,t; for(i = 0;i5;i+)for(t = 0;tn;t+);/初始化程序void Initial(void)P1DIR |= 0x03; /P1_0、P1_1定义为输出LED1 = 1; /LED1灯熄灭LED2 = 1;/LE

27、D2灯熄灭/主函数void main(void)Initial();/调用初始化函数LED1 = 0;/LED1点亮LED2 = 0;/LED2点亮while(1) LED2 = !LED2; /LED2闪烁 Delay(50000);四、实验步骤(在实验箱的ZigBee协调器(CC2530)上进行实验)1)把J-Link仿真器一端连到实验箱右下角的JLink插座上,另一端连到PC机USB端口上。打开实验箱左上角的开关和ZigBee协调器的开关供电,Power LED红灯点亮。按下“选择”按钮,当ZigBee协调器的Debugled黄灯点亮时,选中该模块。2)用IAR for MCS-51软件

28、,打开. SrcZigBeeTIexpBasicExp1.ewp。然后,在窗口左侧的main.c中输入上述源代码。3)打开后点击“Project”的“Rebuil All”把工程编译一下。点击“Rebuil All”编译完后,无警告,无错误。4)编译完后我们要把程序烧到模块里,点击左侧的Debug进行烧写。若烧写失败,重新插拔J-Link仿真器的USB端口。5)点击运行,点击停止。五、思考题1、分析输入输出端口的编程控制。2、编程实现,初始化LED1,LED2全灭;按下S2,LED1,LED2点亮;按下3次S4,LED1,LED2闪烁。实验五片上温度AD实验一、实验目的利用CC2530的内部温

29、度传感器作为AD输入源,将转换后的温度数值利用串口发送给PC机终端。二、实验环境 实验开发箱平台、ZigBee(CC2530)模块、J-Link仿真器、IAR for MCS-51 开发软件、AccessPort串口调试软件。三、实验原理1、源码分析#include #include #include ./uart/hal_uart.h#define uchar unsigned char#define uint unsigned int #define uint8 uchar#define uint16 uint#define TRUE 1#define FALSE 0/定义控制LED灯的端

30、口#define LED1 P1_0/定义LED1为P10口控制#define LED2 P1_1/定义LED2为P11口控制/#define HAL_MCU_CC2530 1/ ADC definitions for CC2430/CC2530 from the hal_adc.c file#define HAL_ADC_REF_125V 0x00 /* Internal 1.25V Reference */#define HAL_ADC_DEC_064 0x00 /* Decimate by 64 : 8-bit resolution */#define HAL_ADC_DEC_128 0

31、x10 /* Decimate by 128 : 10-bit resolution */#define HAL_ADC_DEC_512 0x30 /* Decimate by 512 : 14-bit resolution */#define HAL_ADC_CHN_VDD3 0x0f /* Input channel: VDD/3 */#define HAL_ADC_CHN_TEMP 0x0e /* Temperature sensor */延时函数void Delay(uint n)uint i,t; for(i = 0;i5;i+)for(t = 0;tn;t+);void InitL

32、ed(void) P1DIR |= 0x03; /P1_0、P1_1定义为输出 LED1 = 1; /LED1灯熄灭 LED2 = 1; /LED2灯熄灭 * fn readTemp * brief read temperature from ADC * param none * return temperaturestatic char readTemp(void) static uint16 voltageAtTemp22; static uint8 bCalibrate=TRUE; / Calibrate the first time the temp sensor is read ui

33、nt16 value; char temp; ATEST = 0x01; TR0 |= 0x01; ADCIF = 0; /clear ADC interrupt flag ADCCON3 = (HAL_ADC_REF_125V | HAL_ADC_DEC_512 | HAL_ADC_CHN_TEMP); while ( !ADCIF ); /wait for the conversion to finish value = ADCL; /get the result value |= (uint16) ADCH) = 4; / Use the 12 MSB of adcValue /* As

34、sume ADC = 1480 at 25C and ADC = 4/C */ #define VOLTAGE_AT_TEMP_25 1480 #define TEMP_COEFFICIENT 4 / Calibrate for 22C the first time the temp sensor is read. / This will assume that the demo is started up in temperature of 22C if(bCalibrate) voltageAtTemp22=value; bCalibrate=FALSE; temp = 22 + ( (v

35、alue - voltageAtTemp22) / TEMP_COEFFICIENT ); / Set 0C as minimum temperature, and 100C as max if( temp = 100) return 100; else if(temp = 0) return 0; else return temp;void main(void) char temp_buf20;/, vol_buf20; uint8 temp;/, vol; InitUart(); / baudrate:57600 InitLed(); LED1 = 0; while(1) LED2 = !

36、LED2; /LED2 blink 表示程序运行正常 temp = readTemp(); /vol = readVoltage(); sprintf(temp_buf, (char*)temperature:%drn, temp); /sprintf(vol_buf, (char*)vol:%drn, vol); prints(temp_buf); /prints(vol_buf); Delay(50000); Delay(50000); Delay(50000);四、实验步骤1)重复第四个实验的实验步骤1)5),打开. SrcZigBeeTIexpBasicExp6.ewp。2)串口线一端

37、连到PC机COM口,另一端连到实验箱右下角Debug_UART端口,仅把拨码开关S7的4开关拨上去,其余3个及S8、S9、S10的拨码开关都拨下来。3)打开串口工具.AccessPort.exe,配置好串口参数,波特率57600,8个数据位,无奇偶校验位,无硬件流模式。单片机采集的温度发送给PC机,如图11所示。图11实验结果五、思考题1、编写温度转换的流程图。实验六模拟电压AD转换实验一、 实验目的利用CC2530的1/3模拟电压源作为AD输入源,将转换后的数值利用串口发送给PC机终端。二、实验环境 实验开发箱平台、ZigBee(CC2530)模块、J-Link仿真器、IAR for MCS

38、-51 开发软件、AccessPort串口调试软件。三、实验原理1、源码分析#include ioCC2530.h#include ./uart/hal_uart.h#define uint unsigned int#define ConversionNum 20/定义控制灯的端口#define led1 P1_0#define led2 P1_1void Delay(uint);void InitialAD(void);char adcdata= 0.0V ;/延时函数void Delay(uint n) uint i,t; for(i = 0;i5;i+) for(t = 0;t=0x80) led1 = 1; /转换完毕指示 temp1 = ADCL; temp0 = ADCH; ADCCON1 |= 0x40; /开始下一转换 temp1 = temp12; /数据处理 temp1 |= temp06; tem

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

当前位置:首页 > 教育专区 > 小学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁