社区导航

 

搜索
查看: 345|回复: 0

[原创] 【NXP Rapid IoT评测】+ 蓝牙(2 使用电脑的蓝牙连接)

[复制链接]

104

TA的帖子

1

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2019-1-14 09:13 | 显示全部楼层 |阅读模式
Rapid iot 套件只有蓝牙和Thread,那么如何使用Rapid iot 套件实现物联网技术?这需要借助网关,将其数据转发到互联网上。在online ide中,使用的网关是手机。不过使用手机当网关的应用还是少数。使用PC端或者树莓派这样的设备当网关可能更实用。因此选择使用笔记本的蓝牙来实现网关功能。
使用的编程语言是python3,使用的库是bleak。使用这个库能够实现蓝牙BLE的连接与通讯。

现在实现了读取套件的数据的功能。

下面是python的代码
  1. import asyncio
  2. from bleak import discover
  3. from bleak import BleakClient
  4. import time

  5. class My_Bluetooth():

  6.     def __init__(self,name):
  7.         self.devices = None
  8.         self.loop = asyncio.get_event_loop()
  9.         self.name = name

  10.     async def find_devices(self):
  11.         self.devices = await discover()

  12.     def scan_devices(self):
  13.         print("Find devices..")
  14.         self.loop.run_until_complete(self.find_devices())

  15.     def get_device_addr(self):
  16.         for d in self.devices:
  17.             if d.name == self.name:
  18.                 self.addr = d.address

  19.     def connect_device(self):
  20.         print("Try to connect "+self.addr+" ...")
  21.         self.client = BleakClient(self.addr,self.loop)
  22.         self.loop.run_until_complete(self.client.connect())
  23.         ##print(self.client.is_connected())

  24.     async def get_services(self):
  25.         self.svcs = await self.client.get_services()
  26.         

  27.     def print_services(self):
  28.         self.loop.run_until_complete(self.get_services())
  29.         print("Services:", self.svcs)
  30.         

  31.     async def read_battery(self):
  32.         BATTERY_UUID = "00002a19-0000-1000-8000-00805f9b34fb"
  33.         self.value = await self.client.read_gatt_char(BATTERY_UUID)

  34.     def print_battery_value(self):
  35.         self.loop.run_until_complete(self.read_battery())
  36.         print(int(self.value.hex(),16))


  37. print("Start..")
  38. BT = My_Bluetooth("RPK-AF90")
  39. BT.scan_devices()
  40. BT.get_device_addr()
  41. BT.connect_device()
  42. BT.print_services()
  43. while True:
  44.     BT.print_battery_value()
  45.     time.sleep(5)
复制代码


实现的效果是每5秒显示一下电量。
1.PNG

此内容由EEWORLD论坛网友manhuami2007原创,如需转载或用于商业用途需征得作者同意并注明出处



此帖出自RF/无线论坛


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

关闭

站长推荐上一条 /3 下一条

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

Archiver|手机版|小黑屋|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2019-10-22 02:29 , Processed in 0.082315 second(s), 18 queries , Gzip On, MemCache On.

快速回复 返回顶部 返回列表