0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于物聯(lián)網(wǎng)的寵物喂食器

科技觀察員 ? 來源:circuitdigest ? 作者:Ashish Choudhary ? 2022-07-25 17:29 ? 次閱讀

如果您在自己的地方養(yǎng)了一只寵物,并且在您不在的時候沒有人在正確的時間喂他/她。因此,我們正在構(gòu)建一個簡單、高效且經(jīng)濟(jì)的基于物聯(lián)網(wǎng)的寵物喂食器。使用這款自動寵物喂食器,您可以在世界任何地方使用Blynk 移動應(yīng)用程序或 Web 儀表板喂養(yǎng)您的寵物。您只需按一個按鈕或設(shè)置一個時間,其余的任務(wù)將由這臺機(jī)器完成。在這個項目中,我們使用NodeMCU ESP8266作為主控制器,使用伺服電機(jī)來操作寵物喂食器和 NTP 服務(wù)器來獲取當(dāng)前時間。

構(gòu)建寵物喂食器所需的組件

NodeMCU ESP8266

伺服電機(jī)

自動寵物喂食器電路圖

自動寵物喂食器的完整示意圖如下:

poYBAGLeYiOAItPAAAD5ipv9GBQ350.png

連接非常簡單,因為我們只是將伺服電機(jī)與 NodeMCU 連接起來。Servo 的 Vcc(紅線)和 GND(棕線)引腳連接到 NodeMCU 的 3.3V 和 GND,而 Servo 的信號引腳(黃線)連接到 NodeMCU 的 D3 引腳。

為寵物喂食器配置 Blynk

Blynk 是一套完整的軟件,用于對任何規(guī)模的連接設(shè)備進(jìn)行原型設(shè)計、部署和遠(yuǎn)程管理,從小型物聯(lián)網(wǎng)項目到數(shù)百萬商業(yè)可用的連接項目。它可用于將硬件連接到云并構(gòu)建無代碼 iOS、Android 和 Web 應(yīng)用程序,以分析來自設(shè)備的實時和歷史數(shù)據(jù),從全球任何地方遠(yuǎn)程控制它們,接收重要通知等等。 在這個項目中,我們將使用 Blynk 移動應(yīng)用程序來控制連接到寵物喂食器設(shè)置的伺服電機(jī)。

首先,我們必須為Blynk Cloud平臺創(chuàng)建一個新帳戶,或者如果您已有舊帳戶,您可以使用舊帳戶。登錄到您的帳戶后,您必須創(chuàng)建一個模板,您可以在其中添加多個設(shè)備。為此,請單擊右上角的“+ 新模板”按鈕。

poYBAGLeYiCAantyAAD2CN-mkFI327.png

將彈出一個窗口,您必須在其中輸入模板名稱、硬件類型和連接類型。模板名稱可以是與您的項目相關(guān)的任何名稱,硬件類型是您正在使用的微控制器板,連接類型是 Wi-Fi。

pYYBAGLeYhuAK85eAACkKckIQic627.png

現(xiàn)在在模板中,我們可以添加多個信息,如設(shè)備信息、元數(shù)據(jù)、DataStream、事件等。在接下來的步驟中,我們將一一填寫這些詳細(xì)信息。因此,第一個選項卡是設(shè)備信息,將其保留為默認(rèn)值。

poYBAGLeYheAX8viAAHCbF73Cak744.png

然后第二個選項卡是元數(shù)據(jù)。元數(shù)據(jù)是我們提供給項目的附加信息,例如設(shè)備名稱、設(shè)備所有者等。這不是強(qiáng)制性的,您可以根據(jù)需要添加填寫這些內(nèi)容。

poYBAGLeYhOAfr9ZAAEusoA8xJ4750.png

