電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>自動(dòng)通風(fēng)物聯(lián)網(wǎng)系統(tǒng)

自動(dòng)通風(fēng)物聯(lián)網(wǎng)系統(tǒng)

2022-11-04 | zip | 0.37 MB | 次下載 | 2積分

資料介紹

描述

臥室空氣的溫度和濕度對(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ù)。

Core2-main.c

Core2-switchbot_meter.cpp

這是基于恒溫器教程中的代碼,添加了 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)參考鏈接。

v1-Lambda.js

當(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 輸出。

pYYBAGNkf8uAcl_QAAEN_LQEEEo50.jpeg
?

它將 5V 引腳的輸出轉(zhuǎn)換為 USB 連接器并轉(zhuǎn)動(dòng)從 USB 獲取電源的風(fēng)扇。

請(qǐng)參閱代碼鏈接中的文件 m5stickc_5v.cpp。

M5StickC-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 組件。

M5StickC-main.cpp

代碼與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

poYBAGNkf9GAD8LtAAUOejD1O-4082.png
Mac Chrome + 開(kāi)發(fā)工具
?
pYYBAGNkf9SAJgyjAAEZ9KWgClE79.jpeg
iPhone 鍍鉻
?

結(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ò)。

?


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

評(píng)論

查看更多

下載排行

本周

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

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費(fèi)
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費(fèi)
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費(fèi)
  7. 4開(kāi)關(guān)電源設(shè)計(jì)實(shí)例指南
  8. 未知  |  21549次下載  |  免費(fèi)
  9. 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書(shū))
  10. 0.00 MB  |  15349次下載  |  免費(fèi)
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費(fèi)
  13. 7電子制作實(shí)例集錦 下載
  14. 未知  |  8113次下載  |  免費(fèi)
  15. 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德?tīng)栔?/a>
  16. 0.00 MB  |  6656次下載  |  免費(fèi)

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費(fèi)
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537798次下載  |  免費(fèi)
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費(fèi)
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費(fèi)
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費(fèi)
  11. 6電路仿真軟件multisim 10.0免費(fèi)下載
  12. 340992  |  191187次下載  |  免費(fèi)
  13. 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
  14. 158M  |  183279次下載  |  免費(fèi)
  15. 8proe5.0野火版下載(中文版免費(fèi)下載)
  16. 未知  |  138040次下載  |  免費(fèi)