lb8820265 发表于 2021-8-8 18:38

树莓派蓝牙基础——bluezero库的使用

<div class='showpostmsg'> 本帖最后由 lb8820265 于 2021-8-8 22:50 编辑

<p class="Standard"><span style="font-family:Arial;"><span style="font-size:12pt">&nbsp; &nbsp; &nbsp; &nbsp;linux系统中有很多操作蓝牙的库,这里介绍一个我认为最好的,bluezero库。</span></span></p>

<p><span style="font-family:Arial;"><span style="font-size:12pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bluezero一个封装库,是基于最底层的BlueZ的蓝牙协议栈,和最上层的DBus API的,让使用者能够更加方便的使用蓝牙功能,API 方便简单,包含Central和Peripheral角色。有趣的是bluezero还提供了三个复杂度等级的库,Level 1对应傻瓜式操作,使用者不需要太多的BLE知识和蓝牙协议栈知识,Level 10和100则更加接近底层操作,需要了解BlueZ,DBus和蓝牙协议栈。</span></span></p>

<p><span style="font-size:20px;"><strong><span style="font-family:Arial;">1. 安装树莓派操作系统</span></strong></span></p>

<p><span style="font-family:Arial;"><span style="font-size:12pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;可以参考我之前的帖子:</span></span><a href="https://bbs.eeworld.com.cn/thread-1140660-1-1.html">树莓派4不同操作系统跑分测试</a></p>

<p><span style="font-size:20px;"><strong><span style="font-family:Arial;">2. 修改python路径</span></strong></span></p>

<p><span style="font-family:Arial;"><span style="font-size:12pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 树莓派系是安装了python2和python3的,默认是使用python2,操作BLE需要使用python3。</span></span></p>

<p><span style="font-family:Arial;"><span style="font-size:12pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;打开终端,查看python的版本号,输入:</span></span></p>

<pre>
<code>python –version</code></pre>

<p><span style="font-family:Arial;"><span style="font-size:12pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如果是2.x则进行下面的操作,显示python的安装路径,输入:</span></span></p>

<pre>
<code>whereis --python</code></pre>

<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="font-family: Arial;"><span style="font-size:12pt">一共有两个python,记住python3的安装路径,修改默认python的路径,输入:</span></span></p>

<pre>
<code>alias python='/usr/bin/python3.7'</code></pre>

<p><span style="font-size:20px;"><strong><span style="font-family:Arial;">3. 安装bluezero库</span></strong></span></p>

<p><span style="font-family:Arial;"><span style="font-size:12pt">&nbsp; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;树莓派系统是默认安装了BlueZ的,输入:</span></span></p>

<pre>
<code>bluetoothd -v</code></pre>

<p><span style="font-family:Arial;"><span style="font-size:12pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;查看BlueZ版本号,不能低于5.5版本。</span></span></p>

<p><span style="font-family:Arial;"><span style="font-size:12pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;查看BlueZ运行状态,输入:</span></span></p>

<pre>
<code>systemctl status bluetooth</code></pre>

<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="font-family:Arial;"><span style="font-size:12pt">显示的running为正常,否则需要打开。</span></span></p>

<p class="Standard"><span style="font-family:Arial;"><span style="font-size:12pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在终端中就可以通过BlueZ的接口函数,进行扫描、连接、发送等操作,这里不进行详细介绍。</span></span></p>

<p class="Standard"><span style="font-family:Arial;"><span style="font-size:12pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;安装dbus-python库和bluezero</span></span><span style="font-family:Arial;"><span style="font-size:12pt">库,输入:</span></span></p>

<pre>
<code>pip3 install dbus-python
pip3 install bluezero</code></pre>

<p><span style="font-family:Arial;"><span style="font-size:12pt">&nbsp; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;安装完成后可以输入pip3 show bluezero查看库的状态。</span></span></p>

<p><span style="font-family:Arial;"><span style="font-size:12pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bluezero库并非官方库,代码托管在github上,github上有详细的介绍和大量的例程,方便进行学习和参考。</span></span></p>

