树莓派蓝牙BLE做从机Peripheral

2023-12-01 23:52

本文主要是介绍树莓派蓝牙BLE做从机Peripheral,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

安装环境

安装bluez

sudo apt install bluez

安装python包bluez-peripheral

pip install bluez-peripheral

如果安装失败,可以下载源代码安装

git clone https://github.com/spacecheese/bluez_peripheral.git
cd bluez_peripheral
python setup.py install

示例代码

from bluez_peripheral.gatt.service import Service
from bluez_peripheral.gatt.characteristic import characteristic, CharacteristicFlags as CharFlags
from bluez_peripheral.gatt.descriptor import descriptor, DescriptorFlags as DescFlags# Define a service like so.
class MyService(Service):def __init__(self):self._some_value = None# Call the super constructor to set the UUID.super().__init__("BEEF", True)# Use the characteristic decorator to define your own characteristics.# Set the allowed access methods using the characteristic flags.@characteristic("BEF0", CharFlags.READ)def my_readonly_characteristic(self, options):# Characteristics need to return bytes.return bytes("Hello World!", "utf-8")# This is a write only characteristic.@characteristic("BEF1", CharFlags.WRITE)def my_writeonly_characteristic(self, options):# This function is a placeholder.# In Python 3.9+ you don't need this function (See PEP 614)pass# In Python 3.9+:# @characteristic("BEF1", CharFlags.WRITE).setter# Define a characteristic writing function like so.@my_writeonly_characteristic.setterdef my_writeonly_characteristic_cb(self, value, options):# Your characteristics will need to handle bytes.self._some_value = valueprint(value)# Associate a descriptor with your characteristic like so.# Descriptors have largely the same flags available as characteristics.@descriptor("BEF2", my_readonly_characteristic, DescFlags.READ)# Alternatively you could write this:# @my_writeonly_characteristic.descriptor("BEF2", DescFlags.READ)def my_readonly_descriptors(self, options):# Descriptors also need to handle bytes.return bytes("This characteristic is completely pointless!", "utf-8")from bluez_peripheral.util import *
from bluez_peripheral.advert import Advertisement
from bluez_peripheral.agent import NoIoAgent
import asyncioasync def main():# Alternativly you can request this bus directly from dbus_next.bus = await get_message_bus()service = MyService()await service.register(bus)# An agent is required to handle pairing agent = NoIoAgent()# This script needs superuser for this to work.await agent.register(bus)adapter = await Adapter.get_first(bus)my_service_ids = ["BEEF"] # The services that we're advertising.my_appearance = 0 # The appearance of my service.# See https://specificationrefs.bluetooth.com/assigned-values/Appearance%20Values.pdfmy_timeout = 0 # never timeoutadvert = Advertisement("My Device Name", my_service_ids, my_appearance, my_timeout)await advert.register(bus, adapter)while True:await asyncio.sleep(5)if __name__ == "__main__":asyncio.run(main())

问题一:频繁提示配对

关闭电池电量请求,在/usr/lib/systemd/system/bluetooth.service中的ExecStart这一行最后添加 -P battery

systemctl daemon-reload
systemctl restart bluetooth

问题二:raspberrypi zero 2w使用NoIoAgent时手机端配对失败

这篇关于树莓派蓝牙BLE做从机Peripheral的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/443171

相关文章

电脑蓝牙连不上怎么办? 5 招教你轻松修复Mac蓝牙连接问题的技巧

《电脑蓝牙连不上怎么办?5招教你轻松修复Mac蓝牙连接问题的技巧》蓝牙连接问题是一些Mac用户经常遇到的常见问题之一,在本文章中,我们将提供一些有用的提示和技巧,帮助您解决可能出现的蓝牙连接问... 蓝牙作为一种流行的无线技术,已经成为我们连接各种设备的重要工具。在 MAC 上,你可以根据自己的需求,轻松地

树莓派启动python的实现方法

《树莓派启动python的实现方法》本文主要介绍了树莓派启动python的实现方法,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录一、RASPBerry系统设置二、使用sandroidsh连接上开发板Raspberry Pi三、运

让树莓派智能语音助手实现定时提醒功能

