Bluno蓝牙4.0控制器 兼容Arduino

Bluno_DFR0267

目录

1 产品简介
2 技术参数
3 引脚排布
4 BLUNO与手机通信

4.1 准备材料
4.2 操作步骤

5 通过BLE进行无线编程

5.1 准备材料
5.2 通过AT指令配置BLE设备
5.3 串口透传测试
5.4 串口透传

6 升级BLUNO上的BLE固件(AT+VERSION查询版本)

6.1 V1.6及以前版本
6.2 V1.7及以后版本

7 通过AT指令配置BLE设备

7.1 固件版本1.8及以后(查询版本号见AT指令)
7.2 固件版本1.7及以前(查询版本号见AT指令)
7.3 AT 指令列表

8 疑难解答
9 更多

产品简介
Bluno系列是DFRobot开发的一款具有革命性的产品,它不但完全兼容传统的Arduino以外,还具有无线下载程序的功能,让您摆脱USB线的束缚,远距离更新程序。想象一下用Android或者IOS结合Arduino开发一款可穿戴的移动设备,比如智能手环、智能计步器等等,这些可穿戴设备可以通过蓝牙4.0与你的手机通信,通过低功耗的蓝牙4.0链接成星形低功耗网络,达成快速的实时通讯,许多的软件工程师或者硬件工程师都希望有这样一个平台来实现以上功能。
现在DFRobot为你呈上Bluno,一款集成了蓝牙4.0通信模块的Arduino UNO开发板,通过我们开发的Android和IOS手机应用,你可以快速开发出一款与手机通信的硬件设备。正如现在非常火爆的可穿戴式手机周边设备,都可以用bluno这款平台开发,而且低功耗的蓝牙网络是开发移动设备周边硬件的首选。简而言之,你可以使用BLUNO与蓝牙4.0设备连接,在两个蓝牙设备之间实现无线传输,主从机设置,无线烧录程序,甚至与PC建立蓝牙HID连接。同时我们为开发者提供了极大的自由度和支持准备,用户不仅可以通过AT指令调试BLUNO,而且可以通过USB更新BLE的芯片程序。通过DFRobot完善的开源硬件生态系统,Bluno将具备极大的扩展潜力,你可以在BLUNO控制器上添加Arduino兼容的扩展板、传感器、电机和舵机驱动等。提示:在我们的手机APP演示程序和Arduino的程序中使用了DFROBOT的无线传输库,这个协议使用起来很方便,几乎没有学习成本,非常适合于初学者, 然而对于开发来说,我们建议根据不同的应用选择不同的协议。
同时,为了方便用户使用,我们还推荐您使用Bluno Accessory Shield 扩展板,它集成了众多硬件功能:LCD显示、按钮、温湿度传感器、蜂鸣器,更重要的是我们还专门配置了APP应用,会极大地减少硬件连接的麻烦,增强趣味性!
DFRobot 开源每一个扩展部件的资料,让你在此基础上完成你喜爱的产品!

技术参数

基本参数

特性

供电接口:USB or DC2.1
电源接口外部供电范围:7-12V
输出电流:50~70mA
波特率:9600-115200 bps
BLE芯片: TI CC2540
传输距离(开阔地带): 超过70m
传输距离(办公环境): 约20m
输入电压: 接上USB时无须外部供电或外部7V~12V DC输入
微处理器: ATmega328
Bootloader: Arduino Uno
引脚排布同Arduino uno
尺寸: 60mm x 53mm
重量: 30g

支持蓝牙远程更新Arduino程序
支持蓝牙HID
支持iBeacons
支持AT指令配置BLE
支持串口透传
支持主从机切换
支持通过usb更新BLE芯片程序
支持机型:
配备蓝牙4.0 Android 4.3及以上系统:Nexus 4+,小米2s,三星Galaxy s4,三星Galaxy note 3 等
IOS 7.0+设备:iPhone 5+,iPad 3+,iPad Mini,iPod 5th Gen(iPhone 4s is not 100% supported!)

