当前位置:首页 > 嵌入式 > 嵌入式硬件

阐述基于蓝牙技术的无线传感器技术模块的设计及实现方法。详细描述了MC9S12DT128单片机在CodeWarrior开发环境下模/数转换的中断控制方式,以及主从蓝牙模块的驱动过程。

系统包含主从2个蓝牙模块:主蓝牙模块由PC机控制;从蓝牙模块采用Freescale公司的 MC9S12DT128单片机作为核心处理器。

引言

  微传感器技术的发展和广泛应用,使得无线传感器网络成为传感器网络发展的必然趋势。无线传感器网络是由大量无处不在的、具有通信与计算能力的微小传感器节点,密集布设在无人值守的监控区域,构成的能够根据环境自主完成制定任务的“智能”自治测控网络系统。由于无线传感器网络长期在无人值守的状态下工作,无法经常为传感器节点更换电源,因此能耗成为无线传感器网络设计的关键问题之一,在系统设计时必须尽可能降低系统能耗。本文以无线传感器网络技术为理论依据,以教学样机系统为开发目标,提出了以MC9S12DT128为核心处理器,由蓝牙无线通信协议实现的无线传感器网络节点的设计方法。

  1 硬件设计

  1.1 系统原理

  作为无线传感器网络内的一个节点,本系统由传感器单元、信号调理电路、A/D转换电路、信号处理单元(由单片机实现)、从蓝牙模块、主蓝牙模块以及PC工作站7部分组成,如图1所示。

  具体工作过程是:传感器采集的环境中的信号量经过调理电路,送至MC9S12DT128单片机的模拟量输入端口;由单片机内置的ATD模块实现 A/D转换,并对转换结果进行处理,将处理完毕的信号通过UART传送至从蓝牙模块。主蓝牙模块由PC机控制,主从蓝牙模块通过蓝牙协议实现数据交换。

500)this.width=500" border=0>

图1 系统原理框图

  1.2 MC9S12DT128简介

  MC9S12DT128是Freescale公司的高性能16位单片机,采用5 V供电,内核为比68HC12的内核CPU12更快的S12,总线频率可达25 MHz。其特点是拥有丰富的I/O模块和工业控制专用的通信模块,如图2所示,工业应用非常广泛。

500)this.width=500" border=0>