<p><span style="font-family:Arial;"><span style="font-size:12pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;github位置:<a href="https://github.com/ukBaz/python-bluezero">https://github.com/ukBaz/python-bluezero</a></span></span></p>

<p><span style="font-size:20px;"><strong><span style="font-family:Arial;">4. bluezero库例程展示</span></strong></span></p>

<p><span style="font-family:Arial;"><span style="font-size:12pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 下面介绍树莓派作为Peripheral角色的两个例程。</span></span></p>

<p><strong><span style="font-family:Arial;"><span style="font-size:12pt">cpu_temperature.py例程</span></span></strong></p>

<p><span style="font-family:Arial;"><span style="font-size:12pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;将github上的代码下载下来,examples文件夹中,该例程可以不断的向手机发送温度数据,在Thonny中打开该例程,直接点击运行,在手机端打开nRF Connect软件,连接叫做&ldquo;CPU Monitor&rdquo;的设备,点开服务,然后开启Notification,就可以看到不停跳动的温度数据了,如下图。</span></span><strong><span style="font-family:Arial;"><span style="font-size:12pt">ble_uart.py例程</span></span></strong></p>

<p><span style="font-family:Arial;"><span style="font-size:12pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;该例程可以实现手机和树莓派间的相互通信,用Thonny打开运行,用nRF Connect软件链接BLE UART的设备,打开服务然后点击发送特性的发送箭头,输入要发送的字符,如下图。</span></span></p>

<p class="Standard"><span style="font-family:Arial;"><span style="font-size:12pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;然后在Thonny的Shel<span style="font-size:16px;">l的窗</span>口就会打印出接受到的信息,如下图。</span></span>&nbsp; &nbsp; &nbsp; &nbsp; <span style="font-size:16px;"><span style="font-family:Arial;">&nbsp; </span></span></p>

<p class="Standard"><span style="font-size:16px;"><span style="font-family:Arial;">是不是很简单,很神奇?!</span></span></p>
</div><script>                                var loginstr = '<div class="locked">查看精华帖全部内容,请<a href="javascript:;"   style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
                               
                                if(parseInt(discuz_uid)==0){
                                                                                        (function($){
                                                        var postHeight = getTextHeight(400);
                                                        $(".showpostmsg").html($(".showpostmsg").html());
                                                        $(".showpostmsg").after(loginstr);
                                                        $(".showpostmsg").css({height:postHeight,overflow:"hidden"});
                                                })(jQuery);
                                }
</script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script>

lb8820265 发表于 2021-8-8 23:02

本帖最后由 lb8820265 于 2021-8-8 23:04 编辑

<p><span style="font-size:20px;">有对树莓派感兴趣的小伙伴吗?计划用树莓派来做一个有趣的玩具,届时会分享制作过程,同时开源。</span></p>

<p><span style="color:#c0392b;"><span style="font-size:20px;">欢迎大家踊跃讨论希望用树莓派做个什么哦!!!</span></span></p>

Jacktang 发表于 2021-8-8 22:09

<p>看楼主的介绍,确实pythonzero库是&nbsp;linux系统中的最好的蓝牙的库,赞同。</p>

lb8820265 发表于 2021-8-8 22:55

Jacktang 发表于 2021-8-8 22:09
看楼主的介绍,确实pythonzero库是&nbsp;linux系统中的最好的蓝牙的库,赞同。

<p>哈哈,是的,看了下文中写错了,应该是python bluezero库,你也玩过linux下的蓝牙通信吗?</p>

soso 发表于 2021-8-9 09:58

<p>好物分享:)</p>

tagetage 发表于 2021-8-9 13:35

<p>树莓派能做太多的东西了。楼主想做什么呢???</p>

w494143467 发表于 2021-8-9 13:43

<p>语音识别,类似小爱同学那样的。</p>

dql2016 发表于 2021-8-9 19:03

<p>不错,python开发简单</p>
页: [1]
查看完整版本: 树莓派蓝牙基础——bluezero库的使用