資料介紹
描述
介紹:
在這個項目中,我嘗試在房間燈熄滅時打開 LED。我使用 Python 控制 LED 并從螺栓云中檢索數據。機器學習技術,z 分數分析,已用于計算數據的上限和下限。如果傳感器值超出范圍,則會向我的郵箱發送一封電子郵件,并根據情況打開或關閉 LED。
Z 分數分析:
在 z 分數分析中,上限和下限會隨著數據不斷變化,因此即使異常值低于先前記錄的值,也可以檢測到異常。它具有三個因素:
?
Mn = r 值的平均值
Zn=z分數
Tn=閾值
硬件連接:
?
面包板分為兩半,一半中的所有點都相互連接,兩條不同的線或不同的一半上的兩個點彼此不連接。在面包板上,LDR 與 10k電阻串聯。LDR和電阻之間的公共支路通過黃色線連接到螺栓的“A0”引腳。LDR的另一支路連接到 3v3通過綠線引腳。電阻器通過藍線連接到 LED 。電阻器和 LED 之間的公共線點連接到螺栓的接地引腳。另一條腿(較長的腿)連接到“0”GPIO螺栓銷。
軟件:
?
該軟件分為兩個python程序文件。
1)email_conf.-它包含我的 mailgun 帳戶的詳細信息、我的螺栓設備名稱、api 密鑰和乘數以及用于 z 分數分析的幀大小。
API_KEY="XXXXX"
DEVICE_ID="BOLTXXXX"
MAILGUN_API_KEY="XXXXX'
SANDBOX_URL="XXXX"
SENDER_EMAIL="XXXX"
RECIPIENT_EMAIL="XXXX"
MUL_FACTOR=2
FRAME_SIZE=10
2)led_control_by_sensor:這是實現項目的主要代碼,即控制LED,獲取傳感器數據并在傳感器值越界時發送電子郵件。
import email_conf,json,time,math,statistics
from boltiot import Bolt,Email
def compute_bounds(history_data,frame_size,factor):
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]
mybolt = Bolt(email_conf.API_KEY, email_conf.DEVICE_ID)
email=Email(email_conf.MAILGUN_API_KEY,email_conf.SANDBOX_URL,email_conf.SENDER_EMAIL, email_conf.RECIPIENT_EMAIL)
history_data=[]
while True:
response = mybolt.analogRead('A0')
data = json.loads(response)
if data['success'] != 1:
print("There was an error while getting 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'])
except Exception as e:
print("There was an error while parsing the response: ",e)
continue
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
try:
if sensor_value > bound[0] :
print ("light level increased suddenly. sending email.")
status=mybolt.analogWrite('0','0')
print("status of led is :",status)
response=email.send_email("alert","someone turned on the lights")
response=json.loads(response.text)
print("this is the response from mailgun"+str(response['message']))
elif sensor_value < bound[1] :
print ("light level decreased suddenly. sending email.")
status=mybolt.analogWrite('0','20')
print("status of led is :",status)
response=email.send_email("alert","someone turned off the lights")
response=json.loads(response.text)
print("this is the response from mailgun"+str(response['message']))
history_data.append(sensor_value);
except Exception as e:
print ("Error",e)
time.sleep(10)
在上面的程序中,我們包括以下內容:
time-time.sleep() 函數暫停程序 10 秒
json-json.loads() 函數來轉換來自 boltiot 和 mailgun 的數據
statistics-statistics.mean() 函數計算均值
math-math.pow() 函數求平方
Email-創建一個它的對象來發送郵件
螺栓連接到設備
在程序中,函數 compute_bounds 計算閾值并返回。它采用以下參數:傳感器數據列表、幀大小和倍增因子。如果列表的長度小于幀大小,則返回無,因為所需的點數不可用。它保持列表的大小為10 通過刪除多余的起始元素。
然后我創建了 Bolt 和 Email 的對象。運行一個無限循環,我們獲取數據,如果發生錯誤,則顯示 它。然后通過調用 compute_bounds 函數獲取邊界。如果傳感器值越過邊界,則 LED 會打開或根據情況關閉并發送電子郵件并顯示 mailgun 的響應。如果值在范圍內,則將其簡單地添加到列表中。最后,程序在每次循環后暫停 10 秒。
工作模式:
下面的圖片
顯示工作項目。
?
- 《LED燈具設計與案例詳解》pdf 0次下載
- 配網自動化技術
- 自動化標準器件選型知識概要PPT下載 37次下載
- 基于DSP的變電站綜合自動化控制系統 23次下載
- 基于PC的自動化SIMATIC-WINAC 8次下載
- SIMATIC-基于PC的自動化 6次下載
- 基于BP2808的LED照明燈具電源應用與設計 30次下載
- FA工業自動化設備設計基礎 18次下載
- 配電自動化潮流計算測試平臺設計 2次下載
- LED燈具照明燈具國際IEC標準與國家GB標準對比概述 35次下載
- LED燈具測試資料大全中文概括 33次下載
- LED燈具設計指南 18次下載
- 自動化圖紙 2次下載
- CAM工序自動化 0次下載
- CAM工序自動化說明 0次下載
- 工業自動化中的控制方式 470次閱讀
- 工業自動化和自動化區別是什么 1029次閱讀
- 過程自動化控制和運動自動化控制的原理詳解 1350次閱讀
- 如何自學PLC與自動化? 2567次閱讀
- 什么是非標自動化設備及分類介紹 4.2w次閱讀
- 非標自動化設備的分類 6280次閱讀
- ATE自動化測試系統是什么_ATE自動化測試系統介紹 3.2w次閱讀
- 自動化領域初涉水 非標自動化和自動化到底有哪些區別? 6089次閱讀
- jenkins自動化部署 4558次閱讀
- led燈具基礎知識_led燈怎么接線 3.6w次閱讀
- 基于GPRS的電網調度自動化系統 1238次閱讀
- 全面解讀LED燈具特性及其標準 7010次閱讀
- 簡要分析LED燈具的散熱設計 4464次閱讀
- LED燈具設計經驗分享 1003次閱讀
- 簡述如何將LED燈組裝自動化 2570次閱讀
下載排行
本周
- 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次下載 | 免費
評論
查看更多