图2 MC9S12DT128片内资源

  MC9S12DT128单片机内部带有5 V转换为2.5 V的电压调整器,其内核电压仅为2.5 V,功耗很低;片外I/O采用5 V供电,但输出功率软件可调,最低可将输出功率降低为全功率的50%。此外,单片机提供了停止模式、休眠模式和等待模式3种低功耗的工作模式供用户选择;也可将部分通信模块设置为休眠模式,以降低系统的功耗。MC9S12DT128不仅运算速度快,而且功耗可以降至很低,适用于无线传感器网络。

  1.3 主从蓝牙模块

  本系统包含相互配对的主从两个蓝牙模块。从蓝牙模块为日立公司的DOCENGMBM0202蓝牙模块,遵从蓝牙1.1规范,射频输出为 class2级。其支持多种接口:USB接口、UART接口、PCM语音接口、PIO通用I/O口和ISP接口。另外,本系统中采用UART实现 MC9S12DT128和蓝牙模块之间的通信,以及蓝牙模块的驱动和信号的传输。

  主蓝牙模块采用基于CSR的BlueCore02芯片开发的金瓯蓝牙开发平台3.0版。它提供了UART、RS232、USB、SPI接口供用户进行开发、调试,音频接口可进行蓝牙语音的传输。本系统中PC机通过RS232接口控制主蓝牙模块。

  1.4 传感器选择

  为降低系统能耗,本系统所选用的传感器均为低功耗的小型传感器。其中,温度传感器选用Maxim公司的MAX6611。正常工作状态下,供电电流仅为150 μA,功耗为0.75 mW;在SHDN脚接地时处于省电状态,供电电流仅为1 μA,功耗仅为5 μW。湿度传感器选用Honeywell公司的HIH4000,其正常工作状态下的供电电流仅为200 μA,功耗为1 mW。压力传感器选用Motorola公司的MPX4100A,其正常工作状态下的供电电流为7 mA,功耗为35 mW。3个传感器在正常工作状态下的总功耗为36.75 mW;在节电工作状态下,总功耗为36.005 mW。

  2 软件设计

  2.1 MC9S12DT128的中断控制方式

  本系统中,MC9S12DT128采用集编辑、编译、调试、程序下载于一体的开发环境CodeWarrior4.5进行开发。CodeWarrior4.5是一种交叉编译器,支持高级语言(如C、C++和Java),以及大部分微控制器的汇编语言。

  中断控制方式是微处理器发展的一个重要里程碑,是提高CPU的工作效率、降低系统功耗的有效方式。

  在CodeWarrior4.5下,中断函数的定义只有2种方法:采用pragma TRAP_PROC或者interrupt关键字进行定义。具体使用方法分别为(假定中断函数名为INCount):

  ① #pragma TRAP_PROC
    void INCount(void){
      Tcount++;
  }
  ② interrupt void INCount(void){
      tcount++;
  }

  对应于中断函数不同的定义方式,CodeWarrior4.5下初始化中断向量表也有2种方法:

  ① 采用VECTOR ADDRESS或者VECTOR关键字。具体实现方法为,在工程的.prm文件中加入中断函数的入口地址:
  VECTOR ADDRESS0x8AINCount
  其中,0x8A为中断入口地址。或者,加入中断向量标号:
  VECTOR 69 INCount
  其中,69为中断向量标号。
  ② 采用关键字interrupt。具体实现方法为在中断函数定义时加入中断向量标号:
  interrupt 69 void INCount(void){
    tcount++;
  }
  其中,69为中断向量标号。

 2.2 A/D转换中断方式的实现

  本系统中,传感器采集到模拟信号的A/D转换是通过单片机的ATD模块实现的。对ATD模块采用中断的控制方式,可以节约系统资源,提高系统执行速度。

  首先,必须在ATD模块的初始化程序中将ATD模块设置为中断模式,启用ATD转换完成中断。转换完成中断函数名为ATD0,其功能为读取A/D转换结果,采用interrupt关键字进行定义:

  #pragma CODE_SEG ATD0Interrupt_SEG
  interrupt void ATD0(void){
    ATD0STAT0_SCF = 0;//关中断
    MeasureResult[0]=ATD0DR0H;
    MeasureResult[1]=ATD0DR0L;
    MeasureResult[2]=ATD0DR1H;
    MeasureResult[3]=ATD0DR1L;
    MeasureResult[4]=ATD0DR2H;
    MeasureResult[5]=ATD0DR2L;
  }
  #pragma CODE_SEG DEFAULT

  中断函数入口通过在预编译文件中添加ATD中断入口地址0xFFD2实现,即在P&E_Multilink_CyclonePro_linker.prm中加入语句:

  VECTOR ADDRESS 0xFFD2 ATD0

  MC9S12DT128的Flash空间为128 KB,采用分页管理方式,其地址分配为:

  RAM = READ_WRITE 0x0400 TO 0x1FFF;
  /*unbanked Flash*/
  ROM_4000 = READ_ONLY0x4000TO0x7FFF;
  ROM_C000 = READ_ONLY0xC000 TO0xFEFF;
  /*banked Flash*/
  PAGE_38=READ_ONLY0x388000TO0x38BFFF;
  PAGE_39=READ_ONLY0x398000TO0x39BFFF;
  PAGE_3A=READ_ONLY0x3A8000TO0x3ABFFF;
  PAGE_3B=READ_ONLY0x3B8000TO0x3BBFFF;
  PAGE_3C=READ_ONLY0x3C8000TO0x3CBFFF;
  PAGE_3D=READ_ONLY0x3D8000TO0x3DBFFF;

  可以看到Flash空间被划分为两部分:unbanked Flash以及banked Flash。对于banked Flash,定义在其空间内的函数只能被本页的程序所调用;而定义在unbanked Flash内的函数则可以为工程内任意程序所调用。中断函数想要正确地响应中断请求,必须放在unbanked Flash内,因此需要将中断函数置于特定的位置。可以从A/D中断函数ATD0的定义中看出,ATD0被定义在CODE_SEG ATD0Interrupt_SEG部分。CODE_SEG ATD0Interrupt_SEG是自己定义的ATD0中断代码段,其存放位置在 P&E_Multilink_CyclonePro_linker.prm文件的PLACEMENT关键字下定义:

  PLACEMENT?
  ATD0Interrupt_SEG,
  COPY
  INTOROM_C000

  这样,就将ATD0Interrupt_SEG的位置定义在了unbanked Flash空间的ROM_C000。

  最后,在工程中建立ATD0Interrupt.c文件,在其中声明中断函数ATD0()为外部函数:

  #pragma CODE_SEG ATD0Interrupt_SEG
    extern void ATD0();
  #pragma CODE_SEG DEFAULT

  这样,就能保证置于任意存储空间的主程序在请求中断时,都可以得到及时、正确的中断响应。

  2.3 主从蓝牙模块驱动

  蓝牙技术是一种使用2.4 GHz频段的短距离无线通信技术。与其他几种无线通信方式比较,蓝牙的传输速率并不是最快的,但由于其具有主从式的自组织微微网、低功耗、频段的开放性等优势,因此在无线传感器网络的应用中具有良好的前景。

  本设计中的无线传感器网络模块正是采用蓝牙通信实现的。传感器采集的信号经过A/D转换,转换结果需要通过蓝牙无线通信传至PC机。蓝牙系统能够支持2种连接,即点对点连接和点对多点连接。这就形成了2种网络结构:微微网和散射网。本系统属于只有一个从设备的微微网。这个微微网中,主蓝牙为与 PC机相连的蓝牙模块,从蓝牙由与单片机相连的蓝牙模块担任。主从蓝牙的区别在于:主蓝牙可以主动发出指令搜索蓝牙设备,建立和断开链接;而从蓝牙则必须等待主蓝牙的指令才能开始工作。

  PC机与主蓝牙模块、单片机与从蓝牙模块之间都是串行通信,波特率为57 600 b/s。主从蓝牙模块的初始化过程大致相同,通过串行通信顺序发送如下10条指令:

  Reset[01 03 0C 00]
  Read_Buffer_Size[01 05 10 00]
  Clear:Set_Event_Filter[01 05 0C 01 00]
  Write_Scan_Enable[01 1A 0C 01 03]
  Write_Authentication_Enable[01 20 0C 01 00]
  Write_Voice_Setting[01 26 0C 02 60 00]
  Set_Event_Filter[01 05 0C 03 02 00 02]
  Write_Connection_Accept_Timeout[01 16 0C 02 00 20]
  Write_Page_Timeout[01 18 0C 02 00 30]
  Read_BD_ADDR[01 09 10 00]

  蓝牙模块接收指令后返回相应的指令执行状态,处理器判断返回的指令状态,确定无误之后,才能发送下一条指令;否则,当前指令必须重新发送。主从蓝牙模块的工作流程如图3所示。

