当前位置: 首页 > news >正文

access 网站后台工程建设招投标网站

access 网站后台,工程建设招投标网站,如何做seo网站才会有排名,重庆建设工程标准网ESP32-C3开发板是一款高性能、低功耗的微控制器#xff0c;搭载了Espressif自家的RISC-V处理器。通过MicroPython#xff0c;一种面向微控制器的精简版Python编程语言#xff0c;开发者可以轻松地为ESP32-C3编写代码。MicroPython的ubluetooth库使得ESP32-C3能够通过蓝牙与各…ESP32-C3开发板是一款高性能、低功耗的微控制器搭载了Espressif自家的RISC-V处理器。通过MicroPython一种面向微控制器的精简版Python编程语言开发者可以轻松地为ESP32-C3编写代码。MicroPython的ubluetooth库使得ESP32-C3能够通过蓝牙与各种设备进行通信。 使用ubluetooth库ESP32-C3可以作为蓝牙主机或从机实现与蓝牙设备的配对、连接和数据传输。开发者可以利用这个库来创建蓝牙低功耗BLE应用如智能家居设备、健康监测设备等。通过简单的Python代码ESP32-C3可以发送和接收蓝牙信号实现设备间的无线通信。这使得ESP32-C3成为一个多功能、易于编程的蓝牙解决方案适合各种物联网项目。 首先学习一下蓝牙通讯的机制 蓝牙通讯介绍 蓝牙通信是一种无线通信技术用于在短距离内通常在10米以内连接不同的电子设备如手机、平板电脑、笔记本电脑、耳机、扬声器等。蓝牙通信的机制主要包括以下几个方面 1. 频率和调制 蓝牙通信使用2.4 GHz的工业、科学和医疗ISM频段。为了避免与其他无线设备的干扰蓝牙采用了频率跳跃扩频FHSS技术。在通信过程中蓝牙设备会在79个不同的频率通道上进行跳变每秒跳变1600次从而减少干扰和提高通信的稳定性。 2. 设备配对和连接 蓝牙设备之间的通信需要先进行配对和连接 配对两个设备通过交换密钥建立信任关系。配对过程通常需要用户确认以确保安全性。连接配对成功后设备可以建立稳定的连接进行数据传输。 3. 主从设备 蓝牙通信采用主从模式 主设备控制连接和数据传输的设备可以同时连接多个从设备。从设备被主设备控制的设备通常只能连接一个主设备。 4. 服务和特征 蓝牙低功耗BLE协议中设备通过服务和特征来交换数据 服务一组相关的特征集合代表设备的某种功能或数据类型。特征具体的数据点可以被读取、写入或通知。 5. 广播和扫描 广播设备通过广播包发送信息其他设备可以通过扫描接收这些信息。扫描设备监听周围的广播包以发现可连接的蓝牙设备和服务。 6. 数据传输协议 蓝牙通信使用多种协议层来确保数据的可靠传输 物理层PHY负责实际的无线信号传输。链路层LL管理设备的连接状态、数据包的发送和接收。主机控制接口HCI提供主机和控制器之间的通信接口。逻辑链路控制和适配协议L2CAP负责数据的分段、重组和错误控制。属性协议ATT在BLE中用于服务的发现和数据的读写操作。 7. 安全机制 蓝牙通信包括多种安全措施 加密使用AES加密算法保护数据传输。认证通过配对过程中的PIN码或OOBOut of Band数据进行设备身份验证。授权确保只有经过授权的设备才能访问特定的服务和特征。 8. 功耗管理 特别是对于BLE功耗管理是一个关键因素 低功耗模式设备可以在不需要通信时进入休眠状态减少能量消耗。连接间隔调整主从设备之间的连接间隔平衡数据传输速率和能耗。 总之蓝牙通信通过一系列复杂的协议和技术实现了设备间的短距离、低功耗、安全的无线数据传输。 实践 准备好esp32c3开发板进入micropython交互环境输入如下代码 蓝牙测试代码1 import ubluetooth import utime import machineclass BLEServer:def __init__(self):self.ble ubluetooth.BLE()self.ble.active(True)self.ble.irq(self.ble_irq)self.register_service()self.connected Falsedef register_service(self):# 创建一个UUID为12345678-1234-5678-1234-56789abcdef0的服务service_uuid ubluetooth.UUID(12345678-1234-5678-1234-56789abcdef0)service self.ble.gatts_register_services([(service_uuid, ((ubluetooth.UUID(12345678-1234-5678-1234-56789abcdef1), ubluetooth.FLAG_READ),))])self.service_handle service[0]self.char_handle service[1]# 设置Characteristic的初始值self.ble.gatts_write(self.char_handle, bHello, BLE!)def ble_irq(self, event, data):if event 1:# Central设备连接self.connected Trueprint(Device connected)elif event 2:# Central设备断开连接self.connected Falseprint(Device disconnected)# 重置广告以便再次被发现self.ble.gap_advertise(100, adv_dataself.ble.config(mac) b\x02\x01\x06 b\x11\x07 ubluetooth.UUID(12345678-1234-5678-1234-56789abcdef0).bytes)def start_advertising(self):# 开始广告以便Central设备可以发现这个Peripheralself.ble.gap_advertise(100, adv_dataself.ble.config(mac) b\x02\x01\x06 b\x11\x07 ubluetooth.UUID(12345678-1234-5678-1234-56789abcdef0).bytes)def main():ble_server BLEServer()ble_server.start_advertising()while True:if ble_server.connected:# 可以在这里添加逻辑来处理连接状态passutime.sleep(1)if __name__ __main__:main() 但是这段代码有问题 蓝牙测试代码2 后来用了这段文心生成的代码 # 文心的例子 import ubluetooth import machine import time# 初始化蓝牙 ble ubluetooth.BLE() ble.active(True)# 定义服务UUID # SERVICE_UUID 12345678-1234-5678-1234-56789abcdef0 # CHARACTERISTIC_UUID 12345678-1234-5678-1234-56789abcdef1# 创建BLE服务和特性 def ble_init():# services (# (# ubluetooth.UUID(SERVICE_UUID),# (# (ubluetooth.UUID(CHARACTERISTIC_UUID), ubluetooth.FLAG_NOTIFY | ubluetooth.FLAG_READ),# ),# ),# )# ((_srv_handle, _char_handle), ) ble.gatts_register_services(services)NUS_UUID AE25A5C1-4601-143C-12BB-8BC45A18749CRX_UUID AE25A5C2-4601-143C-12BB-8BC45A18749CTX_UUID AE25A5C3-4601-143C-12BB-8BC45A18749CBLE_NUS ubluetooth.UUID(NUS_UUID)BLE_RX (ubluetooth.UUID(RX_UUID), ubluetooth.FLAG_WRITE)# BLE_TX (ubluetooth.UUID(TX_UUID), ubluetooth.FLAG_NOTIFY)ELE_TX (ubluetooth.UUID(TX_UUID), ubluetooth.FLAG_NOTIFY | ubluetooth.FLAG_READ)BLE_UART (BLE_NUS, (BLE_TX, BLE_RX,))SERVICES (BLE_UART, )((tx, rx),) ble.gatts_register_services(SERVICES)# 获取特性的句柄以发送通知# char_handle _char_handle[0]char_handle tx# 启动广播ble.gap_advertise(100, bytearray(bESP32-C3 BLE Test))return char_handle# BLE中断处理函数 def ble_irq(event, data):if event ubluetooth.IRQ_GAP_CONNECTED:print(BLE device connected)elif event ubluetooth.IRQ_GAP_DISCONNECTED:print(BLE device disconnected)# 可以选择在这里重新开始广播# 注册BLE中断处理函数 ble.irq(ble_irq)# 初始化BLE并获取特性句柄 char_handle ble_init()# 发送通知的数据 notification_data bHello, ESP32-C3 BLE! ble.gatts_notify(char_handle, notification_data) print(Notification sent:, notification_data)# try: # while True: # # 检查是否有连接的设备 # if ble.gatts_get_conn_handle(): # # 发送通知 # ble.gatts_notify(char_handle, notification_data) # print(Notification sent:, notification_data)# # 等待一段时间再发送下一次通知 # time.sleep(5) # except KeyboardInterrupt: # print(Exiting) # finally: # # 清理BLE资源 # ble.active(False) # machine.deepsleep() # 可选使设备进入深度睡眠模式以节省电源 手机安装蓝牙测试appBLE调试助手 在华为手机的“应用市场”查找“BLE调试助手”安装该app应用。 打开“BLE调试助手”找到开发板的蓝牙。小窍门开发板的蓝牙一般没有诸如“oppo”、小米、amazfit等字样而且如果手机和开发板距离较近信号会比较强比如-50db左右 蓝牙通讯测试 在开发板发送数据比如 notification_data bHello, ESP32-C3 BLE! ble.gatts_notify(char_handle, notification_data)notification_data b123456 ble.gatts_notify(char_handle, notification_data) 这段代码可以让esp32c3发送信息然后用手机app“BLE调试助手”接收接收信息截图 最后六位数字31-36就是发送的数字1-6的ASCII编码。  注意不知道是否没有清空缓冲的原因每点一次“接收”都会再接收最后一次的信息。比如里面的连续多次31、32 就是测试时发送了“12”两个字母但是点了多次接收导致的。 调试 这句有报错 char_handle ble_init() Traceback (most recent call last): File stdin, line 1, in module File stdin, line 10, in ble_init ValueError: need more than 1 values to unpack 按照一言的提示查看封包情况 services ((ubluetooth.UUID(SERVICE_UUID),((ubluetooth.UUID(CHARACTERISTIC_UUID), ubluetooth.FLAG_NOTIFY | ubluetooth.FLAG_READ),),), )result ble.gatts_register_services(services) print(result) # 打印结果以查看结构 输出 ((16,),) 感觉这个封包有问题啊调整一下 services ((ubluetooth.UUID(SERVICE_UUID),((ubluetooth.UUID(CHARACTERISTIC_UUID), ubluetooth.FLAG_NOTIFY | ubluetooth.FLAG_READ),),),)((_srv_handle), ((_char_handle), _ ),), ) ble.gatts_register_services(services)封包和解包这里太头疼了直接用下面的代码 NUS_UUID AE25A5C1-4601-143C-12BB-8BC45A18749CRX_UUID AE25A5C2-4601-143C-12BB-8BC45A18749CTX_UUID AE25A5C3-4601-143C-12BB-8BC45A18749CBLE_NUS ubluetooth.UUID(NUS_UUID)BLE_RX (ubluetooth.UUID(RX_UUID), ubluetooth.FLAG_WRITE)# BLE_TX (ubluetooth.UUID(TX_UUID), ubluetooth.FLAG_NOTIFY)ELE_TX (ubluetooth.UUID(TX_UUID), ubluetooth.FLAG_NOTIFY | ubluetooth.FLAG_READ)BLE_UART (BLE_NUS, (BLE_TX, BLE_RX,))SERVICES (BLE_UART, )((tx, rx),) ble.gatts_register_services(SERVICES)# 获取特性的句柄以发送通知# char_handle _char_handle[0]char_handle tx
http://www.dnsts.com.cn/news/209456.html

