14297浏览
查看: 14297|回复: 5

esp32 micropython ble初体验

[复制链接]
micropython有大神已经移植了ble,但是他们还没有merge完成。楼主便迫不及待的想使用了,自己搞了micropython-esp32来维护,用来同步这些新鲜功能吧。
已经将代码上传到了服务器上,大家更新的时候烧录的就是最新的了。(已经测试,之前的其他功能不受影响。但ble感觉还不是特别稳定)

ble就不多介绍了,低功耗蓝牙,可以完成速率不快的数据传输

本例程所需原料
硬件
  1.  FireBeetle-ESP32主板
  2.  支持BLE功能的手机(楼主用的是iphone 5s)
软件
  1. uPyCraft-0.22
  2. lightblue(苹果商店自行下载)


esp32端代码如下
代码如下
[mw_shl_code=python,true]import gc
import sys
import network as n
import gc
import time

b = n.Bluetooth()

found = {}
complete = True

def bcb(b,e,d,u):
  global complete
  global found
  if e == b.CONNECT:
    print("CONNECT")
    b.ble_settings(adv_man_name = "firebeetle-esp32", adv_dev_name="firebeetle-esp32")
    b.ble_adv_enable(True)
  elif e == b.DISCONNECT:
          print("DISCONNECT")
  else:
    print ('Unknown event', e,d)

def cb (cb, event, value, userdata):
  print('charcb ', cb, userdata, ' ', end='')
  if event == b.READ:
    print('Read')
    return 'ABCDEFG'
  elif event == b.WRITE:
    print ('Write', value)

def gatts():
  s1 = b.Service(0xaabb)
  s2 = b.Service(0xDEAD)

  c1 = s1.Char(0xccdd)
  c2 = s2.Char(0xccdd)

  c1.callback(cb, 'c1 data')
  c2.callback(cb, 'c2 data')

  s1.start()
  s2.start()

  b.ble_settings(adv_man_name = "firebeetle-esp32", adv_dev_name="firebeetle-esp32")
  b.ble_adv_enable(True)

b.callback(bcb)
gatts()
while(True):
  pass[/mw_shl_code]

1. 使用uPyCraft下载到板子上并运行
upy.png

2. 然后打开手机的lightblue软件,发现已经扫描到了设备


11111.png


3. 点击设备,连接成功,可以发现AABB和DEAD 两个service

scan.png



4. 点击任意的Char(这里我们使用CCDD),Read可以从esp32读到数据(ascii码0x41-0x47对应的字符就是A-G)
read.png


5. Write可以向esp32写入数据(写入abc(ascii码为0x61 0x62 0x63))
write.png

6. esp32接收到啦
QQ图片20170721185934.png

嘿嘿,是不是很爽,esp32端一个简单的ble_peripheral (也可以称为gattserver)就实现了
更多内容,明天再更新了

connect.png

沧海笑  高级技师

发表于 2017-7-21 20:59:34

太棒了,ble部分是一个专用库,还是通用模块呢?
我在出差,回家后试试,感谢分享!
回复

使用道具 举报

秦皇岛岛主  初级技师
 楼主|
来自手机

发表于 2017-7-21 21:29:42

沧海笑 发表于 2017-7-21 20:59
太棒了,ble部分是一个专用库,还是通用模块呢?
我在出差,回家后试试,感谢分享! ...

是个通用模块 包含主机和从机的所有功能
回复

使用道具 举报

11755497052018  学徒

发表于 2018-1-9 11:24:53

本帖最后由 11755497052018 于 2018-1-10 16:46 编辑

请问作为ESP32作为客户端连接到服务端应该怎么做?怎么完成收发?
b = network.Bluetooth()
b.CONNECT(83880225336413‬)
完成连接后应该怎么做....完全懵逼 了(连都没连上  NameError: name '‭83880225336413‬' is not defined)
回复

使用道具 举报

 学徒

发表于 2019-1-24 14:29:12

这个版本的ESP固件在哪里下载?官网版本还不支持BLE
回复

使用道具 举报

 学徒

发表于 2019-3-25 14:33:35

请问micropython FireBeetle-ESP32会开源吗?想看一下蓝牙的实现代码,学习一下
回复

使用道具 举报

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

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2021 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail