資料介紹
描述
公司開始公布他們的遠(yuǎn)程員工重返工作崗位的政策。重返辦公室必然會(huì)增加新的 COVID-19 病例數(shù)。但是,可能有一種方法可以減少辦公室內(nèi) COVID-19 病毒的傳播。一般來(lái)說,辦公室都有隔間,有助于隔離直接的人際傳播,但仍然存在傳播熱點(diǎn),尤其是在共享空間。會(huì)議室是最糟糕的罪魁禍?zhǔn)字?,因?yàn)闀?huì)議室不僅受到限制并在不同群體之間快速共享,而且僅在一天結(jié)束時(shí)才進(jìn)行清潔。將責(zé)任留給任何共同行動(dòng),例如給辦公室植物澆水,讓會(huì)議室里的任何人承擔(dān)責(zé)任,即使曾經(jīng)得到維護(hù),也很少得到支持。甚至白板的標(biāo)記也很少被替換。此外,每天/每周消耗多個(gè)消毒濕巾/罐是非常浪費(fèi)的,并且不會(huì)隨著會(huì)議次數(shù)而增加。因此,我提出了一種會(huì)議集成可再填充物聯(lián)網(wǎng)設(shè)備的解決方案,該設(shè)備對(duì)已發(fā)生會(huì)議的會(huì)議室進(jìn)行消毒。
它是如何工作的?
我的解決方案包括一個(gè)全棧應(yīng)用程序以及一個(gè)嵌入式設(shè)備。有幾個(gè)工作部分,所以我將首先對(duì)系統(tǒng)流程進(jìn)行高級(jí)概述,然后詳細(xì)解釋。這樣,那些關(guān)注下一節(jié)標(biāo)題為“我是如何構(gòu)建它的?可以理解為什么我做了我所做的。
以下是該系統(tǒng)的高級(jí)概述:

我的解決方案從一個(gè)全棧應(yīng)用開始。我有一個(gè)顯示 GUI 的前端:

設(shè)置參數(shù)并切換“檢查可用性”按鈕后,后端會(huì)查看所選會(huì)議間隔的 AWS DynamoDB 表,并返回可用會(huì)議列表以及會(huì)議間隔可用的房間. 下面是表格的示例:

為了簡(jiǎn)化開發(fā)過程,設(shè)置了一些注意事項(xiàng)。會(huì)議僅每一刻鐘開始,持續(xù)時(shí)間是一刻鐘的倍數(shù),并且 Room 1 被硬編碼以對(duì)應(yīng)于我的 Core2ForAWS 設(shè)備。選擇房間 1 的會(huì)議后,Core2ForAWS 元素的設(shè)備影子將更新為所選會(huì)議間隔。設(shè)備影子(稍后解釋)將如下所示:

設(shè)備邏輯
core2ForAWS 元素將解析來(lái)自設(shè)備影子的會(huì)議間隔信息,并填充大小為 96 的會(huì)議間隔數(shù)組。數(shù)組中的每個(gè)索引對(duì)應(yīng)于該索引對(duì)應(yīng)的 15 分鐘間隔的會(huì)議狀態(tài)。由于 1 天是 24 小時(shí),因此有 96 個(gè)間隔,每個(gè)間隔為 15 分鐘。15 分鐘間隔參考從上午 12:00 開始。12:00 AM 被認(rèn)為相當(dāng)于 0000 分鐘,第 0 個(gè) 15 分鐘間隔。因此,15 分鐘間隔數(shù)組的索引 0 對(duì)應(yīng)于從 12:00 AM 到 12:15 AM 的會(huì)議間隔的會(huì)議狀態(tài)。如果安排了從上午 12:00 到上午 12:15 的會(huì)議,則數(shù)組的索引 0 將標(biāo)記為“1”以表示會(huì)議間隔,如果沒有安排在上午 12:00 的會(huì)議,則將標(biāo)記為“0”到上午 12:15 會(huì)議間隔。
現(xiàn)在,我創(chuàng)造了“先生”的嵌入式設(shè)備(它是整個(gè)設(shè)備,包括 core2ForAWS 元素)接管了。Mister 會(huì)檢查每個(gè) 15 分鐘間隔邊緣,并且僅當(dāng)邊緣出現(xiàn)在剛剛結(jié)束的會(huì)議和沒有會(huì)議的 15 分鐘間隔之間時(shí)才會(huì)激活。會(huì)議間隔邊緣是兩個(gè)會(huì)議間隔之間的邊界。例如上午 12:00->12:15 會(huì)議間隔和 12:15->12:30 會(huì)議間隔之間的邊界。因此,例如,如果先生在 12:15 檢查并注意到從 12:00 AM -> 12:15 AM 有一個(gè)會(huì)議,并且從 12:15 AM -> 12:30 AM 會(huì)議沒有即將召開的會(huì)議,則會(huì)出現(xiàn)激活條件間隔。就索引而言,我們可以將其表示為從任何 array[j] = 1 到 array[j+1] = 0 的任何轉(zhuǎn)換,對(duì)于所有 j >= 0 &
一旦找到這樣的 1->0 邊緣,先生的 PIR 傳感器就會(huì)被激活,并每 2 分鐘檢查一次移動(dòng),以防剛剛發(fā)生的會(huì)議進(jìn)入另一個(gè)會(huì)議間隔。如果在下一個(gè)會(huì)議間隔之前檢測(cè)到活動(dòng),則在檢查即將到來(lái)的會(huì)議間隔邊緣之前將當(dāng)前會(huì)議間隔標(biāo)記為“1”,因?yàn)榇嬖跁?huì)議間隔的活動(dòng)價(jià)值。這張圖可以闡明這個(gè)想法:

假設(shè)目前,某個(gè)時(shí)間 > 8:00 am 和 < 8:15 am,由 1 表示。沒有安排在上午 8:00 舉行的實(shí)際會(huì)議,所以先生對(duì)會(huì)議間隔的內(nèi)部表示是數(shù)組索引:32(上午 8:00 是從上午 12:00 開始的 8 小時(shí),8 * 4 = 32 = 上午 8:00 的數(shù)組索引)是“0”。如果 PIR 一直持續(xù)到上午 8:15(由 2 表示),則索引 32 處的間隔被標(biāo)記為“1”。索引 32 被標(biāo)記為“1”,因?yàn)?15 分鐘的會(huì)議間隔(上午 8:00)不打算主持會(huì)議,但仍然主持了 15 分鐘的活動(dòng)。
如果 PIR 傳感器在 2 分鐘內(nèi)未檢測(cè)到活動(dòng),則會(huì)啟動(dòng)輔助檢查。首先,會(huì)出現(xiàn)提示音,以提醒房間內(nèi)的任何人即將噴水,然后顯示一個(gè)設(shè)備屏幕,顯示從 30 秒開始的倒計(jì)時(shí),并帶有確認(rèn)按鈕(視頻演示將顯示這一點(diǎn))。如果確認(rèn)屏幕在整個(gè)持續(xù)時(shí)間內(nèi)都被忽略,則先生啟動(dòng)伺服系統(tǒng)并噴灑房間,并等待下一個(gè) 15 分鐘間隔。如果確實(shí)確認(rèn)了活動(dòng),則先生將返回以返回 PIR 邏輯。
我是如何建造它的?
我開始花一些時(shí)間學(xué)習(xí) JS,reactJS:https ://reactjs.org/docs/getting-started.html和 nodeJS:https ://nodejs.org/en/docs/ 。我將在下面解釋 AWS DynamoDB 和 AWS IoT Core 集成并鏈接我的全棧應(yīng)用程序存儲(chǔ)庫(kù)。
我首先在這里設(shè)置我的 Core2ForAWS:https ://edukit.workshop.aws/en/getting-started.html ,只需完成這些步驟。然后,我按照以下說明設(shè)置 AWS IoT Core:https ://edukit.workshop.aws/en/blinky-hello-world/prerequisites.html 。到此階段,您應(yīng)該能夠獲取 AWS IoT 終端節(jié)點(diǎn),并且您創(chuàng)建的 IAM 用戶應(yīng)該具有以下策略:

如果您找不到添加此策略的位置,請(qǐng)使用您的根電子郵件登錄 AWS 控制臺(tái),然后單擊“IAM”。你應(yīng)該在左邊看到這個(gè):

單擊“用戶”,然后單擊您創(chuàng)建的用戶。你會(huì)看到這樣的東西:

添加 AWSIoTFullAccess 策略。
這是我對(duì)正在發(fā)生的事情的解釋。您創(chuàng)建的 AWS 賬戶包含所有資源,例如 AWS IoT Core、DynamoDB、IAM 等。您創(chuàng)建的 IAM 用戶是經(jīng)過身份驗(yàn)證的實(shí)體,可以根據(jù) IAM 用戶的策略訪問 AWS 賬戶的資源。當(dāng)使用 IAM 用戶密鑰在 CLI 上運(yùn)行命令“ aws configure”時(shí),會(huì)創(chuàng)建一個(gè)配置文件并將其與用戶密鑰一起存儲(chǔ)在您的筆記本電腦上。調(diào)用 AWS 開發(fā)工具包 API 時(shí),會(huì)找到配置文件。然后會(huì)發(fā)生一些調(diào)解,以便被調(diào)用的 API 具有與使用“ aws configure”命令配置密鑰的 IAM 用戶的策略相同的權(quán)限。
現(xiàn)在,將 AmazonDynamoDBFullAccess 策略也添加到您的 IAM 用戶。它應(yīng)該如下所示:

