基于UIFLOW部署ESPNOW局域网应用的简单示范-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2836|回复: 0

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

[复制链接]
发表于 2019-9-10 20:04 | 显示全部楼层 |阅读模式
M5Stack的在线编程平台UIFLOW最近进行了1.4.0更新,加入了ESP-NOW功能,可以实现主从机的消息传递,接下来通过实例来演示功能实现。
该实验使用ESP-NOW进行通信,通过M5StickC接入PIR进行人体检测,当检查有人员活动时,远端的M5STACK会收到提示。
先介绍一下ESPNOW的几个模块

截屏2019-09-1019.51.20.png

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部分
img.jpg
插入图片绘制画面,并使用Label作为提示,为了方便查看本机的MAC地址,设置A键进行页面的切换显示,使用一个变量Mode用于标记。打印文字默认背景为黑色,因此在这里设置背景,当切换回首页时因为主题为白色,所以背景改为白色
截屏2019-09-1016.59.10.png

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

截屏2019-09-1019.45.27.png

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

截屏2019-09-1019.41.34.png

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

截屏2019-09-1019.45.37.png





您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 00:43 , Processed in 0.192970 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表