基于ZigBee的磁场检测系统.docx

上传人:b****8 文档编号:13090609 上传时间:2023-06-11 格式:DOCX 页数:22 大小:655.46KB
下载 相关 举报
基于ZigBee的磁场检测系统.docx_第1页
第1页 / 共22页
基于ZigBee的磁场检测系统.docx_第2页
第2页 / 共22页
基于ZigBee的磁场检测系统.docx_第3页
第3页 / 共22页
基于ZigBee的磁场检测系统.docx_第4页
第4页 / 共22页
基于ZigBee的磁场检测系统.docx_第5页
第5页 / 共22页
基于ZigBee的磁场检测系统.docx_第6页
第6页 / 共22页
基于ZigBee的磁场检测系统.docx_第7页
第7页 / 共22页
基于ZigBee的磁场检测系统.docx_第8页
第8页 / 共22页
基于ZigBee的磁场检测系统.docx_第9页
第9页 / 共22页
基于ZigBee的磁场检测系统.docx_第10页
第10页 / 共22页
基于ZigBee的磁场检测系统.docx_第11页
第11页 / 共22页
基于ZigBee的磁场检测系统.docx_第12页
第12页 / 共22页
基于ZigBee的磁场检测系统.docx_第13页
第13页 / 共22页
基于ZigBee的磁场检测系统.docx_第14页
第14页 / 共22页
基于ZigBee的磁场检测系统.docx_第15页
第15页 / 共22页
基于ZigBee的磁场检测系统.docx_第16页
第16页 / 共22页
基于ZigBee的磁场检测系统.docx_第17页
第17页 / 共22页
基于ZigBee的磁场检测系统.docx_第18页
第18页 / 共22页
基于ZigBee的磁场检测系统.docx_第19页
第19页 / 共22页
基于ZigBee的磁场检测系统.docx_第20页
第20页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于ZigBee的磁场检测系统.docx

《基于ZigBee的磁场检测系统.docx》由会员分享,可在线阅读,更多相关《基于ZigBee的磁场检测系统.docx(22页珍藏版)》请在冰点文库上搜索。

基于ZigBee的磁场检测系统.docx

基于ZigBee的磁场检测系统

目录

摘要I

AbstractII

1设计目的1

2设计内容2

2.1磁场检测系统的工作原理2

2.2设计方案2

3实验器材2

4实验电路图3

5相关模块的性能参数6

6软件程序功能实现模块6

6.1应用层代码6

6.2显屏程序8

7实物展示14

8小组分工15

9设计总结15

10实验小组成员评分16

参考文献17

摘要

随着社会的发展,无线网络发展的越来越快,作为无线网络中的zigbee也是大受关注。

本课题研究的是基于ZigBee技术,设计和实现了一种无线传输检测磁场新的解决方案。

设计以电脑控制端、ZigBee技术、霍尔传感器模块等硬件模块组成的检测系统。

实现当有磁场靠近传感器时指示灯亮并且上位机有提示的功能。

使得磁场检测变得方便简洁。

 

关键字:

ZigBee;干簧管传感器;磁场检测

 

Abstract

WiththeriseoftheInternetofthings,ZigBeetechnologywithitsuniqueadvantageistoprovideuswithmorehighqualityconvenienttechnologicalachievements.

ThistopicresearchisbasedonZigBeetechnology,designedandimplementedanewwirelesstransmissiontestmagneticfieldsolution.Designwithcomputercontrolend,ZigBeetechnology,hallsensormoduleofhardwaremoduletestingsystem.Implementationwhenthereisamagneticfieldsensorneartheindicatorandtheuppermachinehasthefunctionofthetip.Makethemagneticfielddetectionbecomesconvenientandconcise.

 

[keywords]ZigBeeMisensorMagneticfielddetection

1设计目的

本次设计要求实现一个PC端可以接收到下位机传来的数据并判断周围是否有强烈磁场的功能。

PC端控制软件可以用VB语言,对VB串口控件要熟悉的掌握。

同时要求学生对CC2530芯片编程和zigbee协议栈有相当程度的理解以及熟练的应用,熟悉ZigBee串口以及中断的使用,会基本的C语言熟练掌握IARFOR8051软件的使用与程序下载以及手机软件开发环境。

2设计内容

2.1磁场检测系统的工作原理

我们运用干簧管传感器采集到的信号传输给系统处理核心单片机CC2530。

当出现磁场时时,磁场会使干簧管传感器中密封于一装填有高纯度的惰性气体玻璃管中的端点处分隔的距离仅约几个微米两片簧片端点位置附近产生不同的极性,结果两片不同极性的簧片将互相吸引并闭合,电路由高电平变成低电平。

2.2设计方案

(1)了解干簧管传感器工作原理,根据原理画好PCB原理图。

(2)根据PCB原理图自制PCB板电路,将液晶屏,干簧管,CC2530单片机等相关元件设备进行集成。

(3)测试PCB电路,检查相关电路能否正常工作,以及核心板的能否正常调试。

(4)在完成电路调试后,用jlink下载器下载调试程序成功完成程序对相关元件的驱动。

(5)实验完成后做好相应的实验总结。

3实验器材

此处用CC2530芯片用作接收信息和控制芯片,实现无线遥控,单跳控制距离可以达到100米以上,L298N驱动模块(驱动电机)

(1)干簧管传感器

(2)磁铁

(3)电脑和ZigBee核心板和JLINK下载模块及其相关的驱动

(4)杜邦线若干,电池若干(最好是可以充电的)

 

4实验电路图

图3.1干簧管传感器接口电路

图3.2终端电路图

图3.3协调器电路图

 

图3.4终端PCB图

图3.5协调器PCB图

5相关模块的性能参数

干簧管传感器性能参数

1、采用进口常开型干簧管

2、比较器输出,信号干净,波形好,驱动能力强,超过15mA。

3、工作电压3.3V-5V

4、输出形式:

数字开关量输出(0和1)

5、设有固定螺栓孔,方便安装

6、小板PCB尺寸:

3.2cmx1.4cm

7、使用宽电压LM393比较器

8、干簧管需要和磁铁配合使用,在感应到有一定的磁力的时候,会呈导通状态,模块输出低电平,无磁力时,呈断开状态,输出高电平,干簧管与磁铁的感应距离在1.5cm之内,超出不灵敏或会无触发现象。

9、模块DO输出端可以与单片机I/O口直接相连,通过单片机可以检测干簧管的触发状态。

10.模块DO输出端与继电器IN端相连,组成大功率干簧管开关,直接控制高电压。

 

6软件程序功能实现模块

6.1应用层代码

//定义IO

#defineLEDP1_5//LED提醒

#definesenorP0_6//传感器检测口

/******干簧管传感器电路初始化******/

P0SEL&=~0X40;//设置P0.6为普通IO口

P0DIR&=~0X40;//在P0.6口,设置为输入模式

P0INP&=~0x40;//打开P0.6上拉电阻  

    

//传感器的判断:

 

if(events&SAMPLEAPP_SEND_PERIODIC_MSG_EVT)

