标题: zigbee CC2530四轴飞行器实验指导书 [打印本页]

作者: hai_123    时间: 2020-4-5 19:34
标题: zigbee CC2530四轴飞行器实验指导书

实验内容:

zigbee终端节点采集温湿度、光敏数据,通过zigbee无线通道传输给协调器节点,协调器接收到数据后,一方面通过串口在PC机上显示,另一方面通过蓝牙模块发送给手机端显示。


本项目需要完成的主要工作如下:

提供的硬件设备:

每个盒子包括:zigbee板2个,CCdebuger1个,蓝牙模块1个,USB-TTL模块1个,温湿度传感器1个,光敏传感器1个,miniUSB线2根,D口USB线1根, 配套杜邦线

所需的文件:

名称

说明

开发环境IAR EW8051-8.1带注册工具

IAR开发环境

Texas Instruments one.rar

CC2530 Z-Stack源码及测试程序,老师提供

gec-Zigbee-ccdebug仿真器驱动

CC DEBUGER的驱动,老师提供

CC DEBUGGER在win7 win10下的安装方法.rar

CC DEBUGER在64bit win7/10下的驱动,老师提供

CH341SER

Usb转串口驱动,老师提供

UartAssist.exe

串口助手,老师提供

手机蓝牙助手

自行下载

DHT11.rar

温度传感器测试项目,老师提供

LightSensor_P07.rar

光敏传感器测试项目,老师提供

本文件

实验指导书



本次实验需要安装IAR集成开发环境、CCDebuger仿真器驱动、通过USB-TTL模块设置蓝牙模块波特率、安装手机蓝牙助手

1.1 安装IAR集成开发环境,安装CCdebuger的驱动

请按照之前实验的步骤安装IAR开发环境、CCdebuger仿真器驱动。


1.2 安装手机蓝牙APP

自行从网上下载、安装。蓝牙助手有很多版本,设置及使用方法都基本相同。


1.3 蓝牙模块设置:

蓝牙模块与USB-TTL接口模块的接线如下表:

蓝牙模块

USB-TTL接口模块

Rx

Rx

Tx

Tx

Vcc

5v(由miniUSB供电,JTAG不提供5v)

GND

GND

En/State悬空



用杜邦线按上表引脚对应关系,连接蓝牙模块和USB-TTL模块,然后将USB-TTL模块插入PC机USB接口,如下图,在“计算机管理”窗口可看到多出一个USB转串口的设备(本图为串口5,COM5,每个usb口对应的串口不一样)。


需要进入AT指令模式来设置蓝牙模块波特率、模块名(以免混淆)


AT模式波特率为38400,正常通信时波特率为9600

每条AT指令输入完成后,都必须按一下回车键,再点击串口助手上的发送按钮,才可发送

LED必须进入慢闪模式后方可进行AT指令测试

先按住HC05蓝牙模块上面的按键(复位键),再将USB-TTL模块插上PC机,等蓝牙模块上面的LED进入慢闪模式后(约1秒钟闪烁一次),即可进行AT命令测试:

在串口助手的左侧窗口

