树莓派蓝牙与手机APP通信

这篇具有很好参考价值的文章主要介绍了树莓派蓝牙与手机APP通信。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

最近毕设是使用树莓派对交通标志图片进行检测,将检测结果使用蓝牙串口方式与手机APP进行传输。本文主要描述树莓派与手机蓝牙通信的过程和遇到的一些奇怪的BUG。


提示:以下是本篇文章正文内容,下面案例可供参考

一、树莓派的蓝牙基本配置

1.安装蓝牙相关软件包

    sudo apt-get update

    sudo apt-get upgrade 

    sudo apt-get dist-upgrade 

    sudo apt-get install pi-bluetooth bluez bluez-firmware blueman

2.添加pi用户到蓝牙组

	sudo usermod -G bluetooth -a pi
	sudo reboot

3.修改配置文件,添加SPP协议

sudo nano /etc/systemd/system/dbus-org.bluez.service

提示:按ctrl+O +回车 开始修改文件
具体修改方法:
树莓派蓝牙与手机APP通信修改这两句(已经是修改后的图片):
树莓派蓝牙与手机APP通信

二、安装pybluez库

1.安装pybluez的必要编译环境

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

提示:如果是python2 就使用sudo pip install pybluez

2.示例传输代码

#-*- 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();

转载至:https://www.jerryzone.cn/raspi-bluetooth-socket/

3.运行文件

python test.py

4.可能存在的问题

4.1 无法连接蓝牙

首先要打开树莓派蓝牙的discoverable 可以使用bluetoothctl命令 + discoverable yes

或者
直接点击树莓派蓝牙图标选择 Make Discoverable

此时树莓派开始可以被扫描到(未扫描到可以等一会,开启此项需要一些时间,大概5-10s。并且树莓派长时间未连接后,会自动关闭discoverable,需要手动打开)

4.2 命令端口显示:python Address already in use 端口已经被占用的解决方法

问题原因:
说明此时的端口已经被占用,可能是你之前运行程序时直接关闭了运行界面。

解决方法:
重启树莓派,再每次调用代码函数后按Ctrl+C停止端口的使用,关闭函数。

4.3 如果想直接连接手机蓝牙,但是发现蓝牙时断时续,在bluetoothctl界面,连上立刻断开

解决方法:
在连接前运行这段代码:

sudo rfcomm watch hci0

然后再尝试连接,可以连接上

或者:
可以点击手机蓝牙,找到名字为raspberry的设备,点一下,回到蓝牙串口APP,再次尝试连接。

4.5 pybluez报错import bluetooth,显示没有内部元素

描述:
这个问题可能我只有我能遇上,由于我把程序代码命名为了bluetooth.py程序内部会自动先去同名的文件找相应的库。导致我的import bluetooth一直报错。

解决方法:
修改文件名称,不和导入的库文件同名文章来源地址https://www.toymoban.com/news/detail-418066.html

总结

  • 总的来说,树莓派和手机蓝牙通信的坑还是挺多的,上面就是我在开发时遇到的坑。
  • 第一次写下自己的记录文件,如果有哪里不对的,请大神们批评指正,互相交流。

