資料介紹
描述
介紹
該項目監控平板電腦存儲冷卻室的溫度。它檢查溫度是否在指定的范圍內,并在溫度有任何偏差時通知用戶。
它基本上分3個階段實施-
- 第 1 階段 - 記錄室中的溫度值幾個小時。實施多項式回歸的機器學習算法,用于預測未來值并確定室內溫度的邊界。
- 第 2 階段 - 每 10 秒獲取溫度值,如果溫度超過溫度閾值(我們在第 1 階段設置),則向用戶發送通知(通過電子郵件)。
- 第 3 階段 - 使系統“自力更生” - 使用 z 分數分析,檢測任何異常并通知用戶。
保護藥物和藥片免受設備故障或故障的影響對于維持合規性和質量標準至關重要。
階段1
在這個階段,我們將記錄溫度傳感器的值約 2 小時。我們還將實施多項式回歸模型,以預測未來一些點的溫度讀數。根據結果??,我們將找到溫度的閾值邊界值。
1.1 構建電路
LM35傳感器是一種常用的溫度讀數傳感器。隨著溫度升高,傳感器兩端的電壓升高,反之亦然。
T = r / 10.24,r-> LM35 傳感器讀數,T-> 溫度(攝氏度)
下面給出了LM35-溫度傳感器與螺栓模塊的電路連接。
將 LM35 連接到螺栓模塊-
1)拿著LM35,這樣你就可以看到上面寫的LM35。
2)從這個位置最左邊的引腳連接到Vcc(螺栓模塊上的+5v)。
3)中間引腳連接到輸出(即螺栓模塊上的A0)
4)最右邊的引腳接地(螺栓模塊上的GND)
通過 Micro USB 電纜將 Bolt Wifi 模塊連接到電源。
1.2 創建產品并將其鏈接到我們的設備
轉到https://cloud.boltiot.com/ ,然后按照以下步驟操作:
1.3 實現多項式回歸算法
- 多項式回歸是一種機器學習算法,我們在其中找到一個最能模擬數據集的多項式方程。
多項式方程的形式是-
y = f(x),其中 f(x) 是 x 的不同冪次之和的函數。
在這里,我們使用“時間”作為 x 坐標。然后我們可以使用獲得的多項式方程來預測未來的溫度值。
- 步驟- 1. 單擊配置此產品。
2. 點擊 A0 引腳并給它一個名字——“temp”。(因為該引腳將溫度作為輸入)
根據您的要求選擇數據收集率。(我選擇了 5 分鐘)
3. 單擊代碼。選擇.js作為擴展文件,編寫如下代碼。
setChartLibrary('google-chart')
setChartTitle('Polynomial Regression')
setChartType('predictionGraph')
setAxisName('time_stamp','temp')
mul(0.0977)
plotChart('time_stamp','temp')
注意-a)我使用谷歌圖表庫來實現多項式回歸。
b) setChartLibrary() - 選擇 google 圖表庫 setChartTitle() - 設置圖表的標題 setChartType() - 將圖表類型設置為預測圖(即它選擇多項式回歸) setAxisName() - 將名稱設置為 x 和 y軸(分別是時間和溫度值) mul(0.0977)- 將溫度值乘以 0.0977,將溫度傳感器讀數轉換為以攝氏度為單位的溫度。 plotChart() - 最后繪制圖表。
4. 保存配置。
5. 部署硬件配置并單擊“查看此設備”。
6. 現在將傳感器在冷卻室中放置約 2 小時(蓋上蓋子)并記錄數值。(PS - 我使用了一個封閉的托盤,里面有一些冰塊作為房間,但你可以把設置放在冰箱里)。
- 了解預測模型-
預測點:這個數字告訴 Visualizer 需要預測多少未來數據點。因此,如果您將產品設置為每 5 分鐘收集一次數據,并選擇 4 個預測點,Visualizer 將預測趨勢并在未來 30 分鐘內顯示 4 個點。
No. 多項式系數:Polynomial Visualizer 處理給定的輸入時間相關數據,并輸出以下形式的函數的系數:
最接近輸入數據的趨勢。這個數字告訴 Visualizer 函數中應該存在多少元素,即 n 的值。
幀大小:這些是 Visualizer 將用于預測數據趨勢的先前數據點的數量。例如,如果將此值設置為 3,Visualizer 將使用前 3 個點來預測趨勢。
預測歷史圖表可幫助您調整機器學習模型。您必須更改以下參數,以使該圖表最接近實際數據。當這種情況發生時,預測數據或預測的未來溫度將是最準確的。
這在有特定要求時很有用,例如 - 片劑的溫度不得一次保持在 -33 到 -30 度之間超過 20 分鐘。使用預測數據,只要圖表預測溫度將保持在 -33 和 -30 攝氏度范圍內超過 20 分鐘,我們就可以及早采取行動。
1.4設置室內溫度邊界
通過查看數據,我們可以將閾值設置為26*C (傳感器值 - 277)和34*C (傳感器值 - 351)
第二階段
我們將編寫一個 python 代碼來獲取溫度數據,每 10 秒,如果溫度超過我們在 1.4 部分中確定的溫度閾值,則發送電子郵件警報(通過 Mailgun)。
因此,如果腔室中出現任何問題(由于溫度變化),可以很容易地檢測到并進行修復。
2.1 設置 Mailgun
我使用過 Mailgun——它是一個電子郵件自動化服務。它有一套非常強大的用于發送電子郵件的內置功能。開發人員可以在 Mailgun API 的幫助下處理他們的電子郵件。
第 1 步 - 打開https://www.mailgun.com/并注冊免費試用帳戶。
第 2 步 - 遵循以下步驟 -
2.2 服務器和SSH終端軟件
我在這個項目中使用了數字海洋云服務。
DigitalOcean 是一家云計算供應商,為軟件開發人員提供基礎設施即服務 (IaaS) 平臺。
- 單擊此鏈接- https://www.digitalocean.com/并創建一個帳戶并進行驗證。創建一個 Droplet。(確保選擇離您最近的數據中心)
- 您將通過郵件獲得登錄憑據和服務器 IP。
我使用“putty”軟件通過 SSH 連接到服務器。SSH 是一種網絡協議,它允許我們通過 Internet 遠程訪問計算機。
- 單擊 - https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html并根據您的 Windows 體系結構從包文件列表中選擇 Windows 安裝程序。
- 安裝膩子后,通過郵件接收到的droplet的憑據和IP地址登錄。更改新密碼并設置新密碼。
看看,在膩子中登錄。
2.3 配置文件
我們必須創建一個文件來存儲 Mailgun 和 Bolt IoT 的所有憑據。
Bolt 模塊的 API 密鑰和設備 ID 可以如下確定:
- 打開https://cloud.boltiot.com/并將您的 Bolt 設備連接到 Bolt 云。
- Bolt 設備 ID 已加框 -
- 轉到 API 部分以了解 API 密鑰。
2.4 編寫最終的python代碼
代碼算法——
- 從 Bolt 設備中獲取最新的傳感器值。
收到郵件截圖——
階段 - 3
在階段 -2 中,我手動設置了溫度傳感器的閾值范圍。但在這個階段,我將使用Z-score算法來動態更改發送警報的范圍。
這個階段的要點是——
當腔室工作正常時,溫度變化會很慢,系統的界限會隨著這種變化而變化。但是當出現任何系統故障或任何問題時,房間內的溫度會突然發生變化。因此,系統將檢測到異常并迅速提醒用戶存在問題。
3.1 Z分數分析
Z-score 分析是一種用于異常檢測的算法。在這里,溫度的突然變化超出(閾值)范圍值,是一種異常情況。值的范圍稱為界限(上限和下限)。這些界限是使用輸入值、幀大小和乘法因子計算的。幀大小是 Z 分數分析所需的最小輸入值數量,乘法因子確定邊界與輸入值曲線的接近程度。
上面給出的是計算邊界的公式。這里輸入表示為“Vi”,“r”表示幀大小,“C”是乘法因子。首先,我們計算輸入值的平均值(Mn)(對于每個新輸入,再次計算平均值)。每個輸入值的變化(來自平均值)為 (Vi - Mn)^2。Z 分數 (Zn) 的計算如上所示(每個輸入值的變化平均值的平方根乘以乘法因子)。界限表示為“Tn”,上限計算為 (Vi + Zn),下限計算為 (Vi - Zn)。
幀大小和倍增因子是使用試錯法確定的。
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
幀大小和倍增因子猜測為 10 和 6,然后根據要求進行調整。
3.3異常檢測的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 演示
當一杯熱水靠近傳感器時,溫度突然變化,檢測到溫度值異常。幀大小和倍增因子已經以這種方式進行了調整。
3.5 輸出說明
由于我已將幀大小設置為 10,因此在獲取 10 個傳感器值之前,它不會計算 z 分數。
100 秒后(10 幀延遲 10 秒),它會開始計算 z-score 并檢查是否有異常。帶上一杯熱水后,當溫度突然變化時,異常是檢測到。
收到郵件截圖——
因此,這是一種異常檢測中的自力更生系統。
?
?
?
- 溫度監測系統開源分享
- 虹科ELPRO醫藥供應鏈溫度監測系統目錄
- 基于數據挖掘等的中醫臨床治療肝癌處方用藥參考 3次下載
- 如何使用ANT傳感器網絡實現溫度監測系統的設計和實現 4次下載
- 如何使用MSP430單片機進行多點溫度監測系統的設計 18次下載
- 如何使用ZigBee技術來設計多點溫度監測系統的詳細資料免費下載 18次下載
- 高壓開關柜的溫度監測系統 1次下載
- 基于ZigBee的冷庫溫度無線監測系統的設計 17次下載
- 基于ZigBee的大棚無線溫度監測系統 207次下載
- 基于ARM和DS18B20的溫度監測系統 339次下載
- 基于USB和藍牙的單片機溫度監測系統 134次下載
- 電纜接頭溫度在線監測系統設計 33次下載
- 光纖式溫度在線監測系統 27次下載
- 基于實時控制的多路溫度監測系統The Multi-Chann
- 制梁廠水泥養護室溫度集中監測系統
- 基于無線技術的齒輪箱溫度在線監測系統 766次閱讀
- 聯網溫度監測 599次閱讀
- MAX6652系統監測器將電壓監測與溫度檢測相結合 717次閱讀
- MAX16031/MAX16032系統監測器的外部溫度傳感器校準 825次閱讀
- 如何構建高分辨率溫度監測系統 827次閱讀
- 可幫助解決許多錯誤用藥問題的解決方案 1501次閱讀
- 利用光纖布拉格光柵技術監測動力電池包的溫度 5251次閱讀
- 帶有溫度補償功能的隔離式pH監測儀 992次閱讀
- 幾種常見的溫度傳感器的基本原理解析 2.9w次閱讀
- 盲點監測系統的利與弊 2.4w次閱讀
- 基于單片機的溫度報警系統設計 1w次閱讀
- 基于TC35i的遠程溫度監測系統設計 3089次閱讀
- 煤礦主排水泵房溫度監測系統電路設計 5382次閱讀
- 一種高效的蓄電池性能監測系統的設計方案 1762次閱讀
- 熱電偶用于加熱爐排氣溫度監測電路圖 2692次閱讀
下載排行
本周
- 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次下載 | 免費
評論
查看更多