注意:如果您需要用电脑与Bluno进行连接,需在您的电脑上使用 BLE link 或 USB BLE link,电脑自带的蓝牙不兼容。

引脚排布
BLUNO detail.png

BLUNO与手机通信
这一个章节注重于BLUNO的基本功能。通过这个示例,你可以很方便的搭建你自己的应用。

准备材料

硬件
BLUNO x1
Android 4.3+ 设备 或 IOS 7+设备 x1
Micro USB 线 x1

软件
应用APP 源代码的Github连接:BLUNO基础示例合集包
Arduino IDE

操作步骤

BLUNO基础示例 安卓版
BLUNO基础示例 IOS版

  1. 将下面代码复制到 Arduino IDE中 (这个程序只做一件事:把收到的串口数据都发回去);

void setup() {

Serial.begin(115200);               //initial the Serial

}

void loop(){

if(Serial.available()){
    Serial.write(Serial.read());    //send what has been received
    Serial.println();                //print line feed character

}

}

  1. 在菜单-》工具-》板卡 选择 "Arduino Uno",并选好串口号;
  2. 下载程序到BLUNO;

注意:下载程序时,如果Bluno有蓝牙连接,请断开蓝牙连接,否则程序因为串口占用无法下载。

  1. 对于Android设备,如果为IOS设备,请跳过步骤4并参考步骤5:
    4.1 安装 APK 文件 到你的安卓手机中;
    4.2 运行程序;
    4.3 点击 "Scan" 按钮(①) 开始设备;
    4.4 连接了之后, 点击 "Send Data" 按钮(②)发送输入框(③)中的数据给BLUNO;
    4.5 BLUNO会回复相同的数据. 收到的数据将在 "received data" 处显示(④)。

5 对于IOS设备
5.1 使用Xcode编译 IOS 源代码 进入IOS设备;
5.2 运行程序;
5.3 点击 "Search" 按钮 (②) 开始设备;
5.4 连接了之后,连接状态从"Not Ready!" 变成 "Ready!" (①), 点击 "Send" 按钮(④)发送输入框(③)中的数据发给BLUNO;
5.5 BLUNO会回复相同的数据. 收到的数据将在 "received data" 处显示(⑤).

通过BLE进行无线编程
在这个章节里,您将学会如何使用BLE进行无线编程。

准备材料
BLUNO ×2
Micro USB 线 x2

通过AT指令配置BLE设备

  1. 蓝牙设备有两种模式,主机模式和从机模式,要进行无线透传就需要把一块BLUNO设为主机,把另一块BLUNO设为从机
  2. 将两块BLUNO开关拨到AT模式,
  3. 连接usb口,并打开usb串口
  4. 给其中一块 BLUNO 发送指令使其工作在“主机模式”(发送方法见教程1,指令功能见AT指令介绍)

Input : AT+ROLE=ROLE_CENTRAL<CR+LF>

Answer(Return):OK

Input : AT+FSM=FSM_TRANS_USB_COM_BLE<CR+LF>

Answer(Return):OK

5.给另一块 BLUNO 发送指令使其工作在“从机模式”(发送方法见教程1,指令功能见AT指令介绍)

Input : AT+ROLE=ROLE_PERIPHERAL<CR+LF>

Answer(Return):OK

Input : AT+FSM=FSM_TRANS_USB_COM_BLE<CR+LF>

Answer(Return):OK

6.关闭usb串口,将模块A的模式开关拨到NORM模式

串口透传测试

  1. 拔下再插上模块A和模块B的usb电源,等待两个Link的灯都亮起来。两边便建立了蓝牙串口通信.
  2. 通过串口工具coolterm 连接“主机模式”的BLUNO设备通过USB测试连接。
  3. 通过键盘向从机BLUNO发送信号,从机BLUNO板上 TX/RX LED将闪烁,你就可以测试两块板间是否能够通信了。

串口透传
10.断开coolterm 的串口连接,释放串口。
11.现在您就可以将Arduino程序通过蓝牙无线烧录到从机BLUNO中了。
12.传输速率:

主-&gt;从 2KB/s
从-&gt;主 4KB/s

升级BLUNO上的BLE固件(AT+VERSION查询版本)
BLE固件升级后,之前的设置将会保留
如果你希望恢复初始设置的话,使用AT指令"AT+SETTING=DEFAULT"
详见 通过AT指令配置BLE设备

V1.6及以前版本
如果使用的是1.7及其以上的版本,则可以跳到"V1.7及以后版本"章节
此方法可以用在 Windows xp, Windows 7 上,对于某些Windows 8 可能不兼容,表现为U盘不断连接,弹出。
1.按下Boot按钮后,插入usb线,供电后松开Boot按键,模块进入usb升级方式, pc上会弹出一个u盘
2.双击打开u盘,里边有两个文件,删除掉里边的bin文件,删除后,u盘会重启,重新进入u盘模式

BLUNO Firmware update

3.再次弹出u盘后,将UBL2SBL.bin补丁文件(连接地址)拷贝到u盘中,完成后,系统自动重启,在安装完升级补丁之后,就可以按照V1.7的版本来更新固件了

V1.7及以后版本
V1.7版本之后升级固件将会变得非常方便。
可以使用DFRobot出品固件升级软件 (DFRobot出品固件升级软件mac版本) 一键升级固件。以下是软件的界面。

BLUNO Firmware update
界面简洁异常,非常方便。
更新步骤:
一、按下BOOT按键不放。

二、插上USB电源。

三、Bluno进入双灯闪烁模式。

四、软件载入固件.bin

五、单击下载按键。

通过AT指令配置BLE设备
固件版本1.8及以后(查询版本号见AT指令)
固件1.8版本之后AT开关失效,进入AT指令模式需要先把右下角的调为'没有换行符'然后在串口监视器中输入“+++”,进入CMD模式即AT模式。

1.打开Arduino IDE
2.在菜单-》工具-》串口中选择正确的设备
3.开启串口监视器 (点击窗口的右上角的按键)
4.在两个下拉菜单中选择"No line ending"(①)和115200 baud(②)
5.在输入框中(③)输入"+++",并点击发送键(④)
6.如果收到“Enter AT Mode”(⑤),就证明已经进入AT指令模式.

Fig1: +++进去CMD模式
7.在两个下拉菜单中选择"Both NL & CR"(①)和115200 baud(②)
8.在输入框中(③)输入AT指令,并点击发送键(④)
9.如果BLE配置成功,界面将会返回"OK"(⑤)

Fig1: 输入AT指令,记得更改为Both NL & CR
10.如果收到“ERROR CMD”,可以再发一遍。发送多次后如果还是“ERROR CMD”,你需要检查一下指令发送是否正确.(大写字母)
11.可以使用"AT+EXIT"来退出AT指令模式.

固件版本1.7及以前(查询版本号见AT指令)

  1. 将BLUNO的模式开关拨到AT,BLUNO进入AT指令模式
  2. 我们需要一个串口工具用来发送AT指令去配置BLE,常用的串口工具很多如Arduino IDE 串口监视器、CoolTerm等,这里我们选择Arduino IDE 串口监视器来演示
  3. 在菜单-》工具-》串口中选择正确的设备
  4. 开启串口监视器 (点击窗口的右上角的按键)

Fig1: Arduino串口监视器

  1. 在两个下拉菜单中选择"Both NL & CR"(①)和115200 baud(②)
  2. 在输入框中(③)输入AT指令,并点击发送键(④)
  3. 如果BLE配置成功,界面将会返回"OK"(⑤)
  4. 如果收到“ERROR CMD”,可以再发一遍。发送多次后如果还是“ERROR CMD”,你需要检查一下指令发送是否正确。
  5. 将BLUNO模式开关拨到“NORM”进入串口透传模式

AT 指令列表
<CR+LF> 即回车+换行,所有的AT指令都是以windows下的回车作为结束符
不要把“<CR+LF>”这几个字符当做AT指令的一部分

  1. "AT+FSM" 设置BLE芯片工作模式

AT+FSM=FSM_TRANS_USB_COM_BLE<CR+LF>

设置USB转串口模式,开启BLE功能。

AT+FSM=FSM_HID_USB_COM_BLE_AT<CR+LF>

设置USB转串口模式,开启BLE HID功能

AT+FSM=?<CR+LF>

查询当前BLE芯片的工作模式(默认:FSM_TRANS_USB_COM_BLE)

  1. "AT+ROLE" 设置BLE芯片主从机状态

AT+ROLE=ROLE_CENTRAL<CR+LF>

设置BLE工作在主机状态下

AT+ROLE=ROLE_PERIPHERAL<CR+LF>

设置BLE工作在从机状态下

AT+ROLE=?<CR+LF>

查询当前BLE芯片的主从机状态。 (默认值为ROLE_PERIPHERAL)

  1. "AT+MIN_INTERVAL" 设置BLE芯片最小通信间隔,以毫秒为单位

AT+MIN_INTERVAL=10<CR+LF>

对于PC和Android,建议设为为10。

AT+MIN_INTERVAL=20<CR+LF>

对于iOS设备,建议设置为20。

AT+MIN_INTERVAL=?<CR+LF>

查询当前BLE芯片的通信间隔。 默认值为10

  1. "AT+MAX_INTERVAL" 设置BLE芯片最大通信间隔,以毫秒为单位

AT+MAX_INTERVAL=10<CR+LF>

对于PC和Android,建议设为为10。

AT+MAX_INTERVAL=40<CR+LF>

对于iOS设备,建议设置为40。

AT+MAX_INTERVAL=?<CR+LF>

查询当前BLE芯片的通信间隔。 默认值为10

  1. "AT+UART" 设置物理串口波特率

AT+UART=115200<CR+LF>

设置物理串口波特率为115200

AT+UART=?<CR+LF>

查询当前BLE芯片物理串口的波特率。 默认值为115200

  1. "AT+BIND" 设置BLE芯片绑定蓝牙地址

AT+BIND=0x0017ea9397e1<CR+LF>

设置BLE芯片绑定的蓝牙地址为0x0017ea9397e1

AT+BIND=?<CR+LF>

查询当前BLE芯片绑定蓝牙地址。 默认值为0x000000000000

  1. "AT+CMODE" 设置BLE芯片连接模式

AT+CMODE=UNIQUE<CR+LF>

设置连接模式为指定蓝牙地址连接模式(指定蓝牙地址由BIND命令设置,见"AT+BIND" )

AT+CMODE=ANYONE<CR+LF>

设置连接模式为任意蓝牙地址连接模式(不受BIND命令设置地址的约束,见"AT+BIND")

AT+CMODE=?<CR+LF>

查询当前BLE芯片连接模式。 默认值为ANYONE

  1. "AT+MAC"查询BLE芯片MAC地址

AT+MAC=?<CR+LF>

查询当前BLE芯片MAC地址

  1. "AT+NAME" 设置和查询当前设备名称

AT+NAME=DFBLEduinoV1.0<CR+LF>

设置模块名称为“DFBLEduinoV1.0”。ascii码形式,小于等于13字节

AT+NAME=?<CR+LF>

查询当前模块名称, 默认值为DFBLEduinoV1.0

  1. "AT+RESTART" 重启BLE芯片

AT+RESTART<CR+LF>

重启BLE芯片

  1. "AT+SETTING" 改变或恢复默认设置 (BLE firmware 1.6 新功能)

AT+SETTING=DEFAULT<CR+LF>

恢复初始设定,和“PERIPHERAL”初始设定相同

AT+SETTING=DEFPERIPHERAL<CR+LF>

恢复成从机模式的初始设定

AT+SETTING=DEFCENTRAL<CR+LF>

恢复成主机模式的初始设定

AT+SETTING=?<CR+LF>

询问初始设定 (默认: DEFPERIPHERAL). 如果使用了AT指令更改了一些设置,BLUNO将会回复 "UNKNOWN"

  1. "AT+BLUNODEBUG" 控制蓝牙已连接状态下,BLE芯片串口接收到的数据是否通过usb串口打印出来。这样就可以通过Arduino的串口监视器得到BLUNO发送的串口数据(BLE firmware 1.6 新功能)

AT+BLUNODEBUG=ON<CR+LF>

控制蓝牙已连接状态下,BLE芯片串口接收到的数据通过usb串口打印出来。

AT+BLUNODEBUG=OFF<CR+LF>

控制蓝牙已连接状态下,BLE芯片串口接收到的数据不通过usb串口打印出来。

AT+BLUNODEBUG=?<CR+LF>

查询蓝牙已连接状态下,BLE芯片串口接收到的数据是否通过usb串口打印出来 (默认: ON)

  1. "AT+USBDEBUG" 控制蓝牙数据是否通过USB口打印出来 (BLE firmware 1.6 新功能)

AT+USBDEBUG=ON<CR+LF>

开启蓝牙数据通过USB串口打印开关。

AT+USBDEBUG=OFF<CR+LF>

关闭蓝牙数据通过USB串口打印开关。

AT+USBDEBUG=?<CR+LF>

R查询当前蓝牙数据开关的状态 (默认: OFF)

  1. "AT+TXPOWER" 设置蓝牙发射功率. (BLE firmware 1.6 新功能)

AT+TXPOWER=0<CR+LF>

设置发设功率。 (4, 0, -6 或 -23)

AT+TXPOWER=?<CR+LF>

查询当前发射功率 (默认: 0)

  1. "AT+IBEACONS" 是否开启iBeacons功能(BLE firmware 1.6 新功能)

AT+IBEACONS=ON<CR+LF>

开启ibeacons广播

AT+IBEACONS=OFF<CR+LF>

关闭ibeacons广播。

AT+IBEACONS=?<CR+LF>

查询当前ibeacons广播的状态(默认:ON)

  1. "AT+VERSION" 查看固件版本(BLE firmware 1.6 新功能)

AT+VERSION=?<CR+LF>

查看当前固件版本

  1. "AT+RSSI" 返回当前的RSSI值 (BLE firmware 1.6 新功能)

AT+RSSI=?<CR+LF>

返回当前的RSSI值(未连接状态下返回-000)

  1. "AT+MAJOR" 设置iBeacons的MAJOR号 (BLE firmware 1.6 新功能)

AT+MAJOR=0<CR+LF>

设置iBeacons的MAJOR号为 "0". (0-65535)

AT+MAJOR=?<CR+LF>

查询当前iBeacons的MAJOR号(默认: "0")

  1. "AT+MINOR" 设置iBeacons的MINOR号(BLE firmware 1.6 新功能)

AT+MINOR=0<CR+LF>

设置iBeacons的MINOR号为"0". (0-65535)

AT+MINOR=?<CR+LF>

查询当前iBeacons的MINOR号.(default "0")

  1. "AT+PASSWORD" 设置和查询匹配后AT指令密码(BLE firmware 1.7 新功能)

AT+PASSWORD=?<CR+LF>

查询蓝牙匹配后AT指令密码(一般通过USB连接查询)

AT+PASSWORD=abc<CR+LF>

设置蓝牙匹配后AT指令密码(一般通过USB连接设置)

  1. "AT+EXIT" 退出AT指令模式(BLE firmware 1.8 新功能)

