**1.概述**
鉴于ZigBee技术适合用于数据采集系统的的特点, 提出了基于ZigBee的数据采集系统的设计方案, 着重探讨ZigBee节点的硬件设计及其组网设计. 并详细讨论了基于CC2530芯片的数据采集节点的硬件设计方案, 组网设计中的协调器建立网络、节点加入网络的设计方法, 以及数据采集系统的软件设计方法. 最后通过采集ZigBee网络传感器数据的实验, 证明该方案能取得良好的通信效果.
**1.1 系统描述**
利用ZigBee传感器网络、网关、服务器实现简单的数据采集系统。项目中把使用了三种传感器,分别是:温湿度传感器,烟雾传感器,光敏传感器。终端节点传感器采集到数据之后发送给协调器之后,由协调器通过串口将数据发至给电脑客户端,最后电脑客户端将串口发送上来的传感器数据使用套接字封装成http格式后通过post方式发送到服务端,并且存储到数据库中。客户端通过访问服务器,获取数据展示出来。
**1.2 系统结构介绍**
![这里写图片描述](http://img.blog.csdn.net/20170614234814872?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzAwNzA0MzM=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
----------
图1:系统结构图
如图1所示,本系统主要有传感器节点、协调器、网关、服务器、客户端四个部分组成。传感器部分采集温湿度,可燃气,光照数据。通过使用Zstack协议栈来进行zigbee传感器节点组网,使用c语言来控制zigbee终端节点io口采集到传感器数据,协调器再将数据通过串口上传到网关。网关部分从串口接收来自协调器发来的传感器数据,并以及解析从串口收到的数据,并且把数据封装成http格式通过post方式可以实现远程发送数据到服务器。客户端使用python从服务器获取数据,设计图形界面用于数据展示。
**1.3 软硬件开发平台**
软件:
VMware Workstation(linux OS)
TCP&UDP测试工具(测试)
Configure Virtual Serial Port Driver(测试)
IAR Embedded Workbench(CC2530 传感器)
sublime(C 网关)
IntelliJ IDEA 2017.1.1(JAVA 服务器)
JetBrains CLion 2016.3.4(Python 显示)
xampp(数据库)
串口调试助手(测试)
硬件:温湿度传感器、光照传感器、可燃气传感器、CC2530开发板*4
**1.4 实现功能**
**通过传感器采集环境数据,并将采集到的数据进行处理后在客户端做展现,客户端可以查询某一日下的数据变化情况。**
**2 系统设计方案**
数据格式:
• FF00 01 0600 1A 27
• FF00: 包标志 2Byte
• 01: 传感器类型 1Byte
• 0600: 短地址 2Byte
• 1A27: 传感器数据 1A:温度26 27:湿度39
• 传感器类型数据大小
• 温湿度 PACKET_DHT11_DATA_SIZE 2byte
• 光敏 PACKET_PHOTORESUSTANCE_DATA_SIZE 1byte
• 可燃气体 PACKET_COMBUSTIBLEGAS_DATA_SIZE 1byte
**3 系统具体实现 (项目整体实现细节、各个模块的流程,关键代码)**
**传感器部分:**
整体流程:
![这里写图片描述](http://img.blog.csdn.net/20170614235006406?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzAwNzA0MzM=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
传感器节点接入协调器网络,封装传感器数据
```
if ( event & MY_REPORT_EVT ) // MY_REPORT_EVT事件触发处理
{
if ( appState == APP_REPORT )
{
pData[PACKET_FLAG_OFFSET] = PACKET_L_FLAG;
pData[PACKET_FLAG_OFFSET + 1] = PACKET_H_FLAG;
pData[PACKET_SENSOR_SHORT_ADDR_OFFSET] = (NLME_GetShortAddr() & 0xff);
pData[PACKET_SENSOR_SHORT_ADDR_OFFSET + 1] = (NLME_GetShortAddr() >> 8);
#if PACKET_SENSOR_TYPE == PACKET_DHT11
dht11_update();
pData[PACKET_SENSOR_TYPE_OFFSET] = PACKET_DHT11;
pData[PACKET_SENSOR_DATA_OFFSET] = dht11_temp();
pData[PACKET_SENSOR_DATA_OFFSET + 1] = dht11_humidity();
#elif PACKET_SENSOR_TYPE == PACKET_PHOTORESUSTANCE
pData[PACKET_SENSOR_TYPE_OFFSET] = PACKET_PHOTORESUSTANCE;
pData[PACKET_SENSOR_DATA_OFFSET] = HalAdcRead (HAL_ADC_CHN_AIN1,HAL_ADC_RESOLUTION_8);
#else
pData[PACKET_SENSOR_TYPE_OFFSET] = PACKET_COMBUSTIBLEGAS;
pData[PACKET_SENSOR_DATA_OFFSET] = HalAdcRead (HAL_ADC_CHN_AIN1,HAL_ADC_RESOLUTION_8);
```
**上传数据包结构**
【包标志】【传感器类型】【短地址】【数据】
包标志 2Byte FF00
传感器类型
温湿度 2byte 传感器类型编号 01
光敏 1byte 传感器类型编号 02
可燃气体 1byte 传感器类型编号 03
将数据包发送给协调器
```
#if PACKET_SENSOR_TYPE == PACKET_DHT11
zb_SendDataRequest( 0xFFFE, SENSOR_REPORT_CMD_ID, PACKET_BASE_SIZE + PACKET_DHT11_DATA_SIZE, pData, 0, AF_TX_OPTIONS_NONE, 0 );
#elif PACKET_SENSOR_TYPE == PACKET_PHOTORESUSTANCE
zb_SendDataRequest( 0xFFFE, SENSOR_REPORT_CMD_ID, PACKET_BASE_SIZE + PACKET_PHOTORESUSTANCE_DATA_SIZE, pData, 0, AF_TX_OPTIONS_NONE, 0 );
#else
zb_SendDataRequest( 0xFFFE, SENSOR_REPORT_CMD_ID, PACKET_BASE_SIZE + PACKET_COMBUSTIBLEGAS_DATA_SIZE, pData, 0, AF_TX_OPTIONS_NONE, 0 );
```
协调器接收到数据包通过串口上传
```
void zb_ReceiveDataIndication( uint16 source, uint16 command, uint16 len, uint8 *pData )
{
HalUARTWrite(HAL_UART_PORT_0, pData, len);
}
```
协调器接收到网关发送的命令做出命令判断后将其发送给传感器节点
```
while (Hal_UART_RxBufLen(port)) //计算并返回接收缓冲区的长度
{
len = HalUARTRead (port, pBuf, RX_BUF_LEN);
HalUARTWrite (port, pBuf, len);
if(len >= PACKET_BASE_SIZE
&& pBuf[PACKET_FLAG_OFFSET] == PACKET_L_FLAG
&& pBuf[PACKET_FLAG_OFFSET + 1] == PACKET_H_FLAG)
{
zb_SendDataRequest( *(uint16 *)(pBuf + PACKET_SENSOR_SHORT_ADDR_OFFSET), OPERATION_CMD_ID, len, pBuf, 0, AF_TX_OPTIONS_NONE, 0 );
}
}
```
**命令数据包结构**
【包标志】【操作指令】【对应传感器短地址】
包标志 2Byte FF00
操作指令 1Byte
01 LED开启
02 LED关闭
03 LED状态反转
04 LED闪烁
对应传感器短地址 2Byte
传感器节点接收到协调器控制数据包并解析做出相应的反应
```
void zb_ReceiveDataIndication( uint16 source, uint16 command, uint16 len, uint8 *pData )
{
if(len >= PACKET_BASE_SIZE
&& pData[PACKET_FLAG_OFFSET] == PACKET_L_FLAG
&& pData[PACKET_FLAG_OFFSET + 1] == PACKET_H_FLAG
&& *(uint16 *)(pData + PACKET_SENSOR_SHORT_ADDR_OFFSET) == NLME_GetShortAddr())
{
switch(pData[PACKET_OPERATION_TYPE_OFFSET])
{
case PACKET_ON:
HalLedSet( HAL_LED_1, HAL_LED_MODE_ON );
break;
case PACKET_OFF:
HalLedSet( HAL_LED_1, HAL_LED_MODE_OFF );
break;
case PACKET_TOGGLE:
HalLedSet( HAL_LED_1, HAL_LED_MODE_TOGGLE );
break;
case PACKET_BLINK:
HalLedBlink(HAL_LED_1, 0, 50, 500);
break;
default:
break;
}
}
}
```
**网关部分:**
程序流程:
![这里写图片描述](http://img.blog.csdn.net/20170614235233894?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzAwNzA0MzM=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
关键代码:
```
//serial part串口部分
cssl_t *ser;
cssl_start();
ser=cssl_open(dev_path,callback,0,38400,8,0,1);
if (!ser){
printf("%s\n",cssl_geterrormsg());
}
printf("Serial connection successful, DEV = %s\n", dev_path);
```
//create socket
建立socket 建立一个sock连接
```
sockfd = socket( AF_INET,SOCK_STREAM,0 );
if ( sockfd < 0 )
{
fprintf( stderr, "socket:%s\n", strerror(errno));
exit(1);
}
else{
printf("success to connect the service\n");
}
struct sockaddr_in soc
没有合适的资源?快使用搜索试试~ 我知道了~
鉴于ZigBee技术适合用于数据采集系统的的特点,_提出了基于ZigBee的数据采集系
共860个文件
r51:135个
s51:131个
pbi:131个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 198 浏览量
2024-09-16
22:22:06
上传
评论
收藏 23.63MB ZIP 举报
温馨提示
鉴于ZigBee技术适合用于数据采集系统的的特点,_提出了基于ZigBee的数据采集系统的设计方案,_Environment-Data-Acquisition-System-of-Internet-of-Things-Based-on-ZigBee
资源推荐
资源详情
资源评论
收起资源包目录
鉴于ZigBee技术适合用于数据采集系统的的特点,_提出了基于ZigBee的数据采集系 (860个子文件)
NetworkTopology-Star.MPCoordinator.cspy.bat 2KB
NetworkTopology-Star.MPEndPoint.cspy.bat 2KB
NetworkTopology-Star.cspy.bat 2KB
NetworkTopology-Star.MPRouter.cspy.bat 2KB
NetworkTopology-Star.pbd.browse 1.59MB
NetworkTopology-Star.pbd.browse 1.53MB
MPCoordinator.c 19KB
MPEndPont.c 18KB
cssl.c 11KB
cssl.c 11KB
main.c 5KB
main.c 4KB
device_find.c 4KB
info.c 4KB
sys_init.c 3KB
dht11.c 3KB
common.c 334B
protocol.c 0B
TService.class 3KB
WenduController.class 2KB
DBUtil.class 2KB
GasController.class 2KB
GuangzhaoController.class 2KB
UserController.class 2KB
WenduService.class 2KB
Wendu.class 1KB
CorsConfig.class 1KB
GuangzhaoService.class 1KB
GasService.class 1KB
User.class 1KB
JpaConfiguration.class 1KB
Guangzhao.class 1KB
Gas.class 1KB
UserService.class 995B
Entry.class 847B
WenduRepositoty.class 771B
UserRepositoty.class 752B
GuangzhaoRepositoty.class 690B
GasRepositoty.class 655B
MPCoordinator.pbi.cout 20KB
device_find.pbi.cout 20KB
mac_rffrontend.pbi.cout 20KB
mac_radio_defs.pbi.cout 20KB
info.pbi.cout 20KB
mac_csp_tx.pbi.cout 20KB
mac_mem.pbi.cout 20KB
mac_mcu.pbi.cout 20KB
mac_backoff_timer.pbi.cout 20KB
mac_low_level.pbi.cout 20KB
mac_rx_onoff.pbi.cout 20KB
mac_autopend.pbi.cout 20KB
hal_startup.pbi.cout 20KB
hal_timer.pbi.cout 20KB
mac_sleep.pbi.cout 20KB
hal_sleep.pbi.cout 20KB
hal_flash.pbi.cout 20KB
mac_radio.pbi.cout 20KB
hal_uart.pbi.cout 20KB
hal_adc.pbi.cout 20KB
hal_key.pbi.cout 20KB
OnBoard.pbi.cout 20KB
hal_led.pbi.cout 20KB
hal_dma.pbi.cout 20KB
hal_lcd.pbi.cout 20KB
mac_rx.pbi.cout 20KB
mac_tx.pbi.cout 20KB
ZMain.pbi.cout 20KB
OSAL_Memory.pbi.cout 20KB
OSAL_PwrMgr.pbi.cout 20KB
OSAL_Timers.pbi.cout 20KB
OSAL_Nv.pbi.cout 20KB
mac_pib.pbi.cout 20KB
OSAL_Clock.pbi.cout 20KB
hal_drivers.pbi.cout 20KB
mac_cfg.pbi.cout 20KB
nwk_globals.pbi.cout 20KB
hal_assert.pbi.cout 20KB
saddr.pbi.cout 20KB
ZDProfile.pbi.cout 20KB
ZDSecMgr.pbi.cout 20KB
ZGlobals.pbi.cout 20KB
ZDObject.pbi.cout 20KB
ZDConfig.pbi.cout 20KB
ZDNwkMgr.pbi.cout 20KB
stub_aps.pbi.cout 20KB
OSAL.pbi.cout 20KB
zmac_cb.pbi.cout 20KB
ZDApp.pbi.cout 20KB
sapi.pbi.cout 20KB
MT_VERSION.pbi.cout 20KB
DebugTrace.pbi.cout 20KB
zmac.pbi.cout 20KB
MT_DEBUG.pbi.cout 20KB
AF.pbi.cout 20KB
MT_UTIL.pbi.cout 20KB
MT_UART.pbi.cout 20KB
MT_SAPI.pbi.cout 20KB
MT_TASK.pbi.cout 20KB
MT_ZDO.pbi.cout 20KB
MT_SYS.pbi.cout 20KB
共 860 条
- 1
- 2
- 3
- 4
- 5
- 6
- 9
资源评论
好家伙VCC
- 粉丝: 2021
- 资源: 9145
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功