到了这里,关于树莓派蓝牙与手机APP通信的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 常识——(adb)小米VR正式版使用第三方APP,电脑充当手机的蓝牙手柄,实现确认功能,从电脑键盘向手机输入文字

    1.小米vr正式在插入手机后,会自动启动小米VR APP,然后因为小米官方已经关闭了小米VR的生态,你面对的只是一个空荡荡的vr界面,以及商店里那些已经老旧的软件(大多已经不再更新,服务器关闭,不能使用) 看着外面的第三方APP比如gizmoVR浏览器,看着外面的VR虚拟应用,

    2024年02月06日
    浏览(152)
  • Arduino蓝牙模块与手机通信---实现蓝牙控制LED

    当使用 Arduino 进行蓝牙通信时,我们可以轻松地实现与其他蓝牙设备之间的数据交换。蓝牙通信在各种物联网和远程控制应用中非常有用,因为它提供了无线连接和简便的数据传输。在本篇博客中,我们将介绍如何在 Arduino 上设置蓝牙通信,并进行基本的数据传输。 1. 介绍

    2024年02月08日
    浏览(53)
  • 蓝牙通信 Android开发实现手机间通过蓝牙传输文件

    MainActivity.java 根据以上代码的结构和功能,我会将它们分为以下几部分: 权限请求和检查 requestPermissions() 方法 checkLocationPermission() 方法 onRequestPermissionsResult() 方法 初始化和设置 onCreate() 方法 onStart() 方法 onActivityResult() 方法 蓝牙设备搜索和配对 discoverDevices() 方法 与列表交互

    2024年03月27日
    浏览(51)
  • 实现手机app和微信小程序和树莓派智能音箱远程控制arduino获取甲醛温湿度和控制灯(esp8266 ZE08-CH2O DHT11 MQTT 语音识别 语言合成 http请求转串口通信系统 )

    首先你有这样的esp8266 这种esp8266自身带2个按键和烧录芯片方便调试,综合性价比较高。 需要有一个arduino uno 连接甲醛探测器和温湿度探测器 或者其他芯片都行。 还有就是你要有树莓派和usb麦克风,用来实现智能音箱,有了这3个开发板我们开始吧! https://www.bilibili.com/video

    2024年02月14日
    浏览(54)
  • 极速版手机蓝牙APP开发

    “这是一个充满科技风的手机蓝牙APP” App Inventor是一款谷歌公司开发的手机编程软件,主要支持各种安卓软件的开发。不知道大家是否在做单片机项目时,是否遇到这样的一个烦恼,需要一款蓝牙APP来实现控制功能,但市面上现成的蓝牙APP并不好用,实现的功能参差不齐,但

    2024年02月07日
    浏览(45)
  • HC08蓝牙模块实现手机通信以及互相通信(附源码及解析)

    前言 本篇博客详细的介绍如何实现HC08主从机设置,命名,以及如何实现两个STM32通过HC08互相通信,并附带完整的操作步骤,以及源代码。 目录 一、HC08主从配置 1.1VOFA+的下载及基本用法 1.1.1VOFA+的下载         1.1.2VOFA+的基本用法    1.2配置HC08主从机及其他 二、两个STM32通

    2024年03月10日
    浏览(71)
  • HC-05蓝牙模块连接到安卓手机,实现通信

    准备好的硬件:1、usb转ttl模块   2、hc-05模块 准备好的软件:1、pc端 串口调试助手 2、手机软件 蓝牙调试器(推荐)  3、ch340 软件下载链接:串口调试助手:UartAssist串口调试助手 V5.0.2-软件工具-野人家园 (cmsoft.cn)                          蓝牙调试器:https://pan.baidu.co

    2023年04月10日
    浏览(68)
  • HC-05蓝牙模块调试及与手机通信

    实现HC-05蓝牙模块的调试及与手机简单通信 目录 1.HC-05蓝牙模块介绍 2.HC-05蓝牙模块调试所需实物 3.蓝牙与USB TO TTL模块接线方式 4.进入AT模式调试参数 5.主从模式简介 6.返回正常工作模式,用手机软件连接测试 HC-05蓝牙模块是一种常用的蓝牙串口传输模块,具有简单易用和广泛

    2024年02月08日
    浏览(58)
  • stm32蓝牙模块通过手机和电脑双向通信

    只需将蓝牙连到单片机上,使用usart3(PB10、PB11)作为蓝牙和单片机的数据传输,而电脑的收发数据要是用usart1(PA9、PA10),将数据存入数组中,从而在串口助手中打印值  1. 下面是usart.c文件,将io口和串口初始化,并且加入中断(其中电脑发送时,所用的中断需要回车换行,

    2023年04月09日
    浏览(45)
  • 安卓手机(微信小程序)抓蓝牙通信数据包

    因为公司需要......所以我就弄了一下,参考了很多别人的文章。 成果:它可以抓取微信小程序、安卓APP的蓝牙数据通信包。 我是小米手机,所以我以我自己手机为例 第一步 打开开发者选项,打开 蓝牙调试日志 和 蓝牙数据包日志 开关(如果两者只有其中一个,只需开启一

    2024年02月13日
    浏览(63)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包