資料介紹
描述
臥室空氣的溫度和濕度對于舒適的睡眠很重要。一般來說,我們開空調來調節溫度,但是在睡前調節溫度可能會很困難,因為開空調時可能會很冷,或者沒有它會太熱悶悶不樂。在我住的東京,除了仲夏的幾天很熱外,晚上并沒有那么熱,有時打開窗戶讓涼爽的空氣進來就可以了。但是,即使開著窗戶,早上可能會太冷,很難調節臥室的空氣質量。需要注意的是,在日本的大部分地區,開著窗戶睡覺是安全的。它是如此安全,以至于前幾天有一只小猴子大驚小怪。
我們將創建一個物聯網系統,根據溫度計的數據自動打開和關閉房間的風扇。
由于許多元素協同工作,我們將依次解釋每個元素。
它基于 Core2 教程和 esp-aws-iot 庫中的示例代碼,所以詳細配置和構建設置請參考原文。
https://github.com/m5stack/Core2-for-AWS-IoT-EduKit/tree/master/Smart-Thermostat
https://github.com/espressif/esp-aws-iot/tree/master/examples/thing_shadow
SwitchBot儀表
這是一個通過 BLE 傳輸數據的溫濕度計。協議已經分析過了,可以使用ESP32獲取數據。
我認為它是最好的溫度和濕度傳感器,因為它很小,可以放在任何地方,并且可以使用 AA 電池運行一年以上。
在這種情況下,我要把它放在臥室的枕頭附近。房間的溫度在頂部和底部之間是不同的,在窗戶和床頭之間也是如此。需要反復試驗才能確定在哪里測量溫度。至少,如果溫度計固定在控制系統旁邊,我認為您無法真正進行舒適的調整。
Core2 -- 將溫度數據發送到 AWS
通過 BLE 從 SwitchBot Meter 獲取的溫度和濕度數據被發送到 AWS IoT Core。它僅在數據發生變化時才發送數據。
這是基于恒溫器教程中的代碼,添加了 BLE 處理和更改 LED 顏色的命令。
我還修復了原始代碼的 textarea 處理部分中的一個錯誤。如果我記得,我稍后會提出拉取請求。
云——根據數據確定粉絲行為
我想通過 AWS 服務以某種方式處理發送到 AWS IoT 的溫度數據,并向控制風扇的設備發送一條消息,告訴它打開或關閉。
AWS 非常靈活,所以如果我現在將數據發送到 IoT Core,我可以稍后進行大量試驗和錯誤,以確定使用哪個服務來處理數據以及如何處理。
在這種情況下,我們首先使用 Dynamo+Lambda 實現決策邏輯。之后,我們不得不切換到 IoT Core 規則中重新發布消息的方法。
DynamoDB+Lambda
我做的第一件事是將數據存儲在 DynamoDB 中。
我們將以下查詢放入 IoT Core 的 DynamoDBv2 規則中。
SELECT *, topic(3) as client_id, timestamp() as aws_timestamp FROM '$aws/things/+/shadow/update/accepted'
topic(3) 提取對應于thingName 的主題部分。
目標 DynamoDB 表是
分區鍵:client_id(字符串)
排序鍵:aws_timestamp(數字)
我們會這樣設置。
接下來,我們將創建一個 Lambda。在這個 Lambda 中,我們將從存儲在 DynamoDB 中的最新數據中讀取一些數據,并根據這些數據發送命令來確定風扇行為。檢索多個數據的原因是我們正在考慮使用時間序列變化或平均值作為做出決策的邏輯。
代碼有點長,請參考鏈接。
當溫度高于 30 攝氏度時,風扇打開。我還更改了 LED 的顏色,以便您了解它是如何工作的。
如果您定期運行此程序,例如每分鐘運行一次,您應該能夠根據溫度控制風扇的開/關。
M5StickC -- 風扇控制器
現在我們已經有了在云端打開和關閉風扇的邏輯,下一步是創建實際運行風扇的設備。
我們本可以將這個功能塞進 Core2 中,但由于這是一個 IoT Core 項目,我們決定將它作為一個單獨的東西來實現,并嘗試與多個設備一起工作。
M5StickC 的 GPIO 無法輸出足夠的電流來運行風扇。如果要運行風扇,則需要使用繼電器單元或類似的東西。
但是,這次我們將使用一種技術來單獨使用 M5StickC 打開/關閉更大的電流。通過使用 I2C 操作電源 IC,我們可以打開和關閉 5V 輸出。
它將 5V 引腳的輸出轉換為 USB 連接器并轉動從 USB 獲取電源的風扇。
請參閱代碼鏈接中的文件 m5stickc_5v.cpp。
注意:這種控制 5V 的技術僅適用于較新版本的 M5StickC。你需要比所謂的藍色完美版本更新的東西。
Arduino + AWS 物聯網核心
Core2 項目基于恒溫器教程,所以它是一個 ESP-IDF 項目。它是使用 FreeRTOS 任務開發的,但似乎比 Arduino 更難。M5StickC 庫和外圍設備庫可用于 Arduino,因此能夠使用它們會很好。
AWS IoT 組件 ( https://github.com/espressif/esp-aws-iot ) 用于 ESP-IDF,所以我不能將它與 Arduino 一起使用。
我做了一些研究,找到了一種將 Arduino 核心庫作為組件合并到 ESP-IDF 項目中并使用 Arduino 代碼和庫的方法。
按照此處的說明將 Arduino 內核嵌入組件中。我還在組件中安裝了 AWS IoT 庫。
現在,您可以在使用常用 Arduino 庫的同時使用 IoT Core 組件。
代碼與Core2 ESP-IDF項目的代碼基本相似,但我感覺更好,因為我不使用FreeRTOS任務函數來處理每個任務。可能會有一些性能問題,但對于一個愛好項目,我認為這是一個不錯的選擇。
AWS IoT -- 規則重新發布
我使用 DynamoDB 和 Lambda 創建了風扇控制邏輯。但是,將所有消息存儲在 DynamoDB 中并定期運行 Lambda 有點低效。我想我可以做得更好。
我設置了一個 Rule 來將消息存儲在 DynamoDB 中,并且在這個 Rule 的 action 中,有一個 action 叫做 Republish。它可以接收消息、處理消息并發布處理后的消息。
查詢現在看起來像這樣。
SELECT
CASE current.state.reported.temperature > 27.5
WHEN true THEN 1
ELSE 0
END
AS state.desired.fanSpeed
FROM '$aws/things/012395fb0a29199a01/shadow/update/documents'
WHERE current.state.reported.temperature > 28.0 OR current.state.reported.temperature < 27.0
風扇在溫度高于 28 攝氏度時打開,在溫度低于 27 攝氏度時關閉。我們能夠在如此短的查詢中實現具有滯后性的邏輯。
AS state.desired.fanSpeed
來自此的 JSON 輸出將如下所示。
{
"state": {
"desired": {
"fanSpeed": 1
}
}
}
像這樣設置主題的目的地。
$$aws/things/M5StickC-003/shadow/update
現在我們可以更新這個東西的影子了。
調試
AWS_PROFILE=awsiot-admin-202108 AWS_DEFAULT_REGION=ap-northeast-1 aws iot-data update-thing-shadow --endpoint-url "https://a15o79dfbws0i-ats.iot.ap-northeast-1.amazonaws.com" --thing-name "M5StickC-003" --cli-binary-format raw-in-base64-out --payload '{"state":{"desired":{"fanSpeed":1}}}' output.txt
此命令將允許您更新陰影。這對于驗證系統的一部分是否正常工作很有用。
您可以使用 AWS 控制臺中的測試工具,該工具允許您訂閱和發布 MQTT,以查看和發送消息以進行調試。
您還可以查看 IoT Core 事物中的 Device Shadow 文檔。如果某些東西不能正常工作,請使用這些來一一檢查。
網頁界面
通風系統連接到互聯網。您可能想用智能手機控制它。
讓我們使用網站構建框架 Amplify 為通風系統創建一個控制器。
首先,讓我們以本教程為指導創建一個具有登錄功能的網站。我使用了 Cognoto,但我認為其他登錄方式也可以。
接下來,按照此 PubSub 文章中的說明配置您的站點。
這就是創建與 AWS IoT MQTT 通信的 Web 應用程序所需的全部內容。
完整的代碼可以在鏈接中找到。放大-App.js
結論
我們通過將設備與 M5Stack 的 ESP32 和 AWS 服務相結合,創建了一個用于自動通風的物聯網系統。
ESP32 也可以使用 HTTP,所以可以連接普通的 WebAPI。到現在為止,我也使用過 HTTP。但是,通過這次使用基于 MQTT 的 AWS IoT,并結合 AWS 服務,我驚訝于 IoT 開發世界變得如此便利,甚至包括云端。
目前,我發現物聯網設備可以簡單地通過設備影子實現,并將它們連接到AWS,這使得后續結合云的開發非常容易。
通過使用 Amplify,我們能夠創建一個系統,非常輕松地將 IoT 設備連接到智能手機和網絡。
?
- 基于NDIR的自動通風系統 0次下載
- 帶二氧化碳監測器的自動通風系統
- 基于DSP的變電站綜合自動化控制系統 23次下載
- 基于Zigbee和物聯網的自動售貨機系統 25次下載
- MSP430的樓宇自動開窗系統設計詳析 7次下載
- 軸流式通風機在線監測及自動控制改造應用 1次下載
- 海為C60S2R在智能通風系統測試平臺上的應用 1次下載
- 一種基于物聯網技術的通風離心機控制平臺設計 2次下載
- 基于IDL的地下工程通風系統設計 26次下載
- 基于PLC礦用主通風機的控制系統設計 87次下載
- 基于ARM的通風柜控制系統
- 通風系統煤礦通風監控系統示意圖
- 集中空調通風系統的衛生狀況與凈化設備
- 通風設計技術交流
- 基于PLC的隧道通風監控系統
- 物聯網智能寵物管理系統 822次閱讀
- 聯網自動駕駛機器人的網絡安全 281次閱讀
- 基于STM32單片機的CO(一氧化碳)氣體檢測報警通風系統仿真設計 2309次閱讀
- 廚房自動排氣風扇電路 1316次閱讀
- 基于阿里云物聯網平臺的智能燈光控制系統設計 4026次閱讀
- 如何制作一個繼電器操作定時通風機 1716次閱讀
- 自動駕駛系統的原理和結構講解 1.4w次閱讀
- 基于P87C591單片機和P87C591數模轉換器實現機車通風機控制系統設計 1413次閱讀
- 溫濕度傳感器HTG3535CH和濕度傳感器HM1500LF在通風管道中的應用 1329次閱讀
- 海為PLC在智能通風系統的內部測試中的應用 846次閱讀
- 深入分析自動駕駛系統以及涉及到的軟件系統 1.7w次閱讀
- 地鐵空調通風系統監測環境溫度和空氣濕度生的溫濕度傳感器 2080次閱讀
- ATE自動化測試系統是什么_ATE自動化測試系統介紹 3.2w次閱讀
- 一文看懂空調座椅半導體獨立制冷和原車冷氣通風系統的區別 1.2w次閱讀
- 基于嵌入式的自動化配送系統 613次閱讀
下載排行
本周
- 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次下載 | 免費
評論
查看更多