下一個選項卡是“DataStream”。數(shù)據(jù)流是一種結(jié)構(gòu)化數(shù)據(jù)的方法,這些數(shù)據(jù)定期流入和流出設(shè)備。在這里,我們將創(chuàng)建兩個數(shù)據(jù)流,一個用于控制伺服,另一個用于從 blynk 應(yīng)用程序獲取計時器數(shù)據(jù)。要創(chuàng)建 DataStream,請單擊“+New Datastream”按鈕,然后選擇Virtual Pin。

pYYBAGLeYg-AMNyYAAEuWXrMqfQ946.png

將彈出一個窗口,您必須在其中輸入數(shù)據(jù)流名稱、虛擬引腳和數(shù)據(jù)類型。在此之后單擊“創(chuàng)建”按鈕并按照相同的過程創(chuàng)建數(shù)據(jù)流以獲取計時器值。

poYBAGLeYguAD2_MAAEUTJepfCc621.png

完成此操作后,保留“事件”選項卡并移至“Web 儀表板”選項卡。在 blynk 2.0 中,我們有兩種類型的儀表板,即 Web 儀表板和移動儀表板。兩個儀表板都可以單獨配置和使用。Web Dashboard 的小部件數(shù)量有限。您可以添加一個開關(guān)進(jìn)行測試。

poYBAGLeYgeAAkrQAADYgwNYly4152.png

完成此操作后,下一個選項卡是移動儀表板。移動儀表板只能在移動設(shè)備上配置。所以在移動到移動端之前,首先將所有更改保存在云端。為此,請單擊右上角的保存按鈕。

pYYBAGLeYgSAMgGYAAHi7FXplfg849.png

現(xiàn)在我們剩下編碼部分和移動儀表板。首先,我們將使用編碼部分。

為寵物喂食器編程 NodeMCU

該項目的完整代碼在文檔末尾給出。在這里,我們將解釋一些重要的代碼行。因此,像往常一樣通過包含所有必需的庫文件來啟動代碼。BlynkEdgent.h是 Blynk 2.0 平臺的新庫?!癗TPClient.h”用于從 NTP 服務(wù)器獲取時間和日期數(shù)據(jù)?!癢iFiUdp.h”庫用于處理UDP協(xié)議,如打開UDP端口,發(fā)送和接收UDP數(shù)據(jù)包等。而“Servo.h”用于控制伺服電機(jī)。

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

然后在接下來的行中輸入 Blynk 模板 ID 和 Blynk 設(shè)備 ID。這些 ID 可以從 Blynk 云平臺上的“設(shè)備信息”頁面復(fù)制。

#define BLYNK_TEMPLATE_ID "TMPLrKGv1gYp"
#define BLYNK_DEVICE_NAME "寵物喂食器"

然后在下一行為 NTP 客戶端創(chuàng)建一個實例。在這個實例中,我們必須指定我們希望使用的 NTP 服務(wù)器的地址。

NTPClient timeClient(ntpUDP, "asia.pool.ntp.org", utcOffsetInSeconds);

BLYNK_WRITE()函數(shù)用于檢查 V0 和 V1 虛擬引腳的傳入數(shù)據(jù)。虛擬引腳 V0 用于接收開關(guān)狀態(tài),而 V1 引腳用于從 Blynk 應(yīng)用程序獲取定時器數(shù)據(jù)。

BLYNK_WRITE(V0)
{
int 數(shù)據(jù) = param.asInt();
如果(數(shù)據(jù) == 1){
  伺服_1.write(45);// 伺服將移動到 45 度角。
  延遲(1000);
  伺服_1.write(90);//伺服將移動到90度角。
}
}
BLYNK_WRITE(V1){
 time_blynk = param.asInt();
}

在設(shè)置部分,我們首先以 115200 的波特率初始化串行通信,并啟動 Blynk 和時間客戶端通信。

無效設(shè)置()
{
  序列號.開始(115200);
  延遲(100);
  BlynkEdgent.begin();
  伺服_1.attach(0);
  timeClient.begin();
}

