本次参加电源网DIY设计大赛,非常感谢电源网和得捷电子的支持,让我有机会接触更多的有趣的硬件,这对工程师来说是非常具有诱惑力的,这本次活动中也首次体验的云开发的整个流程,体验了uiFlow2可视模块化的便利设计,扩充了眼界和学识,接下来就让我们一起走进本次的创意办公小工具-“电子木鱼”。
一、项目介绍
创意办公小工具——电子木鱼,实际上就是使用本次选取的硬件通过软件的编辑实现电子木鱼的功能,同时还可以选择显示办公环境的数据监测功能。
根据以上的基本描述我们进行一下简单的功能划分:
1、电子木鱼功能,通过动作可以模拟敲击木鱼的行为,并且可以实现敲击摸鱼的效果,在这里我们选取的是通过手势检测实现的动作的采集,实现非接触式的控制效果;
2、环境检测功能,可以检测目前所处环境的温湿度等基本数据,当然了参数越多越好;
3、主控需要实现显示、声音播放、按键或触控按键等功能。
二、物料清单
物料选择的关键是可以实现上述功能,为此通过功能来确定物料,实现功能的全覆盖。
1、手势传感器:PAJ7620U2 手势 传感器 M5Stack 平台评估扩展板
PAJ7620一款光学数组式传感器,内置光源和环境光抑制滤波器集成的 LED,镜头和手势感测器在一个小的立方体模组,能在黑暗或低光环境下工作。同时传感器内置手势识别,支持 9个手势类型和输出的手势中断和结果,还提供接近检测功能,可用于感测物体接近或离开。工作原理是通过内部LED驱动器,驱动红外LED向外发射红外信号,当传感器阵列在有效地距离中探测到物体时,目标信息提取阵列会对探测目标进行特征原始数据地获取,获取数据会存在寄存器中,同时手势识别阵列会对原始数据进行识别处理,最后将手势结果存到寄存器中,用户可根据I2C接口对原始数据和手势数据地结果进行读取。
2、环境检测:BME688 空气质量,湿度,压力,温度 传感器 Arduino,UIFlow 平台评估扩展板
BME688是一款四合一的环境传感器,可测量温度、湿度、大气压和空气质量,体积小巧,低功耗,可适用于智能家居,移动应用环境监测和可穿戴设备等。加热的金属氧化物会根据空气中的挥发性有机化合物 (VOC) 改变电阻,因此可用于检测气体和酒精,例如乙醇、酒精和一氧化碳,并进行空气质量测量。注意它会给你一个电阻值(即上图中的Gas resistance),总的VOC含量,它不能区分气体或酒精。
3、主控:Core S3
M5Stack的Core S3是一个非常全面且强大的开发平台,也可以看到我们全区的传感器也都是和这个开发平台配套的,Core S3完全可以覆盖咱们的全部需求。CoreS3 是 M5Stack 开发套件系列的第三代产品。其 MCU 采用 ESP32-S3 方案,双核 Xtensa LX7 处理器,主频 240 MHz,自带 Wi-Fi 功能,板载 16M Flash 和 8M PSRAM。可通过 USB Type-C® 接口下载程序,支持 OTG 和 CDC 功能,方便外接 USB 设备和烧写固件。正面配备一块 2.0 英寸电容触摸 IPS 屏,面板采用高强度玻璃材质。屏幕底部内置一个 30 万像素摄像头 GC0308,带有接近传感器 LTR-553ALS-WA。供电部分采用 AXP2101 电源管理核心芯片和 4 路功率流控制环路,整体采用低功耗设计。板载 6 轴姿态传感器 BMI270、磁力仪 BMM150、TF 卡 (microSD) 卡槽、BM8563 RTC 芯片提供精准计时和睡眠定时器唤醒功能。声音输出采用高保真 16 位 I²S 功放芯片 AW88298,机身内置 1 W 扬声器。声音输入方面,采用了 ES7210 音频解码芯片和双麦克风输入。机身侧面有独立的电源键和重启 (RST) 键、延时电路,长按重启键可进入程序下载模式。CoreS3 套装默认自带一个 DinBase 底座,方便导轨、墙壁、螺丝固定。可外接 DC 12 V(支持 9 V ~ 24 V)或内置 500mAh 锂电池供电。DinBase 预留了多个原型位置供用户 DIY。该产品适用于物联网 (IoT) 开发、各种 DIY 项目开发、智能家居控制系统、工业自动化控制系统等场景。Core S3有很多强大的功能,如果大家有兴趣也可以前来开发一番。
三、功能框图
主控是咱们的Core S3,由于BME688和手势传感器使用的都是IIC接口,主控上目前外接的接口只有一个,正好两个常感器的接口地址不一致,所以通过一个一转多的接口扩展就可以实现正常的连接了。连接后的效果如下:
势传感器位于主控的上部,环境检测和转接板都位于后方。
四、软件设计
软件开发式本次设计的重中之重,我们在进行软件开发的时候需要进行一些准备工作,可看如下帖子:
【 DigiKey DIY原创大赛】1、开发环境篇 https://www.dianyuan.com/bbs/2777851.html;
可以进行初步的开发之后,我们就要对一些基础功能和模块进行初步的测试:
【 DigiKey DIY原创大赛】2、过程篇-BME688模块的使用 https://www.dianyuan.com/bbs/2777850.html;
【 DigiKey DIY原创大赛】3、过程篇-手势传感器的使用https://www.dianyuan.com/bbs/2777854.html
我们在之前的文章里面已经初步了解了各个功能模块的实现的方法,接下来就是我们软件设计的开始,将每一个小功能串联起来。
uiFlow2中的设计思路其实和adunio的设计思路是一致的,其包括了如下两个模块:
一个就是上电开始的初始化,然后就是循环操作的内容,根据我们的功能需求,主要包括按键扫描、传感器数据扫描、页面控制等内容。其中页面是我们划分功能的主要依据,目前一共包括四个主要界面,首页、菜单页、木鱼页、环境数据监测页,页面是我们是否执行操作的依据。
下面我们看一下触摸扫描:
按键扫描的逻辑就是不断的循环访问,有一点比较好的就是当有触摸发生的时候touch count是会发生变化,也因此判断时候有真实触摸发生,这个在最新的固件中居然有bug,大家如果有机会可以测试一下。触摸按键的坐标会被通过不同页面执行不同的动作。
然后就是页面显示:
基础页面只有在页面切换的时候改变一次,不然一直刷屏还是能够看到刷屏的痕迹的;
接下来是传感器数据的采集和现实:
传感器数据的采集也是有条件的,只有在环境检测页面显示,这样的设计也可以加快循环采集的速度。
到这里我们就本上就完成了整个功能逻辑的设计,实现了基本界面的切换,不同功能界面的显示。
五、程序代码
本次模块化设计云开发工程如下:
大家如果感兴趣可以在uiFlow2中打开,或者继续编辑你想要的内容。
六、视频展示
本次的展示视频包括功能展示和程序设计开发过程讲解量大部分,相关视频已经上传到bilibili,地址如下:
以下是视频演示: