快速实现单片机和手机蓝牙通信

重磅更新!

shineblink.com 已推出免开发App,开发者无需做任何安卓或IOS开发,即可以让自己的手机上拥有一款能够和Core开发板通信的专业App

一、实现功能

Core的主芯片自带BLE蓝牙功能,所以只用Core就可以很轻松的实现和手机的相互通信。本篇章所实现的功能是和手机建立蓝牙连接后:(1)Core每隔0.2秒向手机发送一包数据,(2)我们在手机调试App上自定义任意数据包发送给Core,Core收到后通过Print()函数打印出来。

注意:由于Core内部自带2.4G无线功能,所以无需外部器件或模块即可实现本章节的蓝牙通讯功能。但如果用了Ble蓝牙功能,Core的2.4G单点或多点通信功能就无法使用了,这一点开发者需要注意。

手机调试App这里我们选择使用苹果IOS上知名的LightBlue,安卓手机下载安装BleTool或安卓版LightBlue也可以。

二、实现机制

Core的ble低功耗蓝牙提供两个特性,一个是Write特性,一个是Notify特性。其中:
Write特性:可以看成是手机发送数据给Core的通道,手机通过蓝牙连接发送给Core的数据就是存放在Write特性中。
Notify特性:可以看成是Core发送数据给手机的通道,Core通过蓝牙发送给手机的数据就是存放在Notify上。但是需要注意,手机要想收到来自Core的数据,需要手机端主动使能这个Notify(在下面的演示中会提及)。
下面是对Core的Ble所提供的service描述,如果您看不懂这段也没关系,只需按上面讲的理解即可。

service(UUID: 0x0001)描述: service包含两个特性(Characteristic):
一个用来发送数据,一个用来接收数据

Rx Characteristic (UUID: 0x0002)用来接收手机的数据 手机蓝牙可以通过ATT Write方式向Rx
Characteristic发送数据 Tx Characteristic (UUID: 0x0003)用来向手机发送数据 如果手机蓝牙为Tx
Characteristic使能了notification,那么设备就可以通过发送notification的方式向手机蓝牙发送数据

三、完整代码

--配置低功耗蓝牙以默认参数工作,设备名称为"MyBle002"
--该设备名称就是手机扫描蓝牙设备时列表中所呈现的名称。
LIB_NrfBleDefaultConfig("MyBle002")
--开始大循环
while(GC(1) == true)
do
    LIB_DelayMs(200)
    send_tab = {0,1,2,3,4,5,6,7,8,9}
    --将send_tab数组内的10个元素发给手机
    LIB_NrfBleSend(send_tab)
    --查询是否收到手机发来蓝牙数据,如果收到就print打印出来
    recv_flag, recv_tab = LIB_NrfBleRecv()
    if recv_flag == 1 then
        --打印接收到的数据
        for k,v in ipairs(recv_tab) do
            print(k,v)
        end
    end
end

四、演示

1. 在苹果手机上打开LightBlue软件,并开始搜索附近的蓝牙设备,找到"MyBle002"后点击进入
2. 找到properties notify特性,点击进入
3. 点击Listen for notification,这样就可以收到到Core发来的数据了
4.可以看到每隔0.2秒就会收到一包数据
5.再退回到步骤2的界面,点击properties write,然后点击write new value
6.设置要发送给Core的数据为AA BB CC DD EE FF

在这里插入图片描述
7.最后在Core的TF卡里LOG.TXT文件可以看到刚刚我们通过手机手动发给Core的AA BB CC DD EE FF数据
在这里插入图片描述
更多详情请参看 shineblink.com官网链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值