需求

以nrf52840为主控连接各种传感器,将传感器的数据通过蓝牙传输到电脑进行接收。由于协议栈的不同,hc-06没法检索到nrf52840。

实际配置

  1. 主控采用的是Seeed XIAO BLE,他的芯片是nrf52840,上面搭载了arduino的底子,所以用户上层用arduino IDE进行烧写代码。
  • 他的蓝牙部分采用的是Adafruit相关库。
  1. 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 和电脑 进行蓝牙通信相关推荐

  1. 实现Android和PC之间的蓝牙通信

    这两天想实现PC和安卓手机的通信,限于水平,知道的方法大概有两种:基于数据包的socket和蓝牙.虽然看起来简单,但调也调了两天多.自己测试了下socket,在室内WIFI环境下时延大概是0.1s.而 ...

  2. 安卓工业平板电脑的蓝牙开发教程

    开发系统:Android4.4.2 运行平台:广州微嵌安卓工业平板电脑 安卓的蓝牙的打开包括获取蓝牙模块.搜索蓝牙设备.蓝牙设备间的配对.连接跟通信等部分. 1.安卓中使用蓝牙模块需要蓝牙的使用权限, ...

  3. Android Studio开发(六)短距离无线通信——蓝牙通信

    Android Studio开发(六)短距离无线通信--蓝牙通信 Android Studio开发(六)蓝牙通信 一.任务需求 二.短距离无线通信技术(Short-Distance Wirleless ...

  4. stm32f103利用HC06进行蓝牙通信,在7针的OLED屏幕上显示,带数据更新功能(带超详细讲解)

    stm32f103利用HC06进行蓝牙通信,在7针的OLED屏幕上显示,带数据更新功能(带超详细讲解) 首先看看效果吧 手机端发送一个数据在OLED屏幕上显示 其实蓝牙通信就是个蓝牙转串口的过程,手机 ...

  5. Android 移动开发 近场通信 蓝牙通信

    Android 近场通信 蓝牙通信 一.近场通信介绍 1.三种主要近场通信技术的特点 2.比较 3.近场通信技术的未来发展 二.蓝牙通信 1.核心 2.布局 3.功能 其他配置 最终显示 一.近场通信 ...

  6. 平板电脑如何蓝牙和手机配对_如何将蓝牙设备与计算机,平板电脑或手机配对...

    平板电脑如何蓝牙和手机配对 Wireless devices with Bluetooth radios must be "paired" with each other befo ...

  7. React Native BLE蓝牙通信

    由于项目需要,基于React Native 开发的App要跟BLE蓝牙设备通信. 在js.coach上搜索React Native BLE蓝牙组件,只找到三个组件: react-native-ble- ...

  8. 基于STM32F103C8T6的HC-06蓝牙通信

    文章目录 前言 注意看 ! 一.蓝牙通信流程 二.怎么实现蓝牙通信 1.了解蓝牙模块功能 2.了解蓝牙通信本质 3.进行AT命令调试 4.调试完成,连接通信 三.结尾 前言 注意看 ! 如果朋友们遇到 ...

  9. STM32CubeIDE开发(二十五), 物联网应用之stm32的蓝牙通信设计

    一.蓝牙通信技术 蓝牙技术是一种点对点点对面的网络构架,他可以在限制的范围内以很快的速度传输网络数据,在物联网应用中,支持网状网络的物联网短距离无线通信.目前它还被广泛用于智能可穿戴设备.智能门锁.智 ...

最新文章

  1. keil c语言模块化编程,keil C模块化编程总结
  2. leetcode算法题--二叉搜索树的第k大节点
  3. 未来是Apache Karaf上的微服务架构
  4. 控制台启动jar包关闭控制台怎么关java程序_Jpom一款简而轻的低侵入式Java运维、监控软件...
  5. smartdrv.exe是什么(收藏)
  6. 转专业 计算机,转专业系列之信息/计算机
  7. 试题 基础练习 特殊回文数(123321是一个非常特殊的数,它从左边读和从右边读是一样的。   输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。)
  8. speedoffice(PPT)怎么添加图片
  9. 第三方网站不能调用微信公众平台里的图片了 显示此图片来自微信公众号平台未经允许不可引用...
  10. windows上安装macos系统(超详细,可直接使用)
  11. 调焦后焦实现不同距离成像_眼的明视与光学调焦
  12. 单片机原理及应用 实验六 双机通信与PCB设计
  13. 如何查看斐讯路由器的版本
  14. java中英文切换_中英文切换
  15. 关于java实习心得总结(十篇)
  16. Comware: Port Link-mode Bridge vs Port Link-mode Route
  17. coda创建虚拟环境后无法切换到原环境
  18. 计算机仿真技术应用报告,计算机仿真技术实验报告-实验二
  19. 分布式存储能成为存储市场增长的主要驱动力
  20. Java 第十二章.网络编程

热门文章

  1. PS作业 不一样的我
  2. 【ZJOJ1321】灯
  3. matlab 双馈,基于Matlab的双馈调速系统研究
  4. 无人机巡检技术要点解读,无人机巡检方案实现
  5. 两个互质整数的线性组合问题
  6. 线性代数学习笔记——第四十二讲——向量组的线性组合
  7. SQL SERVER 服务器登录名、数据库用户名、服务器角色、数据库角色、DENY、sp_addlogin ETC.
  8. 关于sungard和博彦的笔试
  9. 编写微信聊天机器人3《聊天精灵WeChatGenius》:使用Xposed来hook微信,找到微信进程。
  10. Flutter代码可插拨/解耦方案