現(xiàn)在在循環(huán)函數(shù)中,我們首先從 NTP 客戶端-服務(wù)器獲取時間數(shù)據(jù),然后將這些數(shù)據(jù)存儲在 HH 和 MM 變量中。我們從 NTP 客戶端獲取的時間數(shù)據(jù)是 24 小時格式,所以首先我們將其更改為 12 小時格式,然后我們以秒為單位轉(zhuǎn)換小時和分鐘數(shù)據(jù),以將其與我們從 Blynk 接收的計時器數(shù)據(jù)進(jìn)行比較應(yīng)用程序。如果當(dāng)前時間和從 Blynk 應(yīng)用程序接收到的時間相同,則寵物喂食器將在特定時間段內(nèi)打開和關(guān)閉。

無效循環(huán)(){
  timeClient.update();
  HH = timeClient.getHours();
  國際小時= HH;
    如果(小時 == 0)小時 = 12;
    如果(小時 > 12)小時 = 小時 - 12;
  MM = timeClient.getMinutes();
  final_time = 3600*小時+ 60*MM;
  如果(time_blynk == final_time){
  }
   BlynkEdgent.run();
}

現(xiàn)在選擇“ NodeMCU ”的板類型和連接NodeMCU的端口并上傳代碼?,F(xiàn)在完成此操作后,我們就剩下了 Blynk 移動應(yīng)用程序,并將 Wi-Fi 憑據(jù)添加到 NodeMCU。

配置 Blynk 移動應(yīng)用程序

第一步是從 Play 商店下載 Blynk 應(yīng)用程序,然后創(chuàng)建一個新帳戶。如果您有一個現(xiàn)有帳戶,您也可以使用現(xiàn)有帳戶登錄。現(xiàn)在您必須啟用開發(fā)者模式。開發(fā)人員是一個特殊用戶,他可以訪問配置平臺以供最終用戶使用所需的所有功能。要啟用開發(fā)者模式,請單擊左上角的“個人資料”圖標(biāo),然后啟用開發(fā)者模式。

pYYBAGLeYfuAD5VyAADYyzI6MiU571.png

之后,您需要單擊添加新設(shè)備按鈕并將 NodeMCU 板靠近手機(jī)并單擊就緒按鈕。

pYYBAGLeYfaAagidAABiyNZeQEU596.png

它會自動找到NodeMCU板創(chuàng)建的熱點。連接到該熱點,然后您可以輕松輸入路由器的 Wi-Fi 憑據(jù)。之后單擊繼續(xù),它將 Wi-Fi 憑據(jù)發(fā)送到 NodeMCU 板,我們完成了將 Wi-Fi 憑據(jù)添加到板。

pYYBAGLeYfKANwhVAABwSKuR3aE640.png

創(chuàng)建 Blynk 移動儀表板

現(xiàn)在我們完成了配置 Blynk 移動儀表板的最后一步。為此,請轉(zhuǎn)到您剛剛創(chuàng)建的設(shè)備,然后單擊菜單圖標(biāo),您將看到所有可用的小部件。

poYBAGLeYe6ADx2_AAFuQdetwto774.png

在這里,我們將添加兩個小部件,即 Button 和 Timer 小部件。按鈕小部件用于手動控制伺服,而計時器小部件用于設(shè)置特定操作的時間。

pYYBAGLeYeqAIkD5AAEwiTd5Op4869.png

現(xiàn)在點擊按鈕小部件進(jìn)行配置。在這里,您必須選擇我們在 Blynk 云上創(chuàng)建的數(shù)據(jù)流。之后點擊計時器小部件并選擇數(shù)據(jù)流。您還可以更改其他設(shè)置,如小部件名稱、顏色等。

poYBAGLeYeaAIaA6AAFEUvxhGNI807.png

現(xiàn)在我們已經(jīng)成功配置了 Blynk Mobile 儀表板,下一步是構(gòu)建 Pet Feeder 設(shè)置。

構(gòu)建寵物喂食器設(shè)置

