当前位置:网站首页>快速实现单片机和手机蓝牙通信
快速实现单片机和手机蓝牙通信
2022-06-27 06:17:00 【shine_blink】
重磅更新!
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官网链接
边栏推荐
猜你喜欢

JVM common instructions

IDEA一键生成Log日志

Assembly language - Wang Shuang Chapter 13 int instruction - Notes

JVM class loading mechanism

高斯分布Gaussian distribution、線性回歸、邏輯回歸logistics regression

【QT小作】使用结构体数据生成读写配置文件代码

Dev++ environment setting C language keyword display color
Software testing year end summary report template

C Primer Plus Chapter 11_ Strings and string functions_ Codes and exercises

js实现双向数据绑定
随机推荐
POI 替换docx中的文字和图片
TiDB 基本功能
[QT notes] basic use of qregularexpression in QT
The risk of multithreading -- thread safety
IDEA一键生成Log日志
创建一个基础WDM驱动,并使用MFC调用驱动
LeetCode 0086. Separate linked list
软件测试年终总结报告模板
Matlab quickly converts two-dimensional coordinates of images into longitude and latitude coordinates
【养成系】常用正则表达式
Openresty usage document
【QT小点】QT下载链接
310. 最小高度树
Download CUDA and cudnn
MATLAB快速将影像的二维坐标转换为经纬度坐标
Unrecognized VM option ‘‘
Inter thread wait and wake-up mechanism, singleton mode, blocking queue, timer
浅谈GPU:历史发展,架构
古典密码体制--代换和置换
Altium designer 19 device silk screen label position shall be placed uniformly in batches