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