电子发烧友App

硬声App

0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示
电子发烧友网>电子资料下载>电子资料>如何使用BleuIO的多连接功能

如何使用BleuIO的多连接功能

2023-06-26 | zip | 0.00 MB | 次下载 | 免费

资料介绍

描述

蓝牙低功耗技术提供了一种连接智能设备的合适方式。物联网IoT)或物联网(Internet of Things)这个词带来了新技术,在连接时代改变和创造世界。物联网表示一切都已连接,而蓝牙使工作变得更加容易。一台中央设备可以启动并保持与多个低功耗蓝牙外围设备的连接。

BleuIO 是一种蓝牙低功耗解决方案,可以以最快、最简单的方式创建新的 BLE 5.0 应用程序。使用此 BleuIO 的多连接功能,我们可以轻松连接到多个 BLE 设备并在它们之间传输数据。

本文将解释如何使用 BleuIO 的多连接功能,连接多个 BLE 设备并在它们之间传输数据。我们将为这个项目使用三个 BleuIO 加密狗:一个中央和两个外围。中央加密狗将连接到外围设备并同时发送数据。

我们将创建一个简单的 python 脚本来帮助我们完成任务。

要求 :

任务:

步骤1:

让我们创建一个名为py_serial_transfer.py的 python 文件并复制以下代码。

源代码也可以在 GitHub 上获得

https://github.com/smart-sensor-devices-ab/ble_multi_connection_example.git

#!/usr/bin/python
# -*- coding: utf-8 -*-
import serial
import time
import string
import random

target_dongle_mac_address = '[0]40:48:FD:E5:2D:AF'  # Change this to the 1st peripheral's mac address.
target_dongle_mac_address2 = '[0]40:48:FD:E5:2D:B5'  # Change this to the 2nd peripheral's mac address.
your_com_port = 'COM7'  # Change this to the com port your dongle is connected to.

connecting_to_dongle = True
trying_to_connect = False
trying_to_connect2 = False


def id_generator(size=10, chars=string.ascii_uppercase + string.digits):
    return ''.join(random.choice(chars) for _ in range(size))


print 'Connecting to dongle...'

# Trying to connect to dongle until connected. Make sure the port and baudrate is the same as your dongle.
# You can check in the device manager to see what port then right-click and choose properties then the Port Settings
# tab to see the other settings

while connecting_to_dongle:
    try:
        console = serial.Serial(
            port=your_com_port,
            baudrate=57600,
            parity='N',
            stopbits=1,
            bytesize=8,
            timeout=0,
            )
        if console.is_open.__bool__():
            connecting_to_dongle = False
    except:
        print 'Dongle not connected. Please reconnect Dongle.'
        time.sleep(5)

print 'Connected to Dongle.'

connected = '0'
connected2 = '0'
while 1 and console.is_open.__bool__():
    console.write(str.encode('AT+DUAL'))
    console.write('\r'.encode())
    time.sleep(0.1)
    print 'Putting dongle in Dual role and trying to connect to other dongle.'
    while connected == '0':
        time.sleep(0.5)
        if not trying_to_connect:
            console.write(str.encode('AT+GAPCONNECT='))
            console.write(str.encode(target_dongle_mac_address))
            console.write('\r'.encode())
            trying_to_connect = True
        dongle_output2 = console.read(console.in_waiting)
        time.sleep(2)
        print 'Trying to connect to Peripheral 1...'
        if not dongle_output2.isspace():
            if dongle_output2.decode().__contains__('\r\nCONNECTED.'):
                connected = '1'
                print 'Connected to 1st device!'
                time.sleep(5)
            if dongle_output2.decode().__contains__('\r\nDISCONNECTED.'
                    ):
                connected = '0'
                print 'Disconnected!'
                trying_to_connect = False
            dongle_output2 = ' '
    while connected2 == '0':
        time.sleep(0.5)
        if not trying_to_connect2:
            console.write(str.encode('AT+GAPCONNECT='))
            console.write(str.encode(target_dongle_mac_address2))
            console.write('\r'.encode())
            trying_to_connect2 = True
        dongle_output2 = console.read(console.in_waiting)
        time.sleep(2)
        print 'Trying to connect to Peripheral 2...'
        if not dongle_output2.isspace():
            if dongle_output2.decode().__contains__('\r\nCONNECTED.'):
                connected2 = '1'
                print 'Connected to 2nd device!'
                time.sleep(5)
            if dongle_output2.decode().__contains__('\r\nDISCONNECTED.'
                    ):
                connected2 = '0'
                print 'Disconnected!'
                trying_to_connect2 = False
            dongle_output2 = ' '
    while connected == '1' and connected2 == '1':
        dongle_output3 = console.read(console.in_waiting)
        delay = 10
        close_time = time.time() + delay
        i = 0
        while True:
            myConIndex = ('0000' if i % 2 == 0 else '0001')
            console.write(str.encode('AT+TARGETCONN='))
            console.write(str.encode(myConIndex))
            console.write('\r'.encode())
            console.write(str.encode('AT+SPSSEND='))
            console.write(str.encode(id_generator() + '-' + myConIndex))
            console.write('\r'.encode())
            time.sleep(0.2)
            i += 1
            if time.time() > close_time:
                break
        console.write(str.encode('AT+SPSSEND=[DONE]\r'))
        time.sleep(0.2)
        print 'Sending complete!\r\n'
        print 'Exiting script...'
        exit()

