通过上一篇文章学习,我们可以将树莓派的蓝牙连接到蓝牙音箱,进行语音播放。那么对于蓝牙配置和蓝牙控制软件更新,在此不再赘述。

1、树莓派连接手机蓝牙时断时续问题

原以为手机蓝牙和音箱蓝牙直接可以直接连接,结果出现连接到手机瞬间,蓝牙就断开连接。出现了链接时断时续的问题,这里主要参考了这位大佬的文章,成功的解决了蓝牙连接手机。树莓派4b板载蓝牙连接其他蓝牙设备时出错的解决方法_ZeroSwift的博客-CSDN博客_树莓派4b连​​​​​​接蓝牙失败

2、树莓派与手机蓝牙通信测试

完成连接之后,我在手机上下载了蓝牙调试器app(应用商城可以搜到)。但是这个时候出现一个比较奇怪的问题,手机蓝牙已经连接了树莓派,但是app里面扫描结果并没有树莓派。具体原因未知,猜想的方向是app里面的蓝牙协议和手机连接的蓝牙协议应该不同,树莓派的蓝牙对app里面的蓝牙隐藏了。解决的方案是,打开界面里的蓝牙的discoverable配置,这时候app即可识别树莓派。

接下来便是树莓派蓝牙通信,首先安装pybluez库,pybluez库会在使用pip安装时自动编译相关的蓝牙库,所以需要在安装pybluez之前先把蓝牙开发环境配置好:

sudo apt-get install Python-dev
sudo apt-get install libbluetooth-dev
sudo pip3 install pybluez

然后编译蓝牙接收和发送python源码。

#-*- coding:utf-8 -*-
import bluetooth
import threading
#服务器套接字(用来接收新链接)
server_socket=None#连接套接字服务子线程
def serveSocket(sock,info):#开个死循环等待客户端发送信息while True:#接收1024个字节,然后以UTF-8解码(中文),如果没有可以接收的信息则自动阻塞线程(API)receive=sock.recv(1024).decode('utf-8');#打印刚刚读到的东西(info=地址)print('['+str(info)+']'+receive);#为了返回好看点,加个换行receive=receive+"\n";#回传数据给发送者sock.send(receive.encode('utf-8'));#主线程#创建一个服务器套接字,用来监听端口
server_socket=bluetooth.BluetoothSocket(bluetooth.RFCOMM);
#允许任何地址的主机连接,未知参数:1(端口号,通道号)
server_socket.bind(("",1))
#监听端口/通道
server_socket.listen(1);#开死循环 等待客户端连接
#本处应放在另外的子线程中
while True:#等待有人来连接,如果没人来,就阻塞线程等待(这本来要搞个会话池,以方便给不同的设备发送数据)sock,info=server_socket.accept();#打印有人来了的消息print(str(info[0])+' Connected!');#创建一个线程专门服务新来的连接(这本来应该搞个线程池来管理线程的)t=threading.Thread(target=serveSocket,args=(sock,info[0]))#设置线程守护,防止程序在线程结束前结束t.setDaemon(True)#启动线程t.start();

保存文件名为bt.py,然后执行,这里我遇到python编译问题,注意自己的python版本和pybluez匹配。

python出现SyntaxError: Non-ASCII character '\xe6' in file \的错误 - 魏三斗 - 博客园

AttributeError: 'module' object has no attribute 'AF_INET'处理办法——python_wzh111wzh的博客-CSDN博客

 python bt.py

这时候手机app里连接树莓派,然后树莓派就可以与手机正常通信(现阶段只实现了安卓手机,ios还是有问题的)。

