資料介紹
描述
臥室空氣的溫度和濕度對于舒適的睡眠很重要。一般來說,我們開空調(diào)來調(diào)節(jié)溫度,但是在睡前調(diào)節(jié)溫度可能會很困難,因為開空調(diào)時可能會很冷,或者沒有它會太熱悶悶不樂。在我住的東京,除了仲夏的幾天很熱外,晚上并沒有那么熱,有時打開窗戶讓涼爽的空氣進來就可以了。但是,即使開著窗戶,早上可能會太冷,很難調(diào)節(jié)臥室的空氣質(zhì)量。需要注意的是,在日本的大部分地區(qū),開著窗戶睡覺是安全的。它是如此安全,以至于前幾天有一只小猴子大驚小怪。
我們將創(chuàng)建一個物聯(lián)網(wǎng)系統(tǒng),根據(jù)溫度計的數(shù)據(jù)自動打開和關(guān)閉房間的風(fēng)扇。
由于許多元素協(xié)同工作,我們將依次解釋每個元素。
它基于 Core2 教程和 esp-aws-iot 庫中的示例代碼,所以詳細(xì)配置和構(gòu)建設(shè)置請參考原文。
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 傳輸數(shù)據(jù)的溫濕度計。協(xié)議已經(jīng)分析過了,可以使用ESP32獲取數(shù)據(jù)。
我認(rèn)為它是最好的溫度和濕度傳感器,因為它很小,可以放在任何地方,并且可以使用 AA 電池運行一年以上。
在這種情況下,我要把它放在臥室的枕頭附近。房間的溫度在頂部和底部之間是不同的,在窗戶和床頭之間也是如此。需要反復(fù)試驗才能確定在哪里測量溫度。至少,如果溫度計固定在控制系統(tǒng)旁邊,我認(rèn)為您無法真正進行舒適的調(diào)整。
Core2 -- 將溫度數(shù)據(jù)發(fā)送到 AWS
通過 BLE 從 SwitchBot Meter 獲取的溫度和濕度數(shù)據(jù)被發(fā)送到 AWS IoT Core。它僅在數(shù)據(jù)發(fā)生變化時才發(fā)送數(shù)據(jù)。
這是基于恒溫器教程中的代碼,添加了 BLE 處理和更改 LED 顏色的命令。
我還修復(fù)了原始代碼的 textarea 處理部分中的一個錯誤。如果我記得,我稍后會提出拉取請求。
云——根據(jù)數(shù)據(jù)確定粉絲行為
我想通過 AWS 服務(wù)以某種方式處理發(fā)送到 AWS IoT 的溫度數(shù)據(jù),并向控制風(fēng)扇的設(shè)備發(fā)送一條消息,告訴它打開或關(guān)閉。
AWS 非常靈活,所以如果我現(xiàn)在將數(shù)據(jù)發(fā)送到 IoT Core,我可以稍后進行大量試驗和錯誤,以確定使用哪個服務(wù)來處理數(shù)據(jù)以及如何處理。
在這種情況下,我們首先使用 Dynamo+Lambda 實現(xiàn)決策邏輯。之后,我們不得不切換到 IoT Core 規(guī)則中重新發(fā)布消息的方法。
DynamoDB+Lambda
我做的第一件事是將數(shù)據(jù)存儲在 DynamoDB 中。
我們將以下查詢放入 IoT Core 的 DynamoDBv2 規(guī)則中。
SELECT *, topic(3) as client_id, timestamp() as aws_timestamp FROM '$aws/things/+/shadow/update/accepted'
topic(3) 提取對應(yīng)于thingName 的主題部分。
目標(biāo) DynamoDB 表是
分區(qū)鍵:client_id(字符串)
排序鍵:aws_timestamp(數(shù)字)
我們會這樣設(shè)置。
接下來,我們將創(chuàng)建一個 Lambda。在這個 Lambda 中,我們將從存儲在 DynamoDB 中的最新數(shù)據(jù)中讀取一些數(shù)據(jù),并根據(jù)這些數(shù)據(jù)發(fā)送命令來確定風(fēng)扇行為。檢索多個數(shù)據(jù)的原因是我們正在考慮使用時間序列變化或平均值作為做出決策的邏輯。
代碼有點長,請參考鏈接。
當(dāng)溫度高于 30 攝氏度時,風(fēng)扇打開。我還更改了 LED 的顏色,以便您了解它是如何工作的。
如果您定期運行此程序,例如每分鐘運行一次,您應(yīng)該能夠根據(jù)溫度控制風(fēng)扇的開/關(guān)。
M5StickC -- 風(fēng)扇控制器
現(xiàn)在我們已經(jīng)有了在云端打開和關(guān)閉風(fēng)扇的邏輯,下一步是創(chuàng)建實際運行風(fēng)扇的設(shè)備。
我們本可以將這個功能塞進 Core2 中,但由于這是一個 IoT Core 項目,我們決定將它作為一個單獨的東西來實現(xiàn),并嘗試與多個設(shè)備一起工作。
M5StickC 的 GPIO 無法輸出足夠的電流來運行風(fēng)扇。如果要運行風(fēng)扇,則需要使用繼電器單元或類似的東西。
但是,這次我們將使用一種技術(shù)來單獨使用 M5StickC 打開/關(guān)閉更大的電流。通過使用 I2C 操作電源 IC,我們可以打開和關(guān)閉 5V 輸出。

