電子發(fā)燒友App

硬聲App

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

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

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>一種會議集成可再填充物聯(lián)網(wǎng)設(shè)備的解決方案

一種會議集成可再填充物聯(lián)網(wǎng)設(shè)備的解決方案

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

資料介紹

描述

公司開始公布他們的遠程員工重返工作崗位的政策。重返辦公室必然會增加新的 COVID-19 病例數(shù)。但是,可能有一種方法可以減少辦公室內(nèi) COVID-19 病毒的傳播。一般來說,辦公室都有隔間,有助于隔離直接的人際傳播,但仍然存在傳播熱點,尤其是在共享空間。會議室是最糟糕的罪魁禍首之一,因為會議室不僅受到限制并在不同群體之間快速共享,而且僅在一天結(jié)束時才進行清潔。將責任留給任何共同行動,例如給辦公室植物澆水,讓會議室里的任何人承擔責任,即使曾經(jīng)得到維護,也很少得到支持。甚至白板的標記也很少被替換。此外,每天/每周消耗多個消毒濕巾/罐是非常浪費的,并且不會隨著會議次數(shù)而增加。因此,我提出了一種會議集成可再填充物聯(lián)網(wǎng)設(shè)備的解決方案,該設(shè)備對已發(fā)生會議的會議室進行消毒。

它是如何工作的?

我的解決方案包括一個全棧應(yīng)用程序以及一個嵌入式設(shè)備。有幾個工作部分,所以我將首先對系統(tǒng)流程進行高級概述,然后詳細解釋。這樣,那些關(guān)注下一節(jié)標題為“我是如何構(gòu)建它的?可以理解為什么我做了我所做的。

以下是該系統(tǒng)的高級概述:

poYBAGNkgx2AGG0CAAA_P1PG6M8587.png
系統(tǒng)架構(gòu)
?

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

poYBAGNkgyCAG6P2AABafr-5fJg065.png
前端界面
?

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

pYYBAGNkgyOAWwtXAABtog9hy3c482.png
分配的是日期(5 位數(shù)字用于唯一性),EndingTime 和 StartingTime 以分鐘為單位,從上午 12:00 開始
?

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

poYBAGNkgyWAMiQwAAAS1_i8D6g152.png
設(shè)備陰影部分
?

設(shè)備邏輯

core2ForAWS 元素將解析來自設(shè)備影子的會議間隔信息,并填充大小為 96 的會議間隔數(shù)組。數(shù)組中的每個索引對應(yīng)于該索引對應(yīng)的 15 分鐘間隔的會議狀態(tài)。由于 1 天是 24 小時,因此有 96 個間隔,每個間隔為 15 分鐘。15 分鐘間隔參考從上午 12:00 開始。12:00 AM 被認為相當于 0000 分鐘,第 0 個 15 分鐘間隔。因此,15 分鐘間隔數(shù)組的索引 0 對應(yīng)于從 12:00 AM 到 12:15 AM 的會議間隔的會議狀態(tài)。如果安排了從上午 12:00 到上午 12:15 的會議,則數(shù)組的索引 0 將標記為“1”以表示會議間隔,如果沒有安排在上午 12:00 的會議,則將標記為“0”到上午 12:15 會議間隔。

現(xiàn)在,我創(chuàng)造了“先生”的嵌入式設(shè)備(它是整個設(shè)備,包括 core2ForAWS 元素)接管了。Mister 會檢查每個 15 分鐘間隔邊緣,并且僅當邊緣出現(xiàn)在剛剛結(jié)束的會議和沒有會議的 15 分鐘間隔之間時才會激活。會議間隔邊緣是兩個會議間隔之間的邊界。例如上午 12:00->12:15 會議間隔和 12:15->12:30 會議間隔之間的邊界。因此,例如,如果先生在 12:15 檢查并注意到從 12:00 AM -> 12:15 AM 有一個會議,并且從 12:15 AM -> 12:30 AM 會議沒有即將召開的會議,則會出現(xiàn)激活條件間隔。就索引而言,我們可以將其表示為從任何 array[j] = 1 到 array[j+1] = 0 的任何轉(zhuǎn)換,對于所有 j >= 0 &

一旦找到這樣的 1->0 邊緣,先生的 PIR 傳感器就會被激活,并每 2 分鐘檢查一次移動,以防剛剛發(fā)生的會議進入另一個會議間隔。如果在下一個會議間隔之前檢測到活動,則在檢查即將到來的會議間隔邊緣之前將當前會議間隔標記為“1”,因為存在會議間隔的活動價值。這張圖可以闡明這個想法:

poYBAGNkgyiAXbOJAAATfIqsscw534.png
15 分鐘會議區(qū)間邊緣,上午 8:00 區(qū)塊代表區(qū)間 8->8:15,上午 8:15 區(qū)塊代表區(qū)間 8:15->8:30。
?

假設(shè)目前,某個時間 > 8:00 am 和 < 8:15 am,由 1 表示。沒有安排在上午 8:00 舉行的實際會議,所以先生對會議間隔的內(nèi)部表示是數(shù)組索引:32(上午 8:00 是從上午 12:00 開始的 8 小時,8 * 4 = 32 = 上午 8:00 的數(shù)組索引)是“0”。如果 PIR 一直持續(xù)到上午 8:15(由 2 表示),則索引 32 處的間隔被標記為“1”。索引 32 被標記為“1”,因為 15 分鐘的會議間隔(上午 8:00)不打算主持會議,但仍然主持了 15 分鐘的活動。

如果 PIR 傳感器在 2 分鐘內(nèi)未檢測到活動,則會啟動輔助檢查。首先,會出現(xiàn)提示音,以提醒房間內(nèi)的任何人即將噴水,然后顯示一個設(shè)備屏幕,顯示從 30 秒開始的倒計時,并帶有確認按鈕(視頻演示將顯示這一點)。如果確認屏幕在整個持續(xù)時間內(nèi)都被忽略,則先生啟動伺服系統(tǒng)并噴灑房間,并等待下一個 15 分鐘間隔。如果確實確認了活動,則先生將返回以返回 PIR 邏輯。

我是如何建造它的?

我開始花一些時間學習 JS,reactJS:https ://reactjs.org/docs/getting-started.html和 nodeJS:https ://nodejs.org/en/docs/ 我將在下面解釋 AWS DynamoDB 和 AWS IoT Core 集成并鏈接我的全棧應(yīng)用程序存儲庫。

我首先在這里設(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é)點,并且您創(chuàng)建的 IAM 用戶應(yīng)該具有以下策略:

poYBAGNkgyqAbsh9AAAOyHYswXA419.png
IAM 用戶政策
?

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

poYBAGNkgy2AYp7uAAA2OQDEeLA987.png
我是
?

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

pYYBAGNkgzCAOwgNAAAmo47E66Q078.png
用戶權(quán)限
?

添加 AWSIoTFullAccess 策略。

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

現(xiàn)在,將 AmazonDynamoDBFullAccess 策略也添加到您的 IAM 用戶。它應(yīng)該如下所示:

poYBAGNkgzKAXtcsAABd5fC60rI080.png
完整的 IAM 用戶權(quán)限
?

以下是與 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è)備。我想要一個可以用晶體管激活的電動水泵,所以我買了其中一個:

?
電氣控制器先生 -> 因此“先生”項目名稱
?

我把它拆開,它看起來像這樣:

pYYBAGNkgziACWhbAABVSdG4U7s78.jpeg
電動泵機構(gòu)
?

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

pYYBAGNkgz2AYUoYAAmr7BNhFoA934.jpg
有點牛
?
poYBAGNkg0eAaeLwAAw0Q1XG_40135.png
電動泵機構(gòu)集成(左)
?
poYBAGNkg1OAJufvAAyIBvzCh8k079.png
電動泵機構(gòu)集成(右)
?
poYBAGNkg3SAc4yxAA4U28ymZVY614.png
內(nèi)部結(jié)構(gòu)
?
poYBAGNkg36Adkm8AA3dqhiY1OE726.png
伺服霧偏轉(zhuǎn)機構(gòu)又名彎曲的“向后 r”段
?
pYYBAGNkg4mAZTRqABD7vRvyBrQ050.png
側(cè)面圖
?
poYBAGNkg5OAdYtUABFPjtGEGh0167.png
core2forAWS 設(shè)備的頂視圖
?

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

poYBAGNkg5WAVkOdAACN7hu1iho763.png

?。。。?/font>筆記 ?。。?!原理圖中的電路圖需要澄清一下,舵機的5VGND線應(yīng)該連接到外部電池或輸入電纜到 core2ForAWS !如果您連接到外部電池,請確保電池的接地連接到 core2ForAWS 的接地。從 core2ForAWS 連接到晶體管基極的導線是 core2ForAWS 上的 PIN26。在進行更改之前,我用完了 CircuitLab 免費試用版。

下面的代碼部分列出了啟動和運行 core2ForAWS 組件以及全棧應(yīng)用程序的確切步驟。

之前,我提到了一個設(shè)備影子,我想首先邀請您在這里查看此鏈接:解釋什么是設(shè)備影子。您可以將設(shè)備影子視為 AWS IoT“事物”與外部影響(即全棧應(yīng)用程序)之間的通信媒介。實際上,它更復雜,但它超出了本文的范圍。從本質(zhì)上講,發(fā)生的事情是全棧應(yīng)用程序?qū)懭氪嗽O(shè)備影子,并且預置并連接到 AWS IoT Core 的 core2ForAWS 收到剛剛寫入設(shè)備影子的更改的通知。

要開始使用全棧應(yīng)用程序,請遵循此處的 README:https ://github.com/daxlar/mister-frontend和此處:https : //github.com/daxlar/mister-backend上面的解釋可能比在整個文章中插入代碼塊更好地解釋了代碼。
?

設(shè)備的接線將在“原理圖”部分列出,所有代碼將在“代碼”部分。進入演示!

?
?

?


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

評論

查看更多

下載排行

本周

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

本月

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

總榜

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