苏州永节电子科技有限公司
设为首页 | 收藏本站
新闻详情

单片机设计中蓝牙模块应用

浏览数:11

      下面是关于蓝芽技术的调制算法,我认为只要把蓝芽模块加入单片机就可以了,而不需要通过单片机编程来实现具体的算法,只需编写使两个模块的接口就可以了,即单片机发送信号时的激励程序,接收到外部信号后的处理程序。剩下的部分由作为硬件设备的蓝芽自己处理。但我不能肯定,我去查一下。

   Bluetooth是一种短距离无线通信技术,用来代替电缆或连线。要了解 GFSK,它需要将数字信号转换为在空间传输的模拟信号,它采用的调制方式是频移键控,以下简称 GFSK,要想了解 GFSK,就必须先说 FSK。

FSK:简单地说,不同编码单元使用不同的频率调制,比如说二进制编码,有0和1两种码元,然后我需要两个频率f1和f2来调制数字0和1,在接收端根据频率f1代表数字0,频率f2代表数字1的道理。

GFSK:在进行 FSK调制之前,首先使用高斯低通滤波器来限制信号的频谱带宽,这样可以得到更紧凑的频谱,即滤掉高频信号,但保留足够的频带能量,以使信号能够顺利地恢复接收。高斯低通滤波器带宽受限,基带信号成形,形成高斯脉冲信号。以下是加入高斯低通滤波器的好处。

在该信号频谱覆盖范围内,我使用-1表示最低频部分,用1表示该信号频谱覆盖范围内的最高频率成分。当一个信号从-1跳到1,或者从-1跳到-1时,调制信号的波形变化太快了,很有可能导致新的频率成分出现在原信号频率范围内,那么我们的信号已经失真了,这是我们最不希望看到的结果。对于 FSK来说,这是一个隐忧。高斯低通滤波器使信号平滑,与-1和-1相同,因为滤波器限制带宽,所以实际效果是-1,-98,-93,---96,99,1,这样的情况下,用这些变化平滑的数字脉冲信号来调制载波,会减少多余频率成分的现象。

所以为什么蓝牙技术会被用来代替 FSK?由于 FSK技术对信号的频谱宽度没有任何限制,而且频率间的范围可能非常大,导致跳变太快,从而造成失真的可能性,从而造成频谱利用率低下(虽然现在还不明白),因此采用 GFSK技术。此外,有限的带宽也能节约电流,这对手机和单片机的使用寿命有利。


由于高斯低通滤波的原理是不需要深入研究的,因为滤波器是一种元件,直接加到了蓝芽模块中。假如真要编程的话,那我们只需要把滤波器出来的信号进行处理,也就是说,用程序来表达 FSK算法。

下面我结合具体的蓝芽模块来说下GFSK调制在其中的应用

蓝芽的载波选用全球公用的2.4Ghz

真实的 RF通道是 f=2402 k×1 mhz, k=0,1,2,…,78的频率段,采用了跳频方式扩展频带,频率可达1600跳/s。可以获得79个1 mhz带宽的通道。Bluetooth设备采用 gfsk调制技术,通信速率为1 mbit/s,实际有效速率为721 kbit/s,通信距离为10 m,发射功率为1 mw;在100 mw发射功率下,通信距离可达100 m。

目前,在短距离数据传输中,常用的传输方式是有线传输、红外传输和蓝牙传输。电缆传输是比较传统的数据传输方式,需要传输电缆。如果设备为移动设备或设备数量多,这就会带来很大的不便;红外传输常常受到温度、辐射等干扰,并且不能通过实体传输;使用蓝牙技术可以很好地消除这两个缺点,但目前蓝牙技术普遍应用于高端电子设备。对低端的电子设备来说,蓝牙技术的应用仍然是一个有待解决的问题。为了解决这一问题, 苏州永节电子科技有限公司设计了一套基于蓝牙技术和单片机的数据传输系统,以供嵌入式电子厂商参考。

1    系统的整体架构
该系统由键盘、单片机、LED显示器、固化了电缆通信协议(RFCOMM)的蓝牙模块和PC机组成。

2    系统的工作原理
它以单片机和蓝牙模块为核心。当系统通电后,单片机初始化自身及所有外围接口,蓝牙模块主动寻找其他设备并自动建立连接,然后系统进入准备等待状态。根据数据传输的方向,系统可分为发送和接收两个子系统。在发送子系统中,单片机接收键盘发出的键值,并根据一定的协议规则将其转换成相应的显示。与此同时,单片机调用自己的键值分析程序,分析用户要输入数据还是发送数据。在输入状态下,单片机记录用户每一次输入的数据,并对其进行打包、存储,直到用户按“发送”键为止。这个时候单片机变成了发送状态,控制蓝牙模块把刚才存储的数据发送出去。
在接收子系统中,单片机根据事先约定的协议接收来自蓝牙模块的数据,直至遇到数据结束符。然后单片机对数据进行分析、解包,并将其显示在显示器上以增强可操作性,本数据传输系统考虑了单片机和 PC机两种情况。各子系统均可采用单片机和蓝牙模块接口,也可采用 PC机、蓝牙模块接口。使用这种技术后,不仅能实现单片机之间的数据互传,而且还能与 PC机进行数据互传。
3      系统的程序设计
单片机上电后,首先要初始化自身。在本系统中,使用了键盘扫描和LED显示接口芯片8279。因此在主程序中还要对8279进行初始化:
                COM8279 = 0xd1;      //总清除

             COM8279 = 0x00;      //8*8字符显示,左边输入,编码扫描键盘, 双键封锁
                COM8279 = 0x50;      //读FIFO RAM命令
                COM8279 = 0x90;      //写显示RAM(数码管选择)

之后,可以把程序分为接收、发送和显示三个主要部分。
3.1    接收部分
系统采用查询的方法采集蓝牙模块传送过来的串行数据。对键盘的按键值进行设定由个人的习惯来进行设定。以C语言的形式的伪代码来表示,接收函数的伪代码如下:

void RcvData(void){
while(DataReceivingNotDone){
    ReceiveNextBit;
}
}
3.2    发送部分
键盘数据经过处理后,转化为串行数据发送到蓝牙模块,再由蓝牙模块发送出去。发送函数的C语言形式的伪代码为:

void SendData(void){
if( KeyValue < 10 ){    //如果数据是一位数
        SendOneByte();      //发送这一位
}
else{                   //如果数据是两位数
        SendTwoBytes();     //分成两位发送,先发送高位再发送低位
}
}
3.3    显示部分
系统中使用的是八位LED显示,通过控制显示的接口芯片8279,可以控制LED显示的内容。显示函数如下:

void DispLong(unsigned int dat,unsigned char addr){
    COM8279 = 0x90 + addr;
    DAT8279 = disp_tab[0];
    COM8279 = 0x90 + addr;
    while(dat){
        DAT8279 = disp_tab[dat % 10];
        dat /= 10;
    }
}
4     结束语
无线通信的发展方向是短距离通信。目前, Bluetooth已被广泛使用,但这类应用通常仅限于高端电子产品。本设计利用低成本的单片机与蓝牙模块进行技术集成,使蓝牙技术也可应用于低端电子产品。如有需要可联系51hei.com,本文设计的数据传输系统在实际应用中运行良好,可为嵌入式电子产品供应商提供技术参考。