基于UIFLOW部署ESPNOW局域网应用的简单示范

2019-09-117056
AI 快速预览详细 收起
本文介绍了如何使用M5StickC和M5STACK通过ESPNOW实现局域网通信。首先介绍了ESPNOW的几个模块,包括获取MAC地址、添加从机地址、设置密钥、发送数据广播等。接着详细展示了M5StickC部分的代码实现,包括按键切换页面、发送消息等。最后展示了从机接收部分的代码实现,定义了一个接收消息的回调函数,当接收到消息时显示图片。整个过程实现了通过PIR传感器进行人体检测,并将检测结果发送给远端设备的功能。
M5Stack的在线编程平台UIFLOW最近进行了1.4.0更新,加入了ESP-NOW功能,可以实现主从机的消息传递,接下来通过实例来演示功能实现。
该实验使用ESP-NOW进行通信,通过M5StickC接入PIR进行人体检测,当检查有人员活动时,远端的M5STACK会收到提示。
先介绍一下ESPNOW的几个模块
基于UIFLOW部署ESPNOW局域网应用的简单示范图1

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部分
基于UIFLOW部署ESPNOW局域网应用的简单示范图2

插入图片绘制画面,并使用Label作为提示,为了方便查看本机的MAC地址,设置A键进行页面的切换显示,使用一个变量Mode用于标记。打印文字默认背景为黑色,因此在这里设置背景,当切换回首页时因为主题为白色,所以背景改为白色
基于UIFLOW部署ESPNOW局域网应用的简单示范图3

以上为按键部分,接下来研究发送消息的主体


基于UIFLOW部署ESPNOW局域网应用的简单示范图4


首先要添加peer即从机的mac地址,并设置ID,在Mode为真的情况下(显示首页的情况下),通过PIR来判断是否有人靠近,条件为真,点亮屏幕同时向从机(ID1)发送消息,如果没有人靠近则熄灭屏幕
再来看一下从机接收部分,同样的希望有两个页面显示,如果按下按键A那么mode为真,进入查看MAC地址页面,再次按下mode为假返回显示图片页面,当然主机没有发送消息之前图片不会显示


基于UIFLOW部署ESPNOW局域网应用的简单示范图5
定义一个接收消息的回调函数,当接受到消息时显示定义好的图片,由于PIR传感器自带延时因此,发送的消息不会只发送一次,这里会接收到好几次消息,接收到消息后按下B按键会跳出循环直到下一次重新接收,当然没收到消息屏幕是灭掉的。
基于UIFLOW部署ESPNOW局域网应用的简单示范图6

远程提示内容为一张图片

基于UIFLOW部署ESPNOW局域网应用的简单示范图7


创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(1)
gada888
gada888
不错的程序
- 没有更多了 -