資料介紹
描述
介紹
該項(xiàng)目監(jiān)控平板電腦存儲(chǔ)冷卻室的溫度。它檢查溫度是否在指定的范圍內(nèi),并在溫度有任何偏差時(shí)通知用戶。
它基本上分3個(gè)階段實(shí)施-
- 第 1 階段 - 記錄室中的溫度值幾個(gè)小時(shí)。實(shí)施多項(xiàng)式回歸的機(jī)器學(xué)習(xí)算法,用于預(yù)測(cè)未來(lái)值并確定室內(nèi)溫度的邊界。
- 第 2 階段 - 每 10 秒獲取溫度值,如果溫度超過(guò)溫度閾值(我們?cè)诘?1 階段設(shè)置),則向用戶發(fā)送通知(通過(guò)電子郵件)。
- 第 3 階段 - 使系統(tǒng)“自力更生” - 使用 z 分?jǐn)?shù)分析,檢測(cè)任何異常并通知用戶。
保護(hù)藥物和藥片免受設(shè)備故障或故障的影響對(duì)于維持合規(guī)性和質(zhì)量標(biāo)準(zhǔn)至關(guān)重要。
階段1
在這個(gè)階段,我們將記錄溫度傳感器的值約 2 小時(shí)。我們還將實(shí)施多項(xiàng)式回歸模型,以預(yù)測(cè)未來(lái)一些點(diǎn)的溫度讀數(shù)。根據(jù)結(jié)果??,我們將找到溫度的閾值邊界值。
1.1 構(gòu)建電路
LM35傳感器是一種常用的溫度讀數(shù)傳感器。隨著溫度升高,傳感器兩端的電壓升高,反之亦然。
T = r / 10.24,r-> LM35 傳感器讀數(shù),T-> 溫度(攝氏度)
下面給出了LM35-溫度傳感器與螺栓模塊的電路連接。
將 LM35 連接到螺栓模塊-
1)拿著LM35,這樣你就可以看到上面寫的LM35。
2)從這個(gè)位置最左邊的引腳連接到Vcc(螺栓模塊上的+5v)。
3)中間引腳連接到輸出(即螺栓模塊上的A0)
4)最右邊的引腳接地(螺栓模塊上的GND)
通過(guò) Micro USB 電纜將 Bolt Wifi 模塊連接到電源。
1.2 創(chuàng)建產(chǎn)品并將其鏈接到我們的設(shè)備
轉(zhuǎn)到https://cloud.boltiot.com/ ,然后按照以下步驟操作:
1.3 實(shí)現(xiàn)多項(xiàng)式回歸算法
- 多項(xiàng)式回歸是一種機(jī)器學(xué)習(xí)算法,我們?cè)谄渲姓业揭粋€(gè)最能模擬數(shù)據(jù)集的多項(xiàng)式方程。
多項(xiàng)式方程的形式是-
y = f(x),其中 f(x) 是 x 的不同冪次之和的函數(shù)。
在這里,我們使用“時(shí)間”作為 x 坐標(biāo)。然后我們可以使用獲得的多項(xiàng)式方程來(lái)預(yù)測(cè)未來(lái)的溫度值。
- 步驟- 1. 單擊配置此產(chǎn)品。
2. 點(diǎn)擊 A0 引腳并給它一個(gè)名字——“temp”。(因?yàn)樵撘_將溫度作為輸入)
根據(jù)您的要求選擇數(shù)據(jù)收集率。(我選擇了 5 分鐘)
3. 單擊代碼。選擇.js作為擴(kuò)展文件,編寫如下代碼。
setChartLibrary('google-chart')
setChartTitle('Polynomial Regression')
setChartType('predictionGraph')
setAxisName('time_stamp','temp')
mul(0.0977)
plotChart('time_stamp','temp')
注意-a)我使用谷歌圖表庫(kù)來(lái)實(shí)現(xiàn)多項(xiàng)式回歸。
b) setChartLibrary() - 選擇 google 圖表庫(kù) setChartTitle() - 設(shè)置圖表的標(biāo)題 setChartType() - 將圖表類型設(shè)置為預(yù)測(cè)圖(即它選擇多項(xiàng)式回歸) setAxisName() - 將名稱設(shè)置為 x 和 y軸(分別是時(shí)間和溫度值) mul(0.0977)- 將溫度值乘以 0.0977,將溫度傳感器讀數(shù)轉(zhuǎn)換為以攝氏度為單位的溫度。 plotChart() - 最后繪制圖表。
4. 保存配置。
5. 部署硬件配置并單擊“查看此設(shè)備”。
6. 現(xiàn)在將傳感器在冷卻室中放置約 2 小時(shí)(蓋上蓋子)并記錄數(shù)值。(PS - 我使用了一個(gè)封閉的托盤,里面有一些冰塊作為房間,但你可以把設(shè)置放在冰箱里)。
- 了解預(yù)測(cè)模型-
預(yù)測(cè)點(diǎn):這個(gè)數(shù)字告訴 Visualizer 需要預(yù)測(cè)多少未來(lái)數(shù)據(jù)點(diǎn)。因此,如果您將產(chǎn)品設(shè)置為每 5 分鐘收集一次數(shù)據(jù),并選擇 4 個(gè)預(yù)測(cè)點(diǎn),Visualizer 將預(yù)測(cè)趨勢(shì)并在未來(lái) 30 分鐘內(nèi)顯示 4 個(gè)點(diǎn)。
No. 多項(xiàng)式系數(shù):Polynomial Visualizer 處理給定的輸入時(shí)間相關(guān)數(shù)據(jù),并輸出以下形式的函數(shù)的系數(shù):
最接近輸入數(shù)據(jù)的趨勢(shì)。這個(gè)數(shù)字告訴 Visualizer 函數(shù)中應(yīng)該存在多少元素,即 n 的值。
幀大小:這些是 Visualizer 將用于預(yù)測(cè)數(shù)據(jù)趨勢(shì)的先前數(shù)據(jù)點(diǎn)的數(shù)量。例如,如果將此值設(shè)置為 3,Visualizer 將使用前 3 個(gè)點(diǎn)來(lái)預(yù)測(cè)趨勢(shì)。
預(yù)測(cè)歷史圖表可幫助您調(diào)整機(jī)器學(xué)習(xí)模型。您必須更改以下參數(shù),以使該圖表最接近實(shí)際數(shù)據(jù)。當(dāng)這種情況發(fā)生時(shí),預(yù)測(cè)數(shù)據(jù)或預(yù)測(cè)的未來(lái)溫度將是最準(zhǔn)確的。
這在有特定要求時(shí)很有用,例如 - 片劑的溫度不得一次保持在 -33 到 -30 度之間超過(guò) 20 分鐘。使用預(yù)測(cè)數(shù)據(jù),只要圖表預(yù)測(cè)溫度將保持在 -33 和 -30 攝氏度范圍內(nèi)超過(guò) 20 分鐘,我們就可以及早采取行動(dòng)。
1.4設(shè)置室內(nèi)溫度邊界
通過(guò)查看數(shù)據(jù),我們可以將閾值設(shè)置為26*C (傳感器值 - 277)和34*C (傳感器值 - 351)
第二階段
我們將編寫一個(gè) python 代碼來(lái)獲取溫度數(shù)據(jù),每 10 秒,如果溫度超過(guò)我們?cè)?1.4 部分中確定的溫度閾值,則發(fā)送電子郵件警報(bào)(通過(guò) Mailgun)。
因此,如果腔室中出現(xiàn)任何問(wèn)題(由于溫度變化),可以很容易地檢測(cè)到并進(jìn)行修復(fù)。
2.1 設(shè)置 Mailgun
我使用過(guò) Mailgun——它是一個(gè)電子郵件自動(dòng)化服務(wù)。它有一套非常強(qiáng)大的用于發(fā)送電子郵件的內(nèi)置功能。開(kāi)發(fā)人員可以在 Mailgun API 的幫助下處理他們的電子郵件。
第 1 步 - 打開(kāi)https://www.mailgun.com/并注冊(cè)免費(fèi)試用帳戶。
第 2 步 - 遵循以下步驟 -
2.2 服務(wù)器和SSH終端軟件
我在這個(gè)項(xiàng)目中使用了數(shù)字海洋云服務(wù)。
DigitalOcean 是一家云計(jì)算供應(yīng)商,為軟件開(kāi)發(fā)人員提供基礎(chǔ)設(shè)施即服務(wù) (IaaS) 平臺(tái)。
- 單擊此鏈接- https://www.digitalocean.com/并創(chuàng)建一個(gè)帳戶并進(jìn)行驗(yàn)證。創(chuàng)建一個(gè) Droplet。(確保選擇離您最近的數(shù)據(jù)中心)
- 您將通過(guò)郵件獲得登錄憑據(jù)和服務(wù)器 IP。
我使用“putty”軟件通過(guò) SSH 連接到服務(wù)器。SSH 是一種網(wǎng)絡(luò)協(xié)議,它允許我們通過(guò) Internet 遠(yuǎn)程訪問(wèn)計(jì)算機(jī)。
- 單擊 - https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html并根據(jù)您的 Windows 體系結(jié)構(gòu)從包文件列表中選擇 Windows 安裝程序。
- 安裝膩?zhàn)雍螅ㄟ^(guò)郵件接收到的droplet的憑據(jù)和IP地址登錄。更改新密碼并設(shè)置新密碼。
看看,在膩?zhàn)又械卿洝?/font>
2.3 配置文件
我們必須創(chuàng)建一個(gè)文件來(lái)存儲(chǔ) Mailgun 和 Bolt IoT 的所有憑據(jù)。
Bolt 模塊的 API 密鑰和設(shè)備 ID 可以如下確定:
- 打開(kāi)https://cloud.boltiot.com/并將您的 Bolt 設(shè)備連接到 Bolt 云。
- Bolt 設(shè)備 ID 已加框 -
- 轉(zhuǎn)到 API 部分以了解 API 密鑰。
2.4 編寫最終的python代碼
代碼算法——
- 從 Bolt 設(shè)備中獲取最新的傳感器值。
收到郵件截圖——
階段 - 3
在階段 -2 中,我手動(dòng)設(shè)置了溫度傳感器的閾值范圍。但在這個(gè)階段,我將使用Z-score算法來(lái)動(dòng)態(tài)更改發(fā)送警報(bào)的范圍。
這個(gè)階段的要點(diǎn)是——
當(dāng)腔室工作正常時(shí),溫度變化會(huì)很慢,系統(tǒng)的界限會(huì)隨著這種變化而變化。但是當(dāng)出現(xiàn)任何系統(tǒng)故障或任何問(wèn)題時(shí),房間內(nèi)的溫度會(huì)突然發(fā)生變化。因此,系統(tǒng)將檢測(cè)到異常并迅速提醒用戶存在問(wèn)題。
3.1 Z分?jǐn)?shù)分析
Z-score 分析是一種用于異常檢測(cè)的算法。在這里,溫度的突然變化超出(閾值)范圍值,是一種異常情況。值的范圍稱為界限(上限和下限)。這些界限是使用輸入值、幀大小和乘法因子計(jì)算的。幀大小是 Z 分?jǐn)?shù)分析所需的最小輸入值數(shù)量,乘法因子確定邊界與輸入值曲線的接近程度。
上面給出的是計(jì)算邊界的公式。這里輸入表示為“Vi”,“r”表示幀大小,“C”是乘法因子。首先,我們計(jì)算輸入值的平均值(Mn)(對(duì)于每個(gè)新輸入,再次計(jì)算平均值)。每個(gè)輸入值的變化(來(lái)自平均值)為 (Vi - Mn)^2。Z 分?jǐn)?shù) (Zn) 的計(jì)算如上所示(每個(gè)輸入值的變化平均值的平方根乘以乘法因子)。界限表示為“Tn”,上限計(jì)算為 (Vi + Zn),下限計(jì)算為 (Vi - Zn)。
幀大小和倍增因子是使用試錯(cuò)法確定的。
3.2 修改配置文件
MAILGUN_API_KEY = 'This is the private API key which you can find on your Mailgun Dashboard'
SANDBOX_URL= 'You can find this on your Mailgun Dashboard'
SENDER_EMAIL = 'This would be test@your SANDBOX_URL'
RECIPIENT_EMAIL = 'Enter your Email ID Here'
API_KEY = 'This is your Bolt Cloud account API key'
DEVICE_ID = 'This is the ID of your Bolt device'
FRAME_SIZE = 10
MUL_FACTOR = 6
幀大小和倍增因子猜測(cè)為 10 和 6,然后根據(jù)要求進(jìn)行調(diào)整。
3.3異常檢測(cè)的Python代碼
import email_conf #import the configuration file
from boltiot import Email, Bolt #import the boltiot module from the Bolt python library
import json, time, math, statistics #import various python libraries
#//---------FUNCTION TO COMPUTE BOUNDS OR Z SCORE ANALYSIS------------//
def compute_bounds(history_data,frame_size,factor):
#//Function to compute bounds
if len(history_data) return None
if len(history_data)>frame_size :
del history_data[0:len(history_data)-frame_size]
Mn=statistics.mean(history_data)
Variance=0
for data in history_data :
Variance += math.pow((data-Mn),2)
Zn = factor * math.sqrt(Variance / frame_size)
High_bound = history_data[frame_size-1]+Zn
Low_bound = history_data[frame_size-1]-Zn
return [High_bound,Low_bound] # //Returns Low Bound and High Bound
mybolt = Bolt(email_conf.API_KEY, email_conf.DEVICE_ID) # //To identify your bolt device
mailer = Email(email_conf.MAILGUN_API_KEY, email_conf.SANDBOX_URL, email_conf.SENDER_EMAIL, email_conf.RECIPIENT_EMAIL) # //To identify Mailgun account
history_data=[] # //Array of input values from LM35
#//---------------------READ INPUT FROM LM35--------------------------//
while True:
response = mybolt.analogRead('A0') #//Read input from LM35 at A0 pin
data = json.loads(response) # //Retrieve the input data in json format
if data['success'] != 1:
print("There was an error while retriving the data.")
print("This is the error:"+data['value'])
time.sleep(10)
continue
print ("This is the value "+data['value'])
sensor_value=0
try:
sensor_value = int(data['value']) # //store current input value in variable
except e:
print("There was an error while parsing the response: ",e)
continue
#//----------------PERFORMING Z SCORE ANALYSIS--------------------------//
bound = compute_bounds(history_data,email_conf.FRAME_SIZE,email_conf.MUL_FACTOR)
if not bound:
required_data_count=email_conf.FRAME_SIZE-len(history_data)
print("Not enough data to compute Z-score. Need ",required_data_count," more data points")
history_data.append(int(data['value']))
time.sleep(10)
continue
#//-----------DETECTING ANOMALY AND SENDING ALERTS--------------//
try:
if sensor_value > bound[0] : # //If input crosses upper bound
print ("The temperature has increased suddenly. Sending an E-mail.")
response = mailer.send_email("Alert", "The temperature has suddenly increased! ")
print("This is the response ",response)
elif sensor_value < bound[1]: # //If input crosses lower bound
print ("The light level decreased suddenly. Sending an Email.")
response = mailer.send_email("Alert", "The temperature has suddenly decreased! ")
print("This is the response ",response)
history_data.append(sensor_value); # //Append each new input to array history_data[]
except Exception as e:
print ("Error",e)
time.sleep(10) # //Wait for 10 seconds
3.4 演示
當(dāng)一杯熱水靠近傳感器時(shí),溫度突然變化,檢測(cè)到溫度值異常。幀大小和倍增因子已經(jīng)以這種方式進(jìn)行了調(diào)整。
3.5 輸出說(shuō)明
由于我已將幀大小設(shè)置為 10,因此在獲取 10 個(gè)傳感器值之前,它不會(huì)計(jì)算 z 分?jǐn)?shù)。
100 秒后(10 幀延遲 10 秒),它會(huì)開(kāi)始計(jì)算 z-score 并檢查是否有異常。帶上一杯熱水后,當(dāng)溫度突然變化時(shí),異常是檢測(cè)到。
收到郵件截圖——
因此,這是一種異常檢測(cè)中的自力更生系統(tǒng)。
?
?
?
- 溫度監(jiān)測(cè)系統(tǒng)開(kāi)源分享
- 虹科ELPRO醫(yī)藥供應(yīng)鏈溫度監(jiān)測(cè)系統(tǒng)目錄
- 基于數(shù)據(jù)挖掘等的中醫(yī)臨床治療肝癌處方用藥參考 3次下載
- 如何使用ANT傳感器網(wǎng)絡(luò)實(shí)現(xiàn)溫度監(jiān)測(cè)系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn) 4次下載
- 如何使用MSP430單片機(jī)進(jìn)行多點(diǎn)溫度監(jiān)測(cè)系統(tǒng)的設(shè)計(jì) 18次下載
- 如何使用ZigBee技術(shù)來(lái)設(shè)計(jì)多點(diǎn)溫度監(jiān)測(cè)系統(tǒng)的詳細(xì)資料免費(fèi)下載 18次下載
- 高壓開(kāi)關(guān)柜的溫度監(jiān)測(cè)系統(tǒng) 1次下載
- 基于ZigBee的冷庫(kù)溫度無(wú)線監(jiān)測(cè)系統(tǒng)的設(shè)計(jì) 17次下載
- 基于ZigBee的大棚無(wú)線溫度監(jiān)測(cè)系統(tǒng) 207次下載
- 基于ARM和DS18B20的溫度監(jiān)測(cè)系統(tǒng) 339次下載
- 基于USB和藍(lán)牙的單片機(jī)溫度監(jiān)測(cè)系統(tǒng) 134次下載
- 電纜接頭溫度在線監(jiān)測(cè)系統(tǒng)設(shè)計(jì) 33次下載
- 光纖式溫度在線監(jiān)測(cè)系統(tǒng) 27次下載
- 基于實(shí)時(shí)控制的多路溫度監(jiān)測(cè)系統(tǒng)The Multi-Chann
- 制梁廠水泥養(yǎng)護(hù)室溫度集中監(jiān)測(cè)系統(tǒng)
- 基于無(wú)線技術(shù)的齒輪箱溫度在線監(jiān)測(cè)系統(tǒng) 766次閱讀
- 聯(lián)網(wǎng)溫度監(jiān)測(cè) 599次閱讀
- MAX6652系統(tǒng)監(jiān)測(cè)器將電壓監(jiān)測(cè)與溫度檢測(cè)相結(jié)合 717次閱讀
- MAX16031/MAX16032系統(tǒng)監(jiān)測(cè)器的外部溫度傳感器校準(zhǔn) 825次閱讀
- 如何構(gòu)建高分辨率溫度監(jiān)測(cè)系統(tǒng) 827次閱讀
- 可幫助解決許多錯(cuò)誤用藥問(wèn)題的解決方案 1501次閱讀
- 利用光纖布拉格光柵技術(shù)監(jiān)測(cè)動(dòng)力電池包的溫度 5251次閱讀
- 帶有溫度補(bǔ)償功能的隔離式pH監(jiān)測(cè)儀 992次閱讀
- 幾種常見(jiàn)的溫度傳感器的基本原理解析 2.9w次閱讀
- 盲點(diǎn)監(jiān)測(cè)系統(tǒng)的利與弊 2.4w次閱讀
- 基于單片機(jī)的溫度報(bào)警系統(tǒng)設(shè)計(jì) 1w次閱讀
- 基于TC35i的遠(yuǎn)程溫度監(jiān)測(cè)系統(tǒng)設(shè)計(jì) 3089次閱讀
- 煤礦主排水泵房溫度監(jiān)測(cè)系統(tǒng)電路設(shè)計(jì) 5382次閱讀
- 一種高效的蓄電池性能監(jiān)測(cè)系統(tǒng)的設(shè)計(jì)方案 1762次閱讀
- 熱電偶用于加熱爐排氣溫度監(jiān)測(cè)電路圖 2692次閱讀
下載排行
本周
- 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開(kāi)發(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開(kāi)關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21549次下載 | 免費(fèi)
- 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書(shū))
- 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ì)》 溫德?tīng)栔?/a>
- 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)論
查看更多