1:选择串口号、波特率(AT模式波特率为38400,缺省的正常通信模式下波特率为9600

2:在命令发送区,输入at(大小写都可以),然后回车,再用鼠标点击“发送”按钮,即可在接收区看到返回“OK”,表示串口调试助手与蓝牙间连接成功


测试连接成功后,在发送区输入命令(大小写不敏感):


命令

接收区显示

说明

1

AT+UART

+UART:9600,0,0

OK

查看蓝牙模块当前的波特率配置

2

at+uart=115200,0,0

OK

设置蓝牙模块使用时的波特率为115200,停止位为1位,校验位为none

3

at+name=fengb

没有显示

设置蓝牙模块的名字为fengb(建议设置为自己的名字拼音,免得相互冲突)


设置完成后,拔下USB-TTL模块,再插回PC机,相当于重启蓝牙模块。此时,蓝牙模块上的状态灯处于快速闪烁状态。打开手机蓝牙,搜索附近可用设备,点击连接,即可看到该设备的名字(如刚才设置的为fengb),配对的pin码为:1234

输入后,即可实现手机蓝牙与蓝牙模块的连接。


本步骤提供终端节点分别单独采集温湿度传感器、光敏传感器的项目,用以熟悉采集程序的代码,并确认蓝牙模块、串口助手、手机蓝牙助手APP可正确使用。


Zigbee终端节点采集温湿度项目,改为P06引脚,可测试温湿度传感器、串口助手。


本项目采用粤嵌传感器测试代码,但由于厂商提供的温湿度传感器、光敏传感器都占用了P07引脚,因此,需要将原项目中温湿度传感器从P07引脚的数据输入,改为P06引脚的输入。

将老师提供的源码解压到D盘(注意路径上不要有中文,否则IAR会闪退)。

项目关键代码分析如下

DHT11_Read_Data(buf)读取5个字节40bits的温湿度数据到buf数组中(具体原理可参见《ZigBee 开发实验指导书》第六章 温湿度实验),其中:

buf[0]=8bit 湿度整数数据,buf[1]=8bit 湿度小数数据,

buf[2]= 8bit温度整数数据,buf[3]=8bit 温度小数数据。

然后调用hexToAscall()函数将buf中的数据按字节转换为了ASCII码,并与说明信息一起拼接进rus字符串,最后调用uartSendString()函数打印到串口输出。


请仔细学习《ZigBee 开发实验指导书》第三章LED实验、第六章温湿度实验,找到修改、配置温湿度传感器IO控制器的方法。并按以下内容修改项目。


打开文件dht11.h,将引脚定义由P07改为P06:


打开文件dht11.c,将P0端口寄存器进行对应的设置:

保存并编译,通过后,连接硬件,下载代码。

DTH11的引脚说明:
Pin
名称
注释
1
VCC
供电3-5.5V
2
DATA
单总线,串行数据
3
NC
悬空
4
GND
接地


注意:

串口号为从“设备管理器”中查到的USB转串口的串口号

波特率为115200

有可能有个别温湿度传感器已被烧掉,请在给测试系统上电后,用手指按住温湿度传感器感受是否有发烫现象,如果发烫则表明已烧掉,则立即断电,取下温湿度传感器

本阶段测试通过后,表明可在zigbee开发板的P06端口,正确读取到温湿度传感器的数据。打包保留测试通过的源码为:DHT11_P06.rar

本项目采用粤嵌传感器测试代码,对应源码:LightSensor_P07.rar

光敏传感器图示如下:

将老师提供的源码解压到D盘(注意路径上不要有中文,否则IAR会闪退)

项目关键代码分析如下:


ADCH、ADCL:分别为ADC数据的高8位、低8位,在ioCC2530.h中定义。

对value乘以330,再右移15位(215=32768,近似于33000),相当于将value除以100

在main.c中,调用函数getValue()得到的sensor_var除以了100,作为电压的整数值,除以10再取余10,作为个位小数的值,取余10,作为十位小数的值。(为什么这么处理就不清楚了,厂商提供的数据手册一直无法下载。。。)


编译通过后,连接硬件,下载代码。

光敏传感器引脚说明:
Pin
名称
注释
1
VCC
供电3-5.5V
2
GND
接地
3
Do
数字信号输出
4
Ao
模拟信号输出


编译、下载,全速运行后,可以在串口助手上看到电压值的输出。


注意:

串口号为从“设备管理器”中查到的USB转串口的串口号

波特率为115200


完成此步骤,即可证明光敏传感器、串口助手及对应的测试程序工作正常。

下一步,将已完成设置的蓝牙模块接入zigbee板,并用手机连接该蓝牙模块,实现zigbee模块到手机的数据传输。

此时,拔掉zigbee的CCdebuger和miniUSB连接,使zigbee板处于无电状态。将蓝牙模块连接到zigbee板上。

蓝牙模块与zigbee板的接线:

蓝牙模块

Zigbee

Rx

P02

Tx

P03

Vcc

5v

GND

GND


连接好连线后,用miniusb线给本zigbee板供电(此处必须由miniUSB给zigbee板供电,因为JTAG接口不提供5v)。可先在PC上的串口助手软件里可以看到光敏电压的输出。表明光敏传感器工作正常。


蓝牙模块在“环境搭建”步骤已设置了模块名(例子中为fengb)和波特率(115200),此时打开手机蓝牙功能,打开手机上的蓝牙助手APP,搜索周围环境的蓝牙模块fengb,找到后点击,进行配对,配对码是“1234,然后连接该蓝牙设备,选中“字节流模式”,就可以在手机上的蓝牙助手界面看到光敏电压数据。


注意,有的蓝牙助手上不能显示中文,则需要在代码中把打印语句中的中文该为英文即可。


蓝牙助手APP选择字节流模式

中文显示(乱码)

改源码中文为英文显示

PC串口助手同时显示


本步骤分两个环节,一是zigbee终端节点采集温湿度数据发送给协调器,一是zigbee终端节点采集光敏数据发送给协调器。代码原型采用前一步骤中使用的代码,并需根据要求进行修改。


本项目中,zigbee终端节点拿到温湿度数据、光敏传感器数据的所有操作,与原测试代码都是相同的。区别在于拿到数据后,原测试代码是直接输出到串口打印,本项目需要发送到协调节点。这就需要分析我们做过的“基于zigbee协议栈的无线数据传输”实验中,终端节点是怎么把数据发送到协调器的。


在stack源码ZStack-CC2530-2.3.0-1.4.0中,SampleApp.c是提供给用户进行应用层编程的入口。其包含的函数SampleApp_SendPeriodicMessage()用以周期性发送数据(因此是终端节点调用该函数)。

第440行为发送的数据长度,第441行为待发送的数据地址。上电后,该节点会周期性(5秒)发送data里的数据。

因此,我们只需要在这个函数里,把data换为从温湿度传感器、光敏传感器处获得的数据即可。


粤嵌的温湿度传感器测试代码中(见DHT11-P06.rar,函数void SendTemp(void)调用函数DHT11_Read_Data(buf)读取5个字节40bits的温湿度数据到buf数组中(具体原理可参见《ZigBee 开发实验指导书》第六章 温湿度实验),其中:

buf[0]=8bit 湿度整数数据,buf[1]=8bit 湿度小数数据,

buf[2]= 8bit温度整数数据,buf[3]=8bit 温度小数数据。

然后调用hexToAscall()函数将buf中的数据按字节转换为了ASCII码,并与说明信息一起拼接进rus字符串,最后调用uartSendString()函数打印到串口输出。


本步骤中,需要:

将DHT11-P06项目中的dht11.c, dht11.h,delay.c,delay.h,system.h五个文件拷贝到:
ZStack-CC2530-2.3.0-1.4.0\Projects\zstack\Samples\SampleApp-transfer data in 1 hour\Source目录下

打开SampleApp.eww项目,在左侧窗口的workplace下,选中项目“SampleAPP-EndDeviceEB-Pro”下的“App”条项,右键-?Add-? Add Files,将刚才拷贝过来的dht11.c、dht11.h等5个文件添加到项目中。


在dht11.c中:

屏蔽掉usart.h(因为dht11项目和zstack项目关于uart的实现有不同,索性屏蔽掉不用)

把所有调用uartSendString()的语句屏蔽。

在dht11.c文件末尾,添加新函数DHT11(u8 *T_H):

在dht11.c文件开始部分,添加对新函数DHT11的引用说明:

将原项目代码:

修改为:

原项目代码:

需要改为下面的内容:


修改文件SampleApp.h:

在文件后半部分添加对DHT11的外部引用说明及DATALEN的宏定义说明:


修改完成后,保存。

将温湿度传感器接到zigbee开发板上(注意是P06,vcc,GND,这三个引脚),这块zigbee板作为终端节点,采集传感器数据,并通过zigbee无线通道发送给协调器。

在IAR开发环境左侧窗口的workplace下:



如下图,此时温度的整数部分为0x19,即27度。用手握住温湿度传感器,过一段时间后可以看到温度数据缓慢上升。


打开手机蓝牙,用蓝牙助手APP连接蓝牙模块,选择字节流方式,即可在手机蓝牙助手上同时收到温湿度信息。

至此,表明温湿度数据可以从终端节点采集,发送到协调器,再由协调器通过蓝牙模块发送到手机上。



粤嵌的光敏传感器测试代码中(见LightSensor_P07.rar。函数getValue()返回了16bit的电压值,在在main.c中,又将调用getValue()得到的sensor_var除以了100,作为电压的整数值,除以10再取余10,作为个位小数的值,取余10,作为十位小数的值。为什么这么处理就不清楚了


本步骤中,需要:

将LightSensor-P07项目中的lightSensor.c, lightSensor.h, 2文件拷贝到:
ZStack-CC2530-2.3.0-1.4.0\Projects\zstack\Samples\SampleApp-transfer data in 1 hour\Source目录下

打开SampleApp.eww项目,在左侧窗口的workplace下,选中项目“SampleAPP-EndDeviceEB-Pro”下的“App”条项,右键-?Add-? Add Files,将刚才拷贝过来的lightSensor.c/h等2个文件添加到项目中。


打开lightSensor.c,修改getValue()函数:

改为:

并在lightSensor.c文件开头处添加:

在SampleApp.h文件的后部添加:

此处将DATALEN改为了6

打开SampleApp.c,在函数SampleApp_SendPeriodicMessage()中,添加划线的几条语句:


修改完成后,保存。

将光敏传感器接到zigbee终端节点开发板上,板子上之前已经在P06端口连接了温湿度传感器。

在IAR开发环境左侧窗口的workplace下:



蓝牙模块在2.2步骤设置成功后,手机上的蓝牙助手应能搜索到该蓝牙模块,连接上后选择字节流方式,选择16进制方式,应可收到zigbee协调器发送上来的数据,同时,在PC侧的串口助手上,应可看到相同的数据。


至此,本项目完成了从zigbee终端节点采集温湿度、光敏数据,通过zigbee无线通道传输给协调器节点,协调器接收到数据后,一方面通过串口在PC机上显示,另一方面通过蓝牙模块发送给手机端显示。

总体效果图如下:


完整的Word格式文档51黑下载地址:

指导书.doc (3.14 MB, 下载次数: 23)







欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1