500)this.width=500" border=0>

图3 主从蓝牙模块工作流程

  采用VC6.0开发监控程序,将蓝牙指令封装在函数中,实现PC机对主蓝牙模块的控制。具体包括:初始化并驱动其开始工作,主动搜索从蓝牙模块,完成链接,并将指令执行状态及搜索到的蓝牙设备地址显示出来;控制与从蓝牙模块的通信,对主蓝牙模块接收到的数据进行处理,实时刷新数据,显示温度、湿度、压力传感器的测量结果。系统运行结果如图4所示。

500)this.width=500" border=0>

图4 样机系统运行结果

  结语

  本系统以MC9S12DT128为核心处理器,采用蓝牙技术实现上位机与传感器节点的无线通信,完成了一个具有3个传感器的无线传感器网络模块的开发。实验证明,本系统具有功耗低、稳定性高、实时性好、数据传输稳定等特点,其实现是建立无线传感器网络微传感器节点的有益尝试。

  参考文献

  [1] 于海斌,曾鹏,等.智能无线传感器网络系统[M]. 北京:科学出版社,2006.
  [2] 严紫建,刘元安.蓝牙技术[M].北京:北京邮电大学出版社,2001.
  [3] 邵贝贝.单片机嵌入式应用的在线开发方法[M].北京:清华大学出版  社,2004.
  [4] 杨国田,白焰. MOTOROLA 68HC12系列微控制器原理、应用与开发技术[M].北京:中国电力出版社,2003.
  [5] Axman. MCU Project Board2 user Guide,2005.
  [6] Motorola Inc. MC9S12DT128B Device User Guide.vol.09,2002.

  肖胜然(硕士),主要研究方向为单片机与嵌入式实时操作系统;
  周浩敏(教授),主要研究方向为传感器技术与DSP技术;
  于宁(硕士),主要研究方向为ARM、Linux在轨道交通方面的应用。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