找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2632|回复: 0
打印 上一主题 下一主题
收起左侧

zigbee CC2530四轴飞行器实验指导书

[复制链接]
跳转到指定楼层
楼主
ID:722111 发表于 2020-4-5 19:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

实验内容:

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


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

  • 完成蓝牙模块的设置;
  • 测试厂商提供的温湿度传感器例程,并将项目中从P07引脚采集信号,改为从P06引脚采集;
  • 测试厂商提供的光敏传感器例程,并添加蓝牙模块,实现手机蓝牙串口助手APP通过蓝牙获取zigbee板上传的数据;
  • 将温湿度、光敏传感器的采集例程合并到“实验4zigbee无线数据传输”的项目中,以最终实现zigbee终端节点获取传感器数据,通过zigbee协议栈无线发送到协调器,协调器通过串口上传给PC侧的串口助手,同时通过蓝牙模块,上传给手机上的蓝牙串口助手APP

提供的硬件设备:

每个盒子包括: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

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


  • Zigbee终端节点采集温湿度、光敏数据

本步骤提供终端节点分别单独采集温湿度传感器、光敏传感器的项目,用以熟悉采集程序的代码,并确认蓝牙模块、串口助手、手机蓝牙助手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端口寄存器进行对应的设置:

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

  • CCdebuger下载代码
  • miniUSB接口线,连接PC机和zigbee开发板
  • DTH11传感器连入zigbee开发板P06端口。该端口有3个引脚,VCCGNDP06。其中VCC连接DTHVCCGND连接DTHGNDP06连接DTHDATA.
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,作为十位小数的值。(为什么这么处理就不清楚了,厂商提供的数据手册一直无法下载。。。)


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

  • CCdebuger下载代码
  • miniUSB接口线,连接PC机和zigbee开发板
  • 光敏传感器连入zigbee开发板P07端口。该端口有3个引脚,VCCGNDP07。其中VCC连接光敏传感器的VCCGND连接光敏传感器的GNDP07连接光敏传感器的Do.
光敏传感器引脚说明:
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终端节点把数据发送到协调器的方法

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


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

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

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





    • Zigbee终端节点采集温湿度数据并发送到协调器

粤嵌的温湿度传感器测试代码中(见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.cDHT11.h加入到现有的ZStack-CC2530项目,并修改DHT11.c,以符合SampleApp_SendPeriodicMessage()函数的调用需求

将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_SendPeriodicMessage()函数,在其中调用DHT11.c获取温湿度的函数,以期拿到温湿度数据。即,将原data数据,改换为调用温湿度获取函数,并将获得的数据通过AF_DataRequest()发送出去。

将原项目代码:

修改为:

  • 修改void SampleApp_MessageMSGCB( afIncomingMSGPacket_t *pkt )函数,原项目中是收到0-910个数字,将其转换为ASCII码后在串口打印输出。本项目中需要将接收到的数据直接从串口打印输出即可。

原项目代码:

需要改为下面的内容:


修改文件SampleApp.h:

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


修改完成后,保存。

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

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

  • 选择EndDeviceEB-Pro,编译,下载给zigbee终端节点;
  • 选择CoordinateEB-Pro,编译,下载给zigbee协调器节点;

  • 先用miniUSB线连接协调器节点,在PC机“设备管理”中可以看到新增的USB串口,比如为COM5. 在协调器上连接好蓝牙模块。
  • 再用另一根miniUSB线连接终端节点。
  • 打开PC上的串口助手,串口选COM5,波特率为115200,自动换行,16进制。
  • 等几秒钟,应该可以看到串口助手上有数据成功接收。第1个字节为温度的整数部分,第2个字节为温度的小数部分,第3个字节为湿度的整数部分,第4个字节为湿度的小数部分.

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


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

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




    • Zigbee终端节点采集光敏传感器数据并发送到协调器

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


本步骤中,需要:

  • LightSensor-P07项目中的LightSensor.cLightSensor.h加入到现有的ZStack-CC2530项目,并修改lightSensor.c,以满足SampleApp_SendPeriodicMessage()函数的调用需求;

将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_SendPeriodicMessage()函数,在其中调用LightSensor.c获取光敏电压的函数,以期拿到电压数据。即,将原data数据,改换为调用光敏电压获取函数,并将获得的数据通过AF_DataRequest()发送出去。

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


修改完成后,保存。

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

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

  • 选择EndDeviceEB-Pro,编译,下载给zigbee终端节点;
  • 选择CoordinateEB-Pro,编译,下载给zigbee协调器节点;

  • 先用miniUSB线连接协调器节点,在PC机“设备管理”中可以看到新增的USB串口,比如为COM5. 在协调器上连接好蓝牙模块。
  • 再用另一根miniUSB线连接终端节点。
  • 打开PC上的串口助手,串口选COM5,波特率为115200,自动换行,16进制。
  • 等几秒钟,应该可以看到串口助手上有数据成功接收。第1个字节为温度的整数部分,第2个字节为温度的小数部分,第3个字节为湿度的整数部分,第4个字节为湿度的小数部分.5个字节为光敏电压的值

  • 在手机端接收数据

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


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

总体效果图如下:


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

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


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表