硬汉嵌入式论坛

 找回密码
 立即注册
查看: 953|回复: 4
收起左侧

关于MicroPython开发 ESP32-S3遇到的问题

[复制链接]
回帖奖励 180 个金币 回复本帖可获得 10 个金币奖励! 每人限 1 次

8

主题

155

回帖

179

积分

初级会员

H7 TOOL 大法好!

积分
179
发表于 2023-7-10 09:01:58 | 显示全部楼层 |阅读模式
各位老师好!

     近期想用MicroPython在ESP32-S3硬件平台开发"蓝牙透传功能",下面是我写的代码,我是参考官方手册来写的(bluetooth — 低级蓝牙 — MicroPython中文 1.17 文档)  ,但是  跑到ble.send() 的时候会报错   ,请大家帮忙看看,感谢!
   另外还有个小问题:我在开发ESP32-S3的时候,不知道 当前版本的固件,能够支持哪些Micropython模块, 有时候就发现  同样的程序 1.20.0 版本不能运行,1.19.0版本又可以运行, 不知道MicroPython固件版本的差异点在哪,我要如何参考当前版本进行开发?  球球了,救救孩子吧


from machine import Pin
from machine import Timer
from time import sleep_ms
from machine import UART
import bluetooth
import binascii

BLE_STA = 0
BLE_MSG = ""
UART_MSG = ""

# 初始化串口
uart1 = UART(1, baudrate=9600, rx=11, tx=10, bits=8, parity=None, stop=1)


class ESP32_BLE():
    def __init__(self, name):
        self.led = Pin(2, Pin.OUT)
        self.timer0 = Timer(0)
        self.name = name
        self.ble = bluetooth.BLE()
        self.ble.active(True)
        self.ble.config(gap_name=name)
        self.disconnected()
        self.ble.irq(self.ble_irq)
        self.register()
        self.advertiser()

    def connected(self):
        global BLE_STA
        self.led.value(1)
        self.timer0.deinit()
        BLE_STA = 1
        print('连接成功')

    def disconnected(self):
        global BLE_STA
        self.timer0.init(period=250, mode=Timer.PERIODIC, callback=lambda t: self.led.value(not self.led.value()))
        BLE_STA = 0
        print('断开连接')

    def ble_irq(self, event, data):
        global BLE_MSG
        if event == 1:  # _IRQ_CENTRAL_CONNECT 手机链接了此设备
            self.connected()
        elif event == 2:  # _IRQ_CENTRAL_DISCONNECT 手机断开此设备
            self.advertiser()
            self.disconnected()
        elif event == 3:  # _IRQ_GATTS_WRITE 手机发送了数据
            buffer = self.ble.gatts_read(self.rx)
            BLE_MSG = buffer.decode('UTF-8').strip()
            MSG_hex = binascii.hexlify(BLE_MSG).decode()
            # 转换为十六进制
            uart1.write(MSG_hex)
            print("蓝牙接收到数据:", MSG_hex)

    def register(self):
        service_uuid = '6E400001-B5A3-F393-E0A9-E50E24DCCA9E'
        reader_uuid = '6E400002-B5A3-F393-E0A9-E50E24DCCA9E'
        sender_uuid = '6E400003-B5A3-F393-E0A9-E50E24DCCA9E'

        services = (
            (
                bluetooth.UUID(service_uuid),
                (
                    (bluetooth.UUID(sender_uuid), bluetooth.FLAG_NOTIFY),
                    (bluetooth.UUID(reader_uuid), bluetooth.FLAG_WRITE),
                )
            ),
        )

        ((self.tx, self.rx,),) = self.ble.gatts_register_services(services)

        
    def send(self, data):
        data_bytes = bytes(data + '\n', 'UTF-8')
        self.ble.gatts_notify(0, self.tx, data_bytes)

        
    def advertiser(self):
        name = bytes(self.name, 'UTF-8')
        adv_data = bytearray('\x02\x01\x02') + bytearray((len(name) + 1, 0x09)) + name
        self.ble.gap_advertise(100, adv_data)
        print(adv_data)
        print("\r\n")


if __name__ == "__main__":
    ble = ESP32_BLE("NKD5-S")

    while True:
        if uart1.any():
            UART_MSG = uart1.read()
            if BLE_STA == 1:
                print("连接蓝牙,转发数据")
                ble.send("123 22")
            else:
                print("未连接,不转发")
            
            print("串口接收到数据:", UART_MSG)
            UART_MSG = ""
        sleep_ms(100)







回复

使用道具 举报

8

主题

155

回帖

179

积分

初级会员

H7 TOOL 大法好!

积分
179
 楼主| 发表于 2023-7-10 09:12:13 | 显示全部楼层
补充一下: 环境用的Thonny ,  ESP32-S3 版本是1.20.0  , 球球了
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106731
QQ
发表于 2023-7-11 09:20:55 | 显示全部楼层

回帖奖励 +10 个金币

帮顶。
回复

使用道具 举报

75

主题

684

回帖

909

积分

金牌会员

积分
909
发表于 2023-7-14 12:03:14 | 显示全部楼层

回帖奖励 +10 个金币

报的什么错,最好上传源文件不要复制粘贴。
回复

使用道具 举报

8

主题

155

回帖

179

积分

初级会员

H7 TOOL 大法好!

积分
179
 楼主| 发表于 2023-7-15 09:22:05 | 显示全部楼层
庄永 发表于 2023-7-14 12:03
报的什么错,最好上传源文件不要复制粘贴。

已经解决了, send方法里面,要带参数1 , 而不是0 , 语法没错
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-2 19:01 , Processed in 0.163350 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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