以下是與 AWS 交互并帶有注釋的相關(guān)代碼片段:
AWS.config.dynamodb = {
region: "us-west-2",
//replace endpoint with own endpoint
endpoint: "https://dynamodb.us-west-2.amazonaws.com",
};
AWS.config.iotdata = {
region: "us-west-2",
//replace endpoint with own endpoint
endpoint: "a36ozlrpzvmdr4-ats.iot.us-west-2.amazonaws.com",
};
// setting up the necessary AWS SDK objects
let dynamodb = new AWS.DynamoDB();
let docClient = new AWS.DynamoDB.DocumentClient();
let iotdata = new AWS.IotData();
// parameters for the DynamoDB table to be created
// replace TABLE_NAME with own table name
// replace PRIMARY_KEY with own primary key name
// replace SECONDARY_KEY with own secondary key name
let params = {
TableName: TABLE_NAME,
KeySchema: [
{ AttributeName: PRIMARY_KEY, KeyType: "HASH" },
{ AttributeName: SECONDARY_KEY, KeyType: "RANGE" },
],
AttributeDefinitions: [
{ AttributeName: PRIMARY_KEY, AttributeType: "S" },
{ AttributeName: SECONDARY_KEY, AttributeType: "S" },
],
ProvisionedThroughput: {
ReadCapacityUnits: 10,
WriteCapacityUnits: 10,
},
};
// the API that creates the DynamoDB table
dynamodb.createTable(params, function (err, data) {
if (err) {
console.error(
"Unable to create table. Error JSON:",
JSON.stringify(err, null, 2)
);
} else {
console.log(
"Created table. Table description JSON:",
JSON.stringify(data, null, 2)
);
}
});
// parameters for shadow
// payload is what to update the shadow with
// thingName is the name of the thing that you registered with AWS IoT Core
let shadowParams = {
// core2IoTPayload should be a JSON of your own choice
payload: JSON.stringify(core2IoTPayload),
// replace thingName with the thing name of own device
thingName: "01231bd1cbac971101"
};
// API to update shadow
iotdata.updateThingShadow(shadowParams, function (err, data) {
if (err) {
console.error("Unable to send to core2", JSON.stringify(err, null, 2));
} else {
console.log("send to core2 succeeded:");
}
});
// API to update DynamoDB table
docClient.put(putParams, function (err, data) {
if (err) {
res.send(JSON.stringify("error"));
} else {
res.send(JSON.stringify("success"));
}
});
下一步是創(chuàng)建先生設(shè)備。我想要一個(gè)可以用晶體管激活的電動(dòng)水泵,所以我買了其中一個(gè):
我把它拆開,它看起來(lái)像這樣:

事實(shí)證明,只需用開關(guān)短接兩個(gè)端子即可打開(您可以在原理圖部分看到這一點(diǎn))。我將電子設(shè)備與伺服器和 PIR 傳感器一起粘在一些紙板上,然后向前跳了幾步(我忘了拍中間照片),我最終得到了這個(gè):







電動(dòng)泵機(jī)構(gòu)位于中間部分,就在空透明罐的正上方。四根柱子中心的彎曲“向后 r”部分使霧氣輸出偏轉(zhuǎn)。最重要的是,我有 PIR 傳感器、控制泵機(jī)制的晶體管和 Core2ForAWS 設(shè)備。一旦霧氣打開,電動(dòng)泵機(jī)構(gòu)就會(huì)從罐中直接向上噴射霧狀消毒劑。伺服器開始動(dòng)作,彎曲的“向后 r”段以 360 度的方式偏轉(zhuǎn)薄霧。如果我有一臺(tái) 3D 打印機(jī),這個(gè)設(shè)備的設(shè)計(jì)會(huì)大不相同,而且效率更高(霧偏轉(zhuǎn)應(yīng)該旋轉(zhuǎn)霧輸出的噴嘴,而不是霧本身)。對(duì)于 PIR,我將其設(shè)置為像這樣的非重新觸發(fā)模式,因此每次移動(dòng)都會(huì)導(dǎo)致邊緣觸發(fā)中斷:

!?。?!筆記 ?。。。?/font>原理圖中的電路圖需要澄清一下,舵機(jī)的5V和GND線應(yīng)該連接到外部電池或輸入電纜到 core2ForAWS !如果您連接到外部電池,請(qǐng)確保電池的接地連接到 core2ForAWS 的接地。從 core2ForAWS 連接到晶體管基極的導(dǎo)線是 core2ForAWS 上的 PIN26。在進(jìn)行更改之前,我用完了 CircuitLab 免費(fèi)試用版。
下面的代碼部分列出了啟動(dòng)和運(yùn)行 core2ForAWS 組件以及全棧應(yīng)用程序的確切步驟。
之前,我提到了一個(gè)設(shè)備影子,我想首先邀請(qǐng)您在這里查看此鏈接:解釋什么是設(shè)備影子。您可以將設(shè)備影子視為 AWS IoT“事物”與外部影響(即全棧應(yīng)用程序)之間的通信媒介。實(shí)際上,它更復(fù)雜,但它超出了本文的范圍。從本質(zhì)上講,發(fā)生的事情是全棧應(yīng)用程序?qū)懭氪嗽O(shè)備影子,并且預(yù)置并連接到 AWS IoT Core 的 core2ForAWS 收到剛剛寫入設(shè)備影子的更改的通知。
要開始使用全棧應(yīng)用程序,請(qǐng)遵循此處的 README:https ://github.com/daxlar/mister-frontend和此處:https : //github.com/daxlar/mister-backend上面的解釋可能比在整個(gè)文章中插入代碼塊更好地解釋了代碼。
?
設(shè)備的接線將在“原理圖”部分列出,所有代碼將在“代碼”部分。進(jìn)入演示!
?
- 物聯(lián)網(wǎng)解決方案 2次下載
- 探究機(jī)械工程物聯(lián)網(wǎng)系統(tǒng)遠(yuǎn)程解決方案 15次下載
- 基于流量指紋的物聯(lián)網(wǎng)設(shè)備識(shí)別方法 13次下載
- 一種面向物聯(lián)網(wǎng)服務(wù)的Web攻擊向量檢測(cè)方法 7次下載
- 基于物聯(lián)網(wǎng)的智慧醫(yī)院建設(shè)解決方案
- 物聯(lián)網(wǎng)芯片設(shè)計(jì)應(yīng)該如何降耗
- RF5325應(yīng)用在WiFi和藍(lán)牙前端模塊的集成解決方案應(yīng)用和數(shù)據(jù)免費(fèi)下載
- 基于諸智云的工業(yè)物聯(lián)網(wǎng)解決方案詳細(xì)資料免費(fèi)下載 24次下載
- 物聯(lián)網(wǎng)的真正價(jià)值是什么?
- 選擇工業(yè)物聯(lián)網(wǎng)標(biāo)準(zhǔn)的中間件解決方案 1次下載
- 一種物聯(lián)網(wǎng)接入技術(shù)方案 16次下載
- 一種智能無(wú)線LED照明系統(tǒng)解決方案 5次下載
- 一種簡(jiǎn)單的圖案填充算法
- 一種有效的可轉(zhuǎn)換的認(rèn)證加密方案
- 一種高效、低延時(shí)的會(huì)議密鑰管理方案
- 支持安全物聯(lián)網(wǎng)設(shè)備開發(fā)和制造的解決方案 1111次閱讀
- 為什么說網(wǎng)關(guān)在任何工業(yè)物聯(lián)網(wǎng)解決方案中都很重要? 3556次閱讀
- 如何構(gòu)建一個(gè)完整的物聯(lián)網(wǎng)解決方案 4808次閱讀
- Inventek物聯(lián)網(wǎng)照明解決方案系統(tǒng)架構(gòu)分析 2021次閱讀
- 嵌入式物聯(lián)網(wǎng)設(shè)備的3種方案 3072次閱讀
- 基于一種可以用按鍵進(jìn)行調(diào)節(jié)LCD背光亮度的解決方案 8164次閱讀
- 最適合物聯(lián)網(wǎng)聯(lián)網(wǎng)的是哪一種技術(shù) 2903次閱讀
- 大規(guī)模物聯(lián)網(wǎng)的要求以及解決方案組件 1880次閱讀
- EMI電磁屏蔽-主要材料簡(jiǎn)介 1.8w次閱讀
- 一種使用ARM+FPGA高速訪問USB設(shè)備的設(shè)計(jì)方案詳解 5665次閱讀
- Pelion物聯(lián)網(wǎng)平臺(tái)如何進(jìn)一步助力Arm的物聯(lián)網(wǎng)戰(zhàn)略? 3710次閱讀
- 如何設(shè)計(jì)一個(gè)簡(jiǎn)單效率的小型物聯(lián)網(wǎng)設(shè)備供電方案? 5688次閱讀
- 一種基于GPRS的單片機(jī)上網(wǎng)的解決方案 4491次閱讀
- 一種基于混合信號(hào)技術(shù)的汽車電子單芯片設(shè)計(jì) 1196次閱讀
- 一種基于DSP的視頻監(jiān)控系統(tǒng)解決方案 3440次閱讀
下載排行
本周
- 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開發(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開關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21549次下載 | 免費(fèi)
- 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書)
- 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ì)》 溫德爾著
- 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)論