如果您在自己的地方养了一只宠物,并且在您不在的时候没有人在正确的时间喂他/她。因此,我们正在构建一个简单、高效且经济的基于物联网的宠物喂食器。使用这款自动宠物喂食器,您可以在世界任何地方使用blynk 移动应用程序或 web 仪表板喂养您的宠物。您只需按一个按钮或设置一个时间,其余的任务将由这台机器完成。在这个项目中,我们使用nodemcu esp8266作为主控制器,使用伺服电机来操作宠物喂食器和 ntp 服务器来获取当前时间。
构建宠物喂食器所需的组件
nodemcu esp8266
伺服电机
自动宠物喂食器电路图
自动宠物喂食器的完整示意图如下:
连接非常简单,因为我们只是将伺服电机与 nodemcu 连接起来。servo 的 vcc(红线)和 gnd(棕线)引脚连接到 nodemcu 的 3.3v 和 gnd,而 servo 的信号引脚(黄线)连接到 nodemcu 的 d3 引脚。
为宠物喂食器配置 blynk
blynk 是一套完整的软件,用于对任何规模的连接设备进行原型设计、部署和远程管理,从小型物联网项目到数百万商业可用的连接项目。它可用于将硬件连接到云并构建无代码 ios、android 和 web 应用程序,以分析来自设备的实时和历史数据,从全球任何地方远程控制它们,接收重要通知等等。 在这个项目中,我们将使用 blynk 移动应用程序来控制连接到宠物喂食器设置的伺服电机。
首先,我们必须为blynk cloud平台创建一个新帐户,或者如果您已有旧帐户,您可以使用旧帐户。登录到您的帐户后,您必须创建一个模板,您可以在其中添加多个设备。为此,请单击右上角的“+ 新模板”按钮。
将弹出一个窗口,您必须在其中输入模板名称、硬件类型和连接类型。模板名称可以是与您的项目相关的任何名称,硬件类型是您正在使用的微控制器板,连接类型是 wi-fi。
现在在模板中,我们可以添加多个信息,如设备信息、元数据、datastream、事件等。在接下来的步骤中,我们将一一填写这些详细信息。因此,第一个选项卡是设备信息,将其保留为默认值。
然后第二个选项卡是元数据。元数据是我们提供给项目的附加信息,例如设备名称、设备所有者等。这不是强制性的,您可以根据需要添加填写这些内容。
下一个选项卡是“datastream”。数据流是一种结构化数据的方法,这些数据定期流入和流出设备。在这里,我们将创建两个数据流,一个用于控制伺服,另一个用于从 blynk 应用程序获取计时器数据。要创建 datastream,请单击“+new datastream”按钮,然后选择virtual pin。
将弹出一个窗口,您必须在其中输入数据流名称、虚拟引脚和数据类型。在此之后单击“创建”按钮并按照相同的过程创建数据流以获取计时器值。
完成此操作后,保留“事件”选项卡并移至“web 仪表板”选项卡。在 blynk 2.0 中,我们有两种类型的仪表板,即 web 仪表板和移动仪表板。两个仪表板都可以单独配置和使用。web dashboard 的小部件数量有限。您可以添加一个开关进行测试。
完成此操作后,下一个选项卡是移动仪表板。移动仪表板只能在移动设备上配置。所以在移动到移动端之前,首先将所有更改保存在云端。为此,请单击右上角的保存按钮。
现在我们剩下编码部分和移动仪表板。首先,我们将使用编码部分。
为宠物喂食器编程 nodemcu
该项目的完整代码在文档末尾给出。在这里,我们将解释一些重要的代码行。因此,像往常一样通过包含所有必需的库文件来启动代码。blynkedgent.h是 blynk 2.0 平台的新库。“ntpclient.h”用于从 ntp 服务器获取时间和日期数据。“wifiudp.h”库用于处理udp协议,如打开udp端口,发送和接收udp数据包等。而“servo.h”用于控制伺服电机。
#include “blynkedgent.h”#include #include #include #include
然后在接下来的行中输入 blynk 模板 id 和 blynk 设备 id。这些 id 可以从 blynk 云平台上的“设备信息”页面复制。
#define blynk_template_id tmplrkgv1gyp#define blynk_device_name 宠物喂食器
然后在下一行为 ntp 客户端创建一个实例。在这个实例中,我们必须指定我们希望使用的 ntp 服务器的地址。
ntpclient timeclient(ntpudp, asia.pool.ntp.org, utcoffsetinseconds);
blynk_write ()函数用于检查 v0 和 v1 虚拟引脚的传入数据。虚拟引脚 v0 用于接收开关状态,而 v1 引脚用于从 blynk 应用程序获取定时器数据。
blynk_write(v0){int 数据 = param.asint();如果(数据 == 1){ 伺服_1.write(45);// 伺服将移动到 45 度角。 延迟(1000); 伺服_1.write(90);//伺服将移动到90度角。}}blynk_write(v1){ time_blynk = param.asint();}
在设置部分,我们首先以 115200 的波特率初始化串行通信,并启动 blynk 和时间客户端通信。
无效设置(){ 序列号.开始(115200); 延迟(100); blynkedgent.begin(); 伺服_1.attach(0); timeclient.begin();}
现在在循环函数中,我们首先从 ntp 客户端-服务器获取时间数据,然后将这些数据存储在 hh 和 mm 变量中。我们从 ntp 客户端获取的时间数据是 24 小时格式,所以首先我们将其更改为 12 小时格式,然后我们以秒为单位转换小时和分钟数据,以将其与我们从 blynk 接收的计时器数据进行比较应用程序。如果当前时间和从 blynk 应用程序接收到的时间相同,则宠物喂食器将在特定时间段内打开和关闭。
无效循环(){ timeclient.update(); hh = timeclient.gethours(); 国际小时= hh; 如果(小时 == 0)小时 = 12; 如果(小时 > 12)小时 = 小时 - 12; mm = timeclient.getminutes(); final_time = 3600*小时+ 60*mm; 如果(time_blynk == final_time){ } blynkedgent.run();}
现在选择“ nodemcu ”的板类型和连接nodemcu的端口并上传代码。现在完成此操作后,我们就剩下了 blynk 移动应用程序,并将 wi-fi 凭据添加到 nodemcu。
配置 blynk 移动应用程序
第一步是从 play 商店下载 blynk 应用程序,然后创建一个新帐户。如果您有一个现有帐户,您也可以使用现有帐户登录。现在您必须启用开发者模式。开发人员是一个特殊用户,他可以访问配置平台以供最终用户使用所需的所有功能。要启用开发者模式,请单击左上角的“个人资料”图标,然后启用开发者模式。
之后,您需要单击添加新设备按钮并将 nodemcu 板靠近手机并单击就绪按钮。
它会自动找到nodemcu板创建的热点。连接到该热点,然后您可以轻松输入路由器的 wi-fi 凭据。之后单击继续,它将 wi-fi 凭据发送到 nodemcu 板,我们完成了将 wi-fi 凭据添加到板。
创建 blynk 移动仪表板
现在我们完成了配置 blynk 移动仪表板的最后一步。为此,请转到您刚刚创建的设备,然后单击菜单图标,您将看到所有可用的小部件。
在这里,我们将添加两个小部件,即 button 和 timer 小部件。按钮小部件用于手动控制伺服,而计时器小部件用于设置特定操作的时间。
现在点击按钮小部件进行配置。在这里,您必须选择我们在 blynk 云上创建的数据流。之后点击计时器小部件并选择数据流。您还可以更改其他设置,如小部件名称、颜色等。
现在我们已经成功配置了 blynk mobile 仪表板,下一步是构建 pet feeder 设置。
构建宠物喂食器设置
为了制造一个自动猫喂食器,我们从亚马逊订购了一个宠物喂食器盒,并对其进行了修改以适应伺服系统和其他电子设备。直流电机放置在盒子内,并附有一个 3d 打印齿轮。nodemcu 板放置在盒子的底部,这个完整的设置使用 12v 适配器供电。
测试自动宠物喂食器
现在我们已经准备好了一切,让我们继续测试这个宠物喂食器设置。为此,我在宠物喂食器的盒子里装满了猫粮,为了进行测试,我使用安装在我手机上的 blynk 应用程序作为遥控器来检查我们的宠物喂食器是否正在分配食物。我一打开设置,宠物喂食器就开始以可控的速度分配猫粮。
除了开关,我们还可以使用 blynk 应用程序的计时器小部件设置喂猫的时间。完整的测试过程显示在页面底部的视频中。希望你理解这篇文章并学到新的东西。如果您有任何疑问,请将它们放在下面的评论部分。
代码
// 在此处填写来自您的 blynk 模板的信息
#define blynk_template_id tmplrkgv1gyp#define blynk_device_name 宠物喂食器#define blynk_firmware_version 0.1.0#define blynk_print 序列号//#define blynk_debug#define app_debug// 取消注释您的板,或在 settings.h 中配置自定义板//#define use_sparkfun_blynk_board//#define use_node_mcu_board//#define use_witty_cloud_board//#define use_wemos_d1_mini#include “blynkedgent.h”#include #include #include //#include // 包括伺服库。常量长 utcoffsetinseconds = 19800;wifiudp ntpudp;ntpclient timeclient(ntpudp, asia.pool.ntp.org, utcoffsetinseconds);int hh,mm,final_time;int time_blynk,数据;//伺服servo_1;#定义电机d0blynk_write(v0){数据 = param.asint();}blynk_write(v1){time_blynk = param.asint();serial.print(time_blynk);//serial.print(有时间);}无效设置(){ 序列号.开始(115200); 延迟(100); blynkedgent.begin(); pinmode(电机,输出); 数字写入(电机,低); //servo_1.attach(0); timeclient.begin();}无效循环(){ timeclient.update(); hh = timeclient.gethours(); //serial.print(timeclient.gethours()); 国际小时= hh; 如果(小时 == 0)小时 = 12;// 午夜 如果(小时 > 12)小时 = 小时 - 12; //serial.print(小时); //serial.print(:); mm = timeclient.getminutes(); // serial.println(timeclient.getminutes()); final_time = 3600*小时+ 60*mm; // serial.println(final_time); 如果(time_blynk == final_time){ 数字写入(电机,低); 延迟(3000); 数字写入(电机,高); } 如果(数据 == 1){ 数字写入(电机,高); 延迟(5000); 数字写入(电机,低); serial.print(开幕);} 延迟(6000); blynkedgent.run();}
英特尔18A重回工艺领先地位?台积电:没可能
浅析两大PD移动电源解决方案
一种具有高可靠性的485 Hub星型总线
汽车蓄电池有哪些部分组成_汽车蓄电池的作用
阿里巴巴发布首款智能音箱天猫精灵X1:天猫精灵X1图赏
基于物联网的宠物喂食器
跨平台加密货币交易所Exenium介绍
尴尬的诺基亚,1499的售价你会不会买?
比特币半年翻倍十年后涨至5万美元!这一惊天预言能否成真
高压熔断器在什么时候熔断
一文解读华为2018年财报:消费者业务突飞猛进 超运营商业务
科大讯飞:大投入,布局大未来
变频器出现散热不良时该如何解救
挤出机减速机轴承室磨损的修复工艺
视频UP主看过来,你离爆款只差它
IU5365具有NTC及电池过放电电压保护功能,3A异步降压型铅酸电池充电管理IC
如何制作镜头跟拍器
dfrobot人体热释电红外传感器介绍
Buck电路电感的最大值峰值是在什么电压下面的
浅谈高通与联发科在5G智能手机市场的竞争