0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于物联网的宠物喂食器

科技观察员 来源:circuitdigest 作者:Ashish Choudhary 2022-07-25 17:29 次阅读

如果您在自己的地方养了一只宠物,并且在您不在的时候没有人在正确的时间喂他/她。因此,我们正在构建一个简单、高效且经济的基于物联网的宠物喂食器。使用这款自动宠物喂食器,您可以在世界任何地方使用Blynk 移动应用程序或 Web 仪表板喂养您的宠物。您只需按一个按钮或设置一个时间,其余的任务将由这台机器完成。在这个项目中,我们使用NodeMCU ESP8266作为主控制器,使用伺服电机来操作宠物喂食器和 NTP 服务器来获取当前时间。

构建宠物喂食器所需的组件

NodeMCU ESP8266

伺服电机

自动宠物喂食器威廉希尔官方网站 图

自动宠物喂食器的完整示意图如下:

poYBAGLeYiOAItPAAAD5ipv9GBQ350.png

连接非常简单,因为我们只是将伺服电机与 NodeMCU 连接起来。Servo 的 Vcc(红线)和 GND(棕线)引脚连接到 NodeMCU 的 3.3V 和 GND,而 Servo 的信号引脚(黄线)连接到 NodeMCU 的 D3 引脚。

为宠物喂食器配置 Blynk

Blynk 是一套完整的软件,用于对任何规模的连接设备进行原型设计、部署和远程管理,从小型物联网项目到数百万商业可用的连接项目。它可用于将硬件连接到云并构建无代码 iOSAndroid 和 Web 应用程序,以分析来自设备的实时和历史数据,从全球任何地方远程控制它们,接收重要通知等等。 在这个项目中,我们将使用 Blynk 移动应用程序来控制连接到宠物喂食器设置的伺服电机。

首先,我们必须为Blynk Cloud平台创建一个新帐户,或者如果您已有旧帐户,您可以使用旧帐户。登录到您的帐户后,您必须创建一个模板,您可以在其中添加多个设备。为此,请单击右上角的“+ 新模板”按钮。

poYBAGLeYiCAantyAAD2CN-mkFI327.png

将弹出一个窗口,您必须在其中输入模板名称、硬件类型和连接类型。模板名称可以是与您的项目相关的任何名称,硬件类型是您正在使用的微控制器板,连接类型是 Wi-Fi

pYYBAGLeYhuAK85eAACkKckIQic627.png

现在在模板中,我们可以添加多个信息,如设备信息、元数据、DataStream、事件等。在接下来的步骤中,我们将一一填写这些详细信息。因此,第一个选项卡是设备信息,将其保留为默认值。

poYBAGLeYheAX8viAAHCbF73Cak744.png

然后第二个选项卡是元数据。元数据是我们提供给项目的附加信息,例如设备名称、设备所有者等。这不是强制性的,您可以根据需要添加填写这些内容。

poYBAGLeYhOAfr9ZAAEusoA8xJ4750.png

下一个选项卡是“DataStream”。数据流是一种结构化数据的方法,这些数据定期流入和流出设备。在这里,我们将创建两个数据流,一个用于控制伺服,另一个用于从 blynk 应用程序获取计时器数据。要创建 DataStream,请单击“+New Datastream”按钮,然后选择Virtual Pin。

pYYBAGLeYg-AMNyYAAEuWXrMqfQ946.png

将弹出一个窗口,您必须在其中输入数据流名称、虚拟引脚和数据类型。在此之后单击“创建”按钮并按照相同的过程创建数据流以获取计时器值。

poYBAGLeYguAD2_MAAEUTJepfCc621.png

完成此操作后,保留“事件”选项卡并移至“Web 仪表板”选项卡。在 blynk 2.0 中,我们有两种类型的仪表板,即 Web 仪表板和移动仪表板。两个仪表板都可以单独配置和使用。Web Dashboard 的小部件数量有限。您可以添加一个开关进行测试。

poYBAGLeYgeAAkrQAADYgwNYly4152.png

完成此操作后,下一个选项卡是移动仪表板。移动仪表板只能在移动设备上配置。所以在移动到移动端之前,首先将所有更改保存在云端。为此,请单击右上角的保存按钮。

pYYBAGLeYgSAMgGYAAHi7FXplfg849.png

现在我们剩下编码部分和移动仪表板。首先,我们将使用编码部分。

为宠物喂食器编程 NodeMCU

该项目的完整代码在文档末尾给出。在这里,我们将解释一些重要的代码行。因此,像往常一样通过包含所有必需的库文件来启动代码。BlynkEdgent.h是 Blynk 2.0 平台的新库。“NTPClient.h”用于从 NTP 服务器获取时间和日期数据。“WiFiUdp.h”库用于处理UDP协议,如打开UDP端口,发送和接收UDP数据包等。而“Servo.h”用于控制伺服电机。

#include “BlynkEdgent.h”
#include 
#include 
#include 
#include <伺服.h>

然后在接下来的行中输入 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 应用程序,然后创建一个新帐户。如果您有一个现有帐户,您也可以使用现有帐户登录。现在您必须启用开发者模式。开发人员是一个特殊用户,他可以访问配置平台以供最终用户使用所需的所有功能。要启用开发者模式,请单击左上角的“个人资料”图标,然后启用开发者模式。

pYYBAGLeYfuAD5VyAADYyzI6MiU571.png

之后,您需要单击添加新设备按钮并将 NodeMCU 板靠近手机并单击就绪按钮。

pYYBAGLeYfaAagidAABiyNZeQEU596.png

它会自动找到NodeMCU板创建的热点。连接到该热点,然后您可以轻松输入路由器的 Wi-Fi 凭据。之后单击继续,它将 Wi-Fi 凭据发送到 NodeMCU 板,我们完成了将 Wi-Fi 凭据添加到板。

pYYBAGLeYfKANwhVAABwSKuR3aE640.png

创建 Blynk 移动仪表板

现在我们完成了配置 Blynk 移动仪表板的最后一步。为此,请转到您刚刚创建的设备,然后单击菜单图标,您将看到所有可用的小部件。

poYBAGLeYe6ADx2_AAFuQdetwto774.png

在这里,我们将添加两个小部件,即 Button 和 Timer 小部件。按钮小部件用于手动控制伺服,而计时器小部件用于设置特定操作的时间。

pYYBAGLeYeqAIkD5AAEwiTd5Op4869.png

现在点击按钮小部件进行配置。在这里,您必须选择我们在 Blynk 云上创建的数据流。之后点击计时器小部件并选择数据流。您还可以更改其他设置,如小部件名称、颜色等。

poYBAGLeYeaAIaA6AAFEUvxhGNI807.png

现在我们已经成功配置了 Blynk Mobile 仪表板,下一步是构建 Pet Feeder 设置。

构建宠物喂食器设置

为了制造一个自动猫喂食器,我们从亚马逊订购了一个宠物喂食器盒,并对其进行了修改以适应伺服系统和其他电子设备。直流电机放置在盒子内,并附有一个 3D 打印齿轮。NodeMCU 板放置在盒子的底部,这个完整的设置使用 12V 适配器供电

poYBAGLeYeGAdXrLAAUlQuNxHJ8204.png

测试自动宠物喂食器

现在我们已经准备好了一切,让我们继续测试这个宠物喂食器设置。为此,我在宠物喂食器的盒子里装满了猫粮,为了进行测试,我使用安装在我手机上的 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;
#定义电机D0
BLYNK_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();
}

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 物联网
    +关注

    关注

    2909

    文章

    44625

    浏览量

    373234
  • ESP8266
    +关注

    关注

    50

    文章

    962

    浏览量

    44989
  • 喂食器
    +关注

    关注

    1

    文章

    23

    浏览量

    3065
