RM新时代网站-首页

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

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

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

構(gòu)建一個(gè)基于Arduino的自動(dòng)寵物喂食器

科技觀察員 ? 來(lái)源:circuitdigest ? 作者:潘卡伊·卡特里 ? 2022-11-17 17:28 ? 次閱讀

今天,我們正在構(gòu)建一個(gè)基于Arduino的自動(dòng)寵物喂食器,它可以及時(shí)自動(dòng)為您的寵物提供食物。它有一個(gè)DS3231 RTC(實(shí)時(shí)時(shí)鐘)模塊,用于設(shè)置寵物應(yīng)進(jìn)食的時(shí)間和日期。因此,通過(guò)根據(jù)寵物的進(jìn)食時(shí)間表設(shè)置時(shí)間,設(shè)備會(huì)自動(dòng)掉落或裝滿食物碗。

在本電路中,我們使用16*2 LCD通過(guò)DS3231 RTC模塊和Arduino UNO顯示時(shí)間。此外,伺服電機(jī)用于旋轉(zhuǎn)容器以提供食物,4 * 4矩陣鍵盤用于手動(dòng)設(shè)置喂食寵物的時(shí)間。您可以根據(jù)要提供給寵物的食物數(shù)量設(shè)置旋轉(zhuǎn)角度和容器打開持續(xù)時(shí)間。食物的數(shù)量也可能取決于您的寵物,無(wú)論是狗、貓還是鳥。

所需材料

Arduino UNO

4*4矩陣鍵盤

16 * 2液晶顯示器

按鈕

伺服電機(jī)

電阻器

連接線

面包板

電路圖

在這個(gè)基于Arduino的Cat喂食器中,為了獲取時(shí)間和日期,我們使用了RTC(實(shí)時(shí)時(shí)鐘)模塊。我們使用 4*4 矩陣鍵盤在 16x2 LCD 的幫助下手動(dòng)設(shè)置寵物的進(jìn)食時(shí)間。伺服電機(jī)旋轉(zhuǎn)容器并在用戶設(shè)置的時(shí)間內(nèi)放下食物。液晶屏用于顯示日期和時(shí)間。完整的工作可以在最后給出的視頻中找到。

poYBAGN1_raAUb2XAAEla2UuhJA901.png

pYYBAGN1_rmAAgh_AAD20S8PGec555.jpg

3D打印寵物喂食器模型

我們使用3D打印機(jī)設(shè)計(jì)了這款A(yù)rduino寵物喂食器容器。用于打印此模型的材料是 PLA。它有四個(gè)部分,如下圖所示:

poYBAGN1_rqAFLXdAABZ5JAWsB4743.jpg

組裝四個(gè)部件并連接伺服電機(jī),如下圖所示:

pYYBAGN1_ruAPiKUAABsrf8XQdw659.jpg

DS3231 RTC 模塊

DS3231是RTC(實(shí)時(shí)時(shí)鐘)模塊。它用于維護(hù)大多數(shù)電子項(xiàng)目的日期和時(shí)間。該模塊有自己的紐扣電池電源,即使主電源被移除或MCU經(jīng)過(guò)硬復(fù)位,它也能保持日期和時(shí)間。因此,一旦我們?cè)诖四K中設(shè)置了日期和時(shí)間,它將始終跟蹤它。在我們的電路中,我們使用DS3231根據(jù)寵物主人設(shè)置的時(shí)間喂寵物,就像鬧鐘一樣。當(dāng)時(shí)鐘達(dá)到設(shè)定時(shí)間時(shí),它操作伺服電機(jī)打開容器門,食物掉入寵物的食物碗中。

pYYBAGN1_r2AKMDoAABklFhj4XI898.jpg

注意:首次使用此模塊時(shí),您必須設(shè)置日期和時(shí)間。

在下面的代碼中,我們定義了庫(kù),RTC模塊的“#include ”,伺服電機(jī)的“#include ”,16 * 2 LCD的“#include ”和4 * 4矩陣鍵盤的“#include <鍵盤.h>”。

#include
#include
#include
#include
在下面的代碼中,我們?yōu)?4*4 矩陣鍵盤定義鍵盤映射,并為鍵盤的行和列分配 Arduino 引腳。

