1、HC-05 与 HC-06 蓝牙串行端口通讯模块HC-05 和 HC-06 的硬件相同,都采用英国剑桥的 CSR (Cambridge Silicon Radio) 公司的BC417143 芯片,支持 蓝牙 2.1+EDR 规范,只是芯片内部的韧体不同。CSR 是全球市占率最高的蓝牙通讯芯片厂,2014 年 10 月中旬,全球手机芯片 龙头 高通(Qualcomm)同意以 25 亿美元现金,购并 CSR,以强化 该公司在物联网(Internet of Things)的布局。 韩国三星也于2012 年花费 3.1 亿美元,取得 CSR 公司的蓝牙、 WiFi 和 GPS 定位等技术专利。 HC-
2、05 模块的外观与主要接脚如下:附带底板的 HC-05 和 HC-06 蓝牙串行端口通讯模块 基本的蓝牙序列通讯模块没有引出接脚,而是在印刷 电路板的四周留下 邮票般的齿孔,方便焊接。 若不想动手焊接,可以选购附 带底板的模块。 这个底板附带 直流电压转换 IC,方便连接3.6V6V 的电源。 附带底板的 HC-05 蓝牙模块 外观与接脚如下:命令响应模式接脚(通常标示成“KEY”或“EN”),用于启动 AT 命令模式,调整蓝牙模块的设定(例如,调整串行端口的 传输速率、修改模 块的名称、修改配对密码等等)。市面上的藍牙裝置通常都屬於“slave(從端)”設備,像藍牙滑鼠鍵盤、藍牙 GPS、藍
3、牙遙控玩具等等。 一般的 Arduino 蓝牙遥控和通 讯实验,也都是用从端模式,所以 HC-06 模块足以应付大多数需求。但如果 HC-05 和 HC-06 模块的价格差不多,那就买 HC-05。 HC-05 和 HC-06 的主要差异在于主、从模式的设定,以及设置模块参数的 AT 命令的支持程度。HC-05 通常支持 30 多道 AT 命令,HC-06 只支持少数 AT 命令,但 实务上会用到的 AT命令通常也只有两、三个(请参 阅下一篇贴文说明)。 若要采购 HC-05,请选择有引出命令响应模式接脚的模块,方便执行 AT 命令。 不同蓝牙模块的引脚和韧体可能不太一样,购买时, 务必跟厂商
4、索取 data sheet(规格说明书,含 AT 命令手册,有些会附带底板的电路图)。 Bluetooth 4.0 具备牙低功耗(Bluetooth Low Energy, BLE)模式,耗电量低,但 计算机、手机和平板等装置的支持、普及程度,不及 2.1 版。如果你确认你的计算机和手机都支持蓝牙4.0,那就可以选购蓝牙 4.0 的序列通 讯模块。 不管是 HC-05, HC-06 还是蓝牙 4.0,对 Arduino 都没有影响,控制程序都一样,实际接线也只用到 4 条线:电源、接地、传送(TxD)和接收(RxD)。电路接线说明,请参阅下一篇贴文。延续上一篇贴文,本文将补充 蓝牙模块的 AT
5、 命令模式与设定方法。蓝牙模块的两种操作模式自动联机(automatic connection),又称为透通模式( transparent communication)。命令响应(order-response),又称为 AT 模式(AT mode)。平时使用的自动联机模式只是把 RxD 脚传入的数据, 转 成蓝牙无线讯号传递出去;或者将接收到的无线数据,从 TxD 脚传给 Arduino,模块本身不会解读数据,也不接受控制。操控蓝牙模块的指令统称 AT 命令(AT-command )。AT 命令并非透过蓝牙无线传输,而是模块的 TxD 和 RxD 接脚。蓝牙模块只有在 AT 模式,才能接收 A
6、T 命令。HC-05 与 HC-06 蓝牙模块进入 AT 模式的方法HC-06 模块在与其他装置联机之前,都处于 AT 模式状态 ;换句话说,只要一通电,HC-06 模块就进入 AT 模式。HC-06 的 AT 命令,采用 9600bps 的速率传送。通電後,在尚未與裝置連線之前,HC-06 板子上的 LED 將不停地閃爍;一旦與其他藍牙裝置联机(如:手机或计算机),LED 将维持点亮状态。让 HC-05 模块进入 AT 模式,需要在通 电之前,先把 KEY 脚位(蓝牙模块本身的 34 脚)接在高电位(通常指 3.3V,但是接 5V 也行)。如此,一通 电,它就进入 AT 模式。在尚未与装置联
7、机之前,HC-05 板子上的 LED 将快速闪烁; 若进入 AT 模式,LED 将慢速闪烁(两秒闪烁一次)。HC-05 的 AT 命令,采用 38400bps 的速率传送。笔者购买的 HC-05 板子上面有一个按键,根据厂商提供的电路,这个按键接在蓝牙模块的34 脚:透过 Arduino 的串行端口设定 蓝牙模块的 AT 命令除了使用现成的 USB 转 TTL 序列模块来设定 AT 命令(请参阅执行 AT 命令(AT-command)修改蓝牙模块的数据传输速率),也能使用 Arduino 板来操作。本节将撰写一个简易程序,把我 们在计算机上敲入的 AT 命令,转发给接在 Arduino 上的蓝
8、牙模块。#include / 引用链接库/ 定义连接蓝牙模块的串行端口SoftwareSerial BT(8, 9); / 接收脚, 传送脚char val; / 储 存接收数据的变量void setup() Serial.begin(9600); / 与计算机串行端口联机Serial.println(“BT is ready!“);/ 设定蓝牙模块的联机速率/ 如果是 HC-05,请改成 38400BT.begin(9600);void loop() / 若收到串行端口监控窗口的数据,则送到蓝牙模块if (Serial.available() val = Serial.read();BT.print(val);/ 若收到蓝牙模块的数据,则送到串行端口监控窗口if (BT.available() val = BT.read();Serial.print(val);在 HC-05 與 HC-06 藍牙模組上執行 AT 命令程式上傳完畢後,開啟 Arduino 的序列埠監控視窗,HC-06 模組的 AT 指令不需要加上行結尾字元,下圖是執行“AT+VERSION” 命令,查看韌體版本的結果: