資料介紹
描述
公司開始公布他們的遠程員工重返工作崗位的政策。重返辦公室必然會增加新的 COVID-19 病例數。但是,可能有一種方法可以減少辦公室內 COVID-19 病毒的傳播。一般來說,辦公室都有隔間,有助于隔離直接的人際傳播,但仍然存在傳播熱點,尤其是在共享空間。會議室是最糟糕的罪魁禍首之一,因為會議室不僅受到限制并在不同群體之間快速共享,而且僅在一天結束時才進行清潔。將責任留給任何共同行動,例如給辦公室植物澆水,讓會議室里的任何人承擔責任,即使曾經得到維護,也很少得到支持。甚至白板的標記也很少被替換。此外,每天/每周消耗多個消毒濕巾/罐是非常浪費的,并且不會隨著會議次數而增加。因此,我提出了一種會議集成可再填充物聯網設備的解決方案,該設備對已發生會議的會議室進行消毒。
它是如何工作的?
我的解決方案包括一個全棧應用程序以及一個嵌入式設備。有幾個工作部分,所以我將首先對系統流程進行高級概述,然后詳細解釋。這樣,那些關注下一節標題為“我是如何構建它的?可以理解為什么我做了我所做的。
以下是該系統的高級概述:
我的解決方案從一個全棧應用開始。我有一個顯示 GUI 的前端:
設置參數并切換“檢查可用性”按鈕后,后端會查看所選會議間隔的 AWS DynamoDB 表,并返回可用會議列表以及會議間隔可用的房間. 下面是表格的示例:
為了簡化開發過程,設置了一些注意事項。會議僅每一刻鐘開始,持續時間是一刻鐘的倍數,并且 Room 1 被硬編碼以對應于我的 Core2ForAWS 設備。選擇房間 1 的會議后,Core2ForAWS 元素的設備影子將更新為所選會議間隔。設備影子(稍后解釋)將如下所示:
設備邏輯
core2ForAWS 元素將解析來自設備影子的會議間隔信息,并填充大小為 96 的會議間隔數組。數組中的每個索引對應于該索引對應的 15 分鐘間隔的會議狀態。由于 1 天是 24 小時,因此有 96 個間隔,每個間隔為 15 分鐘。15 分鐘間隔參考從上午 12:00 開始。12:00 AM 被認為相當于 0000 分鐘,第 0 個 15 分鐘間隔。因此,15 分鐘間隔數組的索引 0 對應于從 12:00 AM 到 12:15 AM 的會議間隔的會議狀態。如果安排了從上午 12:00 到上午 12:15 的會議,則數組的索引 0 將標記為“1”以表示會議間隔,如果沒有安排在上午 12:00 的會議,則將標記為“0”到上午 12:15 會議間隔。
現在,我創造了“先生”的嵌入式設備(它是整個設備,包括 core2ForAWS 元素)接管了。Mister 會檢查每個 15 分鐘間隔邊緣,并且僅當邊緣出現在剛剛結束的會議和沒有會議的 15 分鐘間隔之間時才會激活。會議間隔邊緣是兩個會議間隔之間的邊界。例如上午 12:00->12:15 會議間隔和 12:15->12:30 會議間隔之間的邊界。因此,例如,如果先生在 12:15 檢查并注意到從 12:00 AM -> 12:15 AM 有一個會議,并且從 12:15 AM -> 12:30 AM 會議沒有即將召開的會議,則會出現激活條件間隔。就索引而言,我們可以將其表示為從任何 array[j] = 1 到 array[j+1] = 0 的任何轉換,對于所有 j >= 0 &
一旦找到這樣的 1->0 邊緣,先生的 PIR 傳感器就會被激活,并每 2 分鐘檢查一次移動,以防剛剛發生的會議進入另一個會議間隔。如果在下一個會議間隔之前檢測到活動,則在檢查即將到來的會議間隔邊緣之前將當前會議間隔標記為“1”,因為存在會議間隔的活動價值。這張圖可以闡明這個想法:
假設目前,某個時間 > 8:00 am 和 < 8:15 am,由 1 表示。沒有安排在上午 8:00 舉行的實際會議,所以先生對會議間隔的內部表示是數組索引:32(上午 8:00 是從上午 12:00 開始的 8 小時,8 * 4 = 32 = 上午 8:00 的數組索引)是“0”。如果 PIR 一直持續到上午 8:15(由 2 表示),則索引 32 處的間隔被標記為“1”。索引 32 被標記為“1”,因為 15 分鐘的會議間隔(上午 8:00)不打算主持會議,但仍然主持了 15 分鐘的活動。
如果 PIR 傳感器在 2 分鐘內未檢測到活動,則會啟動輔助檢查。首先,會出現提示音,以提醒房間內的任何人即將噴水,然后顯示一個設備屏幕,顯示從 30 秒開始的倒計時,并帶有確認按鈕(視頻演示將顯示這一點)。如果確認屏幕在整個持續時間內都被忽略,則先生啟動伺服系統并噴灑房間,并等待下一個 15 分鐘間隔。如果確實確認了活動,則先生將返回以返回 PIR 邏輯。
我是如何建造它的?
我開始花一些時間學習 JS,reactJS:https ://reactjs.org/docs/getting-started.html和 nodeJS:https ://nodejs.org/en/docs/ 。我將在下面解釋 AWS DynamoDB 和 AWS IoT Core 集成并鏈接我的全棧應用程序存儲庫。
我首先在這里設置我的 Core2ForAWS:https ://edukit.workshop.aws/en/getting-started.html ,只需完成這些步驟。然后,我按照以下說明設置 AWS IoT Core:https ://edukit.workshop.aws/en/blinky-hello-world/prerequisites.html 。到此階段,您應該能夠獲取 AWS IoT 終端節點,并且您創建的 IAM 用戶應該具有以下策略:
如果您找不到添加此策略的位置,請使用您的根電子郵件登錄 AWS 控制臺,然后單擊“IAM”。你應該在左邊看到這個:
單擊“用戶”,然后單擊您創建的用戶。你會看到這樣的東西:
添加 AWSIoTFullAccess 策略。
這是我對正在發生的事情的解釋。您創建的 AWS 賬戶包含所有資源,例如 AWS IoT Core、DynamoDB、IAM 等。您創建的 IAM 用戶是經過身份驗證的實體,可以根據 IAM 用戶的策略訪問 AWS 賬戶的資源。當使用 IAM 用戶密鑰在 CLI 上運行命令“ aws configure”時,會創建一個配置文件并將其與用戶密鑰一起存儲在您的筆記本電腦上。調用 AWS 開發工具包 API 時,會找到配置文件。然后會發生一些調解,以便被調用的 API 具有與使用“ aws configure”命令配置密鑰的 IAM 用戶的策略相同的權限。
現在,將 AmazonDynamoDBFullAccess 策略也添加到您的 IAM 用戶。它應該如下所示:
以下是與 AWS 交互并帶有注釋的相關代碼片段:
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"));
}
});
下一步是創建先生設備。我想要一個可以用晶體管激活的電動水泵,所以我買了其中一個:
我把它拆開,它看起來像這樣:
事實證明,只需用開關短接兩個端子即可打開(您可以在原理圖部分看到這一點)。我將電子設備與伺服器和 PIR 傳感器一起粘在一些紙板上,然后向前跳了幾步(我忘了拍中間照片),我最終得到了這個:
電動泵機構位于中間部分,就在空透明罐的正上方。四根柱子中心的彎曲“向后 r”部分使霧氣輸出偏轉。最重要的是,我有 PIR 傳感器、控制泵機制的晶體管和 Core2ForAWS 設備。一旦霧氣打開,電動泵機構就會從罐中直接向上噴射霧狀消毒劑。伺服器開始動作,彎曲的“向后 r”段以 360 度的方式偏轉薄霧。如果我有一臺 3D 打印機,這個設備的設計會大不相同,而且效率更高(霧偏轉應該旋轉霧輸出的噴嘴,而不是霧本身)。對于 PIR,我將其設置為像這樣的非重新觸發模式,因此每次移動都會導致邊緣觸發中斷:
!!!!筆記 !!!!原理圖中的電路圖需要澄清一下,舵機的5V和GND線應該連接到外部電池或輸入電纜到 core2ForAWS !如果您連接到外部電池,請確保電池的接地連接到 core2ForAWS 的接地。從 core2ForAWS 連接到晶體管基極的導線是 core2ForAWS 上的 PIN26。在進行更改之前,我用完了 CircuitLab 免費試用版。
下面的代碼部分列出了啟動和運行 core2ForAWS 組件以及全棧應用程序的確切步驟。
之前,我提到了一個設備影子,我想首先邀請您在這里查看此鏈接:解釋什么是設備影子。您可以將設備影子視為 AWS IoT“事物”與外部影響(即全棧應用程序)之間的通信媒介。實際上,它更復雜,但它超出了本文的范圍。從本質上講,發生的事情是全棧應用程序寫入此設備影子,并且預置并連接到 AWS IoT Core 的 core2ForAWS 收到剛剛寫入設備影子的更改的通知。
要開始使用全棧應用程序,請遵循此處的 README:https ://github.com/daxlar/mister-frontend和此處:https : //github.com/daxlar/mister-backend上面的解釋可能比在整個文章中插入代碼塊更好地解釋了代碼。
?
設備的接線將在“原理圖”部分列出,所有代碼將在“代碼”部分。進入演示!
?
- 物聯網解決方案 2次下載
- 探究機械工程物聯網系統遠程解決方案 15次下載
- 基于流量指紋的物聯網設備識別方法 13次下載
- 一種面向物聯網服務的Web攻擊向量檢測方法 7次下載
- 基于物聯網的智慧醫院建設解決方案
- 物聯網芯片設計應該如何降耗
- RF5325應用在WiFi和藍牙前端模塊的集成解決方案應用和數據免費下載
- 基于諸智云的工業物聯網解決方案詳細資料免費下載 24次下載
- 物聯網的真正價值是什么?
- 選擇工業物聯網標準的中間件解決方案 1次下載
- 一種物聯網接入技術方案 16次下載
- 一種智能無線LED照明系統解決方案 5次下載
- 一種簡單的圖案填充算法
- 一種有效的可轉換的認證加密方案
- 一種高效、低延時的會議密鑰管理方案
- 支持安全物聯網設備開發和制造的解決方案 1059次閱讀
- 為什么說網關在任何工業物聯網解決方案中都很重要? 3469次閱讀
- 如何構建一個完整的物聯網解決方案 4743次閱讀
- Inventek物聯網照明解決方案系統架構分析 1866次閱讀
- 嵌入式物聯網設備的3種方案 2927次閱讀
- 基于一種可以用按鍵進行調節LCD背光亮度的解決方案 7827次閱讀
- 最適合物聯網聯網的是哪一種技術 2840次閱讀
- 大規模物聯網的要求以及解決方案組件 1825次閱讀
- EMI電磁屏蔽-主要材料簡介 1.8w次閱讀
- 一種使用ARM+FPGA高速訪問USB設備的設計方案詳解 5528次閱讀
- Pelion物聯網平臺如何進一步助力Arm的物聯網戰略? 3624次閱讀
- 如何設計一個簡單效率的小型物聯網設備供電方案? 5522次閱讀
- 一種基于GPRS的單片機上網的解決方案 4383次閱讀
- 一種基于混合信號技術的汽車電子單芯片設計 1142次閱讀
- 一種基于DSP的視頻監控系統解決方案 3358次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數據手冊
- 1.06 MB | 532次下載 | 免費
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費
- 5元宇宙深度解析—未來的未來-風口還是泡沫
- 6.40 MB | 227次下載 | 免費
- 6迪文DGUS開發指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 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十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多