嘿!您似乎在 United States,您想使用我们的 English 网站吗?
Switch to English site
Skip to main content

无线个人区域网络(Wireless Personal Area Network,WPAN)(三):蓝牙Bluetooth

之前的一编Blog跟大家讨论完用于感测和远端控制的低传输率ZigBee技术之后,今次就同大家讲一下较为高速和普及的蓝牙技术(Bluetooth)啦!相信大家都对蓝牙这个名字不会感到陌生,手机上的蓝牙功能和蓝牙耳机大家都可会用过,但是或者你会像我一样,对背后的技术一知半解,甚至不知道蓝牙为什么叫蓝牙。这编Blog 就是去说明一下蓝牙是什么,其实际上的应用和其他传输技术的分别。

蓝牙名字的由来?

“蓝牙”(Bluetooth)原是十世纪统一了丹麦的国王Harald Blatand-英直译为Harold Bluetooth的名字,现取其“统一”的含义,用来命名意在统一无线局域网通讯标准的蓝牙技术。名字于是就这么定下来了。

蓝牙(Bluetooth)


蓝牙是一个基于IEEE802.15.1之上的无线传输技术,常用于短距离的无线个人局域网(Wireless PAN),最初由爱立信于1994创立,原本是设计用来替代RS-232数据线,后来则由蓝牙技术联盟(Bluetooth Special Interest Group)订定技术标准。蓝牙技术联盟负责制定蓝牙技术规范,审核设备资格,若果设备想印上蓝牙商标,就必须交由蓝牙技术联盟来去审核设备是否达到标准。

同Zigbee一样,蓝牙技术都仔细分开不同的规范层,由最低的物理层(Physical layer) 到数据链路层(Data link layer) ,之上再有中间件层(Middleware layer) 以及最高的应用层(Application layer)。 IEEE802.15.1其实就是指蓝牙物理层(Physical layer) 的标准,中间的数据链路层和中间件层则交由蓝牙技术联盟制定,而最高的应用层则由不同生产商自行编写,透过这个做法,蓝牙技术就可以使不同设备之间能够沟通。

应用前景

蓝牙技术的应用范围相当广泛,可以广泛应用于局域网络中各类数据及语音设备,如PC、拨号网络、笔记本电脑、打印机、传真机、数码相机、移动电话和高品质耳机等,蓝牙的无线通讯方式将上述设备连成一个无线个人区域网络(WPAN),多个WPAN之间也可以进行互连接,从而实现各类设备之间随时随地进行通信。应用蓝牙技术的典型环境有无线办公环境、汽车工业、家电、医疗设备以及学校教育和工厂自动控制等。目前,多种蓝牙的产品问世,一些芯片厂商更不断着手改进具有蓝牙功能的芯片。与此同时,一些颇具实力的软件公司会推出自已的软件,或者与芯片厂商合作推出蓝牙技术实现的具体方案。蓝牙技术的普及全靠以下几个特点:首先是低成本;其次是方便、实用;第三是安全、稳定、可靠。蓝牙将迅速改变人们的生活与工作方式,并大大提高人们的生活质量。

蓝牙应用示范

现在常用的蓝牙模块非RN-42 莫属!RN-42是RN-41的Class2 版本,Class2意味着传输距离更远。 RN-42是一块短距离,可以靠电池运作,低耗的蓝牙模块。 RN-42设计用来进行短距离的串联传输,例如:SSP, HID和UART接口。 RN-42非常适合用于嵌入式系统,甚至可以外接在现有系统之上。今次我将会使用mbed作为开发平台,因为mbed的线上编译器实在太方便了,加上又有大量的library及支援,我都颇为推荐的!

以下的示范是可以将在智能手机,如iPhone和Android Phone上打的任何字串都传送去电脑!
首先你需要一个console程式,例如超级终端机(可惜自Windows XP之后已经没有了)或Tera Term  ,我个人会喜欢用TeraTerm Pro(这里下载)多一点。开启Tera Term之后,选对你用来连接mbed 的com port,就设定完成了,之后就是在mbed开发版上花功夫了。

以下就是模块与mbed的接驳方法:

RN42 Pin

mbed Pin

1 - GND

GND

11 - VDD

Vout

12 - GND

GND

13 - RX

p9

14 - TX

p10

28 - GND

GND

29 - GND

GND

 注意以下程式用以下标准传递信号:

    • Baud rate 115,200
    • 8 bits
    • No Parity
    • 1 stop bit

以下就是程式码:


#include "mbed.h" 

Serial RN42(p9, p10);

Serial pc(USBTX, USBRX);

DigitalOut RN42_led(LED1);

DigitalOut pc_led(LED2);

int main() {

    RN42.baud(115200);

    pc.baud(115200);

  while(1) {

   if(pc.readable()) {

  RN42.putc(pc.getc());

  p; pc_led = !pc_led;

 }

  if(RN42.readable()) {

   pc.putc(RN42.getc());

   RN42_led = !RN42_led;

  }

  }

}

只要把mbed開發版接上電腦,再去mbed complier  ,開啟新一個project,就可以把上述的程式碼编译,之後放進mbed就可以執行了!太方便了吧!在teraterm 内输入$$$就可以进入CMD模式以接收com port的资讯,然后iPhone上開一個note,輸入字串就完成了!

以下是其他网友有趣的小作品

Hello everyone! :) I’m 3rd-year undergraduate student from the Department of Electronic & Computer engineering, at the Hong Kong University of Science and Technology. During my studies, I have taken electronics courses such as Electro-Robotics and Embedded System Design and found it fascinating to learn how to get all of the components of such systems, a robotic car in my case, to work together. It is very satisfying to see my car follow the track and perform its task perfectly. It’s like seeing my creation come alive! Through this Designspark Blog, I would like to share what I have learnt in the field of electronics with all of you and also introduce you to some cool electronics news and products. As a student, I understand how painful it is to read through papers that I can barely understand a word of it. I will try to explain everything is a simple way so that anyone can understand it. I hope everyone can share my joy in building electronics gadgets. If you find my blog useful, please share it with your friends! 大家好!:) 我是来自香港科技大学,电子及计算器工程学系三年级的学生。在我过去两年多的学习中,我选修了不少电子课程,当中包括电子机械人及嵌入式系统设计。我发觉在学习如何使不同零件去拼凑成一个嵌入式系统,例如一辆智能电动车,的过程中,不单只令我获益良多并且在完成后更能获得很大的满足感,所以在这一方面我一直都很感兴趣。 透过Designspark博客,我想分享我在电子领域内所学到的点滴,也想为您介绍一些很酷的电子新闻和产品。作为一名学生,我非常明白钻研一份堆满难明生字的文章是多么痛苦,我会尝着用简单明了的字眼去解释,使任何人都可以理解。 我希望我能透过这个管道去分享制作电子小手作的有趣之处。如果你觉得我的博客有趣又或者很有用,请与您的朋友分享!
DesignSpark Electrical Logolinkedin