Files

25 KiB
Raw Permalink Blame History

目录
Remote ESP-NOW MQTT communication WiFi P2P Easy-IO PWM ADC DAC UART I2C Execute SDCard Http EEPROM Modbus-Master Modbus-Slave BLE UART Blynk Echo STT Pin Servo NTP

Remote

功能说明

通过手机或电脑在网页端控制M5Stack设备

  • Set Title 设置控制页面显示的标题内容.

  • Remote qrcode show in x y size 生成网页的二维码展示位置与大小.

  • Add Remote Switch Button index 添加切换开关按钮(0或1),当点击时运行块内的程序.

  • Add Remote Button index 添加按钮,当点击时运行块内的程序.

  • Add Remote Slider 添加滑动条,使用前先添加变量,通过滑动条改变变量,执行块内的程序

  • Add Remote Label index interval 通过添加标签显示数据,设定刷新时间间隔.

Instructions

屏幕显示网页端二维码,扫码进入控制页面,通过按键和滑动条控制LED Bar,同时显示ENV模块的温度.

ESP-NOW

功能说明

ESP-NOW 是一种短程低功耗通信协议,可以使多个设备在没有或不使用 Wi-Fi 的情况下进行通信。这种协议类似常见于无线鼠标中的低功耗 2.4GHz 无线连接——设备在进行通信之前要进行配对。配对之后,设备之间的连接是持续的、点对点的,并且不需要握手协议.

  • Get mac addr 获取本机的mac地址.

  • Add peer ff as id 添加指定mac地址,并设置为id

  • Set pmk 设置配对密钥

  • Broadcast data 广播指定数据

  • Receive mac_addr data 接收数据,获取发送者mac地址以及携带的数据内容

  • After send message flag 发送回调函数,在执行发送信息后自动执行回调函数,并返回是否发送成功的标志位flag.成功为True,失败为False.

  • Send message id with data 发送数据至指定的id的设备.

使用方法

接收端

将本机mac地址显示在屏幕上,使用数据接收块并创建两个变量用于接收发送者地址与数据内容.在接收块函数内部进行数据的处理,用作显示或是判断等其他操作.如下方程序通过判断接收数据是否为"1",控制LED灯的开关.

注意:创建的变量名称不允许与形参名称一致,即不允许使用名称为"addr"、"data"的变量用作数据获取

发送端

添加接收端设备的mac地址,在发送程序中填写发送的数据内容、选择接收的设备的id.使用按键程序去控制数据的发送.使用回调函数能够帮助我们判断数据是否成功从本机发送出去.我们需要用一个变量去获取它的返回结果.

注意:创建的变量名称不允许与形参名称一致,即不允许使用名称为"flag"的变量用作数据获取

完成程序编辑,分别运行接收端与发射端程序,即可实现ESP-NOW短程无线通信.

?>注意: 运行ESP-NOW时,若通信设备均连接同一个WiFi网络,则无需配置通信频道,可正常通信。 否则请在程序中配置通信频道,并download程序至设备运行。

MQTT communication

什么是MQTT

MQTTMessage Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻量级"通讯协议

该协议构建于TCP/IP协议上,由IBM在1999年发布。

MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。

作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。

UIFlow与MQTT

在UIFlow中,我们可以使用MQTT功能实现两个或是多个CORE之间的通讯与交互,从而实现强大的远程控制功能

MQTT server

  • 选择MQTT服务

要使用MQTT协议进行数据交互,需要服务器的支持,有很多第三方的服务器平台可以选择,在这里我们演示的平台为CloudMQTT

当你在平台已经创建好了服务支持,你会得到一些配置信息,如服务器地址,用户名,密码等,在UIFlow的MQTT块中将使用这些信息

  • MQTT功能

在UIFlow的高级功能中,可以找到MQTT功能块,我们可以把MQTT协议简单的理解为两个环节,"发布"(Publish) 与 "订阅"(Subscribe)

当发布者发布消息后,订阅者将获取这一信息,从而实现设备之间的通讯

初始化程序

  • MQTT配置块

添加一个MQTT配置块,并连接到Setup块上

  • 信息填写

填写你个人或是第三方服务器平台上的服务器信息,为接下来的连接做准备

注意

  • 当你有多个设备同时使用时,ID名称(下图的ID为"M5stack")不允许与配置信息中的其他选项重复,同时不允许与其他设备的ID重复,同一时间里,同一服务器中,同一ID名称的设备只允许有一个在线
  • MQTT Start

在MQTT配置块下方添加Start块,这表示,当配置信息后则开始运行

Publish发布

功能说明