树莓派学习3-树莓派蓝牙连接手机通信测试(蓝牙连接手机时断时序问题解决)相关推荐

  1. 树莓派学习二 树莓派直接连接笔记本电脑方法(win10家庭版)

    本教程特别适用新手,我是总结完网上各种教程写出来的,希望能给新手一个帮助. 需要树莓派一个,路由器一个,网线一条(用于连接路由器),笔记本一台,想用无线可以买多一个无线网卡,我觉得用无线网卡很方便,不 ...

  2. 树莓派001-购买树莓派

    我是买的树莓派3B中国版-外加一个32G的内存卡. 一个树莓派呢也不算贵,才190一个.当然还有更便宜的.不过贵点性能也就要好点. 树莓派3B 淘宝上有很多树莓派卖,大家择其合适者而购之. 不过你得确 ...

  3. 树莓派学习记录1-树莓派系统烧录与无屏幕网线连接开机

    树莓派学习记录1-树莓派系统烧录与无屏幕网线连接开机 1.所需硬件 树莓派3b+板子一个,电源线一根,网线一根, SD卡及读卡器 2.官方烧录工具下载 树莓派官方提供了树莓派的烧录工具,可以直接借助其 ...

  4. 10蓝牙模块 hm 电脑蓝牙 连接_树莓派与HM-10蓝牙模块搭建iBeacon | 学步园

    最近iBeacon很火,我也买了个树莓派搭建一个iBeacon玩玩. 首先,需要的设备有: 1. 树莓派及电源 2. 一个蓝牙模块(网上都是用蓝牙适配器,而我用的是HM-10的蓝牙模块). 3. 连接 ...

  5. ESP32-C3 学习测试 蓝牙 篇(二、蓝牙调试APP、开发板手机连接初体验)

    等了好久终于等到今天,盼了好久终于把蓝牙测试 = =! ESP32-C3 专栏好久没更新了,这次抽点时间把蓝牙的准备工作做完. 目录 前言 1.蓝牙手机调试工具 2.ESP-IDF中示例的选择 3.E ...

  6. 树莓派学习笔记2——树莓派与电脑间的连接

    一.使用HDMI线直接连接树莓派与电脑. 二.使用串口通道连接 将烧录好系统的SD卡镜像U盘打开 如果是树莓派4B,则找到config.txt文件 将串口从默认的蓝牙映射到硬件串口在文末添加: sud ...

  7. 1.搭建深度学习项目树莓派的硬件设备选择

    搭建深度学习项目树莓派的硬件设备选择 文章目录 搭建深度学习项目树莓派的硬件设备选择 1.型号选择 1.1 官网产品 1.2 型号介绍 1.2.1 树莓派 400 1.2.2 树莓派 数字系列 1.2 ...

  8. 树莓派 小屏幕_树莓派学习手动积累(1)

    树莓派4B到手,满怀激动地拆开包装,准备大展拳脚. Raspberry Pi(中文名为"树莓派",简写为RPi,(或者RasPi / RPI)是为学习计算机编程教育而设计),只有信 ...

  9. 树莓派学习笔记——Wifi AP热点模式 使用RT5370

    0.前言 本文详细说明为树莓派增加Wifi AP热点功能的具体步骤.配置完成之后,树莓派将增加一个Wifi热点功能,使用笔记本或手机便可连接树莓派,树莓派具有了AP热点功能,可更一步扩展树莓派相关的W ...

最新文章

  1. python3 转码的函数_python基础3之文件操作、字符编码解码、函数介绍
  2. 清北刷题冲刺 11-02 a.m
  3. 020.day20 线程概述 多线程优缺点 线程的创建 线程常用方法 生命周期 多线程同步...
  4. 这份代码是不是应该有BUG!!
  5. Gradle 简单使用
  6. VB讲课笔记10:菜单与对话框
  7. jquery各历史版本下载地址
  8. 小程序triggerevent 传参_开源wwto:小程序跨端迁移解决方案——微信转其他小程序...
  9. LeetCode 3Sum (Two pointers)
  10. 网上一些《算法(第四版)》习题答案链接
  11. 无头浏览器介绍和对比
  12. python数据精度_python数字精度
  13. TextView源码解析
  14. 订单流失总金额怎么算_微信新规下增长乏力,裂变到底该怎么做?
  15. 【火炉炼AI】机器学习008-简单线性分类器解决二分类问题
  16. bzoj2005 NOI2010 方案统计
  17. 怎么查看思科模拟器Cisco Packet Tracer的版本
  18. 【CSS】【position】css中的position属性
  19. 工控用Web组态软件比组态软件更高效
  20. SQL查询中的日期比较

热门文章

  1. 排名(JSU-ZJJ)
  2. mysql db 备份,MySQL数据库备份与恢复方法
  3. 电脑定时关机怎么设置
  4. 【图文详细 】Hive 函数、Hive 函数、Hive 函数
  5. 在Ubuntu上给ipad充电
  6. [论文笔记] the book of why 1.因果推断三步骤:关联、干预、反事实推断
  7. 支付宝核心是oracle吗,李铮 - 支付宝核心账务去Oracle实践
  8. 无聊中~~看《失恋33天》,单片循环
  9. uniapp小程序微信授权获取头像昵称
  10. 记第一次参加招聘会的过程和感想