它將 5V 引腳的輸出轉(zhuǎn)換為 USB 連接器并轉(zhuǎn)動從 USB 獲取電源的風(fēng)扇。
請參閱代碼鏈接中的文件 m5stickc_5v.cpp。
注意:這種控制 5V 的技術(shù)僅適用于較新版本的 M5StickC。你需要比所謂的藍(lán)色完美版本更新的東西。
Arduino + AWS 物聯(lián)網(wǎng)核心
Core2 項目基于恒溫器教程,所以它是一個 ESP-IDF 項目。它是使用 FreeRTOS 任務(wù)開發(fā)的,但似乎比 Arduino 更難。M5StickC 庫和外圍設(shè)備庫可用于 Arduino,因此能夠使用它們會很好。
AWS IoT 組件 ( https://github.com/espressif/esp-aws-iot ) 用于 ESP-IDF,所以我不能將它與 Arduino 一起使用。
我做了一些研究,找到了一種將 Arduino 核心庫作為組件合并到 ESP-IDF 項目中并使用 Arduino 代碼和庫的方法。
按照此處的說明將 Arduino 內(nèi)核嵌入組件中。我還在組件中安裝了 AWS IoT 庫。
現(xiàn)在,您可以在使用常用 Arduino 庫的同時使用 IoT Core 組件。
代碼與Core2 ESP-IDF項目的代碼基本相似,但我感覺更好,因為我不使用FreeRTOS任務(wù)函數(shù)來處理每個任務(wù)。可能會有一些性能問題,但對于一個愛好項目,我認(rèn)為這是一個不錯的選擇。
AWS IoT -- 規(guī)則重新發(fā)布
我使用 DynamoDB 和 Lambda 創(chuàng)建了風(fēng)扇控制邏輯。但是,將所有消息存儲在 DynamoDB 中并定期運行 Lambda 有點低效。我想我可以做得更好。
我設(shè)置了一個 Rule 來將消息存儲在 DynamoDB 中,并且在這個 Rule 的 action 中,有一個 action 叫做 Republish。它可以接收消息、處理消息并發(fā)布處理后的消息。
查詢現(xiàn)在看起來像這樣。
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
風(fēng)扇在溫度高于 28 攝氏度時打開,在溫度低于 27 攝氏度時關(guān)閉。我們能夠在如此短的查詢中實現(xiàn)具有滯后性的邏輯。
AS state.desired.fanSpeed
來自此的 JSON 輸出將如下所示。
{
"state": {
"desired": {
"fanSpeed": 1
}
}
}
像這樣設(shè)置主題的目的地。
$$aws/things/M5StickC-003/shadow/update
現(xiàn)在我們可以更新這個東西的影子了。
調(diào)試
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
此命令將允許您更新陰影。這對于驗證系統(tǒng)的一部分是否正常工作很有用。
您可以使用 AWS 控制臺中的測試工具,該工具允許您訂閱和發(fā)布 MQTT,以查看和發(fā)送消息以進行調(diào)試。
您還可以查看 IoT Core 事物中的 Device Shadow 文檔。如果某些東西不能正常工作,請使用這些來一一檢查。
網(wǎng)頁界面
通風(fēng)系統(tǒng)連接到互聯(lián)網(wǎng)。您可能想用智能手機控制它。
讓我們使用網(wǎng)站構(gòu)建框架 Amplify 為通風(fēng)系統(tǒng)創(chuàng)建一個控制器。
首先,讓我們以本教程為指導(dǎo)創(chuàng)建一個具有登錄功能的網(wǎng)站。我使用了 Cognoto,但我認(rèn)為其他登錄方式也可以。
接下來,按照此 PubSub 文章中的說明配置您的站點。
這就是創(chuàng)建與 AWS IoT MQTT 通信的 Web 應(yīng)用程序所需的全部內(nèi)容。
完整的代碼可以在鏈接中找到。放大-App.js


結(jié)論
我們通過將設(shè)備與 M5Stack 的 ESP32 和 AWS 服務(wù)相結(jié)合,創(chuàng)建了一個用于自動通風(fēng)的物聯(lián)網(wǎng)系統(tǒng)。
ESP32 也可以使用 HTTP,所以可以連接普通的 WebAPI。到現(xiàn)在為止,我也使用過 HTTP。但是,通過這次使用基于 MQTT 的 AWS IoT,并結(jié)合 AWS 服務(wù),我驚訝于 IoT 開發(fā)世界變得如此便利,甚至包括云端。
目前,我發(fā)現(xiàn)物聯(lián)網(wǎng)設(shè)備可以簡單地通過設(shè)備影子實現(xiàn),并將它們連接到AWS,這使得后續(xù)結(jié)合云的開發(fā)非常容易。
通過使用 Amplify,我們能夠創(chuàng)建一個系統(tǒng),非常輕松地將 IoT 設(shè)備連接到智能手機和網(wǎng)絡(luò)。
?
- 基于NDIR的自動通風(fēng)系統(tǒng) 0次下載
- 帶二氧化碳監(jiān)測器的自動通風(fēng)系統(tǒng)
- 基于DSP的變電站綜合自動化控制系統(tǒng) 23次下載
- 基于Zigbee和物聯(lián)網(wǎng)的自動售貨機系統(tǒng) 25次下載
- MSP430的樓宇自動開窗系統(tǒng)設(shè)計詳析 7次下載
- 軸流式通風(fēng)機在線監(jiān)測及自動控制改造應(yīng)用 1次下載
- 海為C60S2R在智能通風(fēng)系統(tǒng)測試平臺上的應(yīng)用 1次下載
- 一種基于物聯(lián)網(wǎng)技術(shù)的通風(fēng)離心機控制平臺設(shè)計 2次下載
- 基于IDL的地下工程通風(fēng)系統(tǒng)設(shè)計 26次下載
- 基于PLC礦用主通風(fēng)機的控制系統(tǒng)設(shè)計 87次下載
- 基于ARM的通風(fēng)柜控制系統(tǒng)
- 通風(fēng)系統(tǒng)煤礦通風(fēng)監(jiān)控系統(tǒng)示意圖
- 集中空調(diào)通風(fēng)系統(tǒng)的衛(wèi)生狀況與凈化設(shè)備
- 通風(fēng)設(shè)計技術(shù)交流
- 基于PLC的隧道通風(fēng)監(jiān)控系統(tǒng)
- 物聯(lián)網(wǎng)智能寵物管理系統(tǒng) 2427次閱讀
- 聯(lián)網(wǎng)自動駕駛機器人的網(wǎng)絡(luò)安全 406次閱讀
- 基于STM32單片機的CO(一氧化碳)氣體檢測報警通風(fēng)系統(tǒng)仿真設(shè)計 2786次閱讀
- 廚房自動排氣風(fēng)扇電路 1670次閱讀
- 基于阿里云物聯(lián)網(wǎng)平臺的智能燈光控制系統(tǒng)設(shè)計 4365次閱讀
- 如何制作一個繼電器操作定時通風(fēng)機 1857次閱讀
- 自動駕駛系統(tǒng)的原理和結(jié)構(gòu)講解 1.4w次閱讀
- 基于P87C591單片機和P87C591數(shù)模轉(zhuǎn)換器實現(xiàn)機車通風(fēng)機控制系統(tǒng)設(shè)計 1540次閱讀
- 溫濕度傳感器HTG3535CH和濕度傳感器HM1500LF在通風(fēng)管道中的應(yīng)用 1402次閱讀
- 海為PLC在智能通風(fēng)系統(tǒng)的內(nèi)部測試中的應(yīng)用 915次閱讀
- 深入分析自動駕駛系統(tǒng)以及涉及到的軟件系統(tǒng) 1.7w次閱讀
- 地鐵空調(diào)通風(fēng)系統(tǒng)監(jiān)測環(huán)境溫度和空氣濕度生的溫濕度傳感器 2310次閱讀
- ATE自動化測試系統(tǒng)是什么_ATE自動化測試系統(tǒng)介紹 3.2w次閱讀
- 一文看懂空調(diào)座椅半導(dǎo)體獨立制冷和原車?yán)錃?b class="flag-6" style="color: red">通風(fēng)系統(tǒng)的區(qū)別 1.2w次閱讀
- 基于嵌入式的自動化配送系統(tǒng) 647次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
- 1.06 MB | 532次下載 | 免費
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費
- 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費
- 6迪文DGUS開發(fā)指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應(yīng)用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關(guān)電源設(shè)計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅(qū)動電路設(shè)計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 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十天學(xué)會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論