AT+EXIT<CR+LF>

退出AT指令模式

疑难解答

问:常见的蓝牙4.0之间通信不正常的问题。

答:建议检查步骤:
1 更新固件至最新版本;
2 通过AT指令恢复出厂设置 (AT+SETTING=DEFAULT). (详见:通过AT指令配置BLE设备 )
3 注意代码中串口通信口是否正确,比如 Leonardo,程序中就应该用 Serial1.****();而不是 Serial.****();;
4 检查蓝牙模块、程序代码等相关地方的通信波特率是否一致;(晶振频率为8MHz的控制板支持最大38400bps的波特率。)
5 重新插拔电源。

问:为什么我的手机连不上Bluno,即使可以连上,但也不能通信?

答:请检查您的手机是否在支持列表里边,支持机型。另外,请使用APP内的Scan按钮扫描连接Bluno,连接不需要密码。不支持手机蓝牙设置界面、其他BLE APP连接。

问:为什么我的手机找不到周围的Bluno以及其他从DF买的蓝牙设备?

答:请参照链接文章排查问题。Romeo BLE could not be found.

问:为什么我用Mega2560+BLE Link 和Bluno进行蓝牙无线更新程序总是失败?

答:
1 如果您使用的是Mega扩展板V2.4,只能给Mega扩展板 COM0 口上的BLE link烧录程序,不能给其他BLE设备烧录。
2 如果您使用的是IO 传感器扩展板 V7.1, 请注意在无线烧录程序时,作为烧录器时应该将 开关置于Prog端,作为目标板应该置于Run端。
3 检查BLE link在COM0的插槽上是否插反,BLE Link的USB口应该朝内。

问:如何使用Ibeacon功能?

答:您可以在AT列表里找到相关指令开启/关闭Ibeacon功能,然后在应用市场上下载一款Ibeacon查询软件,就可以查询Ibeacon了,这时候Bluno就是一个Ibeacon标签。

问:BLE 支持多联吗?我想用一个主机连接很多从机,请问最多能连几个?

答:Bluno不支持多联,但是可以通过不断地切换绑定从机,实现多联的思想。【英文推荐阅读】

问:为什么我烧样例代码到Bluno中去,然后用Xcode编译了你们的开源代码,安到IOS设备上,收到的代码是乱码?该怎么解决?

答:由于蓝牙模块的波特率设置和代码中的波特率设置115200不一致,造成了乱码的问题。请用AT指令设置模块“AT+UART=115200”,或者将代码中的波特率改为您的Bluno上蓝牙的波特率。

更多问题及有趣的应用,可以 访问论坛 进行查阅或发帖!

更多
推荐阅读
Project: BLE HID keyboard
How do I know my Bluno is connected in code?
Bluno Beetle Simple Tutorial (With Explanatory Images)
PlainProtocol 简单版参考
PlainProtocol 进阶版参考

资源链接
BLUNO基础示例整合包
Arduino 示例代码
Android 应用程序
安卓 源代码
推荐的安卓系统:BLE 安卓 4.3 ROMs (Cyanogenmod Stable version) 推荐使用10.2及以上版本
IOS 源代码
IOS 应用程序 App Store 链接

BLE 固件
BLE 固件 Ver.1.9 (点击查看最新版本固件,点击 “View Raw”完成下载)
BLE 固件 Ver.1.8E 修复短时间内发送多个数据bug
BLE 固件 Ver.1.7(过渡版本,烧录前请查看Readme文件)
BLE 固件 Ver.1.6
BLE 固件 Ver.1.4
BLE 固件 Ver.1.3

其他
BLUNO 原理图
BLUNO与 Accessory shield 扩展板示例

Shopping car.png Bluno Bluno主控器 小米特别版 Bluno Accessory Shield 扩展板

标签: Arduino传感器