資料介紹
描述
本文是迪肯大學 IT 學院為主題 SIT210 - 嵌入式系統開發提交的作業組合的一部分。
關于該項目
以下項目適用于智能狗水碗,當水碗變干時,它會根據電容式土壤濕度傳感器的讀數自動補充水。每當重新裝滿水碗時,都會通過 IFTTT 通過電子郵件提醒用戶。
這個項目的靈感
我擁有兩只名叫吉米和利奧的騎士國王查爾斯獵犬。有時,當我作為救濟教師下班回家時,他們的水碗是干的,而在澳大利亞經常發生的非常炎熱的日子里,當這種情況發生時,我會感到內疚。話雖如此,即使在不熱的日子里,這兩個男孩也有用他們小狗的眼睛讓我感到內疚的習慣。
這個怎么運作
粒子氬和粒子光子通過粒子云進行通信。Particle Argon 測量水分并根據其讀數以及該狀態是否發生變化來發布“干燥”或“充滿”事件。此事件由 Particle Photon 訂閱,如果干燥,它將打開,通過連接到軟管的電磁閥重新填充碗。當碗重新裝滿時,將發布一個事件,該事件將導致 IFTTT 向狗主人發送電子郵件。
水分水平通過api.ThingSpeak的 webhook 可視化,它會生成折線圖和水位計。
如何設置
第 1 步:修改寵物飲水機
首先,我們修改了寵物飲水機以容納電容式土壤濕度傳感器,方法是使用無繩電鉆在背面鉆一個 12 毫米的孔,然后用鋼鋸切掉剩余部分。然后,我們用圓銼磨平了傳感器所在的凹口。修改的圖片如下所示。
之前計劃通過鉆一個孔來容納防水濕度傳感器的接線和一個更大的孔作為軟管的入口來修改大型水容器,然后在軟管和傳感器的電線進入后用密封劑密封這些孔,但在用 Selley's All Clear 密封后,瓶子在一夜之間淹沒了碗,所以這個想法被廢棄了。
第 2 步:設置繼電器和電磁閥
要設置繼電器,首先將您的 Particle Photon 插入 Particle Relay Shield for Photon 的接頭。接下來將接線連接到您將使用的繼電器的 COM 和 NO 觸點端子(注意:NC 觸點端子應該為空) 。在下面的例子中,我們選擇在代碼中使用引腳 D6 作為我們的 RELAY_PIN,該代碼對應于繼電器屏蔽上的 5 V 繼電器 RELAY 4。
![poYBAGNsXVuAdOI1AANR8HxWfS4108.jpg](https://file.elecfans.com/web2/M00/79/5D/poYBAGNsXVuAdOI1AANR8HxWfS4108.jpg)
接下來將絕緣的 1/4" 母鏟形接觸端子壓接到每根電線。這些將連接到 12V 電磁閥上的兩個公連接器。然后通過加熱將 2 段軟管連接到 2 個母 1/2" 軟管連接器用沸水沖洗軟管,將其滑到每個適配器上,并用 O 形圈夾固定軟管。這個設置可以在下面看到。
![12 V 電磁閥通過 O 形圈和 1/2](https://file.elecfans.com/web2/M00/79/EC/pYYBAGNsXWCAXoXEAAJU6SAcCCM585.jpg)
應該注意的是,螺線管是 12 V,但繼電器只有 5 V。因此其中一根電線被切成兩半,并添加了一個母 DC 筒形插孔適配器,以提供為電磁閥供電所需的電壓。對于大多數電磁閥來說,哪根電線的極性無關緊要。
![pYYBAGOIIuCAAIr9AAMMZs4Wckw977.jpg](https://file.elecfans.com/web2/M00/7F/86/pYYBAGOIIuCAAIr9AAMMZs4Wckw977.jpg)
在將連接到水龍頭的軟管末端,連接一個 12 毫米軟管接頭,如下所示。
![pYYBAGOIIueAck7sAAnciSqNOps013.jpg](https://file.elecfans.com/web2/M00/7F/86/pYYBAGOIIueAck7sAAnciSqNOps013.jpg)
由于南澳大利亞的天氣非常潮濕,因此使用室內水龍頭適配器將狗水碗設置在室內。
第 3 步:設置電容式土壤濕度傳感器
將粒子設備連接到紅色和綠色 LED 以及電容式土壤濕度傳感器,如下面的面包板的 Fritzing 圖中所示。
![pYYBAGOIIuyAXxYDAAHxnpSkvt0999.jpg](https://file.elecfans.com/web2/M00/7F/86/pYYBAGOIIuyAXxYDAAHxnpSkvt0999.jpg)
下面的接線圖將匹配下面 Github 鏈接上提供的代碼。
第 4 步:編碼
設置繼電器和傳感器的接線后,將提供的 C++ 代碼復制并保存到 Particle Web IDE 上的新應用程序文件中,驗證并將其閃存到您的 Particle 設備。
![poYBAGOIIu6ADFfCAAHQM_X24eQ083.png](https://file.elecfans.com/web2/M00/7E/FA/poYBAGOIIu6ADFfCAAHQM_X24eQ083.png)
在創建的項目中,從傳感器發布的代碼被寫入粒子氬,訂閱和控制繼電器的代碼被寫入粒子光子。
現在需要校準電容式土壤濕度傳感器讀數。為此,將傳感器放置在水碗中,并在水碗半滿和水碗滿時讀取空氣中的讀數。在將 Particle Argon 插入筆記本電腦時,通過串行監視器查看讀數。這些讀數是從循環中的以下代碼行打印的:
// Take the reading
int moistureValue = analogRead(SENSOR_PIN);
// Print to serial so you can keep track, particularly when determining
// moisture values from sensor when dry and when water bowl is full.
Serial.print("Moisture Level: ");
Serial.println(moistureValue);
Serial.print(Time.hourFormat12());
Serial.print(":");
Serial.print(Time.minute());
Serial.print(":");
Serial.print(Time.second());
要查看這些讀數,請打開 Arduino IDE(作為 Particle 和 Arduino use.ino 文件)并選擇工具 -> 端口 -> /dev/cu.usbmodem..... 如下圖所示。
![poYBAGOIIvGASwVcAAEBcs3jOqg904.png](https://file.elecfans.com/web2/M00/7E/FA/poYBAGOIIvGASwVcAAEBcs3jOqg904.png)
然后選擇 Tools -> Serial Monitor 查看讀數。
![pYYBAGOIIvmAeshuAADd7AmwTZk714.png](https://file.elecfans.com/web2/M00/7F/86/pYYBAGOIIvmAeshuAADd7AmwTZk714.png)
從這些讀數中,我確定水分讀數在充滿時為 2190,在干燥時為 3220。然后,我使用以下代碼行將這些值分別映射到 100 % 和 0 %,以便于閱讀碗的裝滿程度。
// Map these values to a percentage of how full. In this case when water bowl // was full moisture reading was 2190 and when dry it was 3220.
int moisturePercentage = map(moistureValue, 2190, 3220, 100, 0);
獲得這些讀數后,可以嘗試進行試運行。兩個 Particle 設備都已經在運行,因此將螺線管連接到水龍頭并相應地調節水流,然后測試螺線管是否打開并且當濕度傳感器干燥并且螺線管關閉時紅色 LED 是否打開,綠色 LED 是否打開當濕度傳感器暴露在水中時,紅色 LED 熄滅。
第 5 步:設置 IFTTT
在進行測試運行時,通過檢查粒子控制臺并選擇事件日志或我的設備來檢查粒子設備正在發布的事件。
![poYBAGOIIvuAH5YNAAHndbKP7JI455.png](https://file.elecfans.com/web2/M00/7E/FA/poYBAGOIIvuAH5YNAAHndbKP7JI455.png)
我們可以從上面的事件日志中看到粒子 Argon 已啟動兩次都已發布“完整”。
連接到繼電器的 Particle Photon 的“開啟”事件是我們將設置為通過 IFTTT 向用戶發送電子郵件的事件。
如果您尚未在此處設置 IFTTT 帳戶。
設置好帳戶后,單擊右上角的“創建”創建一個新的小程序,如下所示。
![poYBAGOIIv6AR_tWAAFkNIrh3ic434.png](https://file.elecfans.com/web2/M00/7E/FA/poYBAGOIIv6AR_tWAAFkNIrh3ic434.png)
在下一頁上,單擊“如果這樣”按鈕。
![pYYBAGOIIwGAQeewAAB-r-x3L9U234.png](https://file.elecfans.com/web2/M00/7F/86/pYYBAGOIIwGAQeewAAB-r-x3L9U234.png)
在下一頁上搜索粒子并單擊粒子圖標。
![pYYBAGOIIwaAIxFSAABk24Osx7g297.png](https://file.elecfans.com/web2/M00/7F/86/pYYBAGOIIwaAIxFSAABk24Osx7g297.png)
在下一頁上選擇“新事件發布”。如果您還沒有,請按照提示連接您的 Particle 帳戶。
![poYBAGOIIwqASdc9AAJbc4fLax4554.png](https://file.elecfans.com/web2/M00/7E/FA/poYBAGOIIwqASdc9AAJbc4fLax4554.png)
在“發布的新事件”頁面上,輸入如下所示的詳細信息,然后單擊“創建觸發器”。
![poYBAGOIIw6AI2f2AAFrYgtI2v8952.png](https://file.elecfans.com/web2/M00/7E/FA/poYBAGOIIw6AI2f2AAFrYgtI2v8952.png)
這將帶您返回 If This Then That 頁面,您將在其中單擊“The Then That”按鈕。
![pYYBAGOIIxCADQ1BAACUxjpCN38822.png](https://file.elecfans.com/web2/M00/7F/86/pYYBAGOIIxCADQ1BAACUxjpCN38822.png)
在下一頁上搜索 gMail 并單擊 gMail 圖標。
![pYYBAGOIIxWAEbrpAABm724vI9c808.png](https://file.elecfans.com/web2/M00/7F/86/pYYBAGOIIxWAEbrpAABm724vI9c808.png)
在下一頁上選擇“給自己發送電子郵件”。如果您還沒有,請按照提示連接您的 gMail 帳戶。
![pYYBAGOIIxiAShncAADz_QEEGB0546.png](https://file.elecfans.com/web2/M00/7F/86/pYYBAGOIIxiAShncAADz_QEEGB0546.png)
在“給自己發送電子郵件”頁面上,輸入下面顯示的詳細信息,然后單擊“創建操作”。
![pYYBAGOIIxuAGlSRAAEnhXbcsGc206.png](https://file.elecfans.com/web2/M00/7F/86/pYYBAGOIIxuAGlSRAAEnhXbcsGc206.png)
單擊“創建操作”后,您將進入以下頁面。單擊“完成”按鈕。
![poYBAGOIIx6AU-BVAAD0tM30qS8149.png](https://file.elecfans.com/web2/M00/7E/FA/poYBAGOIIx6AU-BVAAD0tM30qS8149.png)
第 6 步:設置 Webhook
我們現在將創建一個 webhook,以便在 ThingSpeak 上繪制水分百分比值。為此,我們首先將以下代碼行插入smartdogwaterbowlpublish.ino應用程序:
// ThingSpeak
const char * eventName = "thingSpeakMoisturePercentageReading_";
// ThingSpeak Channel information
unsigned long myChannelNumber =XXXXXXX;
const char * myWriteAPIKey = "XXXXXXXXXXXXXXXX";
Particle.publish(eventName, "{"Moisture Percentage": "" + String(moisture) + "", "key": "" + myWriteAPIKey + "" }", PRIVATE, NO_ACK);
delay(PUBLISH_INTERVAL); // Moisture level read every minute
對于我的 Channel Number 和 myWriteAPIKey,您將能夠在 ThingSpeak 頁面的以下屏幕上找到要輸入的字符,黃色圓圈所在的位置。
![pYYBAGOIIyOALSaqAALkZ2NKmMQ825.png](https://file.elecfans.com/web2/M00/7F/86/pYYBAGOIIyOALSaqAALkZ2NKmMQ825.png)
代碼行:
Particle.publish(eventName, "{"Moisture Percentage": "" + String(moisture) + "", "key": "" + myWriteAPIKey + "" }", PRIVATE, NO_ACK);
將解析為分配給事件名稱“thingSpeakMoisturePercentageReading_”的 JSON 塊:
{
"Moisture Percentage":"97"
"key":"XXXXXXXXXXXXXXXX"
}
接下來在 Particle Photon Cloud 界面中,通過輸入以下數據來構建“WebHook”類型的新“Integration”:
![pYYBAGOIIyiAUCTiAAD2c92S4vs230.png](https://file.elecfans.com/web2/M00/7F/86/pYYBAGOIIyiAUCTiAAD2c92S4vs230.png)
單擊“高級設置”并輸入以下內容作為 JSON 塊,將每個參數附加為字段編號以顯示在 ThingSpeak 頻道上:
{
"event": "thingSpeakMoisturePercentageReading_",
"url": "https://api.thingspeak.com/update",
"requestType": "POST",
"api_key": "XXXXXXXXXXXXXXXX",
"field1": "{{{Moisture Percentage}}}"
}
單擊“保存”并啟動集成。
如果您還沒有,請創建一個ThingSpeak帳戶來接收和處理數據。現在創建一個新的“Channel”,給它一個名字和定義的字段來接收與上面的 JSON 塊匹配的數據,如下所示:
![pYYBAGOIIyyAHSUhAANm7hLWuVg032.png](https://file.elecfans.com/web2/M00/7F/86/pYYBAGOIIyyAHSUhAANm7hLWuVg032.png)
將“元數據”設置為“JSON”并保存頻道。現在可以將數據可視化為圖形和儀表。
![poYBAGOINhyACqKTAAI7LP-SWsI785.png](https://file.elecfans.com/web2/M00/7F/02/poYBAGOINhyACqKTAAI7LP-SWsI785.png)
在左側,我們在“15 分鐘”時間尺度上創建了一個設置為“樣條曲線”的折線圖,顯示了最后 480 個結果(過去 8 小時的結果)。將“Y 軸最小值”設置為“0”,將“Y 軸最大值”設置為略大于 100,例如 110。這表明狗從水碗中喝水的時間急劇下降。
在右側,我們創建了一個儀表小部件,它顯示了碗的當前水分百分比水平。該儀表的設置如下所示。
![pYYBAGOINiGANddLAACmKzKagDQ627.png](https://file.elecfans.com/web2/M00/7F/8F/pYYBAGOINiGANddLAACmKzKagDQ627.png)
?
?
?
- 物聯網狗碗和狗糧秤開源分享
- 三個傳感器協同工作的智能狗碗
- Doggo水碗加注監視器/指示器 第1部分
- Doggo水碗補充監視器/指示器 第2部分
- 基于粒子群算法的D2D通信邊緣緩存架構 3次下載
- 通過多模態特征融合來設計三維點云分類模型 3次下載
- 如何結合粒子群尋優與遺傳重采樣實現RBPF算法 2次下載
- 如何使用禁忌退火粒子群算法解決火力分配的問題 7次下載
- 如何使用核模糊聚類進行動態多子群協作骨干粒子群優化 21次下載
- 如何使用室內環境約束的行人航向粒子濾波算法進行修正方向誤差 9次下載
- 云計算資源的動態隨機擾動如何進行粒子群優化策略 1次下載
- 如何使用粒子Mean Shift遷移進行紅外人體目標跟蹤算法概述 2次下載
- 使用云計算任務調度的遺傳粒子群優化算法的詳細資料概述 9次下載
- 基于改進粒子群算法的云計算任務調度算法 0次下載
- 磁性納米粒子的制備及其細胞分離方面的應用
- PLC可以與哪些設備進行通信 792次閱讀
- 關于電子元器件空間輻射單粒子效應的考核 1341次閱讀
- STM32中的獨立看門狗和窗口看門狗 1212次閱讀
- 如何使用消息隊列進行通信 1304次閱讀
- 如何使用消息隊列進行通信 1193次閱讀
- STM32中的獨立看門狗和窗口看門狗 1882次閱讀
- 塵埃粒子計數器使用說明 8024次閱讀
- 一文看懂云電子狗與普通電子狗有什么區別 2.6w次閱讀
- 電子狗哪個牌子好?電子狗排行榜十大牌子 7.8w次閱讀
- 電子狗是什么_電子狗和導航儀的區別 3w次閱讀
- 詳細剖析漢云通信——人工智能語音交互系統 6486次閱讀
- 通過改進算法對光伏組件內部參數進行準確辨識,并對外部輸出特性進行預測 8322次閱讀
- 通過云計算來挖掘人工智能服務的優勢分析 5170次閱讀
- STM32看門狗配置(獨立看門狗IWDG和窗口看門狗WWDG) 8286次閱讀
- stm32看門狗時間計算 獨立看門狗和窗口看門狗的特性是什么 8660次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數據手冊
- 1.06 MB | 532次下載 | 免費
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費
- 5元宇宙深度解析—未來的未來-風口還是泡沫
- 6.40 MB | 227次下載 | 免費
- 6迪文DGUS開發指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537798次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191187次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論