NRF52840 和电脑 进行蓝牙通信
需求
以nrf52840为主控连接各种传感器,将传感器的数据通过蓝牙传输到电脑进行接收。由于协议栈的不同,hc-06没法检索到nrf52840。
实际配置
- 主控采用的是Seeed XIAO BLE,他的芯片是nrf52840,上面搭载了arduino的底子,所以用户上层用arduino IDE进行烧写代码。
- 他的蓝牙部分采用的是Adafruit相关库。
- PC部分通过实践采用的是Adafruit_CircuitPython_BLE的库,所以在linux中运行,暂时不能在windows中。
- OS:Ubuntu 20.04
实现过程
安装库
我的python版本是ubuntu自带的3.8
pip3 install adafruit-circuitpython-ble
如果需要在虚拟环境中安装,则
mkdir project-name && cd project-name
python3 -m venv .venv
source .venv/bin/activate
pip3 install adafruit-circuitpython-ble
测试
from adafruit_ble import BLERadioradio = BLERadio()
print("scanning")
found = set()
for entry in radio.start_scan(timeout=60, minimum_rssi=-80):addr = entry.addressif addr not in found:print(entry)found.add(addr)print("scan done")
官方库:Adafruit_CircuitPython_BLE
搜索蓝牙并连接
上面的demo是检索蓝牙的部分,通过测试我们可以轻松检索到nrf52840的蓝牙。然后进行连接:
radio.connect(entry)
搜索到了 就停止搜索
radio.stop_scan()
数据传输
ntypes 是传输数据的个数,最多默认是64,可以自己在下载的数据包中的UARTService类修改它的buffer容量。
读取数据一共有三个函数可以使用:
def read(self, nbytes: Optional[int] = None) -> Optional[bytes]
def readinto(self, buf: WriteableBuffer, nbytes: Optional[int] = None) -> Optional[int]
def readline(self) -> Optional[bytes]
书写数据可以:
def write(self, buf: ReadableBuffer) -> None
举个例子
data = device[UARTService].read(ntypes)
message = data.decode()
具体案例可以参我的github的代码
NRF52840 和电脑 进行蓝牙通信相关推荐
- 实现Android和PC之间的蓝牙通信
这两天想实现PC和安卓手机的通信,限于水平,知道的方法大概有两种:基于数据包的socket和蓝牙.虽然看起来简单,但调也调了两天多.自己测试了下socket,在室内WIFI环境下时延大概是0.1s.而 ...
- 安卓工业平板电脑的蓝牙开发教程
开发系统:Android4.4.2 运行平台:广州微嵌安卓工业平板电脑 安卓的蓝牙的打开包括获取蓝牙模块.搜索蓝牙设备.蓝牙设备间的配对.连接跟通信等部分. 1.安卓中使用蓝牙模块需要蓝牙的使用权限, ...
- Android Studio开发(六)短距离无线通信——蓝牙通信
Android Studio开发(六)短距离无线通信--蓝牙通信 Android Studio开发(六)蓝牙通信 一.任务需求 二.短距离无线通信技术(Short-Distance Wirleless ...
- stm32f103利用HC06进行蓝牙通信,在7针的OLED屏幕上显示,带数据更新功能(带超详细讲解)
stm32f103利用HC06进行蓝牙通信,在7针的OLED屏幕上显示,带数据更新功能(带超详细讲解) 首先看看效果吧 手机端发送一个数据在OLED屏幕上显示 其实蓝牙通信就是个蓝牙转串口的过程,手机 ...
- Android 移动开发 近场通信 蓝牙通信
Android 近场通信 蓝牙通信 一.近场通信介绍 1.三种主要近场通信技术的特点 2.比较 3.近场通信技术的未来发展 二.蓝牙通信 1.核心 2.布局 3.功能 其他配置 最终显示 一.近场通信 ...
- 平板电脑如何蓝牙和手机配对_如何将蓝牙设备与计算机,平板电脑或手机配对...
平板电脑如何蓝牙和手机配对 Wireless devices with Bluetooth radios must be "paired" with each other befo ...
- React Native BLE蓝牙通信
由于项目需要,基于React Native 开发的App要跟BLE蓝牙设备通信. 在js.coach上搜索React Native BLE蓝牙组件,只找到三个组件: react-native-ble- ...
- 基于STM32F103C8T6的HC-06蓝牙通信
文章目录 前言 注意看 ! 一.蓝牙通信流程 二.怎么实现蓝牙通信 1.了解蓝牙模块功能 2.了解蓝牙通信本质 3.进行AT命令调试 4.调试完成,连接通信 三.结尾 前言 注意看 ! 如果朋友们遇到 ...
- STM32CubeIDE开发(二十五), 物联网应用之stm32的蓝牙通信设计
一.蓝牙通信技术 蓝牙技术是一种点对点点对面的网络构架,他可以在限制的范围内以很快的速度传输网络数据,在物联网应用中,支持网状网络的物联网短距离无线通信.目前它还被广泛用于智能可穿戴设备.智能门锁.智 ...
最新文章
- keil c语言模块化编程,keil C模块化编程总结
- leetcode算法题--二叉搜索树的第k大节点
- 未来是Apache Karaf上的微服务架构
- 控制台启动jar包关闭控制台怎么关java程序_Jpom一款简而轻的低侵入式Java运维、监控软件...
- smartdrv.exe是什么(收藏)
- 转专业 计算机,转专业系列之信息/计算机
- 试题 基础练习 特殊回文数(123321是一个非常特殊的数,它从左边读和从右边读是一样的。 输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。)
- speedoffice(PPT)怎么添加图片
- 第三方网站不能调用微信公众平台里的图片了 显示此图片来自微信公众号平台未经允许不可引用...
- windows上安装macos系统(超详细,可直接使用)
- 调焦后焦实现不同距离成像_眼的明视与光学调焦
- 单片机原理及应用 实验六 双机通信与PCB设计
- 如何查看斐讯路由器的版本
- java中英文切换_中英文切换
- 关于java实习心得总结(十篇)
- Comware: Port Link-mode Bridge vs Port Link-mode Route
- coda创建虚拟环境后无法切换到原环境
- 计算机仿真技术应用报告,计算机仿真技术实验报告-实验二
- 分布式存储能成为存储市场增长的主要驱动力
- Java 第十二章.网络编程