為了制造一個自動貓喂食器,我們從亞馬遜訂購了一個寵物喂食器盒,并對其進(jìn)行了修改以適應(yīng)伺服系統(tǒng)和其他電子設(shè)備。直流電機(jī)放置在盒子內(nèi),并附有一個 3D 打印齒輪。NodeMCU 板放置在盒子的底部,這個完整的設(shè)置使用 12V 適配器供電

poYBAGLeYeGAdXrLAAUlQuNxHJ8204.png

測試自動寵物喂食器

現(xiàn)在我們已經(jīng)準(zhǔn)備好了一切,讓我們繼續(xù)測試這個寵物喂食器設(shè)置。為此,我在寵物喂食器的盒子里裝滿了貓糧,為了進(jìn)行測試,我使用安裝在我手機(jī)上的 Blynk 應(yīng)用程序作為遙控器來檢查我們的寵物喂食器是否正在分配食物。我一打開設(shè)置,寵物喂食器就開始以可控的速度分配貓糧。

除了開關(guān),我們還可以使用 Blynk 應(yīng)用程序的計時器小部件設(shè)置喂貓的時間。完整的測試過程顯示在頁面底部的視頻中。希望你理解這篇文章并學(xué)到新的東西。如果您有任何疑問,請將它們放在下面的評論部分。

代碼

// 在此處填寫來自您的 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,數(shù)據(jù);
//伺服servo_1;
#定義電機(jī)D0
BLYNK_WRITE(V0)
{
數(shù)據(jù) = param.asInt();
}
BLYNK_WRITE(V1)
{
time_blynk = param.asInt();
Serial.print(time_blynk);
//Serial.print("有時間");
}
無效設(shè)置()
{
  序列號.開始(115200);
  延遲(100);

  BlynkEdgent.begin();
  pinMode(電機(jī),輸出);
  數(shù)字寫入(電機(jī),低);
  //servo_1.attach(0);
  timeClient.begin();
}
無效循環(huán)(){
  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){
    數(shù)字寫入(電機(jī),低);
    延遲(3000);
    數(shù)字寫入(電機(jī),高);
  }
  如果(數(shù)據(jù) == 1){
  數(shù)字寫入(電機(jī),高);
  延遲(5000);
  數(shù)字寫入(電機(jī),低);
  Serial.print("開幕");
}  
  延遲(6000);
  BlynkEdgent.run();
}

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 物聯(lián)網(wǎng)
    +關(guān)注

    關(guān)注

    2909

    文章

    44736

    瀏覽量

    374464
  • ESP8266
    +關(guān)注

    關(guān)注

    50

    文章

    962

    瀏覽量

    45128
  • 喂食器
    +關(guān)注

    關(guān)注

    1

    文章

    24

    瀏覽量

    3111
