資料介紹
描述
臥室空氣的溫度和濕度對(duì)于舒適的睡眠很重要。一般來(lái)說(shuō),我們開(kāi)空調(diào)來(lái)調(diào)節(jié)溫度,但是在睡前調(diào)節(jié)溫度可能會(huì)很困難,因?yàn)殚_(kāi)空調(diào)時(shí)可能會(huì)很冷,或者沒(méi)有它會(huì)太熱悶悶不樂(lè)。在我住的東京,除了仲夏的幾天很熱外,晚上并沒(méi)有那么熱,有時(shí)打開(kāi)窗戶讓涼爽的空氣進(jìn)來(lái)就可以了。但是,即使開(kāi)著窗戶,早上可能會(huì)太冷,很難調(diào)節(jié)臥室的空氣質(zhì)量。需要注意的是,在日本的大部分地區(qū),開(kāi)著窗戶睡覺(jué)是安全的。它是如此安全,以至于前幾天有一只小猴子大驚小怪。
我們將創(chuàng)建一個(gè)物聯(lián)網(wǎng)系統(tǒng),根據(jù)溫度計(jì)的數(shù)據(jù)自動(dòng)打開(kāi)和關(guān)閉房間的風(fēng)扇。
由于許多元素協(xié)同工作,我們將依次解釋每個(gè)元素。
它基于 Core2 教程和 esp-aws-iot 庫(kù)中的示例代碼,所以詳細(xì)配置和構(gòu)建設(shè)置請(qǐng)參考原文。
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儀表
這是一個(gè)通過(guò) BLE 傳輸數(shù)據(jù)的溫濕度計(jì)。協(xié)議已經(jīng)分析過(guò)了,可以使用ESP32獲取數(shù)據(jù)。
我認(rèn)為它是最好的溫度和濕度傳感器,因?yàn)樗苄?,可以放在任何地方,并且可以使?AA 電池運(yùn)行一年以上。
在這種情況下,我要把它放在臥室的枕頭附近。房間的溫度在頂部和底部之間是不同的,在窗戶和床頭之間也是如此。需要反復(fù)試驗(yàn)才能確定在哪里測(cè)量溫度。至少,如果溫度計(jì)固定在控制系統(tǒng)旁邊,我認(rèn)為您無(wú)法真正進(jìn)行舒適的調(diào)整。
Core2 -- 將溫度數(shù)據(jù)發(fā)送到 AWS
通過(guò) BLE 從 SwitchBot Meter 獲取的溫度和濕度數(shù)據(jù)被發(fā)送到 AWS IoT Core。它僅在數(shù)據(jù)發(fā)生變化時(shí)才發(fā)送數(shù)據(jù)。
這是基于恒溫器教程中的代碼,添加了 BLE 處理和更改 LED 顏色的命令。
我還修復(fù)了原始代碼的 textarea 處理部分中的一個(gè)錯(cuò)誤。如果我記得,我稍后會(huì)提出拉取請(qǐng)求。
云——根據(jù)數(shù)據(jù)確定粉絲行為
我想通過(guò) AWS 服務(wù)以某種方式處理發(fā)送到 AWS IoT 的溫度數(shù)據(jù),并向控制風(fēng)扇的設(shè)備發(fā)送一條消息,告訴它打開(kāi)或關(guān)閉。
AWS 非常靈活,所以如果我現(xiàn)在將數(shù)據(jù)發(fā)送到 IoT Core,我可以稍后進(jìn)行大量試驗(yàn)和錯(cuò)誤,以確定使用哪個(gè)服務(wù)來(lái)處理數(shù)據(jù)以及如何處理。
在這種情況下,我們首先使用 Dynamo+Lambda 實(shí)現(xiàn)決策邏輯。之后,我們不得不切換到 IoT Core 規(guī)則中重新發(fā)布消息的方法。
DynamoDB+Lambda
我做的第一件事是將數(shù)據(jù)存儲(chǔ)在 DynamoDB 中。
我們將以下查詢放入 IoT Core 的 DynamoDBv2 規(guī)則中。
SELECT *, topic(3) as client_id, timestamp() as aws_timestamp FROM '$aws/things/+/shadow/update/accepted'
topic(3) 提取對(duì)應(yīng)于thingName 的主題部分。
目標(biāo) DynamoDB 表是
分區(qū)鍵:client_id(字符串)
排序鍵:aws_timestamp(數(shù)字)
我們會(huì)這樣設(shè)置。
接下來(lái),我們將創(chuàng)建一個(gè) Lambda。在這個(gè) Lambda 中,我們將從存儲(chǔ)在 DynamoDB 中的最新數(shù)據(jù)中讀取一些數(shù)據(jù),并根據(jù)這些數(shù)據(jù)發(fā)送命令來(lái)確定風(fēng)扇行為。檢索多個(gè)數(shù)據(jù)的原因是我們正在考慮使用時(shí)間序列變化或平均值作為做出決策的邏輯。
代碼有點(diǎn)長(zhǎng),請(qǐng)參考鏈接。
當(dāng)溫度高于 30 攝氏度時(shí),風(fēng)扇打開(kāi)。我還更改了 LED 的顏色,以便您了解它是如何工作的。
如果您定期運(yùn)行此程序,例如每分鐘運(yùn)行一次,您應(yīng)該能夠根據(jù)溫度控制風(fēng)扇的開(kāi)/關(guān)。
M5StickC -- 風(fēng)扇控制器
現(xiàn)在我們已經(jīng)有了在云端打開(kāi)和關(guān)閉風(fēng)扇的邏輯,下一步是創(chuàng)建實(shí)際運(yùn)行風(fēng)扇的設(shè)備。
我們本可以將這個(gè)功能塞進(jìn) Core2 中,但由于這是一個(gè) IoT Core 項(xiàng)目,我們決定將它作為一個(gè)單獨(dú)的東西來(lái)實(shí)現(xiàn),并嘗試與多個(gè)設(shè)備一起工作。
M5StickC 的 GPIO 無(wú)法輸出足夠的電流來(lái)運(yùn)行風(fēng)扇。如果要運(yùn)行風(fēng)扇,則需要使用繼電器單元或類似的東西。
但是,這次我們將使用一種技術(shù)來(lái)單獨(dú)使用 M5StickC 打開(kāi)/關(guān)閉更大的電流。通過(guò)使用 I2C 操作電源 IC,我們可以打開(kāi)和關(guān)閉 5V 輸出。
它將 5V 引腳的輸出轉(zhuǎn)換為 USB 連接器并轉(zhuǎn)動(dòng)從 USB 獲取電源的風(fēng)扇。
請(qǐng)參閱代碼鏈接中的文件 m5stickc_5v.cpp。
注意:這種控制 5V 的技術(shù)僅適用于較新版本的 M5StickC。你需要比所謂的藍(lán)色完美版本更新的東西。
Arduino + AWS 物聯(lián)網(wǎng)核心
Core2 項(xiàng)目基于恒溫器教程,所以它是一個(gè) ESP-IDF 項(xiàng)目。它是使用 FreeRTOS 任務(wù)開(kāi)發(fā)的,但似乎比 Arduino 更難。M5StickC 庫(kù)和外圍設(shè)備庫(kù)可用于 Arduino,因此能夠使用它們會(huì)很好。
AWS IoT 組件 ( https://github.com/espressif/esp-aws-iot ) 用于 ESP-IDF,所以我不能將它與 Arduino 一起使用。
我做了一些研究,找到了一種將 Arduino 核心庫(kù)作為組件合并到 ESP-IDF 項(xiàng)目中并使用 Arduino 代碼和庫(kù)的方法。
按照此處的說(shuō)明將 Arduino 內(nèi)核嵌入組件中。我還在組件中安裝了 AWS IoT 庫(kù)。
現(xiàn)在,您可以在使用常用 Arduino 庫(kù)的同時(shí)使用 IoT Core 組件。
代碼與Core2 ESP-IDF項(xiàng)目的代碼基本相似,但我感覺(jué)更好,因?yàn)槲也皇褂肍reeRTOS任務(wù)函數(shù)來(lái)處理每個(gè)任務(wù)。可能會(huì)有一些性能問(wèn)題,但對(duì)于一個(gè)愛(ài)好項(xiàng)目,我認(rèn)為這是一個(gè)不錯(cuò)的選擇。
AWS IoT -- 規(guī)則重新發(fā)布
我使用 DynamoDB 和 Lambda 創(chuàng)建了風(fēng)扇控制邏輯。但是,將所有消息存儲(chǔ)在 DynamoDB 中并定期運(yùn)行 Lambda 有點(diǎn)低效。我想我可以做得更好。
我設(shè)置了一個(gè) Rule 來(lái)將消息存儲(chǔ)在 DynamoDB 中,并且在這個(gè) Rule 的 action 中,有一個(gè) action 叫做 Republish。它可以接收消息、處理消息并發(fā)布處理后的消息。
查詢現(xiàn)在看起來(lái)像這樣。
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 攝氏度時(shí)打開(kāi),在溫度低于 27 攝氏度時(shí)關(guān)閉。我們能夠在如此短的查詢中實(shí)現(xiàn)具有滯后性的邏輯。
AS state.desired.fanSpeed
來(lái)自此的 JSON 輸出將如下所示。
{
"state": {
"desired": {
"fanSpeed": 1
}
}
}
像這樣設(shè)置主題的目的地。
$$aws/things/M5StickC-003/shadow/update
現(xiàn)在我們可以更新這個(gè)東西的影子了。
調(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
此命令將允許您更新陰影。這對(duì)于驗(yàn)證系統(tǒng)的一部分是否正常工作很有用。
您可以使用 AWS 控制臺(tái)中的測(cè)試工具,該工具允許您訂閱和發(fā)布 MQTT,以查看和發(fā)送消息以進(jìn)行調(diào)試。
您還可以查看 IoT Core 事物中的 Device Shadow 文檔。如果某些東西不能正常工作,請(qǐng)使用這些來(lái)一一檢查。
網(wǎng)頁(yè)界面
通風(fēng)系統(tǒng)連接到互聯(lián)網(wǎng)。您可能想用智能手機(jī)控制它。
讓我們使用網(wǎng)站構(gòu)建框架 Amplify 為通風(fēng)系統(tǒng)創(chuàng)建一個(gè)控制器。
首先,讓我們以本教程為指導(dǎo)創(chuàng)建一個(gè)具有登錄功能的網(wǎng)站。我使用了 Cognoto,但我認(rèn)為其他登錄方式也可以。
接下來(lái),按照此 PubSub 文章中的說(shuō)明配置您的站點(diǎn)。
這就是創(chuàng)建與 AWS IoT MQTT 通信的 Web 應(yīng)用程序所需的全部?jī)?nèi)容。
完整的代碼可以在鏈接中找到。放大-App.js
結(jié)論
我們通過(guò)將設(shè)備與 M5Stack 的 ESP32 和 AWS 服務(wù)相結(jié)合,創(chuàng)建了一個(gè)用于自動(dòng)通風(fēng)的物聯(lián)網(wǎng)系統(tǒng)。
ESP32 也可以使用 HTTP,所以可以連接普通的 WebAPI。到現(xiàn)在為止,我也使用過(guò) HTTP。但是,通過(guò)這次使用基于 MQTT 的 AWS IoT,并結(jié)合 AWS 服務(wù),我驚訝于 IoT 開(kāi)發(fā)世界變得如此便利,甚至包括云端。
目前,我發(fā)現(xiàn)物聯(lián)網(wǎng)設(shè)備可以簡(jiǎn)單地通過(guò)設(shè)備影子實(shí)現(xiàn),并將它們連接到AWS,這使得后續(xù)結(jié)合云的開(kāi)發(fā)非常容易。
通過(guò)使用 Amplify,我們能夠創(chuàng)建一個(gè)系統(tǒng),非常輕松地將 IoT 設(shè)備連接到智能手機(jī)和網(wǎng)絡(luò)。
?
- 基于NDIR的自動(dòng)通風(fēng)系統(tǒng) 0次下載
- 帶二氧化碳監(jiān)測(cè)器的自動(dòng)通風(fēng)系統(tǒng)
- 基于DSP的變電站綜合自動(dòng)化控制系統(tǒng) 23次下載
- 基于Zigbee和物聯(lián)網(wǎng)的自動(dòng)售貨機(jī)系統(tǒng) 25次下載
- MSP430的樓宇自動(dòng)開(kāi)窗系統(tǒng)設(shè)計(jì)詳析 7次下載
- 軸流式通風(fēng)機(jī)在線監(jiān)測(cè)及自動(dòng)控制改造應(yīng)用 1次下載
- 海為C60S2R在智能通風(fēng)系統(tǒng)測(cè)試平臺(tái)上的應(yīng)用 1次下載
- 一種基于物聯(lián)網(wǎng)技術(shù)的通風(fēng)離心機(jī)控制平臺(tái)設(shè)計(jì) 2次下載
- 基于IDL的地下工程通風(fēng)系統(tǒng)設(shè)計(jì) 26次下載
- 基于PLC礦用主通風(fēng)機(jī)的控制系統(tǒng)設(shè)計(jì) 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è)計(jì)技術(shù)交流
- 基于PLC的隧道通風(fēng)監(jiān)控系統(tǒng)
- 物聯(lián)網(wǎng)智能寵物管理系統(tǒng) 822次閱讀
- 聯(lián)網(wǎng)自動(dòng)駕駛機(jī)器人的網(wǎng)絡(luò)安全 281次閱讀
- 基于STM32單片機(jī)的CO(一氧化碳)氣體檢測(cè)報(bào)警通風(fēng)系統(tǒng)仿真設(shè)計(jì) 2309次閱讀
- 廚房自動(dòng)排氣風(fēng)扇電路 1316次閱讀
- 基于阿里云物聯(lián)網(wǎng)平臺(tái)的智能燈光控制系統(tǒng)設(shè)計(jì) 4026次閱讀
- 如何制作一個(gè)繼電器操作定時(shí)通風(fēng)機(jī) 1716次閱讀
- 自動(dòng)駕駛系統(tǒng)的原理和結(jié)構(gòu)講解 1.4w次閱讀
- 基于P87C591單片機(jī)和P87C591數(shù)模轉(zhuǎn)換器實(shí)現(xiàn)機(jī)車通風(fēng)機(jī)控制系統(tǒng)設(shè)計(jì) 1413次閱讀
- 溫濕度傳感器HTG3535CH和濕度傳感器HM1500LF在通風(fēng)管道中的應(yīng)用 1329次閱讀
- 海為PLC在智能通風(fēng)系統(tǒng)的內(nèi)部測(cè)試中的應(yīng)用 846次閱讀
- 深入分析自動(dòng)駕駛系統(tǒng)以及涉及到的軟件系統(tǒng) 1.7w次閱讀
- 地鐵空調(diào)通風(fēng)系統(tǒng)監(jiān)測(cè)環(huán)境溫度和空氣濕度生的溫濕度傳感器 2080次閱讀
- ATE自動(dòng)化測(cè)試系統(tǒng)是什么_ATE自動(dòng)化測(cè)試系統(tǒng)介紹 3.2w次閱讀
- 一文看懂空調(diào)座椅半導(dǎo)體獨(dú)立制冷和原車?yán)錃?b class="flag-6" style="color: red">通風(fēng)系統(tǒng)的區(qū)別 1.2w次閱讀
- 基于嵌入式的自動(dòng)化配送系統(tǒng) 613次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊(cè)
- 1.06 MB | 532次下載 | 免費(fèi)
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費(fèi)
- 3TC358743XBG評(píng)估板參考手冊(cè)
- 1.36 MB | 330次下載 | 免費(fèi)
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費(fèi)
- 5元宇宙深度解析—未來(lái)的未來(lái)-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費(fèi)
- 6迪文DGUS開(kāi)發(fā)指南
- 31.67 MB | 194次下載 | 免費(fèi)
- 7元宇宙底層硬件系列報(bào)告
- 13.42 MB | 182次下載 | 免費(fèi)
- 8FP5207XR-G1中文應(yīng)用手冊(cè)
- 1.09 MB | 178次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開(kāi)關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21549次下載 | 免費(fèi)
- 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書(shū))
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德?tīng)栔?/a>
- 0.00 MB | 6656次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191187次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- 158M | 183279次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評(píng)論
查看更多