色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

電子發燒友App

硬聲App

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示
電子發燒友網>電子資料下載>電子資料>使用MKR IoT Bundle組件和紙板來教貓的晚餐時間

使用MKR IoT Bundle組件和紙板來教貓的晚餐時間

2022-11-01 | zip | 0.18 MB | 次下載 | 免費

資料介紹

描述

注意:本教程可能已過時,請到此處獲取更新版本。

如果你曾經嘗試過訓練一只貓,你就會知道這有多難。貓是它們自己的主人,但現在您有機會讓貓使用這種支持物聯網的設備進行競標。

歡迎來到巴甫洛夫的貓實驗!

在這個項目中,您將學習如何使用 MKR IoT Bundle 中的組件和一些紙板來教您的貓什么時候(和不是)晚餐時間。

我們都知道貓已經喜歡紙板箱了!

貓每聽到一段旋律,就會得到食物。傳感器檢測貓的存在。另一個旋律什么也沒做。看看這將如何工作?

您將能夠隨著時間的推移監控貓的進展,并通過手機設置食物分配率。一旦達到令人滿意的統計數據,就該將傳感器重新用于可穿戴設備了。如果您發出嗶嗶聲,您的貓應該從那時起跟隨您。

免責聲明:在這個實驗的開發過程中沒有貓受到傷害。此外,不能保證貓會吃食物,但你明白了,對吧?

簡而言之

按照這些簡單的分步說明,您將能夠構建自己的食品分配器。分配器基本上只是一些紙板和一個伺服電機,添加了一些 Arduino 魔法。

使用名為 Telegram 的消息服務,您可以設置要分配的食物量并觸發蜂鳴器播放的旋律。

光傳感器用于檢測貓是否對旋律做出反應并得到食物。

專業提示:您可以在 MKR1000 上托管一個網頁,并將收集到的數據顯示在一個方便的表格中。

成分

  • 伺服電機
  • 蜂鳴器
?

學習目標

在本實驗中,您將學習如何:

  • 使用自定義鍵盤管理 Telegram Bot
  • 從 MKR1000 本身設置和管理 Web 服務器功能。#專家提示

專業提示是有用但并非絕對必要的步驟,它們會為項目增加一層復雜性。

想知道更多?

本教程是讓您熟悉 MKR1000 和 IoT 的一系列實驗的一部分。所有實驗都可以使用 MKR IoT Bundle 中包含的組件構建。

  • 巴甫洛夫的貓

電報和 Arduino

Telegram是一款流行的移動和桌面消息傳遞應用程序。除了讓我們與朋友聊天之外,它還允許我們創建方便且強大的聊天機器人

Arduino的TelegramBot 庫為我們提供了一種簡單的方法來實現聊天機器人背后的邏輯。

要了解如何創建機器人和管理基本功能,請查看I Love You Pillow教程。

創建您的自定義鍵盤

Telegram 允許我們為快速回復創建自定義鍵盤。這意味著當您與機器人交談時,將顯示特定的按鈕選擇,而不是默認鍵盤。您可以輕松自定義這些按鈕并改善設備的用戶體驗。

我們的自定義鍵盤如下所示:

?
poYBAGNgtfGAPEmgAAA2YUR1QHE875.png
自定義鍵盤
?

我們將使用第一排按鈕播放旋律并分配食物,而第二排按鈕將用于設置伺服電機的速度,從而設置要分配的食物量。

要創建自定義鍵盤,我們首先需要聲明它:

TelegramKeyboard keyboard_one; 

然后定義行:

 const char* row_one[] = {MusicAndFood, MusicNoFood}; 
 const char* row_two[] = {OnePortion, TwoPortion, ThreePortion}; 

最后將行分配給鍵盤:

keyboard_one.addRow(row_one, 2); // assign a row to one or more keyboards 
keyboard_one.addRow(row_two, 3); // second argument is the length of the row 

請記住,表情符號需要使用 UNICODE 發送。例如,要發送一個心形表情符號,我們將使用:\U00002764

您可以在此處查看 unicode 表情符號代碼的完整列表這意味著要定義我們的按鈕,我們將使用它:

 const char*  MusicAndFood = "\U0001F3B6   +   \U0001F36A"; // Note + Cookie 
 const char*  MusicNoFood = "\U0001F3B6   NO   \U0001F36A"; // Note NO Cookie 
 const char*  OnePortion = "\U0001F408"; // CAT 
 const char*  TwoPortion = "\U0001F408 \U0001F408"; // 2 CATS 
 const char*  ThreePortion = "\U0001F408 \U0001F408 \U0001F408"; // 3 CATS  

這是完整的草圖:

#include  
#include  
#include  
const char* ssid = SECRET_SSID;    //  your network SSID (name) 
const char* password = SECRET_PSWD;  // your network password 
const char BotToken[] = SECRET_BOT_TOKEN; 
WiFiSSLClient client; 
TelegramBot bot (BotToken, client); 
TelegramKeyboard keyboard_one; 
String OldChatId = ""; 
void setup() { 
 Serial.begin(115200); 
 delay(3000); 
 // attempt to connect to Wifi network: 
 Serial.print("Connecting Wifi: "); 
 Serial.println(ssid); 
 while (WiFi.begin(ssid, password) != WL_CONNECTED) { 
   Serial.print("."); 
   delay(500); 
 } 
 Serial.println(""); 
 Serial.println("WiFi connected"); 
 // choose the emoji you like using UNICODE 
 // here's the list https://unicode.org/emoji/charts/full-emoji-list.html 
 const char*  MusicAndFood = "\U0001F3B6   +   \U0001F36A"; // Note + Cookie 
 const char*  MusicNoFood = "\U0001F3B6   NO   \U0001F36A"; // Note NO Cookie 
 const char*  OnePortion = "\U0001F408"; // CAT 
 const char*  TwoPortion = "\U0001F408 \U0001F408"; // 2 CATS 
 const char*  ThreePortion = "\U0001F408 \U0001F408 \U0001F408"; // 3 CATS 
 // define your row's 
 const char* row_one[] = {MusicAndFood, MusicNoFood}; 
 const char* row_two[] = {OnePortion, TwoPortion, ThreePortion}; 
 keyboard_one.addRow(row_one, 2); // assing a row to one or more keyboards 
 keyboard_one.addRow(row_two, 3); // second argument is the length of the row 
 bot.begin(); 
} 
void loop() { 
 message m = bot.getUpdates(); // Read new messages 
 if ( m.chat_id != 0 ) { // Checks if there are some updates 
   OldChatId = m.chat_id; 
   Serial.println(m.text); 
   bot.sendMessage(m.chat_id, "Hello !", keyboard_one); 
 } 
 delay(1000); 
} 

不幸的是,機器人發送表情符號的方式與接收它們的方式不同。使用 EchoBot 示例是了解機器人如何接收表情符號的簡單方法。

例如,我們將使用的表情符號是這樣收到的:

ud83cudfb6  // Melody 
ud83cudf6a  // Cookie
ud83dudc08  // Cat

檢測貓!

為了檢測貓的存在,我們將使用光電晶體管,它能夠測量光強度,因此是否有人靠近它。

?
poYBAGNgtfOAZQvDAAC1m18fGYY456.png
光電晶體管接線
?

請注意,我們使用了一個 220 歐姆的電阻。

要從傳感器讀取值,我們只需要一個analogRead(A6).

由于我們只在旋律之后才對檢測貓的存在感興趣,并且僅在一定時間內,我們可以使用以下邏輯:

unsigned long timer;
bool startDetecting = true;
int threshold=200; // arbitrary value
void setup(){
timer=millis()
Serial.begin(9600);
} 
void loop(){
if (startDetecting) { 
   int value = analogRead(A6); 
   if (value < threshold) { 
     Serial.println("cat detected!");
     startDetecting = false; 
   } 
   else if (millis() - timer > 120000) { 
     Serial.println("no cat detected in the past two minutes");
     startDetecting = false; 
   } 
 } 
}

請注意,我們使用該函數來設置計時器 為我們提供了自開發板啟動并運行以來的毫秒數。我們可以使用它來設置計時器并在一定時間后觸發事件。millis()Millis()

我們還使用閾值來確定是否檢測到貓。該閾值是任意的,您可以根據您的光照條件進行設置。

播放歌曲

要播放歌曲,我們將使用蜂鳴器和tone() 功能。

?
pYYBAGNgtfaACmVsAADkVEZexFQ043.png
蜂鳴器接線
?

我們將使用標準示例toneMelody 的略微修改版本。您可以在下拉菜單中找到它:

examples > digital > toneMelody.

添加伺服電機

伺服器用于打開盒子并運送食物。

請注意,我們使用一個變量int PortionAmount = 1; 來設置伺服必須保持轉動 90 度的時間量。我們將能夠通過 Telegram 改變它的價值。

將伺服連接到引腳 7 并上傳此草圖以查看它的工作原理

#include  
Servo myservo;  // create servo object to control a servo 
int pos = 0;    // variable to store the servo position 
int PortionAmount = 1; // Set default amount of food to 1 portion 
void setup() { 
 myservo.attach(7);  // attaches the servo on pin 6 to the servo object 
} 
void loop() { 
   moveServo(); 
   delay(2000); 
} 
void moveServo() { 
 Serial.println("moving servo"); 
 for (pos = 0; pos <= 90; pos += 1) { // goes from 0 degrees to 90 degrees 
   myservo.write(pos);  // tell servo to go to position in variable 'pos' 
   delay(15); // waits 15ms for the servo to reach the position 
 } 
 delay(PortionAmount * 300);  // keep the box open for a time interval based on the amount of food you want to deliver 
 for (pos = 90; pos >= 0; pos -= 1) { // goes from 90 degrees to 0 degrees 
   myservo.write(pos); / tell servo to go to position in variable 'pos' 
   delay(15); // waits 15ms for the servo to reach the position 
 } 
} 

