Funpack3-1-基于XG24-EK2703A的蓝牙温度计
该项目使用了XG24-EK2703A,实现了蓝牙温度计的设计,它的主要功能为:无线蓝牙温度计。
标签
Funpack活动
蓝牙
CircuitPython
XG24-EK2703A
devin_liu
更新2024-03-05
115

1.项目介绍:

XG24-EK2703A是一款基于EFR32MG24片上系统的开发套件。这款开发板具备超低成本、低功耗和小巧的特点,非常适合用于无线物联网产品的开发和原型制作。选择任务一:使用芯片内部的温度检测外设,测量温度并通过蓝牙发送至上位机,在上位机使用波形图的方式实时显示温度。

2.设计思路

EFR32MG24集成蓝牙功能,并且CircuitPython目前也支持这个板子,通过CircuitPython可以进行快速开发,已经集成了蓝牙和常见的外设驱动。CircuitPython与标准的Python几乎完全兼容,代码易于复用和维护。由于不需要编译,调试和运行比官方IDE速度更快,因此在原型设计等场景下,CircuitPython更便捷。

显示波形需要通过安卓端上位机app 蓝牙调试器 实现,蓝牙调试器支持通过蓝牙连接进行数据的发送和接收。开发者可以使用它来发送测试数据到蓝牙设备,这款app支持界面定制与扩展,允许开发者根据自己的需求进行定制和扩展,以满足特定的调试需求。

3.软件:

3.1程序流程图

3.2初始化

参考网友教程,对蓝牙BLE_UART模式初始化,

导入及初始化:

除蓝牙部分外,还需要导入读取温度的microcontroller模块,延时函数time模块。

import time

import microcontroller

import struct

from adafruit_ble import BLERadio

from adafruit_ble.advertising.standard import ProvideServicesAdvertisement

from adafruit_ble.services.nordic import UARTService

ble = BLERadio()

uart = UARTService()

advertisement = ProvideServicesAdvertisement(uart)

advertisement.short_name = "CPY_HID"

advertisement.connectable = True


3.3读取温度和数据处理

当检测到上位机连接后,循环发送数据,由于上位机有数据包的的格式要求,包头和包尾需要分别增加0xA5,0x5A。

读取温度后,将温度数据转换为4字节bytes型数据中。并增加校验值

温度读取和数据处理及发送函数:

     while ble.connected:

result = "abcd"

num = microcontroller.cpu.temperature

bytes_data = struct.pack('f', num)

jiaoyan=bytes_data[0]+bytes_data[1]+bytes_data[2]+bytes_data[3]

re = jiaoyan.to_bytes(4,"little")

m = b'\xa5' + bytes_data+re[0:1]+ b'\x5a'

uart.write(m)

time.sleep(2)


4.实现过程

4.1烧录CircuitPython固件

烧录CircuitPython,根据下面教程,启动simplicity commander,烧录固件后即可通过Thonny编写程序。

https://community.silabs.com/s/share/a5U8Y000001a2QoUAI/introducing-circuitpython-support-for-silabs-xg24-boards?language=en_US

烧录固件,通过jlink的串口可以连接到Thonny。

4.2上位机设置

上位机uuid设置如下,以下为和CircuitPython默认参数可以直接连接,不需要修改可正常接收数据包。

上位机接收数据包增加一个浮点数,如果有其它数据可自行增加。上位机的数据格式为包头+数据+校验+包尾结构,校验的计算方式为发送数据的和的低八位

4.3控件设置及演示

增加一个Y-T控件,并链接到刚刚设置的浮点数,连接后正常接收数据显示波形图,调整控件显示,让波形更好的显示

5.经验总结

在本次完成任务过程中,我选择了使用XG24-EK2703A开发板和CircuitPython语言来制作一个无线温度计。这次经验让我深刻体会到了CircuitPython在简化硬件编程方面的优势,同时也让我对蓝牙通信技术有了更深入的了解。XG24-EK2703A开发板与CircuitPython的能够很好的结合,开发十分方便,虽然是是第一次使用CircuitPython和这个板子,但是上手速度非常快,大部分资料通过网络都能解决,后面有时间希望能在更多的机会中使用官方ide,深入学习XG24-EK2703A这块开发板,了解其无线方面的设计和开发。


附件下载
code.py
团队介绍
个人
评论
0 / 100
查看更多
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2024 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号