基于 zigbee 的无线测温实验.docx
《基于 zigbee 的无线测温实验.docx》由会员分享,可在线阅读,更多相关《基于 zigbee 的无线测温实验.docx(11页珍藏版)》请在冰豆网上搜索。
![基于 zigbee 的无线测温实验.docx](https://file1.bdocx.com/fileroot1/2023-1/7/9f56cb9d-3a82-4dde-b9ed-a9fa13ed8421/9f56cb9d-3a82-4dde-b9ed-a9fa13ed84211.gif)
基于zigbee的无线测温实验
基于ZigBee的无线测温系统
摘要:
本实验采用TI公司的cc2430作为核心,利用了该芯片上丰富的资源,实现小车的zigbee无线控制和实时测量温度。
Zigbee是IEEE802.15.4协议的代名词,主要适合用于自动控制和远程控制领域,可以嵌入各种设备,是一种便宜的,低功耗的近距离无线组网通讯技术。
本实验中,打开IAR开发环境,打开程序工程,接上仿真器,并把仿真电缆连到CC2430模块上,把程序下载到两个模块上,两个模块之间通过PC机串口发送命令到另一个模块,另一个模块的zigbee放在小车上,可以驱动小车按照预定的轨迹前进,并实时测量温度值,显示到电脑界面上。
关键词:
无线通信,实时测量显示
目录
1引言…………………………………………………………………………3
2功能概述及方案设定………………………………………………………3
2.1功能概述…………………………………………………………………3
2.2具体方案设定……………………………………………………………4
2.2.1小车控制模块设计……………………………………………………5
2.2.2无线通信模块设计……………………………………………………7
2.2.3测温模块设计…………………………………………………………12
3总结…………………………………………………………………………14
1引言
当今社会,科学技术日新月异,时代前进的步伐越迈越宽,应用自动化设备,计算机处理,现代化通讯,数字化信息,现代化显示设备等高新技术而建立的现代化智能,监控等系统已经得到充分的发展与应用,智能通信也就应运而生。
同时,在建设以人为本的和谐社会的过程中,智能通信能够完成考古发掘,海底揭密,宇宙探索等危险作业,以保证人身安全。
凭借参加本次课外实验机会,我们能够对嵌入式系统的开发有进一步的学习和理解。
CC2430是一颗真正的系统芯片(SoC)CMOS解决方案。
这种解决方案能够提高性能并满足以ZigBee为基础的2.4GHzISM波段应用对低成本,低功耗的要求。
它结合一个高性能2.4GHzDSSS(直接序列扩频)射频收发器核心和一颗工业级小巧高效的8051控制器。
CC2430包含一个DMA控制器,集成了4个振荡器用于系统时钟和定时操作,也集成了用于用户自定义应用的外设,CC2430内集成的其他外设有:
实时时钟;上电复位;8通道,8-14位ADC;可编程看门狗;两个可编程USART,用于主/从SPI或UART操作。
为了更好的处理网络和应用操作的带宽,CC2430集成了大多数对定时要求严格的一系列IEEE802.15.4MAC协议,以减轻微控制器的负担。
我们的系统主要分为控制小车模块、无线通信模块、测温模块。
前一模块主要是用到控制IO口和定时器,后一模块主要用到SPI总线和串口。
2功能概述与方案设定
2.1功能概述
我们设计的“基于ZigBee的无线小车测温系统”主要是让小车从预定的位置按一定路线行走,并实时测量温度,传输给电脑显示。
系统主要分为控制小车模块、无线通信模块、测温模块。
前一模块主要是用到控制IO口和定时器,后一模块主要用到SPI总线和串口。
另外,无线通信模块还具有自动组网的功能,在多台小车之间也可以通信,这样,多台小车就可以很大程度上提高工作效率。
其效果图如下:
图2-1通信示意图
2.2具体方案设定
我们将系统分为小车控制模块、无线通信模块、测温模块这三个大模块。
其中小车控制模块包括小车以及稳压电路设计模块;无线通信又包括小车这一端和与电脑相连的一端;测温模块主要用到了DS18B20及相应的外围电路设计。
图2-2小车端系统框图
2.2.1小车控制模块设计
稳压模块采用9V电池为直流电机供电,将9V电压降压、稳压到5V,为外围芯片供电,再降压稳压到3.3V给CC2430芯片供电, 我们利用lm7805这块芯片将9V的电池降压到5V,LM117芯片将5v降压到3.3v。
图2-3稳压模块1
图2-4稳压模块2
电机驱动模块采用专用芯片L298N作为电机驱动芯片。
L298N是一个具有高电压大电流的全桥驱动芯片,它相应频率高,一片L298N可以分别控制两个直流电机,而且还带有控制使能端。
用该芯片作为电机驱动,操作方便,稳定性好,性能优良。
小车控制模块是由专用芯片L298N来完成的,我们用四个IO口来控制小车的运动,其中两个IO口是产生PWM波,控制电机的速度;另外两个IO口又分成两组,分别控制两个电机的正反转,来实现小车的变速前进、转弯等动作。
相应程序代码如下:
voidt1init(void)
{
EA=1;//开总中断
T1IE=1;//开T1中断
OVFIM=1;//开T1溢出中断
T1CC0L=0xD4;//溢出值低8位0x30d4=12500
T1CC0H=0x30;//溢出值高8位中断一次50ms
}
//t1计数中断子程序
HAL_ISR_FUNCTION(T1_ISR,T1_VECTOR)
{
EA=0;//关中断
m2--;
EA=1;//开中断
T1CTL&=~0x10;//清中断标志
}
//向前和向后走时将距离转化为时间/////////////////////待调
uint8zhuanhuan1(uint8lt)
{lt=lt*3;
returnlt;
}
//向左和向右拐时将角度转化为时间、、、、、、待调
uint8zhuanhuan2(uint8jt)
{jt=jt/9;
returnjt;
}
2.2.2无线通信模块设计
无线通信模块的作用非常重要,它为小车的行走指明了方向,也拓展了小车的其他功能。
当小车行走时,每隔一定时间将数据譬如速度、温度信息传送给PC机,当小车行走到终点,小车该如何走呢?
如果PC可以实时和小车通信,从而控制小车的行动,则小车就可以选择另外一条路进行探测了。
我们的无线模块是Zigbee的,有了此无线通信模块,我们的小车系统就可以不是一辆小车而是多辆小车共同测量目标了。
成品图如下:
图2-5成品图1
图2-6成品图2
硬件方面我们的射频芯片采用德州公司的CC2430芯片,用于数据的无线收发,它有64字节RX和TX数据FIFO;SPI用于MCU与射频芯片CC2430之间的通信;直流电源及电源保护电路是必不可少的部分;RS232串口及电平转换提供主芯片与PC机的接口。
CC2430的主要特性:
图2-7CC2430芯片
工作频率:
2.4GHz―2.5GHzISM微波段识别距离:
有效识别距离可达1500m环境温度:
在-40℃-85℃抗干扰性:
使用频道隔离技术,多个设备互不干扰通信接口:
RS232/RS485/RJ45电源:
5V/9V/12V-3ADC电源
无线通信模块主要由射频芯片CC2430构成,而我们采用的是它的典型电路,电路图如下:
图2-8CC2430通信电路
它与CC2430的通信是通过SPI总线来实现的,它的接口主要有SI、SCLK、SO、GDO0、GDO2、CSn。
其中SI、SCLK、SO即为利用SPI总线通信的几个接口,另外GDO0的作用是当接受到报文的时候由低置为高,GDO2的作用是当开始发送一个报文时由低置为高,这两个接口给MCU提示报文的接受与发送是否完成。
CSn用来作片选。
相应程序代码如下:
voidSampleApp_MessageMSGCB(afIncomingMSGPacket_t*pkt)
{
//收到后回复提醒
uint8i;
p1=&pkt->cmd.Data[0];
for(i=2;i<=*p1;i++)
{
pkt->cmd.Data[i]=pkt->cmd.Data[i]-48;//将串口输入的字符型数据还原
}
p=&pkt->cmd.Data[1];//数据处理
if(*p=='q'||*p=='h'||*p=='z'||*p=='y')//如果为路径数据,则存入lujing[]数组中
{lujing[j++]=*p;
if(*p1==3)
*(p+1)=*(p+1)*10+*(p+2);
elseif(*p1==4)
*(p+1)=*(p+1)*100+*(p+2)*10+*(p+3);
lujing[j++]=*(p+1);//jj;
shoudaotixing();
}
elseif(*p=='k')//如果为开始信号,则小车开始读取lujing[]中的数据,并开始运行
{lujing[j]=*p;//先将字符k存至lujing中
xiaocheyunxing();
j=0;
}
elseif(*p=='w')//如果为开始传递温度的信号,则子节点开始向coordinator发送温度数据
{kt=!
kt;
shoudaotixing();
}
elseif(*p=='d')
{i=*(p+1);
zkb=dw[i];
shoudaotixing();
}
2.2.3测温模块设计
DS18B20是美国DALLAS半导体公司继DS1820之后最新推出的一种改进型智能温度传感器。
与传统的热敏电阻相比,他能够直接读出被测温度并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。
可以分别在93.75ms和750ms内完成9位和12位的数字量,并且从DS18B20读出的信息或写入DS18B20的信息仅需要一根口线(单线接口)读写,温度变换功率来源于数据总线,总线本身也可以向所挂接的DS18B20供电,而无需额外电源。
因而使用DS18B20可使系统结构更趋简单,可靠性更高。
他在测温精度、转换时间、传输距离、分辨率等方面较DS1820有了很大的改进,给用户带来了更方便的使用和更令人满意的效果。
此处可以直接和核心芯片相接测温。
相应程序代码如下:
voidread_data(void)
{
uint8temh,teml;
init_1820();//复位18b20
write_1820(0xcc);//发出转换命令搜索器件
write_1820(0x44);//启动
Delay_nus(500);
init_1820();
write_1820(0xcc);
write_1820(0xbe);
teml=read_1820();//读数据
temh=read_1820();
sensor_data_value[0]=teml;
sensor_data_value[1]=temh;
}
////////////处理数据部分/////////////////
uint16DataChange(void)
{
uint8temh,teml;
uint16num;
read_data();
teml=sensor_data_value[0];
temh=sensor_data_value[1];
num=temh;//将两个字节整合到一个unsignedint中
num<<=8;
num|=teml;
num=num*0.0625*100;
return(num);//返回值
}
voidwendushuzhi(void)
{
uint8n;
unsignedintm=0;
unsignedintT;
init_1820();
while(m<20)
{Delay_nus(50000);
m++;
}
T=DataChange();//读取温度值,是一个4位的十进制数,如:
2345
temperature[0]=T/1000+48;
temperature[1]=T/100%10+48;
temperature[2]='.';
temperature[3]=T%100/10+48;
temperature[4]=T%10+48;
temperature[5]='';
temperature[6]='C';
for(n=7;n>0;n--)
{
temperature[n]=temperature[n-1];
}
temperature[0]=7;
}
3总结
我们所完成的工作是对硬件的设计并作了些验证性试验,对于稳压模块,我们搭起了电路,但是效果不是很好,还有待改进;对于无线通信模块我们是用CC2430来实现通信的,效果不错,所以在我们的小车系统里,为节约成本,连接在PC端的射频模块我们就采用与CC2430连接,通过串口与PC机通信;对于小车控制模块,我们能够正常的控制小车的运动和转弯;对于软件部分,我们只是做了大概的设计,还有待我们具体设计。