收藏 人收藏

    评论

    相关推荐

    怎么实现宠物自动喂食器的设计?

    怎么实现宠物自动喂食器的设计?
    发表于 06-15 07:01

    开源:智能宠物弹射喂食器连载贴之步进电机控制(二) 相关资料分享

    想要从云端控制宠物自动喂食器,最重要的部分就是电机啦,电机的作用就是用于将装在食物储槽里的食物倒出来供宠物食用,如下图所示,这是某宝常见的一款宠物
    发表于 07-06 06:26

    如何实现宠物喂食器的设计?

    如何实现宠物喂食器的设计?
    发表于 12-21 07:54

    如何设计一个宠物喂食器

    如何设计一个宠物喂食器
    发表于 02-09 07:49

    宠物定时喂食器设计资料

    宠物定时喂食器设计资料,很好设计资料,快来学习吧。
    发表于 05-09 17:10 0次下载

    智能宠物喂食器越来越受到喜欢养宠物的人青睐

    现在很多人都喜欢养小宠物,但是对于上班族来说每天都要有大部分的时间用来工作。上班族就有了困扰,想养宠物但是又担心自己工作照顾不周到小宠物,智能宠物
    发表于 05-17 15:35 1343次阅读

    基于涂鸦智能的宠物喂食器

    基于涂鸦智能的宠物喂食器
    发表于 12-04 18:36 27次下载
    基于涂鸦智能的<b class='flag-5'>宠物</b><b class='flag-5'>喂食器</b>

    基于51单片机的智能宠物喂食器Proteus仿真

    基于51单片机的智能宠物喂食器Proteus仿真
    发表于 12-28 09:58 87次下载

    设计一个宠物NFC定时喂食器

    我设计并制造了这款自动猫喂食器,以帮助我的糖尿病猫控制他的喂食并防止我的另一只猫吃他的食物。该喂食器可能对需要监控宠物喂食需求的其他
    的头像 发表于 08-06 16:15 2550次阅读
    设计一个<b class='flag-5'>宠物</b>NFC定时<b class='flag-5'>喂食器</b>

    Arduino遥控宠物喂食器

    电子发烧友网站提供《Arduino遥控宠物喂食器.zip》资料免费下载
    发表于 10-24 10:28 4次下载
    Arduino遥控<b class='flag-5'>宠物</b><b class='flag-5'>喂食器</b>

    基于Particle Argon的自动宠物喂食器

    我们都过着忙碌的生活,有时我们的日程安排使我们无法喂养宠物。任何宠物主人都不希望他们心爱的毛茸茸的同伴被困在没有食物的情况下。有了我们的宠物喂食器,您再也不必担心毛茸茸的朋友会挨饿。我
    发表于 12-20 15:43 0次下载

    自动宠物喂食器开源硬件

    电子发烧友网站提供《自动宠物喂食器开源硬件.zip》资料免费下载
    发表于 12-23 17:06 3次下载
    自动<b class='flag-5'>宠物</b><b class='flag-5'>喂食器</b>开源硬件

    宠物喂食器开源硬件

    电子发烧友网站提供《宠物喂食器开源硬件.zip》资料免费下载
    发表于 01-31 14:32 5次下载
    <b class='flag-5'>宠物</b><b class='flag-5'>喂食器</b>开源硬件

    基于WTR096-28SS芯片方案的宠物喂食器实现智能化喂食功能

    一、简介 本方案宠物喂食器采用了WTR096-28SS芯片方案来实现智能化的喂食功能。该方案结合了先进的技术和设计理念,提供了便捷、智能和个性化的宠物
    的头像 发表于 03-19 13:57 563次阅读
    基于WTR096-28SS芯片方案的<b class='flag-5'>宠物</b><b class='flag-5'>喂食器</b>实现智能化<b class='flag-5'>喂食</b>功能

    宠物自动喂食器主控芯片DSH3186

    宠物在现代人的生活中占有极大的比重,甚至愿意将宠物当做孩子精细地养活。也正因为如此,由宠物而衍生出来的产业链涉及方方面面,不但解决了宠物主人的烦恼,也给
    的头像 发表于 11-01 16:26 320次阅读