相关文章:

  • 吉林市做网站男性早些泄吃什么药可以根治
  • vps云主机可以做网站深圳坪山天气
  • 用wordpress建仿站网站建设具体工作总结
  • 浙江省网站备案流程房地产市场规模
  • 校园二手信息网站建设网上交易平台
  • 国内炫酷网站设计安徽省建设干部网站
  • iframe 网站前台模板wordpress linux
  • 网站项目根据什么开发企业宽带解决方案
  • 贵州省建设项目验收备案网站鞍山市网站建设
  • 门户网站的建设与维护奇信建设集团官方网站
  • 站群软件哪个好国际新闻最新消息十条
  • 遵义市住房和城乡建设局官方网站6世界企业排名500强
  • flash网站的制作服装品牌网站建设
  • 国内做的比较好的数据网站企业做英文网站
  • 东莞市视频直播网站开发网站建设的公司业务
  • 网站开发需要什么开发工具php网站开发前景
  • 福田蒙派克e质量怎么样凡科做的网站可以优化
  • 网站未来发展规划怎么制作公司网页教程
  • 如何建网站服务器做网站宁波大点的网络公司
  • 做网站找哪个平台好网站是如何盈利的
  • 巢湖市建设工程网站网店营销与推广策划方案
  • 临漳seo整站排名网站改版模版
  • js网站开发教程wordpress的d8主题
  • 自己做网站需要买什么企业网站建设费用账务处理
  • 西宁市建设局官方网站渠道合作平台
  • 网站设计需要哪些成品网站1688入口的功能介绍
  • 手机网站快速建设网站建设流
  • 舵落口网站建设网站集约化建设讲话
  • 建材网站建设 南宁宣传广告制作效果图
  • 免费系统小说大全乐清手机网站优化推广