Publish发布指的是,通讯中发布数据的环节,为发布内容包含两个部分 “主题”(topic),“内容”(msg)

  • Publish “主题”(topic

设定一个发布主题,当其他设备想要获取该主题下的内容信息时,则需要订阅相匹配的主题名

  • Publish “内容”(msg

设定要发布的内容信息

使用方法

当程序运行到Publish发布块时,进行消息发布。例: 当按下A按钮时,进行消息发布(主题为"RGB",内容为"open") 当按下B按钮时,进行消息发布(主题为"RGB",内容为"close"

Subscribe订阅

功能说明

Subscribe订阅指的是,通讯中接收数据的环节,当发布者发布了信息后,订阅者将自动接收已订阅的主题(topic),消息内容(msg)

  • Subscribe “主题”(topic

设定要订阅的主题

  • Get topic data “内容”(msg

获取该订阅下的消息内容

使用方法

添加Subscribe块,并填写要订阅的主题(topic),使用Get topic data块获取,并处理分析,例:

当从Publish那获取了一个"open",点亮RGB bar,当获取到"close",则熄灭RGB bar

使用案例

实现功能

用一个CORE编程一个简单的使用案例来验证功能,它即使发布者(Publish),也是订阅者(Subscribe)

  • 完整程序

使用方法

当按下A按钮时,进行消息发布(主题为"RGB",内容为"open"),RGB bar点亮

当按下B按钮时,进行消息发布(主题为"RGB",内容为"close", RGB bar熄灭

WiFi

功能说明

设置wifi网络

  • wifi connect 建立wifi网络

  • wifi reconnect wifi重新连接

  • wifi is connect 返回wifi连接状态

  • Connect to Wi-Fi SSID PASSWORD 设置SSID和密码

使用方法

wifi连接指定的SSID

P2P

功能说明

设置点对点通信

  • P2P Send To APIKey Msg 通过MQTT服务器验证APIKey发送消息实现点对点远程控制

  • P2P Read 读取远程P2P发送的数据

使用方法

建立P2P并发送消息.

Easy IO

功能说明

I/O引脚配置

  • analog read pin 读取引脚模拟量

  • analog write pin duty 设置引脚占空比

  • digital read Value 读取引脚数字量

  • digital toggle pin 切换引脚值

  • map from low from high to low to high 将值进行区间映射

Instructions

将温度传感器的值映射到0-100区间

PIN

功能说明

引脚自定义配置

  • Init Pin mode Pull 设置引脚模式

  • set HIGH 设置引脚高电平

  • set LOW 设置引脚低电平

  • Get Value 获取引脚值

  • Set Value 设置引脚值

Instructions

设置引脚5上拉输出高电平

PWM

功能说明

PWM功能设置

  • Init in Pin freq duty use timer 设置通道引脚频率、占空比和定时器

  • set freq to 改变频率

  • set duty to 改变占空比

  • Pause 禁用PWM功能

  • Resume 重新启用PWM功能

使用说明

使用0号定时器设置PWM0引脚25频率500占空比50

ADC

功能说明

模数转换

  • Init in Pin 设置采样通道引脚

  • set width 设置采样宽度

  • set atten 设置ADC输入衰减

    • ADC.ATTN_0DB0dB衰减,提供最大1.00v的输入电压
    • ADC.ATTN_2_5DB2.5dB衰减,提供大约1.34v的最大输入电压
    • ADC.ATTN_6DB6dB衰减,提供大约2.00v的最大输入电压
    • ADC.ATTN_11DB11dB衰减,提供大约3.6v的最大输入电压
  • read value 读取adc

使用说明

使用adc0通道在36引脚进行采样,读取数值

DAC

功能说明

数模转换

  • Init in Pin 设置转换通道

  • write value 写入DA值

  • beep with freq duration scale 设置蜂鸣器频率,时间和振幅

  • waveform with freq type duration scale offset invert 设置波形频率振幅偏移量

  • stop wave 停止输出

  • set freq 设置频率

使用说明

使用dac0通道在25引脚输出波形

UART

功能说明

串口数据收发

  • set tx rx baud use uart 设置串口引脚和波特率

  • read all 一次性读取串口全部数据

  • read characters 读取指定数量的数据

  • read line 读取\n前的数据

  • remain cache 读取缓冲区剩余数据

  • write number in 向串口写数字

  • write a line in 向串口写一行字符串

  • write in 向串口写字符串

  • write raw date in 向串口写入原始数据(形如 b"\xff\xab")

使用说明

读取串口数据并向串口发送数据

I2C

功能说明

I2C接口设置

  • Master slave addr 设置主机接口与从机地址

  • Set at sda scl slave addr 自定义SDA SCL与从机地址

  • Write reg one byte 向寄存器地址写1个字节数据

  • Write reg one short With encode 大端模式向寄存器地址写两个字节

  • Read reg one byte 从寄存器地址读取一个字节

  • Read reg one short with decode 大端模式从寄存器地址读取两个字节

  • Read reg Read byte 从寄存器地址读取若干字节

  • Read byte 读取字节

  • Available I2C address in list 检查I2C地址是否可用

  • Scan I2C device 扫描I2C设备

使用说明

从I2C读取数据

  • Write mem data reg date type 向寄存器地址写入指定类型的数据

  • Write data type 向I2C总线写指定类型数据

  • Read mem data reg date type 从寄存器地址读取指定类型的数据

  • Read data num type 从I2C总线读取指定类型的数据

  • In data get index 从返回的数据列表中提取一个数据

向I2C写数据

从I2C读数据

Execute

功能说明

执行外部程序

使用方法

导入库

SDCard

功能说明

SD卡读写操作

  • open sdcard file mode 打开指定文件并执行读或写操作,r和r+状态下必须存在此文件,否则报错。a、w和w+模式如果不存在文件会自动创建。

  • file read all 读取文件内所有内容

  • file read bytes 读取指定字节数

  • file read line 读取一行内容

  • file write 向文件内写入内容

  • file set seek 设置读取的偏移位置

  • file get seek 获取当前的偏移位置

  • sdcard listdir 列出指定目录文件

  • file mkdir 设置读取的偏移位置

  • sdcard remove 删除指定文件

  • sdcard rmdir 删除指定目录

  • sdcard rename 文件重命名

使用说明

创建test文件夹,建立名为TEST.text的文件,写入helloM5Stack,并读取M5Stack

Http

功能说明

发送HTTP协议

  • Http Request 创建Http访问请求,方法为GET、POST、DELET、PUT、PATCH,URL为完整HTTP连接地址,以字典的形式创建数据头Headers,Data数据,发送成功执行Success,发送失败执行Fail。

  • Get Status Code 返回状态码

  • Get Data 返回请求数据

使用说明

向百度发送GET请求,返回数据并打印

EEPROM

功能说明

将重要数据以键值对的形式保存至NVS分区,防止关机后数据丢失(为防止程序处理被阻塞,5秒后数据被真正写入),请不要将数据随意反复写入NVS分区,否则将影响Flash寿命导致损坏。

  • EEPROM write key value 创建一个键值对将数据保存到EEPROM中

  • EEPROM read key 读出关键字对应的数据内容

  • EEPROM read key to int 读出关键字对应的数据内容并转为整形数据

使用说明

创建键值对写入到NVS分区,并读取数据

Modbus Master

功能说明

创建一个Modbus主机,利用ModBus协议封装数据,通过串行通讯将数据下发至从机,数据取值范围0-65535。

  • Init baud tx rx in uart crc 对通讯接口进行初始化操作,可指定波特率、发送引脚、接收引脚、串口号及CRC校验大小端模式

  • Send addr function reg addr value 向指定的从机地址发送数据包,addr为从机地址,function为功能码,reg addr为寄存器地址,value为用户数据

  • Rx buffer cache number 从缓冲区读取的字节数

  • Read rx data 读取接收的数据包,适用于自定义处理

  • Get rx addr function data 用回调的方式接收数据包,通过变量接收参数,参数自动更新

使用说明

主要功能:(从机代码见下方说明)连接两台M5Stack,通过Modbus建立主机和从机,主机按下A/B按键下发数据,并接收从机返回的数据包(接收功能码2),数据包处理方式有以下两种:

1.通过LOOP处理从机返回的数据包,在屏幕上显示。

根据Modbus协议定义,从机返回数据包至少包含3个有效数据(地址、功能码、数据),因此大于3字节视为有效数据,通过列表对数据进行解析处理

  1. 通过回调函数处理返回的数据包,当使用回调函数时不得使用LOOP否则会阻塞回调。

设置三个变量分别接收从机返回的地址、功能码、数据

Modbus Slave

功能说明

创建一个Modbus从机,接收ModBus封装的数据包,通过串行接口与主机通讯,数据取值范围0-65535。

  • Init addr baud tx rx in uart 对通讯接口进行初始化操作,可指定从机地址、波特率、发送引脚、接收引脚、串口号,CRC校验为大端模式

  • Init function reg addr value method 定义Modbus数据操作格式,function为功能码,reg addr为寄存器地址, value为初始默认值, method为读或写操作模式

  • Update function reg addr value 按功能码对指定的寄存器地址内数据进行更新

  • Get rx buffer data 读取缓冲区数据

  • Get reg write function reg addr value 用回调的方式获取主机发来的数据包(功能码、寄存器地址、数据),通过变量进行接收,需要自行处理

  • Get function reg addr value 获取指定的主机数据包内容,通过功能码、寄存器地址进行指定

  • send addr function reg addr value 接收到主机数据包后向主机回应发送的数据包内容

使用说明

主要功能:(主机代码见上方说明)连接两台M5Stack,通过Modbus建立主机和从机,从机接收到地址码1,功能码1,寄存器地址1的数据包后解析数据,数据为1点亮LED Bar,数据为2熄灭LED Bar,同时从机实时更新自身相应数据,并对主机做出回应(通过功能码2),从机自身通过A/B按键操作也会实时将数据上报给主机。实现方式有以下两种:

1.通过LOOP处理从机返回的数据包,及时更新数据在屏幕上显示,并进行响应。

接收指定的数据包并解析数据,判断数据做出响应并上报主机(通过功能码2),按A/B键对自身响应,并向主机发送数据包报告状态(通过功能码2)

  1. 通过回调函数处理返回的数据,指定数据包要对fun和reg_addr加入判断处理,当使用回调函数时不得使用LOOP否则会阻塞回调。

设置三个变量分别接收主机发送的地址、功能码、数据,使用列表获取数据,对数据进行判断处理,同时将状态通过(功能码2)上报主机。手动按A/B键在自身响应的同时也会上报主机(通过功能码2).

BLE UART(support M5Stack Fire only)

功能说明

建立蓝牙连接,开启蓝牙透传服务(仅支持M5Stack Fire)

  • Init ble uart name 初始化设置,配置蓝牙设备名称

  • BLE UART Writre 使用蓝牙发送数据

  • BLE UART remain cache 检查蓝牙串口缓存数据字节数

  • BLE UART read all 读取蓝牙串口缓存中所有数据

  • BLE UART read characters 读取蓝牙串口缓存中n个数据

使用说明

建立蓝牙透传连接,发送on/off控制LED

Blynk(support M5Stack Fire only)

与Blynk服务器连接,使用BLE连接Blynk App,实现手机端控制M5Stack Fire (仅支持M5Stack Fire)

  • Init blynk name token type BLE 初始化blynk配置,输入设备名称与App端的token.

  • Virtual write number data 向虚拟端口号写入数据

  • Notify message 向App发送系统级消息通知

  • Tweet message 向Twitter客户端发送消息通知

  • On event write get number message 从App端接收即将写入的指定虚拟端口的数据,如果不指定设为V*

  • On event read get number 读取App端指定的虚拟端口号

  • On event 蓝牙连接/断开时的回调函数

使用说明

使用Blynk控制M5StackFire的RGB灯条颜色和亮度,并在屏幕上实时显示

1.下载移动端Blynk,注册账号,您可以选择使用Blynk官方服务器,或自行搭建服务器,这里我们提供一个免费服务器供您测试(120.24.58.30:9443)。

2.使用邮箱注册Blynk账号,注册成功后使用该账号登录。

3.创建新工程,选择ESP32 Dev Board,接入方式选择BLE,同时记录下AUTH TOKEN。

4.按照下图步骤添加组件,其中BLE连接为必要组件。

Echo STT

通过ATOM Echo发送语音,获取经过转换后的文字

  • Init echo speech recognition token 填写Token,初始化语音服务.

  • Recv echo data 回调函数接收语音识别返回的数据

  • Get recv text 接收语音识别返回的数据

使用说明

ATOM Echo烧录ECHO STT相关固件,通过语音识别控制M5StackFire的LED

Pin Servo

对舵机进行控制

  • Init Pin, freq, min, max,angle range 舵机初始化设置,Pin=引脚, freq=舵机信号频率, min=最小脉冲宽度, max=最大脉冲宽度, angle angle=舵机角度范围

  • rotate to degree 舵机转动角度

  • write us 高电平时间

使用说明

控制舵机在0°和90°之间切换

NTP

通过网络服务器获取时间

  • Init ntptime with host and timezone 设置NTP服务器和时区

  • Get timestamp 获取Unix时间戳

  • Get date format with - 获取日期,显示格式为分隔符-

  • Get time format with - 获取时间,显示格式为分隔符-

  • Get date format with - and time format with : 显示日期和时间,日期格式为分隔符-,时间格式为分隔符:

  • Get year 获取年

  • Get month 获取月

  • Get day 获取日

  • Get weekday 获取星期

  • Get hour 获取小时

  • Get minute 获取分钟

  • Get second 获取秒

使用说明

显示Unix时间戳和当前的时间日期 (注意:当程序download离线运行时,需要在NTP初始化程序前,添加WiFi连接程序,使得设备连接网络。)