基于UIFLOW部署ESPNOW局域网应用的简单示范
M5Stack的在线编程平台UIFLOW最近进行了1.4.0更新,加入了ESP-NOW功能,可以实现主从机的消息传递,接下来通过实例来演示功能实现。该实验使用ESP-NOW进行通信,通过M5StickC接入PIR进行人体检测,当检查有人员活动时,远端的M5STACK会收到提示。
先介绍一下ESPNOW的几个模块
Get mac addr 代表获取本机的MAC地址,只有主机知道了MAC地址才能添加到通信列表
Add peer ff:ff:ff:ff:ff:ff as id()这里是主机需要添加的从机地址,写在主机程序中。目前UIFlow中的通信只能实现单向通信,无法实现双向通信
Set pmk 设置ESP-NOW通信需要的密钥,如果没有设置会默认自动配置
Broadcast data发送数据广播
Receive mac_addr()data() 接收数据后回调执行的函数,接收MAC地址与数据
After send message flag() 发送数据后执行的回调函数,返回布尔值
Send message id() with data() 向指定的ID发送数据
先介绍M5StickC部分
插入图片绘制画面,并使用Label作为提示,为了方便查看本机的MAC地址,设置A键进行页面的切换显示,使用一个变量Mode用于标记。打印文字默认背景为黑色,因此在这里设置背景,当切换回首页时因为主题为白色,所以背景改为白色
以上为按键部分,接下来研究发送消息的主体
首先要添加peer即从机的mac地址,并设置ID,在Mode为真的情况下(显示首页的情况下),通过PIR来判断是否有人靠近,条件为真,点亮屏幕同时向从机(ID1)发送消息,如果没有人靠近则熄灭屏幕
再来看一下从机接收部分,同样的希望有两个页面显示,如果按下按键A那么mode为真,进入查看MAC地址页面,再次按下mode为假返回显示图片页面,当然主机没有发送消息之前图片不会显示
定义一个接收消息的回调函数,当接受到消息时显示定义好的图片,由于PIR传感器自带延时因此,发送的消息不会只发送一次,这里会接收到好几次消息,接收到消息后按下B按键会跳出循环直到下一次重新接收,当然没收到消息屏幕是灭掉的。
远程提示内容为一张图片
不错的程序
页:
[1]