該項(xiàng)目的目標(biāo)是為低成本設(shè)備創(chuàng)建一個(gè)原型,以使用蜂窩數(shù)據(jù)監(jiān)測(cè)遠(yuǎn)程位置工業(yè)設(shè)備的壓力。物聯(lián)網(wǎng)設(shè)備使用蜂窩數(shù)據(jù)遠(yuǎn)程監(jiān)控壓力 (0-150 psi)。獲取高于/低于高/低設(shè)定點(diǎn)的壓力通知。
項(xiàng)目步驟
以下是項(xiàng)目的逐步構(gòu)建,該項(xiàng)目遵循從壓力傳感器到由附加到 Google 表格的腳本生成的電子郵件通知的數(shù)據(jù)流。
第 1 步:Uno 的壓力傳感器
壓力傳感器將壓力轉(zhuǎn)換為模擬電信號(hào)。
Arduino Uno 將來自壓力傳感器的模擬信號(hào)轉(zhuǎn)換為壓力 (psi)。
第 2 步:Uno 到 MKR GSM 1400 通過串行
通過 Serial 在兩個(gè) Arduino 設(shè)備之間進(jìn)行通信時(shí):
將設(shè)備 #1 上的 RX 連接到設(shè)備 #2 上的 TX
將設(shè)備 #1 上的 TX 連接到設(shè)備 #2 上的 RX
這些設(shè)備必須有一個(gè)共同的接地
數(shù)據(jù)傳輸頻率(Uno 到 MKR GSM 1400)
NORMAL:每隔 30 分鐘(傳輸頻率),Uno 將串行打印數(shù)據(jù)到 MKR GSM 1400,然后將數(shù)據(jù)傳輸?shù)皆贫恕?/p>
HIGH/LOW TRIGGER:如果壓力超過 40 psi (highTrigger) 或低于 20 psi (lowTrigger) 并停留超過 2 分鐘 (dtLastTriggerLimit),Uno 會(huì)將數(shù)據(jù)串行打印到 MKR GSM 1400,后者將傳輸數(shù)據(jù)到云端。
DEMAND POLL:如果 Uno 上的引腳 A1 被推高,它將串行打印數(shù)據(jù)到 MKR GSM 1400,然后將數(shù)據(jù)傳輸?shù)皆贫?。注意:引腳 A1 在 Uno 的草圖中被命名為“buttonPin”。Uno 上的引腳 A1 有兩種方式可以被推高。(1) 面包板上有一個(gè)按鈕。(2) 如果 MKR GSM 1400 上的引腳 A3 為高電平,它將推動(dòng)引腳 A1 為高電平。由于引腳 A3 由 Arduino Cloud 中的輸入控制,因此可以隨時(shí)遠(yuǎn)程獲取當(dāng)前壓力,而無需等待定期安排的數(shù)據(jù)傳輸。
筆記
可以修改 Uno 的草圖,以便在當(dāng)前版本中除了壓力之外,還可以使用高低設(shè)定點(diǎn)監(jiān)控溫度、濕度、電池電壓等多個(gè)輸入。
用于將來自壓力傳感器的模擬信號(hào)轉(zhuǎn)換為壓力 (psi) 的代碼基于以下 YouTube 視頻中給出的說明:https ://www.youtube.com/watch?v=AB7zgnfkEi4
Arduino 論壇上的以下關(guān)于“串行輸入基礎(chǔ)知識(shí)”的帖子在編寫代碼以使用串行數(shù)據(jù)從一個(gè)設(shè)備到另一個(gè)設(shè)備進(jìn)行通信時(shí)非常有幫助:https ://forum.arduino.cc/index.php?topic =288234.0
第 3 步:MKR GSM 1400 通過蜂窩網(wǎng)絡(luò)連接到 Arduino Cloud
MKR GSM 1400 處理來自 Arduino Uno 的串行數(shù)據(jù),并使用蜂窩數(shù)據(jù)將數(shù)據(jù)傳輸?shù)?Arduino Cloud。
值得注意的是,在 MKR GSM 1400 的代碼中,您會(huì)看到Serial1.read而不是Serial.read 。Arduino 網(wǎng)站上的參考資料給出了很好的解釋。下圖中的表格顯示了通過 Serial1 訪問 MKR 板上的 TX/RX 引腳。
Arduino Cloud
該項(xiàng)目在 Arduino Cloud 中設(shè)置了 2 個(gè)變量。下圖顯示了這些變量如何顯示在 Arduino Cloud 的儀表板中。
第一個(gè)名為“dataStringCloud”的變量實(shí)際上是來自設(shè)備的所有數(shù)據(jù)的一個(gè)包。采用這種方法,而不是每個(gè)值一個(gè)變量,以簡化 Google 表格中的數(shù)據(jù)處理。使用單獨(dú)的變量名稱,很難區(qū)分保持不變的值和未更新的值。此包中的數(shù)據(jù)在 Google 表格中進(jìn)行解析。
第二個(gè)名為“pinCloud”的變量用于從 Arduino Cloud 控制 MKR GSM 1400。草圖中有一個(gè)開關(guān)功能,根據(jù) pinCloud 的值控制動(dòng)作。當(dāng) pinCloud = 1 時(shí),引腳 A1 被推高,導(dǎo)致板上的 LED 亮起。當(dāng) pinCloud = 2 時(shí),引腳 A3 被推高,導(dǎo)致 Arduino Uno 如上所述發(fā)送當(dāng)前數(shù)據(jù)。
第 4 步:Arduino Cloud 通過 Webhook 到 Google 表格
使用 webhook 將數(shù)據(jù)從 Arduino Cloud 傳輸?shù)?Google Sheets。
webhook 的核心是用 Google 表格文件的腳本編寫的 doPost 函數(shù)。
以下是如何設(shè)置 webhook 的快速摘要:
創(chuàng)建一個(gè)新的 Google 表格文件
單擊工具欄上的“工具”并在下拉菜單中選擇“腳本編輯器”
使用doPost 函數(shù)編寫代碼(參考本項(xiàng)目附帶的 GoogleSheetsScript.js)
單擊工具欄上的“發(fā)布”并在下拉列表中選擇“部署為 Web 應(yīng)用程序。。.”
一個(gè)對(duì)話框?qū)⒊霈F(xiàn) 3 個(gè)字段。
(1)項(xiàng)目版本:始終使用下拉菜單選擇“新建”。第一次更新后,默認(rèn)為當(dāng)前版本的#;如果您不使用下拉菜單選擇“新建”,則更改不會(huì)生效。
(2)執(zhí)行 App 為:“me (youremail@gmail.com)”
(3)誰可以訪問應(yīng)用程序:“任何人,甚至是匿名的”
驗(yàn)證 3 個(gè)字段中的值后按部署
將出現(xiàn)第二個(gè)對(duì)話框,其中包含“當(dāng)前 Web 應(yīng)用程序 URL”。這是您將復(fù)制并粘貼到 Arduino Cloud 上的 webhook 選項(xiàng)卡中的 URL。值得注意的是,無論項(xiàng)目版本如何,此 URL 都保持不變。
單擊確定,您就完成了!
第 5 步:使用 Google 表格解析數(shù)據(jù)
使用 Google Sheets 解析 dataStringCloud 中的單個(gè)值并顯示從 Arduino Cloud 傳輸?shù)奈ㄒ挥涗?/p>
下面的鏈接指向最近用于設(shè)備測(cè)試的 Google 表格文件。此文件中的單元格根據(jù)它們的填充方式進(jìn)行著色,如每張紙上的圖例所示。
https://docs.google.com/spreadsheets/d/1XwCir2Llw8RvGPGgZI3Yk6U5a3LeIfUACNuO1Gr_LFQ/edit?usp=sharing
第 6 步:使用 Google 表格發(fā)送通知
您可能已經(jīng)注意到,在上面第 4 步中引用的此項(xiàng)目 (GoogleSheetsScript.js) 的 JavaScript 文件中有兩個(gè)函數(shù)。
doPost 函數(shù) - 從 Arduino Cloud Webhook 傳輸數(shù)據(jù)。它在 Arduino Cloud 上有新數(shù)據(jù)時(shí)運(yùn)行。
sendEmail 函數(shù) - 根據(jù)從項(xiàng)目的 Google 表格文件中名為“數(shù)據(jù)”的表格中提取的值發(fā)送電子郵件。它根據(jù)觸發(fā)器設(shè)置中的設(shè)置每分鐘運(yùn)行一次。
為 sendEmail 函數(shù)設(shè)置觸發(fā)器的步驟
打開谷歌表格文件
點(diǎn)擊工具欄中的“工具”
在下拉列表中選擇“腳本編輯器”
從腳本編輯器窗口繼續(xù):
點(diǎn)擊工具欄中的“編輯”
在下拉列表中選擇“當(dāng)前項(xiàng)目的觸發(fā)器”
選擇窗口右下角的“添加觸發(fā)器”
在出現(xiàn)的對(duì)話框中選擇運(yùn)行 sendEmail 功能。
注意:在時(shí)間驅(qū)動(dòng)的基礎(chǔ)上運(yùn)行觸發(fā)器可以在設(shè)備停止更新時(shí)生成電子郵件通知。
電池壽命
~24 小時(shí)
這可以通過關(guān)閉或移除顯示器來優(yōu)化。另一種選擇是移除非必要的傳感器,如 DHT22 和 DS3231。
數(shù)據(jù)使用
~0.7 兆字節(jié)/天
這可以通過減少數(shù)據(jù)傳輸?shù)拇笮』蝾l率來優(yōu)化。例如:為了減小尺寸,只發(fā)送壓力而不是壓力、溫度、濕度和時(shí)間。為了降低頻率,僅每小時(shí)更新一次,而不是每 30 分鐘一次。
所需材料
Arduino MKR GSM 1400
Arduino Uno
2 節(jié) 3.7V 鋰聚合物電池
2 個(gè) LED 顯示屏
耐候塑料盒
壓力傳感器
溫度/濕度傳感器 - DHT22
RTC 模塊 - DS3231
邏輯電平轉(zhuǎn)換器
雜項(xiàng) - LED、電阻器、接線等
評(píng)論
查看更多