收藏 人收藏

    評論

    相關(guān)推薦

    怎么實現(xiàn)寵物自動喂食器的設(shè)計?

    怎么實現(xiàn)寵物自動喂食器的設(shè)計?
    發(fā)表于 06-15 07:01

    開源:智能寵物彈射喂食器連載貼之步進(jìn)電機(jī)控制(二) 相關(guān)資料分享

    想要從云端控制寵物自動喂食器,最重要的部分就是電機(jī)啦,電機(jī)的作用就是用于將裝在食物儲槽里的食物倒出來供寵物食用,如下圖所示,這是某寶常見的一款寵物
    發(fā)表于 07-06 06:26

    如何實現(xiàn)寵物喂食器的設(shè)計?

    如何實現(xiàn)寵物喂食器的設(shè)計?
    發(fā)表于 12-21 07:54

    如何設(shè)計一個寵物喂食器?

    如何設(shè)計一個寵物喂食器?
    發(fā)表于 02-09 07:49

    寵物定時喂食器設(shè)計資料

    寵物定時喂食器設(shè)計資料,很好設(shè)計資料,快來學(xué)習(xí)吧。
    發(fā)表于 05-09 17:10 ?0次下載

    智能寵物喂食器越來越受到喜歡養(yǎng)寵物的人青睞

    現(xiàn)在很多人都喜歡養(yǎng)小寵物,但是對于上班族來說每天都要有大部分的時間用來工作。上班族就有了困擾,想養(yǎng)寵物但是又擔(dān)心自己工作照顧不周到小寵物,智能寵物
    發(fā)表于 05-17 15:35 ?1359次閱讀

    基于涂鴉智能的寵物喂食器

    基于涂鴉智能的寵物喂食器
    發(fā)表于 12-04 18:36 ?28次下載
    基于涂鴉智能的<b class='flag-5'>寵物</b><b class='flag-5'>喂食器</b>

    基于51單片機(jī)的智能寵物喂食器Proteus仿真

    基于51單片機(jī)的智能寵物喂食器Proteus仿真
    發(fā)表于 12-28 09:58 ?87次下載

    設(shè)計一個寵物NFC定時喂食器

    我設(shè)計并制造了這款自動貓喂食器,以幫助我的糖尿病貓控制他的喂食并防止我的另一只貓吃他的食物。該喂食器可能對需要監(jiān)控寵物喂食需求的其他
    的頭像 發(fā)表于 08-06 16:15 ?2572次閱讀
    設(shè)計一個<b class='flag-5'>寵物</b>NFC定時<b class='flag-5'>喂食器</b>

    Arduino遙控寵物喂食器

    電子發(fā)燒友網(wǎng)站提供《Arduino遙控寵物喂食器.zip》資料免費下載
    發(fā)表于 10-24 10:28 ?4次下載
    Arduino遙控<b class='flag-5'>寵物</b><b class='flag-5'>喂食器</b>

    基于Particle Argon的自動寵物喂食器

    我們都過著忙碌的生活,有時我們的日程安排使我們無法喂養(yǎng)寵物。任何寵物主人都不希望他們心愛的毛茸茸的同伴被困在沒有食物的情況下。有了我們的寵物喂食器,您再也不必?fù)?dān)心毛茸茸的朋友會挨餓。我
    發(fā)表于 12-20 15:43 ?0次下載

    自動寵物喂食器開源硬件

    電子發(fā)燒友網(wǎng)站提供《自動寵物喂食器開源硬件.zip》資料免費下載
    發(fā)表于 12-23 17:06 ?3次下載
    自動<b class='flag-5'>寵物</b><b class='flag-5'>喂食器</b>開源硬件

    寵物喂食器開源硬件

    電子發(fā)燒友網(wǎng)站提供《寵物喂食器開源硬件.zip》資料免費下載
    發(fā)表于 01-31 14:32 ?5次下載
    <b class='flag-5'>寵物</b><b class='flag-5'>喂食器</b>開源硬件

    基于WTR096-28SS芯片方案的寵物喂食器實現(xiàn)智能化喂食功能

    一、簡介 本方案寵物喂食器采用了WTR096-28SS芯片方案來實現(xiàn)智能化的喂食功能。該方案結(jié)合了先進(jìn)的技術(shù)和設(shè)計理念,提供了便捷、智能和個性化的寵物
    的頭像 發(fā)表于 03-19 13:57 ?594次閱讀
    基于WTR096-28SS芯片方案的<b class='flag-5'>寵物</b><b class='flag-5'>喂食器</b>實現(xiàn)智能化<b class='flag-5'>喂食</b>功能

    寵物自動喂食器主控芯片DSH3186

    寵物在現(xiàn)代人的生活中占有極大的比重,甚至愿意將寵物當(dāng)做孩子精細(xì)地養(yǎng)活。也正因為如此,由寵物而衍生出來的產(chǎn)業(yè)鏈涉及方方面面,不但解決了寵物主人的煩惱,也給
    的頭像 發(fā)表于 11-01 16:26 ?351次閱讀