{//周期性发送函数

if(senor==1)//正常

SampleApp_SendPeriodicMessage1();//正常,无磁场

else

if(senor==0)//有磁力

SampleApp_SendPeriodicMessage2();//有磁场!

21

//接收数据函数

voidSampleApp_MessageMSGCB(afIncomingMSGPacket_t*pkt)//接收一个信息包

{

uint16flashTime;

switch(pkt->clusterId)//簇id

{

caseSAMPLEAPP_CHENYUJIAO_ID:

//默认接收接收ID为自定义广播传输编号

HalUARTWrite(0,&pkt->cmd.Data[0],5);//打印串口收到数据

HalUARTWrite(0,"\n",1);//回车换行

break;

caseSAMPLEAPP_FLASH_CLUSTERID:

flashTime=BUILD_UINT16(pkt->cmd.Data[1],pkt->cmd.Data[2]);

HalLedBlink(HAL_LED_4,4,50,(flashTime/4));//小灯闪烁

break;

}

}

//发送数据函数:

voidSampleApp_SendPeriodicMessage1(void)//正常,无磁场

{

uint8L[5];

L[0]='1';

L[1]='1';

L[2]='';

L[3]='1';

L[4]='2';

if(AF_DataRequest(&SampleApp_Periodic_DstAddr,&SampleApp_epDesc,

SAMPLEAPP_CHENYUJIAO_ID,

5,

L,

&SampleApp_TransID,

AF_DISCV_ROUTE,

AF_DEFAULT_RADIUS)==afStatus_SUCCESS)

{

}

else

{

//Erroroccurredinrequesttosend.

}

}

voidSampleApp_SendPeriodicMessage2(void)//有磁场!

21

{

uint8L[5];

L[0]='1';

L[1]='1';

L[2]='';

L[3]='2';

L[4]='1';

//LED=1;

if(AF_DataRequest(&SampleApp_Periodic_DstAddr,&SampleApp_epDesc,

SAMPLEAPP_CHENYUJIAO_ID,

5,

L,

&SampleApp_TransID,

AF_DISCV_ROUTE,

AF_DEFAULT_RADIUS)==afStatus_SUCCESS)

{

}

else

{

//Erroroccurredinrequesttosend.

}

}

6.2显屏程序

#include"5110LCD.h"

voiddelay_ms(intt)

{

inti,j;

for(i=t;i>0;i--)

for(j=110;j>0;j--);

}

//------------GPIO口设置----------------------------

voidGPIO_Configuration_LCD(void)

{

GPIO_InitTypeDefGPIO_InitStructure;

GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);//改变指定管脚的映射GPIO_Remap_SWJ_JTAGDisable,JTAG-DP禁用+SW-DP使能

 

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8|GPIO_Pin_10;

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;

GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;

GPIO_Init(GPIOD,&GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_14|GPIO_Pin_15|GPIO_Pin_13;

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;

GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;

GPIO_Init(GPIOB,&GPIO_InitStructure);

//-----------配置各端口的高低电平------------//

}

//----------------------------------英文字符库-------------------------------------

//6x8font

//1pixelspaceatleftandbottom

//位置=(ASCII-32)*6

//----------------------------------------------------------------------------------

//*******************************************************************

//英文字符大小

//*******************************************************************

#defineWIDTH6

#defineHEIGHT8

//*******************************************************************

//中文字符大小

//*******************************************************************

#defineWIDTH_CN13

#defineHEIGHT_CN16

unsignedcharlcd_display[]="0123456789";

//*******************************************************************

//写一字节

//*******************************************************************

voidLCD_WriteByte(unsignedchardt,unsignedcharcommand)

{

unsignedchari;

sce0;//使能LCD

if(command==0)//传送命令

dc0;

else

dc1;//传送数据

for(i=0;i<8;i++)

{

if(dt&0x80)

sdin1;

else

sdin0;

dt=dt<<1;

sclk0;

sclk1;

}

dc1;

sce1;//关闭LCD

sdin1;

}

//*******************************************************************

//LCD初始化

//*******************************************************************

voidLCD_Init(void)

{

sce1;

res0;//产生一个让LCD复位的低电平脉冲

delay_ms(10);

res1;

delay_ms(100);

LCD_WriteByte(0x21,0);//使用水平寻址,进入拓展指令

LCD_WriteByte(0x13,0);//定液晶偏置系统1:

48

LCD_WriteByte(0xbb,0);//设定设置Vop,相当于亮度

LCD_WriteByte(0x20,0);//芯片活动使用基本指令并且水平寻址

LCD_WriteByte(0x0c,0);//设定显示模式,正常显示

LCD_Clear();

}

//---------------------------------------

//名称:

设置坐标函数

//参数:

X:

0-83Y:

0-5

//作者:

huoenlai

//-----------------------------------------

voidLCD_Set_XY(unsignedcharX,unsignedcharY)

{

Y|=0x40;

X|=0x80;

LCD_WriteByte(Y,0);//列

LCD_WriteByte(X,0);//行

sce1;

}

//*******************************************************************

//LCD清屏

//*******************************************************************

voidLCD_Clear(void)

{

unsignedchart,k;

LCD_Set_XY(0,0);

for(t=0;t<6;t++)

{

for(k=0;k<84;k++)

{

LCD_WriteByte(0x00,1);

}

}

}

//*******************************************************************

//写一个字符

//*******************************************************************

voidLCD_WriteChar(unsignedcharX,unsignedcharY,unsignedcharc)

{

unsignedchari,j;

constunsignedchar*map=&font[0][0];

c-=32;//变换

map+=c*(HEIGHT/8*WIDTH);

for(i=0;i

{

LCD_Set_XY(X,Y+i);

for(j=0;j

LCD_WriteByte(*map++,1);

}

}

//*******************************************************************//写英文字符串

//*******************************************************************

voidLCD_WriteString_en(unsignedcharX,unsignedcharY,unsignedchar*s)

{

unsignedchari=0,j=0;

while(*s)

{

LCD_WriteChar(X,Y,*s++);

X+=WIDTH;

i++;

if(i>=(84/WIDTH))

{

X=0;

Y+=HEIGHT;

i=0;

j++;

}

if(j>=(48/HEIGHT))

{

return;

}

}

}

//*******************************************************************

//写一个任意数字

//*******************************************************************

voidLCD_WriteNumber(unsignedcharx,unsignedchary,unsignedlongnumber)

{

unsignedcharnum[10]={""},i,j,k;

if(number==0)//number0时候

{

LCD_WriteChar(x,y,'0');

}

else

{

for(i=0;number>0;i++)

{

num[i]=lcd_display[number%10];//每位以字符表示

number/=10;

}

for(j=0;j

LCD_WriteString_en(x,y,num);

}

}

 

//*******************************************************************

//写一个汉字

//*******************************************************************

voidLCD_Write_cn(unsignedcharrow,unsignedcharpage,unsignedcharc)//row:

列page:

页dd:

字符

{

unsignedchari;

LCD_Set_XY(row,page);//列,页

for(i=0;i<12;i++)

{

LCD_WriteByte(chinese1[c*24+i],1);

}

LCD_Set_XY(row,page+1);//列,页

for(i=12;i<24;i++)

{

LCD_WriteByte(chinese1[c*24+i],1);

}

}

 

7实物展示

8设计总结

经过这一段时间的课程实践,我们收获颇多。

在老师的帮助与指点下,我们从对ZigBee几乎一无所知到画底板原理图、PCB图,制板焊接等,到写程序、下载程序、调试程序的过程中,我们遇到了很多困难,但最后都在自己的努力和同学的帮助下顺利完成了课程实践。

我们不仅学会了有些实用的东西,就像画电路图、制板、焊接、用j-link下载程序等各种技巧与方式,还明白了团结的力量是巨大的,收获了友谊。

分工合作让我们的工作变得更简单,同时也大大提高了工作效率。

不管我们做出来的东西是好是坏,最起码我们从中学到了知识、技巧,我们学到的才是属于我们的。

这次课程实践是给们留下了深刻的印象,感谢老师和同学在实践过程中给予的帮助,我们受益匪浅!

10实验小组成员评分

《嵌入式综合实践》成绩单

学号

姓名

成绩

签名

123921014

陈玉姣

90

123921027

郭魁

90

113621030

李丙文

90

123921039

肖回回

90

123921052

袁媛

90

 

指导老师签名:

2015年5月7日

参考文献

[1]无线龙,zigbee无线网络原理[M],北京:

冶金工业出版社.

[2]YuChengbo.LiuYanfei.WangChengResearchonZigBeewirelessworkbasedonModbusprotocol20092.

[3]许洪华.刘科基于Modbus协议的ZigBee工业以太网网关设计[期刊论文]-微计算机信息2009.

[4]刘桂臣.阳宪惠Modbus报文有线/无线混合传输的实现2008.

[5]涂煊.彭瑜.周怡颋Modbus通信协议的紫蜂无线传输网络的研究[期刊论文]-自动化仪表2007.

[6]Zig,BeeAllianceZigBee-specification2005.

[7]WilligA.MatheusK.WoliszAWirelesstechnologyinworks[外文期刊]2005(06)引证文献.

[7]叶琼茹.杨冠鲁光伏发电无线远程监控系统的设计[期刊论文]-黎明职业大学学报2012.

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

当前位置:首页 > 经管营销

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2