資料介紹
描述
一、簡介:
曾經夢想住在一個全自動的家中嗎?無論您身在世界的哪個地方,都可以通過指尖或聲音控制的房子。如果有人闖入,可以直接向您的手機發送安全警報的住宅。無論您是否關燈,都能讓您無憂無慮。
今天,我將向您展示一個原型,您可以通過它創建、設計和建造一個滿足您需求的夢想家園。那么,讓我們開始吧!
2、演示:
在此處查看集成家庭自動化的工作原型:
程序和警報:
3.配置設備控制設置:
?
?
硬件設置:
- 將 LED 的陽極(較長的引腳)連接到 Bolt WiFi 模塊的引腳 1。
- 將直流電機的正極連接到模塊的引腳 2。
- 將蜂鳴器的正極連接到模塊的引腳 3。
- 如圖所示,將每個設備的負極連接到公共地。
軟件設置:
在開始創建界面的第一步之前,我們必須在 Bolt Cloud 上配置一些設置。所以讓我們開始吧!
- 選擇連接作為輸出設備和數據收集方法作為 GPIO
- 單擊“配置此產品”并如上所示配置硬件設置并保存。
- 現在單擊代碼選項。將文件名指定為“home_automation”并選擇文件擴展名作為 html。輸入代碼(在下一節中給出)并點擊保存按鈕。
我們將在下一節中學習對接口進行編碼。
4. 創建界面
在本節中,我將幫助您使用 HTML、Javascript 和 CSS 設計一個界面網站,它也可以用于您的手機上的應用程序。
單擊“開燈”按鈕將打開您房間的燈。同樣,“關燈”關閉燈。“風扇開啟”和“風扇關閉”按鈕將分別打開和關閉電機。“Alarm On”按鈕打開蜂鳴器以發出求救信號。可以使用“警報關閉”按鈕將其關閉。“自動燈”關閉所有其他燈并根據周圍的亮度改變其強度。
最終外觀如下所示:
相同的代碼如下所示:
html>
<html>
<head>
<title>Smart Home Interfacetitle>
<script type="text/javascript" src="https://cloud.boltiot.com/static/js/boltCommands.js">script>
<script>
setKey('{{ApiKey}}','{{Name}}');
script>
<style>
body
{
background:url("https://images.unsplash.com/photo-1522444195799-478538b28823?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=334&q=80");
background-size: cover;
background-repeat:no-repeat;
background-position:center;
margin: 0px;
padding: 0px;
}
.space { margin-top: 120px; }
div
{
background-color:#ffffff;
width: 420px;
display: flex;
justify-content: center;
align-items: center;
opacity: .8;
}
h3
{
font-size:22px;
font-family: "Times New Roman", cursive, sans-serif;
style>
head>
<body>
<center>
<div class="space">div>
<div><br>
<center>
<h3>Experience Automation <br> at your fingertips!h3>center>
div>
<br><br><br>
<input type="button" value="Light On" onClick="digitalWrite(1, 'HIGH');" />
<input type="button" value="Light Off" onClick="digitalWrite(1, 'LOW');" /> <br> <br>
<input type="button" value="Fan On" onClick="digitalWrite(2, 'HIGH');" />
<input type="button" value="Fan Off" onClick="digitalWrite(2, 'LOW');" /> <br> <br>
<input type="button" value="Alarm On" onClick="digitalWrite(3, 'HIGH');" />
<input type="button" value="Alarm off" onClick="digitalWrite(3, 'LOW');" /> <br> <br>
<input type="button" value="Automated Light" onClick="digitalWrite(1, 'LOW');" /><br><br>
<br/><br/>center>
body>
html>
代碼說明:
用于表示代碼是以 HTML 格式編寫的。
HTML 標記標記 HTML 文件的開始和結束。
標題標簽定義了我們網頁的標題,它顯示在瀏覽器的選項卡上。
將預定義的 JavaScript 導入到我們的 HTML 代碼中,該代碼配置和設置我們 WiFi 模塊的 API 密鑰和設備名稱。它還提供了讀取和寫入我們設備的開和關值的功能。
樣式標簽幫助我們通過 CSS 個性化網頁的外觀和感覺。它設置背景圖像、間距、字體和所有相關設置。
body 標簽包含我們界面的實際內容。它包含我們按鈕的設計及其號召性用語命令。
5. 設置語音模塊:
對于這個項目,我在我們的智能手機中使用了 Google 助手,并搭配 IFTTT 服務來管理觸發命令并按照它們進行操作。
從Google Playstore下載 IFTTT 應用程序,或從此處訪問 IFTTT 網站。按照如圖所示的說明進行注冊。現在;
對于應用程序:
點擊右上角的“+”按鈕。
對于網站:
前往ifttt.com/create并按照如下所示的常見步驟操作。
對所有其他命令也遵循相同的過程。將 URL 的 pin 替換為 2(風扇)和 3(蜂鳴器)和狀態分別為 HIGH 或 LOW。要查找您設備的 API,請登錄您的Bolt Cloud 帳戶并前往 API 選項卡。選擇啟用并復制 API。對于設備 ID,您可以從設備選項卡復制 ID。
設置說明:
'IFTTT' 代表 If This then That 和聽起來完全一樣。它是一種創建簡單條件語句鏈的服務,稱為小程序。它由其他網絡服務(例如 Gmail、Google 助手、按鈕按下等)中發生的更改觸發。如果檢測到觸發器,它將按照您上面的編程進行操作。
在這里,我們的語音命令 - 'Lights On' 被我們手機的麥克風檢測到,然后被 Google Assistant 拾取和分析。當檢測到觸發動作時,Webhooks 會發出 Web 請求,以從用戶輸入的 URL 中獲取所請求的網頁。然后,它以 JSON 格式發送響應。云解碼數字引腳電壓必須設置為高或低的響應,從而打開或關閉設備。
6.設置警報:
在著手解開更多功能之前,我建議為項目設置警報系統。為了便于訪問,我使用了最流行的警報媒介——SMS、Whatsapp 和電子郵件。
對于 SMS 和 Whatsapp,我們需要第三方應用程序的幫助。Twilio巧妙地幫助我們集成觸發器以通過其任何渠道發送自動消息。注冊并分別獲取 SMS 和 Whatsapp 的 SID、AUTH_TOKEN 和手機號碼。
對于電子郵件,我們使用簡單郵件傳輸協議 (SMTP) 模塊。不需要第三方應用程序,但您需要打開不太安全的應用程序訪問,這可以從這里完成。
7.自動燈
一種根據周圍環境的亮度改變其強度的光。多么酷???燈光將在黑暗中以最大強度發光,并隨著早晨的升起而逐漸變暗,它的光芒照耀著我們的大廳。另外,如果周圍的光線突然增加或減少,它也會向我們發送消息,從而表明房間里有人。所以,讓我們開始建造吧!
這是如何運作的?
為了制造自動燈,我們需要一個可以檢測光強度變化的傳感器。光敏電阻 (LDR) 就是為此目的而設計的。它根據光的強度改變其電阻 - 光越多,其電阻值越大,反之亦然。
螺栓模塊可以借助其 A0(模擬引腳)監控電壓變化。現在,為了將這種電阻變化轉換為電壓變化,我們使用了分壓器電路。因此,LDR 上拉一個與電阻變化成比例的電壓。
LDR 的取值范圍為 0-255,而 LED 的取值范圍為 0 到 1024。為了同步這些變化,我們遵循 4:1 映射。我們將 LED 的值設置為 255 - (intensity_value_of_LDR/4),遵循逆映射。因此,環境較暗時,LED 會比以往更亮!
異常檢測:
該項目實施 Z 分數分析方法來檢測周圍環境中光強度行為的任何異常。
Z-score 的計算如上所示:
- 平均值是最后一個幀大小 (r) 值的平均值。
- Z 分數等于乘法因子 (c) * 最后幀大小值變化的均值的平方根。
- 閾值設置為當前值加上或減去的 Z 分數
通過這個數學公式,我們計算出閾值,即哪些光強值落入標準區域,哪些值導致異常。如果在該區域之外檢測到一個點,則會通過 SMS 發送警報,指示光強度值突然增加或減少。
我們通過hit and trial方法獲得乘法因子和幀大小。更多的 c 意味著更大的邊界范圍,更多的 r 意味著檢測模式的變化。
硬件設置:
- 將 LDR 的一個引腳連接到引腳 3V3,另一端連接到 Bolt WiFi 模塊的引腳 A0。
- 在 LDR 的腿和 LED 的陰極(較短)腿之間連接一個 10k 歐姆電阻器(棕色、黑色、橙色、金色)。
- 如圖所示,在 LED 的陽極(較長)引腳和模塊的引腳 0 之間連接 300 歐姆(橙色、橙色、棕色、金色)。
- 將陰極(較短)引腳連接到模塊的 GND。
軟件設置:
在本節中,我們將使用 Python 進行一些操作。我們必須創建 2 個 Python 文件。首先,我們將為我們的主程序創建一個名為conf.py的配置文件,并對其進行編碼,如下所示:
SSID = 'You can find SSID in your Twilio Dashboard'
AUTH_TOKEN = 'You can find on your Twilio Dashboard'
FROM_NUMBER = 'This is the no. generated by Twilio. You can find this on your Twilio Dashboard'
TO_NUMBER = 'This is your number. Make sure you are adding +91 in beginning'
API_KEY = 'This is your Bolt Cloud account API key'
DEVICE_ID = 'This is the ID of your Bolt device'
FROM_WHATSAPP= 'whatsapp: followed by the whatsapp no. generated by Twilio. You can find this in the Programmable SMS's Whatasapp Beta tab'
TO_WHATSAPP= 'whatsapp: followed by your whatsapp number. Make sure you are adding +91 in beginning'
FRAME_SIZE = 10
MUL_FACTOR = 6
創建單獨文件的好處是用戶可以在此處編輯這些憑據,它將應用于我們與警報系統集成的所有文件。
主程序名為automated_led.py,編碼如下:
#importing_the_necessary_packages
import conf, json, time, math, requests, statistics
from boltiot import Sms, Bolt
#defining function to calculate the upper and lower bounds by Z score analysis
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] #returns the upper and lower bound
#importing configurations from the conf.py file
mybolt = Bolt(conf.API_KEY, conf.DEVICE_ID)
sms = Sms(conf.SSID, conf.AUTH_TOKEN, conf.TO_NUMBER, conf.FROM_NUMBER)
history_data=[] #list to store the data sensed by LDR
while True:
response_ldr = mybolt.analogRead('A0') #reading response from analog pin connected to LDR
ldr_data = json.loads(response_ldr) #response is decoded from the JSON format
if ldr_data['success'] != 1: #for errors
print("There was an error while retrieving the data.")
print("This is the error:"+ldr_data['value'])
time.sleep(10)
continue
try:
sensor_value = int(ldr_data['value'])
except Exception as e:
print("There was an error while parsing the response: ",e)
continue
print("LDR sensor value is:" + str(sensor_value)) #prints LDR value on screen
print(response_ldr)
led_value_1 = int(sensor_value/4)
if led_value_1 > 255:
led_value_1 = 255
led_value = 255 - led_value_1 #calculating intensity of LED in accordance with LDR
response_led = mybolt.analogWrite('0', led_value) #setting instensity as calculated from above"""
print("Automated LED value is: "+str(led_value)) #printing value of LED on screen
print(response_led)
#invoking function to calculated and return the bounds
bound = compute_bounds(history_data,conf.FRAME_SIZE,conf.MUL_FACTOR)
if not bound:
required_data_count=conf.FRAME_SIZE-len(history_data)
if(required_data_count!=0 and required_data_count!=1):
print("Not enough data to compute Z-score. Need ",required_data_count," more data points")
history_data.append(int(ldr_data['value'])) #appends to list of input data
time.sleep(10)
continue
try:
if sensor_value > bound[0] : #if sensor value is greater than Higher bound
print ("The light level increased suddenly. Sending an SMS.")
#sends SMS as programmed
response = sms.send_sms("Someone turned on the lights")
print("This is the response ",response)
elif sensor_value < bound[1]: #if sensor value is lesser than Lesser Bound
print ("The light level decreased suddenly. Sending an SMS.")
#sends SMS as programmed
response = sms.send_sms("Someone turned off the lights")
print("This is the response ",response)
history_data.append(sensor_value) #appends to list of input data
except Exception as e:
print ("Error",e)
time.sleep(10)
8.安全系統
安全不是所有人都關心的問題嗎?你所有的貴重物品、漫畫書和電子游戲都在你的公寓里。如果有人篡改您的門鎖并進入您的家怎么辦。你可以有一個閉路電視攝像機,但它不能給你實時通知,并且會造成損害。為了克服這個困境,我向您介紹了這個簡單的入侵警報安全系統。
這是如何運作的?
每當有人打開門時,它都會穿過 PIR 傳感器的視野。它檢測到它發出的紅外輻射,并在它的兩半之間產生一個正的差異變化。Bolt WiFi 模塊會接收此更改,然后將警報直接發送到我們的手機中。
硬件設置:
- 將 IR 傳感器的 VCC 連接到螺栓模塊的 5V。
- 將 IR 傳感器的 GND 連接到螺栓模塊的 GND。
- 將 IR 傳感器的 OUT/DATA 連接到螺栓模塊的引腳 4。
注意:您可以使用具有與所示相同連接的 PIR 傳感器。
軟件設置:
創建一個名為 intruder_alert_system.py 的 python 文件并將其編碼如下所示:
import conf, json, time, requests #importing the required packages
from boltiot import Sms, Bolt
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
#configuring the email settings
email = 'Your_email_id'
password = 'Your_email_password'
send_to_email = 'Recipient's_Email '
subject = 'Intrusion'
message = 'Someone Entered!'
msg = MIMEMultipart()
msg['From'] = email
msg['To'] = send_to_email
msg['Subject'] = subject
msg.attach(MIMEText(message, 'plain'))
#SMS configuration
sms = Sms(conf.SSID, conf.AUTH_TOKEN, conf.TO_NUMBER, conf.FROM_NUMBER)
#Whatsapp configuration
sms_whatsapp= Sms(conf.SSID, conf.AUTH_TOKEN, conf.TO_WHATSAPP, conf.FROM_WHATSAPP)
while True:
response = requests.get('http://cloud.boltiot.com/remote/your_api_key/digitalRead?pin=4&deviceName=your_device_id') #getting response from PIR sensor
data=json.loads(response.text) #decoding the response obtained in JSON format
print(data)
sensor_value = int(data['value'])
if sensor_value == 1: #Sensor picked up reading
print("Motion Detected!")
print("Sending SMS...")
server = smtplib.SMTP('smtp.gmail.com', 587)
server.starttls()
server.login(email, password)
text = msg.as_string()
server.sendmail(email, send_to_email, text) #Email Delivered
sms.send_sms("Intruder Alert!") #SMS sent
sms_whatsapp.send_sms("Intruder Alert!") #Whatsapp Successful
server.quit()
elif sensor_value ==0:
print("SENSOR IS READY")
time.sleep(5)
9. 整合一切:
在舒適的休息室休息時,您可以通過指尖和語音命令體驗自動化的力量。您可以通過運行automated_led.py 來享受您的個人自動燈的樂趣
當您因日常事務而離開家時,您可以運行 intruder_alert_system.py,在野外無憂無慮地游蕩,知道您的個人系統會提醒您任何闖入事件。
最終的集成電路和所有代碼如下所示。
- 家庭自動化系統開源構建
- 家庭自動化系統開源分享
- 家庭自動化能源測量系統
- 使用1SHEELD的基于SMS的家庭自動化系統
- 帶溫度監控的家庭自動化系統
- 使用Arduino和HC 05的語音控制家庭自動化系統
- 使用Arduino構建自己的家庭自動化系統
- 基于DSP的變電站綜合自動化控制系統 23次下載
- 綜合自動化技術在鐵路變配電所的應用 12次下載
- 變電站綜合自動化技術 0次下載
- 綜合信息傳輸平臺自動化檢測系統的設計 14次下載
- 變電站綜合自動化的發展
- 煤礦綜合自動化概念
- 高爐供電綜合自動化系統的設計及應用
- 現代家庭自動化遙控系統電路圖
- 工業自動化和自動化區別是什么 1030次閱讀
- 自動化仿真系統搭建實踐 1333次閱讀
- 自動化控制系統的基本知識 3750次閱讀
- 過程自動化控制和運動自動化控制的原理詳解 1350次閱讀
- 基于PlatformIO IDE的家庭自動化系統設計方案實現 2297次閱讀
- 基于Raspberry Pi Pico開發先進的家庭自動化系統 2849次閱讀
- CL2000變電站綜合自動化系統的設計及通信解決方案 2637次閱讀
- 綜合自動化站系統異常處理的方法 4209次閱讀
- 綜合布線要遵守7大基于原則 6497次閱讀
- ATE自動化測試系統是什么_ATE自動化測試系統介紹 3.2w次閱讀
- 自動化領域初涉水 非標自動化和自動化到底有哪些區別? 6089次閱讀
- 過程自動化系統介紹 CPAS架構詳解 6843次閱讀
- 變電站綜合自動化系統微機保護的優化設計思路 1602次閱讀
- JOYO-A2開閉所配電室綜合自動化系統解決方案 1838次閱讀
- 基于GPRS的電網調度自動化系統 1238次閱讀
下載排行
本周
- 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次下載 | 免費
評論
查看更多