无线电模块允许设备通过简单的无线网络协同工作。
无线电在概念上非常简单:
广播发射的消息具有一定的可配置长度(最多251个字节)。
从可配置长度的消息队列中接受消息(队列越大,使用的RAM越多)。
如果队列已满,则会忽略新消息,读取消息会将其在队列中删除。
广播时设置一个广播功率,功率越大接受范围越大。
接收时按地址和组进行过滤。
发送和接受字节来处理任意数据。
使用receive_full获取传入消息的完整信息包括:消息数据、信号强度和时间。
为了方便初学者使用,无线电可以使用字符串的形式发送和接受消息。
默认配置兼容其他micro:bit平台。
想要使用无线电模块,请在程序开头使用import radio导入无线电模块。
API | 描述 |
---|---|
radio.on() | 打开无线电,这需要明确使用,因为无线电消耗很多功率并且占用你可能需要使用的内存。 |
radio.off() | 关闭无线电,以节约点亮和内存。 |
radio.reset() | 将设置重置为其默认值(如下面配置功能的文档中所列)。 |
在收音机打开之前,以下所有发送或接收方法都不起作用。 | ------------------ |
radio.send_bytes(message) | 发送包含字节的消息。 |
radio.receive_bytes() | 接收消息队列中的下一个传入消息。 如果没有待处理消息,则返回None。 消息以字节形式返回。 |
radio.receive_bytes_into(buffer) | 接收消息队列中的下一个传入消息。 将消息复制到缓冲区中,必要时修剪消息的结尾。 如果没有消息,则返回None,否则返回消息的长度(可能超过缓冲区的长度)。 |
radio.send(message) | 发送消息字符串。 这相当于send_bytes(bytes(message,'utf8')),但b'\ x01 \ x00 \ x01'前置于消息队列前面(使其与其他以micro:bit为目标的平台兼容)。 |
radio.receive() | 与receive_bytes()工作方式相同,它的返回值等同于str(receive_bytes(), 'utf8'),但检查前三个字节是b'\ x01 \ x00 \ x01'(以使其与micro的其他平台兼容)。 在转换为字符串之前剥离前置字节。如果转换为字符串失败,则会引发ValueError异常。 |
radio.receive_full() | 返回一个元组,其中包含三个值,表示消息队列中的下一个传入消息。 如果没有待处理消息,则返回None。 元组中的三个值表示:消息队列中的下一个传入消息为字节。 RSSI(信号强度):以dBm为单位测量的0(最强)和-255(最弱)之间的值。 时间戳:收到消息时time.ticks_us()返回的值。 |
radio.config(**kwargs) | 配置与无线电相关的各种设置,其默认值如下。 |
length(默认值= 32)定义通过无线电发送的消息的最大长度(以字节为单位)。它最长可达251个字节(S0,LENGTH和S1前导码为254-3个字节)。
queue(默认值= 3)指定可以存储在传入消息队列中的消息数。如果队列中没有剩余空间用于传入消息,则丢弃传入消息。
channel(默认值= 7)可以是0到83(含)的整数值,它定义了无线电调谐到的任意“通道”。消息将通过此通道发送,只有通过此通道接收的消息才会被放入传入消息队列。每个步长为1MHz宽,基于2400MHz。
power(默认值= 6)是0到7(含)的整数值,表示广播消息时使用的信号强度。值越高,信号越强,但设备消耗的功率越多。编号转换为以下dBm(分贝毫瓦)值:-30,-20,-16,-12,-8,-4,0,4。
address(默认值= 0x75626974)是一个任意名称,表示为32位地址,用于过滤硬件级别的传入数据包,仅保留与您设置的地址匹配的数据包。其他micro:bit相关平台使用的默认设置是此处使用的默认设置。
group(默认值= 0)是一个8位值(0-255),用于过滤消息时的地址。从概念上讲,“地址”就像是一个住宅/办公室地址,而“组”就像您要将消息发送到该地址的人。
data_rate(default = radio.RATE_1MBIT)表示数据吞吐量发生的速度。可以是无线电模块中定义的以下容量之一:
|radio.RATE_250KBIT|常量用于表示每秒256 Kbit的吞吐量。|
|radio.RATE_1MBIT|常量用于表示每秒1 MBIT的吞吐量。|
|radio.RATE_2MBIT|常量用于表示每秒2 MBIT的吞吐量。|
如果未调用config,则使用上述默认值。
编码器是一种用来测量机械旋转或位移的传感器。它能够测量机械部件在旋转或直线运动时的位移位置或速度等信息,并将其转换成一系列电信号。
在MicroPython的ESP32库中,NVS类用于管理非易失性存储,支持 32 位有符号整数和 二进制blob。
umqtt 是 MicroPython 的一个轻量级 MQTT 客户端库,使得在微控制器上使用 MQTT 协议变得简单易行。本文将介绍 umqtt 的实用方法,帮助您更好地在项目中应用这一技术。
本方案是一个基于ESP32-CAM + 物联网的图像采集方案。
ESP32-CAM与MicroPython结合可实现摄像头图像采集、视频流传输等功能,不过Micropython官方没有支持ESP32-CAM的固件,需要烧录第三方的专有固件。
相信很多人都有把绿植给养死的经历,可能是浇水过多、忘记浇水、较长时间不在家不能浇水等,本文介绍一种可以灵活定制的智能浇花方案。
MicroPython 在 ESP32 上支持线程(Thread)功能,通过_thread模块实现。线程允许程序并发执行多个任务,适合处理需要同时运行的场景,例如传感器数据采集和网络通信。
使用了 MicroPython 库,通过 定时器(Timer) 和 ADC(模数转换器) 功能来实时读取传感器数据。使用定时器可以实现高精度、非阻塞、低资源消耗的周期性任务,保证实时性和可靠性,特别适用于嵌入式系统中的多任务处理和低功耗场景。
本教程将向您展示如何使用micropython脚本设置Pico和TFT触摸显示屏。您将学习如何使用触摸屏控制Pico以及如何在屏幕上显示信息。
本文旨在介绍如何在运行MicroPython的ESP32上使用外部引脚中断功能。
本节内容为大家讲解ESP32使用MicroPython的功耗控制方法。