该脚本将用于中央 BleuIO 加密狗。我们需要找到每个加密狗的端口号和外设mac地址。

第2步:

在您的 PC 上连接三个 BleuIO 加密狗。您可以在三台不同的 PC 或 Raspberry Pi 上执行此过程。

为此项目,我已将中央和外围设备连接到一台 PC。

连接加密狗后,打开设备管理器(windows)找到每个加密狗的端口。

 

pYYBAGNY6VuAJLZVAAEBmgNCNBo220.png
 

在我的 PC 上,我在端口 7、8 和 18 上连接了 BleuIO 加密狗。

让我们以 COM7 为中心,COM8 和 COM18 为外围。

现在打开脚本并在第 12 行设置端口号。

我们还需要知道外围加密狗的 MAC 地址。

为此,我们可以简单地使用AT+ADVSTART命令宣传加密狗。

poYBAGNY6V2AD3OgAABmHK0iKvY133.jpg
 

对其他外围加密狗执行相同的过程。

现在这两个外围加密狗都在做广告。我们可以从中心进行间隙扫描以找到他们的 MAC 地址。

现在寻找名为BleuIO 的加密狗。

pYYBAGNY6WKAXhrwAAFf6-9QNIw380.jpg
 

使用外设 mac 地址更新脚本(第 6、9 行)

第 3 步:

现在让我们运行脚本。

 

 

 


下载该资料的人也在下载 下载该资料的人还在阅读
更多 >

评论

查看更多

下载排行

本周

  1. 1山景DSP芯片AP8248A2数据手册
  2. 1.06 MB  |  532次下载  |  免费
  3. 2RK3399完整板原理图(支持平板,盒子VR)
  4. 3.28 MB  |  339次下载  |  免费
  5. 3TC358743XBG评估板参考手册
  6. 1.36 MB  |  330次下载  |  免费
  7. 4DFM软件使用教程
  8. 0.84 MB  |  295次下载  |  免费
  9. 5元宇宙深度解析—未来的未来-风口还是泡沫
  10. 6.40 MB  |  227次下载  |  免费
  11. 6迪文DGUS开发指南
  12. 31.67 MB  |  194次下载  |  免费
  13. 7元宇宙底层硬件系列报告
  14. 13.42 MB  |  182次下载  |  免费
  15. 8FP5207XR-G1中文应用手册
  16. 1.09 MB  |  178次下载  |  免费

本月

  1. 1OrCAD10.5下载OrCAD10.5中文版软件
  2. 0.00 MB  |  234315次下载  |  免费
  3. 2555集成电路应用800例(新编版)
  4. 0.00 MB  |  33566次下载  |  免费
  5. 3接口电路图大全
  6. 未知  |  30323次下载  |  免费
  7. 4开关电源设计实例指南
  8. 未知  |  21549次下载  |  免费
  9. 5电气工程师手册免费下载(新编第二版pdf电子书)
  10. 0.00 MB  |  15349次下载  |  免费
  11. 6数字电路基础pdf(下载)
  12. 未知  |  13750次下载  |  免费
  13. 7电子制作实例集锦 下载
  14. 未知  |  8113次下载  |  免费
  15. 8《LED驱动电路设计》 温德尔著
  16. 0.00 MB  |  6656次下载  |  免费

总榜

  1. 1matlab软件下载入口
  2. 未知  |  935054次下载  |  免费
  3. 2protel99se软件下载(可英文版转中文版)
  4. 78.1 MB  |  537798次下载  |  免费
  5. 3MATLAB 7.1 下载 (含软件介绍)
  6. 未知  |  420027次下载  |  免费
  7. 4OrCAD10.5下载OrCAD10.5中文版软件
  8. 0.00 MB  |  234315次下载  |  免费
  9. 5Altium DXP2002下载入口
  10. 未知  |  233046次下载  |  免费
  11. 6电路仿真软件multisim 10.0免费下载
  12. 340992  |  191187次下载  |  免费
  13. 7十天学会AVR单片机与C语言视频教程 下载
  14. 158M  |  183279次下载  |  免费
  15. 8proe5.0野火版下载(中文版免费下载)
  16. 未知  |  138040次下载  |  免费