最初的时候是想直接在rasa 的chatbot上实现,因为rasa本身是带有remindschedule模块的。不过经过一番折腾后,忽然发现,chatbot上实现的定时,语音助手不一定会有响应。因为,我目前语音助手的代码设置了长时间无应答会结束对话,这样一来,chatbot定时提醒的触发就不会被语音助手获悉。那怎么让语音助手也具有定时提醒功能呢? 我最后选择的方法是用threading.Time

树莓派5_opencv笔记27:Opencv录制视频(无声音)

今日继续学习树莓派5 8G:(Raspberry Pi,简称RPi或RasPi)  本人所用树莓派5 装载的系统与版本如下:  版本可用命令 (lsb_release -a) 查询: Opencv 与 python 版本如下: 今天就水一篇文章,用树莓派摄像头,Opencv录制一段视频保存在指定目录... 文章提供测试代码讲解,整体代码贴出、测试效果图 目录 阶段一:录制一段

开放式耳机好用?平价开放式耳机推荐?四款开放式的蓝牙耳机推荐

开放式耳机好用吗?有平价些的开放式耳机推荐吗?那这两个问题的回答当然是肯定的。 首先开放式耳机好不好用取决于对耳机的需求,因为开放式耳机其实是比较适用于需要注意周围环境、需要‌长时间佩戴舒适以及需要频繁与人交流的场景中,在这些场景下使用开放式耳机的话就会比较有优势。就例如跑步骑行健身等运动的时候,能够兼得佩戴舒适度的同时,增加一定的安全性;还有在办公学习的时候,会很适合长时间佩戴,能够方便和

Flutter 中的低功耗蓝牙概述

随着智能设备数量的增加,控制这些设备的需求也在增加。对于多种使用情况,期望设备在需要进行控制的同时连接到互联网会受到很大限制,因此是不可行的。在这些情况下,使用低功耗蓝牙(也称为 Bluetooth LE 或 BLE)似乎是最佳选择,因为它功耗低,在我们的手机中无处不在,而且无需连接到更广泛的网络。因此,蓝牙应用程序的需求也在不断增长。 通过阅读本文,您将了解如何开始在 Flutter 中开

1-8 图像腐蚀 opencv树莓派4B 入门系列笔记

目录 一、提前准备 二、代码详解 kernel=np.ones((2,2),np.uint8) _, binary_image = cv2.threshold(image, 127, 255, cv2.THRESH_BINARY) eroded_image=cv2.erode(binary_image,kernel,iterations=1) eroded_image2=cv2.ero

开放式蓝牙耳机哪个品牌好用?盘点五款超优秀的开放式耳机!

开放式蓝牙耳机现在挺受欢迎的,它们最大的好处就是不塞耳朵,戴着舒服,特别适合长时间佩戴。而且,这种耳机能让你在听音乐的同时,还能听到周围的环境声,这样在外面运动或者骑车的时候就更安全。音质方面,现在的开放式耳机也做得越来越好,有些高端款式还有特别的技术来减少漏音,保护你的隐私。但是现在市场上的开放式耳机品牌太多了,很多人不知道怎么选?为了帮助您在众多选项中做出选择,我根据个人经验挑选了一些表现良好

Anroid BLE蓝牙(手机分别作为中心设备和外围设备)

蓝牙是一种短距的无线通讯技术,可实现固定设备、移动设备之间的数据交换。一般将蓝牙3.0之前的BR/EDR蓝牙称为传统蓝牙,而将蓝牙4.0规范下的LE蓝牙称为低功耗蓝牙。  BLE蓝牙模块主要应用领域     1、移动扩展设备     2、汽车电子设备     3、健康医疗用品:心跳带、血压计等     4、定位应用:室内定位、井下定位等     5、近距离数据采集:无线

BLE 数据传输的一些名词

 1、 Profile Profile 可以理解为一种规范,一个标准的通信协议,Profile 存在于从机中。蓝牙组织规定了一些列的标准 Profile, 例如 HID OVER GATT、 防丢器、 心率计等。 每个 Profile 中会包含多个 Service,每个 Service 代表从机的一种能力。 2、 Service Service 可以理解为一个服务,在 ble 从机中,通