char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte rowPins[ROWS] = { 2, 3, 4, 5 };
byte colPins[COLS] = { 6, 7, 8, 9 };
在這里,我們將使用代碼中的以下命令創(chuàng)建鍵盤。

Keypad kpd = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
分配 A4 和 A5 Arduino 引腳以連接 DS3231 的 SCL 和 SDA 引腳。此外,將引腳分配給 LCD 并初始化伺服電機(jī)。

DS3231 rtc(A4, A5);
Servo servo_test; //initialize a servo object for the connected servo
LiquidCrystal lcd(A0, A1, A2, 11, 12, 13); // Creates an LC object. Parameters: (rs, enable, d4, d5, d6, d7)
在下面的代碼中,我們將 t1 聲明為 t6、鍵和數(shù)組 r[6],以及饋送。

int t1, t2, t3, t4, t5, t6;
boolean feed = true;
char key;
int r[6];
在下面的代碼中,我們正在為啟動(dòng)設(shè)置所有組件。就像在這個(gè)代碼“servo_test.attach(10);”伺服器附在 10千Arduino的銷釘。定義 A0、A1 和 A2 作為輸出引腳并初始化 LCD 和 RTC 模塊。

void setup()
{
servo_test.attach(10); // attach the signal pin of servo to pin9 of arduino
rtc.begin();
lcd.begin(16,2);
servo_test.write(55);
Serial.begin(9600);
pinMode(A0, OUTPUT);
pinMode(A1, OUTPUT);
pinMode(A2, OUTPUT);
}
現(xiàn)在,循環(huán)如何工作是要理解的重要部分。每當(dāng)按下按鈕時(shí),它都會(huì)變高表示 1,可以通過(guò)“按鈕按下 = 數(shù)字讀取(A3)”來(lái)讀取?,F(xiàn)在它進(jìn)入“if”語(yǔ)句并調(diào)用“setFeedingTime”函數(shù)。然后,它將實(shí)時(shí)時(shí)間和用戶輸入的時(shí)間進(jìn)行比較。如果條件為真,這意味著實(shí)時(shí)時(shí)間和輸入的時(shí)間相同,則伺服電機(jī)旋轉(zhuǎn)至 100 度并傾斜 0.4 秒后返回其初始位置。

void loop() {
lcd.setCursor(0,0);
int buttonPress;
buttonPress = digitalRead(A3);

if (buttonPress==1)
setFeedingTime();
lcd.print("Time: ");
String t = "";

t = rtc.getTimeStr();
t1 = t.charAt(0)-48;
t2 = t.charAt(1)-48;
t3 = t.charAt(3)-48;
t4 = t.charAt(4)-48;
t5 = t.charAt(6)-48;
t6 = t.charAt(7)-48;

lcd.print(rtc.getTimeStr());
lcd.setCursor(0,1);
lcd.print("Date: ");
lcd.print(rtc.getDateStr());

if (t1==r[0] && t2==r[1] && t3==r[2] && t4==r[3]&& t5<1 && t6<3 && feed==true)
{
servo_test.write(100); //command to rotate the servo to the specified angle
delay(400);
servo_test.write(55);
feed=false;
}
}
在 void setFeedingTime() 函數(shù)代碼中,按下按鈕后,我們可以輸入寵物喂食時(shí)間,然后我們必須按“D”以節(jié)省該時(shí)間。當(dāng)保存的時(shí)間與實(shí)時(shí)匹配時(shí),伺服開始旋轉(zhuǎn)。

void setFeedingTime()
{
feed = true;
int i=0;

lcd.clear();
lcd.setCursor(0,0);
lcd.print("Set feeding Time");
lcd.clear();
lcd.print("HH:MM");
lcd.setCursor(0,1);
while(1){
key = kpd.getKey();
char j;

if(key!=NO_KEY){
lcd.setCursor(j,1);
lcd.print(key);
r[i] = key-48;
i++;
j++;

if (j==2)
{
lcd.print(":"); j++;
}
delay(500);
}

if (key == 'D')
{key=0; break; }
}
}

自動(dòng)寵物喂食器的工作原理

poYBAGN1_r6APEWmAACKwqD-fTQ316.jpg

將代碼上傳到Arduino Uno后,時(shí)間和日期將顯示在16 * 2 LCD上。當(dāng)您按下按鈕時(shí),它會(huì)詢問(wèn)寵物的喂食時(shí)間,您必須使用 4*4 矩陣鍵盤輸入時(shí)間。顯示屏將顯示輸入的時(shí)間,當(dāng)您按“D”時(shí),它會(huì)節(jié)省時(shí)間。當(dāng)實(shí)時(shí)時(shí)間和輸入時(shí)間匹配時(shí),它將伺服電機(jī)從其初始位置旋轉(zhuǎn) 55? 到 100?,并在延遲后再次返回到其初始位置。因此,伺服電機(jī)連接到食品容器門,因此當(dāng)它移動(dòng)時(shí),門將打開,一些食物落入碗或盤子中。延遲0.4秒后,伺服電機(jī)再次旋轉(zhuǎn)并關(guān)閉閘門。整個(gè)過(guò)程在幾秒鐘內(nèi)完成。這就是您的寵物在您輸入時(shí)自動(dòng)獲得食物的方式。

#include

#include

#include

#include


const byte ROWS = 4; // Four rows

const byte COLS = 4; // Three columns


// Define the Keymap


char keys[ROWS][COLS] = {


{'1','2','3','A'},


{'4','5','6','B'},


{'7','8','9','C'},


{'*','0','#','D'}


};


// Connect keypad ROW0, ROW1, ROW2 and ROW3 to these Arduino pins.


byte rowPins[ROWS] = { 2, 3, 4, 5 };


// Connect keypad COL0, COL1 and COL2 to these Arduino pins.


byte colPins[COLS] = { 6, 7, 8, 9 };


// Create the Keypad

Keypad kpd = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );





DS3231 rtc(A4, A5);

Servo servo_test; //initialize a servo object for the connected servo

LiquidCrystal lcd(A0, A1, A2, 11, 12, 13); // Creates an LC object. Parameters: (rs, enable, d4, d5, d6, d7)


//int angle = 0;

// int potentio = A0; // initialize the A0analog pin for potentiometer

int t1, t2, t3, t4, t5, t6;




boolean feed = true; // condition for alarm


char key;

int r[6];



void setup()

{

servo_test.attach(10); // attach the signal pin of servo to pin9 of arduino

rtc.begin();

lcd.begin(16,2);

servo_test.write(55);

Serial.begin(9600);

pinMode(A0, OUTPUT);

pinMode(A1, OUTPUT);

pinMode(A2, OUTPUT);



}



void loop()

{


lcd.setCursor(0,0);

int buttonPress;

buttonPress = digitalRead(A3);


if (buttonPress==1)

setFeedingTime();




//Serial.println(buttonPress);


lcd.print("Time: ");

String t = "";

t = rtc.getTimeStr();

t1 = t.charAt(0)-48;

t2 = t.charAt(1)-48;

t3 = t.charAt(3)-48;

t4 = t.charAt(4)-48;

t5 = t.charAt(6)-48;

t6 = t.charAt(7)-48;



lcd.print(rtc.getTimeStr());

lcd.setCursor(0,1);

lcd.print("Date: ");

lcd.print(rtc.getDateStr());



if (t1==r[0] && t2==r[1] && t3==r[2] && t4==r[3]&& t5<1 && t6<3 && feed==true)

{

servo_test.write(100); //command to rotate the servo to the specified angle

delay(400);

servo_test.write(55);

feed=false;

}

}


void setFeedingTime()

{

feed = true;

int i=0;


lcd.clear();

lcd.setCursor(0,0);

lcd.print("Set feeding Time");

lcd.clear();

lcd.print("HH:MM");

lcd.setCursor(0,1);




while(1){

key = kpd.getKey();


char j;



if(key!=NO_KEY){



lcd.setCursor(j,1);



lcd.print(key);



r[i] = key-48;

i++;

j++;


if (j==2)

{

lcd.print(":"); j++;

}

delay(500);

}


if (key == 'D')

{key=0; break; }

}

}

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

    關(guān)注

    2

    文章

    51

    瀏覽量

    23834
  • Arduino
    +關(guān)注

    關(guān)注

    188

    文章

    6468

    瀏覽量

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

    關(guān)注

    1

    文章

    23

    瀏覽量

    3060
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    基于單片機(jī)的寵物定時(shí)自動(dòng)喂食器設(shè)計(jì)(原理圖&程序)

    對(duì)于寵物定時(shí)自動(dòng)喂食器感興趣的小伙伴看過(guò)來(lái)了,電路原理圖、程序、元器件資料都給你準(zhǔn)備好了,現(xiàn)在就動(dòng)動(dòng)你的小手,用手中的單片機(jī)板子給自己的寵物設(shè)計(jì)
    發(fā)表于 08-25 16:36

    怎么實(shí)現(xiàn)寵物自動(dòng)喂食器的設(shè)計(jì)?

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

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

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

    如何設(shè)計(jì)個(gè)寵物喂食器?

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

    自制個(gè)寵物喂食器

    :(劃掉虛假的)你參加了個(gè)聚會(huì)/你工作了/你的孩子不讓你睡覺(jué)。這只是遠(yuǎn)程饋線派上用場(chǎng)的個(gè)例子。與您家中的智能系統(tǒng)集成的自動(dòng)“智能”
    發(fā)表于 07-22 07:43

    自動(dòng)喂食器的設(shè)計(jì)原理圖

    自己設(shè)計(jì)的個(gè)自動(dòng)喂食器的設(shè)計(jì),家庭寵物的需要。
    發(fā)表于 12-30 15:55 ?35次下載

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

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

    制作個(gè)易于使用的自動(dòng)寵物喂食器

    這是個(gè)易于使用的自動(dòng)寵物喂食器,帶有些 3D 打印部件、可調(diào)節(jié)的
    的頭像 發(fā)表于 06-28 17:18 ?5465次閱讀
    制作<b class='flag-5'>一</b><b class='flag-5'>個(gè)</b>易于使用的<b class='flag-5'>自動(dòng)</b><b class='flag-5'>寵物</b><b class='flag-5'>喂食器</b>

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

    我們正在構(gòu)建個(gè)簡(jiǎn)單、高效且經(jīng)濟(jì)的基于物聯(lián)網(wǎng)的寵物喂食器。使用這款自動(dòng)
    的頭像 發(fā)表于 07-25 17:29 ?3388次閱讀
    基于物聯(lián)網(wǎng)的<b class='flag-5'>寵物</b><b class='flag-5'>喂食器</b>

    設(shè)計(jì)個(gè)寵物NFC定時(shí)喂食器

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

    Arduino遙控寵物喂食器

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

    智能自動(dòng)魚/寵物喂食器開源分享

    電子發(fā)燒友網(wǎng)站提供《智能自動(dòng)魚/寵物喂食器開源分享.zip》資料免費(fèi)下載
    發(fā)表于 10-24 09:23 ?9次下載
    智能<b class='flag-5'>自動(dòng)</b>魚/<b class='flag-5'>寵物</b><b class='flag-5'>喂食器</b>開源分享

    自動(dòng)寵物喂食器開源硬件

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

    Arduino Uno制作個(gè)智能的自動(dòng)寵物喂食器

    你曾懶得喂你家寵物嗎?我們愛(ài)我們的寵物,但有時(shí)我們也希望能讓喂寵物這件事變得自動(dòng)點(diǎn)。今天我們將使用A
    的頭像 發(fā)表于 02-24 15:12 ?4518次閱讀
    用<b class='flag-5'>Arduino</b> Uno制作<b class='flag-5'>一</b><b class='flag-5'>個(gè)</b>智能的<b class='flag-5'>自動(dòng)</b><b class='flag-5'>寵物</b><b class='flag-5'>喂食器</b>

    寵物自動(dòng)喂食器主控芯片DSH3186

    寵物在現(xiàn)代人的生活中占有極大的比重,甚至愿意將寵物當(dāng)做孩子精細(xì)地養(yǎng)活。也正因?yàn)槿绱?,?b class='flag-5'>寵物而衍生出來(lái)的產(chǎn)業(yè)鏈涉及方方面面,不但解決了寵物主人的煩惱,也給
    的頭像 發(fā)表于 11-01 16:26 ?300次閱讀
    RM新时代网站-首页