#ProTip:添加 Web 服務器

MKR1000 最強大的功能之一是接入點模式。

它允許我們在 MKR1000 上托管一個網頁,我們可以通過使用板 IP 地址并連接到同一網絡來訪問該網頁

我們將使用此工具打印食品分配器收集的數據。

?
poYBAGNgtfmAfAn2AABVNzC0MAc376.png
mkr1000 上托管的網頁
?

此步驟需要 HTML 和 CSS 的基本知識(或對示例草圖非常信任。您可以在以下位置查看基本 Web 服務器示例:

> example > WiFi101 > AP_SimpleWebServer

我們將通過向我們的 Telegram Bot發送特定單詞來觸發接入點模式,它會回復鏈接以訪問網頁。然后電報客戶端將斷開連接并啟動網絡服務器。

else if(m.text == "Server"){ 
  IPAddress ip = WiFi.localIP(); 
  web_server_mode=true; 
  String message = "To see the webpage go to http://"+IpToString(ip); 
  bot.sendMessage(m.chat_id, message , keyboard_one); 
  telegram_client.stop(); 
  delay(1000); 
  server.begin();   // start the web server on port 80 
  }  

該網頁包含一個按鈕,該按鈕將關閉 Web 服務器模式并作為電報客戶端返回:

if (currentLine.endsWith("GET /BACKBUTTON")) {  // if button pressed
   web_server_mode=false; 
   client.stop(); 
   delay(1000); 
   bot.begin(); 
   bot.sendMessage(OldChatId, "Back online !", keyboard_one); 
   } 

每次貓檢測結束時,都會在表格的新單元格中添加收集到的數據:食物是否送達、貓是否在兩分鐘內出現以及到達分配器需要多長時間。

AddTableCell(food/noFood, Yes/No, TimeValue); 

然后包含所有表格單元格的字符串被更新并集成到主 html 的其余部分中。

 table_cells+=cell; // add new cell
 html = html_1 + table_cells + html_2; // add cells to main html

查看最終的 Pro 示例,了解如何集成所有這些新功能!

提示:如果您希望您的數據在電路板重置后仍然存在,請查看Flash Storage庫或檢查Nerd項目!


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數據手冊
  2. 1.06 MB  |  532次下載  |  免費
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費
  5. 3TC358743XBG評估板參考手冊
  6. 1.36 MB  |  330次下載  |  免費
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費
  9. 5元宇宙深度解析—未來的未來-風口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費
  11. 6迪文DGUS開發指南
  12. 31.67 MB  |  194次下載  |  免費
  13. 7元宇宙底層硬件系列報告
  14. 13.42 MB  |  182次下載  |  免費
  15. 8FP5207XR-G1中文應用手冊
  16. 1.09 MB  |  178次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關電源設計實例指南
  8. 未知  |  21549次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數字電路基礎pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅動電路設計》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉中文版)
  4. 78.1 MB  |  537798次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191187次下載  |  免費
  13. 7十天學會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費
主站蜘蛛池模板: 妈妈的朋友6未删减版完整在线 | 99精品99| YELLOW视频在线观看大全| 超碰caoporn| 国产精品一区二区三区免费| 国产亚洲精品黑人粗大精选| 狠狠色狠狠色综合系列| 久久99亚洲热最新地址获取| 门事件快播| 日韩娇小性hd| 亚洲国产高清在线| 在公交车上被JB草坏了被轮J了| 2022久久精品国产色蜜蜜麻豆| YELLOW视频直播在线观看| 国产成人精选免费视频| 交换邻居波多野结衣中文字幕 | 国产精品青草久久福利不卡| 国内精品日本久久久久影院 | 69久久国产精品热88人妻| write as 跳蛋| 国产婷婷一区二区在线观看| 久久久久国产| 日韩人妻少妇一区二区三区| 亚洲精品久久久久久蜜臀| 97在线看视频福利免费| 国产精品丰满人妻AV麻豆| 久久精品无码一区二区日韩av | 亚洲欧洲免费三级网站| 99久久精品一区二区三区| 国产精品18久久久久久欧美| 久久久亚洲国产精品主播| 麒麟色欧美影院在线播放| 亚洲精品第一综合99久久| 99re久久热免费视频| 国产亚洲精品久久777777| 男人的天堂MV在线视频免费观看| WWW国产亚洲精品久久麻豆 | 成年AV动漫| 久久久高清国产999尤物| 日韩AV成人无码久久精品老人 | 亚洲不卡视频在线观看|