3650| 0
|
[案例教程] 【NB-IoT 物联网开发板ESP32 & TinkerNode】牛奶自动购买机 |
hello,大家好。通过之前的项目学习,我们了解了ESP32和TinkerNode物联网开发板的基础功能,这次项目我们将使用ESP32和TinkerNode基于阿里云物联网平台和Auto.js脚本软件来做类似亚马逊的Dash Button的关于盒马鲜生的自动购买牛奶的智能家居设备,解决我们在实际生活中常常遇到的喝完牛奶后忘记了购买的尴尬情况。 教程中将先使用ESP32,最后将修改为使用TinkerNode来实现相关功能。 项目主要目的:①使用ESP32开发板解决生活中的实际问题 项目视频元件清单FireBeetle 萤火虫 ESP32微控制器 X 1 一、硬件组装连接组装过程参考视频中的组装部分,连线图如下图所示: 二、设备调试如果你是第一次使用ESP32,请先参照ESP32的官方wiki进行环境配置 :ESP32官方wiki 如视频中所说,我们将分三个步骤完成最终设计: Step1.牛奶重量低于预设值时触发报警→Step2.触发报警后向阿里云发送报警信息→Step3.阿里云收到报警信息后向手机发送短信触发自动购买 1. 牛奶重量低于预设值时触发报警这一步我们专注于用ESP32调试重量传感器。 1.1 重量传感器介绍重量传感器又叫电子秤,作为此次设计中的数据采集单元,能够将物体的重量信息转化为ESP32能够识别的电压信息。传感器的测量范围是0-1KG,所以要注意当检测物体重量高于1KG时,ESP32读取到的重量都是1KG,但是当物体的重量低于1KG后,ESP32就可以很精准的读取到物体的重量,也就是说如果要将此设备用于称重其他物品,只需要保证所称物品在快用完时重量能够低于1KG即可。 1.2 功能实现由于ESP32的模拟量读取精度与Arduino不同的问题,我们对重量传感器的官方库做了简单的处理,使重量传感器用于ESP32时也能输出较准确的重量信息 将下载好的库解压后放在Arduino IDE 的librarys文件夹下,参考:如何加载库文件 打开附件中的DFRobot_HX711-master->example->Test_Weight_Judgment,点击上传到ESP32,进行重量功能的测试。 此段代码设定了报警的重量阈值,当重量低于这个值时板子上的RGB灯会亮红灯,否则就亮绿灯,修改这个参数就可以调节重量报警触发的重量值。 2. 报警后向阿里云发送报警信息上一步我们只是将重量的报警信息通过板子上的RGB灯在本地显示出来,这一步我们就将报警信息发送到阿里云。因此,这一步的主要任务是进行阿里云平台的相关配置,连通阿里云与我们的ESP32。 2.1 在阿里云平台创建项目-产品-设备新建项目 进入阿里云主界面,登陆后找到物联网IOT->物联网应用开发 和之前的教程相同,我们首先需要在阿里云平台中新建一个项目, 然后为项目创建产品和设备,配置产品自定义功能(物模型)。在物联网平台的页面左侧,选择IoT Studio -> 项目管理,点击新建项目,新建一个空白项目,项目名称为“自动订购系统”,如下图所示: 新建产品 产品的名称填写“家庭日用品订购”,所属品类选择“自定义品类”,其他选项默认,如下图所示。
完成后点击保存,此时已经在项目下创建了一个名为“家庭日用品订购”的新产品。 功能定义 接下来,我们需要为产品添加功能,也叫作定义产品的“物模型”,物模型创建的过程就是通过协议描述产品的功能,定义产品有几组传感器数据,有什么控制功能,数据的类型是什么。 点击“家庭日用品订购”产品后的查看,进入产品的管理页面,如下图所示。 选择功能定义 -> 编辑草稿 -> 添加自定义功能,如下图所示。
本次项目中,由于只需要查看ESP32上报的报警状态信息。所以我们仅需要创建一个数据类型为bool类型的自定义功能(物模型)。
新增设备 完成了产品的功能定义后,最后我们在该产品下建立一个设备,这样我们便可以将由ESP32和电子秤搭建的设备连接到阿里云平台了。 在项目管理页面左侧的功能栏点击设备,在弹出的设备页面中选择新增设备,如下图所示。 点击查看设备并记录设备的相关信息(之后需在代码中做相应修改) 到此,我们已经在阿里云平台上创建好了项目、产品和设备。 2.2 上传代码进行调试阿里云相关配置 打开附件中的示例代码:DFRobot_HX711-master->example->Main_ESP32 在设备页面查看设备证书信息,填写在代码中对应位置。
在产品页面查看产品的功能标识符,填写在代码中对应位置。
在设备管理页面,查看物模型Topic信息,填写在代码中对应位置。物模型Topic是阿里云平台自动生成的,服务端和设备端通过Topic来实现消息通信。 全部配置完成后,将代码上传至ESP32主控板。待代码上传完成后,我们将一瓶新的牛奶和旧的牛奶交换放置在板子上进行触发,便可以在设备调试端查看到上传的信息了:
2.3 在阿里云平台创建报警配置打开云监控
点击进入后,如下图所示,有1000条的免费报警短信。
创建报警联系人
联系人配置完成后,在手机弹出的短信中,点击链接进行激活,激活成功后,手机号码会显现出来。
创建报警规则 配置报警规则
①配置关联资源:
点击确认,创建成功后。便可以查看到当前的报警状态以及报警历史,如图所示:
3. 阿里云收到报警信息后向手机发送短信触发自动购买接下来,我们将会使用到Auto.js这个手机APP程序来对手机端进行配置和调试。 3.1 Auto.js介绍https://link.zhihu.com/?target=https%3A//share.weiyun.com/5a9g8ys
3.2 Auto.js配置手机给权限:
添加.js代码文件:
紧接着,我们再次的将一瓶新的牛奶和小于400g的旧牛奶杯交换放置在板子上进行触发,阿里云收到超过3条信息后便会报警,然后向手机发送一条报警短信。(注意:虽然阿里云云端接收到的消息很及时,可是经过实测,触发这个报警的状态会有3~10分钟左右的延迟) 3.3 接收报警短信,调试代码:收到短信后,我们需要通过打开Auto.js的日志服务来查看收到的短信的特定信息,然后分别通过修改代码中的字符长度以及粘贴板的信息来实现自动购买功能。 打开日志服务,查看字节数量 根据下面图片,打开Auto.js中的日志服务,查看收到短信的字节数量(报警短信的字节数量是固定的,所以我们用了这个非常简单的方法来触发自动购买的脚本)。
根据收到的字节数量,修改代码中的值。 打开盒马,复制盒马物品的盒口令 进入你需要购买的商品的详情页面,复制对应的盒口令,如下图所示(请在盒马APP上填好收货地址和取件人信息): 根据复制到的盒口令,粘贴到图下的位置修改代码中的值(不要将""去掉了)。
3.3 实际效果:修改成功后,点击运行。最后一次测试触发牛奶报警装置,等待一段时间后。手机收到了报警短信,执行相应脚本,点击购买,便完成了自动购买功能。 本项目同样适用于TinkerNode,开始前先按照https://wiki.dfrobot.com.cn/_SKU_DFR0530_TinkerNodeNB-IoT%E7%89%A9%E8%81%94%E7%BD%91%E5%BC%80%E5%8F%91%E6%9D%BF_V1_0更改相关配置,然后烧录TinkerNode版本代码,见DFRobot_HX711-master->example->Main_TinkerNode Auto.js软件下载链接 DFRobot_HX711_I2C-main.zip |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed