電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>綜合家庭自動化系統(tǒng)

綜合家庭自動化系統(tǒng)

2022-12-15 | zip | 0.32 MB | 次下載 | 免費

資料介紹

描述

一、簡介:

曾經(jīng)夢想住在一個全自動的家中嗎?無論您身在世界的哪個地方,都可以通過指尖或聲音控制的房子。如果有人闖入,可以直接向您的手機(jī)發(fā)送安全警報的住宅。無論您是否關(guān)燈,都能讓您無憂無慮。

今天,我將向您展示一個原型,您可以通過它創(chuàng)建、設(shè)計和建造一個滿足您需求的夢想家園。那么,讓我們開始吧!

2、演示:

在此處查看集成家庭自動化的工作原型:

?

程序和警報:

?
?
?
poYBAGOYJn-AMDOIAAHUiyJK0WU580.png
?
1 / 7 ?在 Ubuntu 發(fā)行版上運行的automated_led.py
?

3.配置設(shè)備控制設(shè)置:

?

poYBAGOYJo2ANN0XAAE5RcK32Ow421.png
?

?

硬件設(shè)置:

  • 將 LED 的陽極(較長的引腳)連接到 Bolt WiFi 模塊的引腳 1。
  • 將直流電機(jī)的正極連接到模塊的引腳 2。
  • 將蜂鳴器的正極連接到模塊的引腳 3。
  • 如圖所示,將每個設(shè)備的負(fù)極連接到公共地。

軟件設(shè)置:

在開始創(chuàng)建界面的第一步之前,我們必須在 Bolt Cloud 上配置一些設(shè)置。所以讓我們開始吧!

pYYBAGOYJpCAUMPzAADRpMWZsmw262.png
?
  • 選擇連接作為輸出設(shè)備和數(shù)據(jù)收集方法作為 GPIO
poYBAGOYJpOAJKHWAAFA-Y5CN4U997.png
?
  • 單擊“配置此產(chǎn)品”并如上所示配置硬件設(shè)置并保存。
poYBAGOYJpuAYxCwAADw_iX3F8I196.png
?
  • 現(xiàn)在單擊代碼選項。將文件名指定為“home_automation”并選擇文件擴(kuò)展名作為 html。輸入代碼(在下一節(jié)中給出)并點擊保存按鈕。

我們將在下一節(jié)中學(xué)習(xí)對接口進(jìn)行編碼。

4. 創(chuàng)建界面

在本節(jié)中,我將幫助您使用 HTML、Javascript 和 CSS 設(shè)計一個界面網(wǎng)站,它也可以用于您的手機(jī)上的應(yīng)用程序。

單擊“開燈”按鈕將打開您房間的燈。同樣,“關(guān)燈”關(guān)閉燈。“風(fēng)扇開啟”和“風(fēng)扇關(guān)閉”按鈕將分別打開和關(guān)閉電機(jī)。“Alarm On”按鈕打開蜂鳴器以發(fā)出求救信號。可以使用“警報關(guān)閉”按鈕將其關(guān)閉。“自動燈”關(guān)閉所有其他燈并根據(jù)周圍的亮度改變其強(qiáng)度。

最終外觀如下所示:

?
應(yīng)用界面
?
?
網(wǎng)站界面
?

相同的代碼如下所示:

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 標(biāo)記標(biāo)記 HTML 文件的開始和結(jié)束。

標(biāo)題標(biāo)簽定義了我們網(wǎng)頁的標(biāo)題,它顯示在瀏覽器的選項卡上。

將預(yù)定義的 JavaScript 導(dǎo)入到我們的 HTML 代碼中,該代碼配置和設(shè)置我們 WiFi 模塊的 API 密鑰和設(shè)備名稱。它還提供了讀取和寫入我們設(shè)備的開和關(guān)值的功能。

樣式標(biāo)簽幫助我們通過 CSS 個性化網(wǎng)頁的外觀和感覺。它設(shè)置背景圖像、間距、字體和所有相關(guān)設(shè)置。

body 標(biāo)簽包含我們界面的實際內(nèi)容。它包含我們按鈕的設(shè)計及其號召性用語命令。

5. 設(shè)置語音模塊:

對于這個項目,我在我們的智能手機(jī)中使用了 Google 助手,并搭配 IFTTT 服務(wù)來管理觸發(fā)命令并按照它們進(jìn)行操作。

從Google Playstore下載 IFTTT 應(yīng)用程序,從此處訪問 IFTTT 網(wǎng)站。按照如圖所示的說明進(jìn)行注冊。現(xiàn)在;

對于應(yīng)用程序:

點擊右上角的“+”按鈕。

對于網(wǎng)站:

前往ifttt.com/create并按照如下所示的常見步驟操作。

?
?
?
poYBAGOYygKAFMreAAC_2Y8gvyw853.jpg
?
1 / 10 ?單擊“+”按鈕
?

對所有其他命令也遵循相同的過程。將 URL 的 pin 替換為 2(風(fēng)扇)和 3(蜂鳴器)和狀態(tài)分別為 HIGH 或 LOW。要查找您設(shè)備的 API,請登錄您的Bolt Cloud 帳戶并前往 API 選項卡。選擇啟用并復(fù)制 API。對于設(shè)備 ID,您可以從設(shè)備選項卡復(fù)制 ID。

pYYBAGOYygWAJvQPAAC0aoFBb6s811.png
?

設(shè)置說明:

'IFTTT' 代表 If This then That 和聽起來完全一樣。它是一種創(chuàng)建簡單條件語句鏈的服務(wù),稱為小程序。它由其他網(wǎng)絡(luò)服務(wù)(例如 Gmail、Google 助手、按鈕按下等)中發(fā)生的更改觸發(fā)。如果檢測到觸發(fā)器,它將按照您上面的編程進(jìn)行操作。

在這里,我們的語音命令 - 'Lights On' 被我們手機(jī)的麥克風(fēng)檢測到,然后被 Google Assistant 拾取和分析。當(dāng)檢測到觸發(fā)動作時,Webhooks 會發(fā)出 Web 請求,以從用戶輸入的 URL 中獲取所請求的網(wǎng)頁。然后,它以 JSON 格式發(fā)送響應(yīng)。云解碼數(shù)字引腳電壓必須設(shè)置為高或低的響應(yīng),從而打開或關(guān)閉設(shè)備。

6.設(shè)置警報:

在著手解開更多功能之前,我建議為項目設(shè)置警報系統(tǒng)。為了便于訪問,我使用了最流行的警報媒介——SMS、Whatsapp 和電子郵件。

對于 SMS 和 Whatsapp,我們需要第三方應(yīng)用程序的幫助。Twilio巧妙地幫助我們集成觸發(fā)器以通過其任何渠道發(fā)送自動消息。注冊并分別獲取 SMS 和 Whatsapp 的 SID、AUTH_TOKEN 和手機(jī)號碼。

對于電子郵件,我們使用簡單郵件傳輸協(xié)議 (SMTP) 模塊。不需要第三方應(yīng)用程序,但您需要打開不太安全的應(yīng)用程序訪問,這可以從這里完成。

7.自動燈

一種根據(jù)周圍環(huán)境的亮度改變其強(qiáng)度的光。多么酷啊?燈光將在黑暗中以最大強(qiáng)度發(fā)光,并隨著早晨的升起而逐漸變暗,它的光芒照耀著我們的大廳。另外,如果周圍的光線突然增加或減少,它也會向我們發(fā)送消息,從而表明房間里有人。所以,讓我們開始建造吧!

這是如何運作的?

為了制造自動燈,我們需要一個可以檢測光強(qiáng)度變化的傳感器。光敏電阻 (LDR) 就是為此目的而設(shè)計的。它根據(jù)光的強(qiáng)度改變其電阻 - 光越多,其電阻值越大,反之亦然。

螺栓模塊可以借助其 A0(模擬引腳)監(jiān)控電壓變化。現(xiàn)在,為了將這種電阻變化轉(zhuǎn)換為電壓變化,我們使用了分壓器電路。因此,LDR 上拉一個與電阻變化成比例的電壓。

LDR 的取值范圍為 0-255,而 LED 的取值范圍為 0 到 1024。為了同步這些變化,我們遵循 4:1 映射。我們將 LED 的值設(shè)置為 255 - (intensity_value_of_LDR/4),遵循逆映射。因此,環(huán)境較暗時,LED 會比以往更亮!

異常檢測:

該項目實施 Z 分?jǐn)?shù)分析方法來檢測周圍環(huán)境中光強(qiáng)度行為的任何異常。

poYBAGN6xyiAHzcvAAAiM086aww357.png
Z 分?jǐn)?shù)計算
?

Z-score 的計算如上所示:

  • 平均值是最后一個幀大小 (r) 值的平均值。
  • Z 分?jǐn)?shù)等于乘法因子 (c) * 最后幀大小值變化的均值的平方根。
  • 閾值設(shè)置為當(dāng)前值加上或減去的 Z 分?jǐn)?shù)

通過這個數(shù)學(xué)公式,我們計算出閾值,即哪些光強(qiáng)值落入標(biāo)準(zhǔn)區(qū)域,哪些值導(dǎo)致異常。如果在該區(qū)域之外檢測到一個點,則會通過 SMS 發(fā)送警報,指示光強(qiáng)度值突然增加或減少。

我們通過hit and trial方法獲得乘法因子和幀大小。更多的 c 意味著更大的邊界范圍,更多的 r 意味著檢測模式的變化。

硬件設(shè)置:

poYBAGOYygmAGb5qAACq8Pxi68g931.png
?
  • 將 LDR 的一個引腳連接到引腳 3V3,另一端連接到 Bolt WiFi 模塊的引腳 A0。
  • 在 LDR 的腿和 LED 的陰極(較短)腿之間連接一個 10k 歐姆電阻器(棕色、黑色、橙色、金色)。
  • 如圖所示,在 LED 的陽極(較長)引腳和模塊的引腳 0 之間連接 300 歐姆(橙色、橙色、棕色、金色)。
  • 將陰極(較短)引腳連接到模塊的 GND。

軟件設(shè)置:

在本節(jié)中,我們將使用 Python 進(jìn)行一些操作。我們必須創(chuàng)建 2 個 Python 文件。首先,我們將為我們的主程序創(chuàng)建一個名為conf.py的配置文件,并對其進(jìn)行編碼,如下所示:

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

創(chuàng)建單獨文件的好處是用戶可以在此處編輯這些憑據(jù),它將應(yīng)用于我們與警報系統(tǒng)集成的所有文件。

主程序名為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.安全系統(tǒng)

安全不是所有人都關(guān)心的問題嗎?你所有的貴重物品、漫畫書和電子游戲都在你的公寓里。如果有人篡改您的門鎖并進(jìn)入您的家怎么辦。你可以有一個閉路電視攝像機(jī),但它不能給你實時通知,并且會造成損害。為了克服這個困境,我向您介紹了這個簡單的入侵警報安全系統(tǒng)。

這是如何運作的?

每當(dāng)有人打開門時,它都會穿過 PIR 傳感器的視野。它檢測到它發(fā)出的紅外輻射,并在它的兩半之間產(chǎn)生一個正的差異變化。Bolt WiFi 模塊會接收此更改,然后將警報直接發(fā)送到我們的手機(jī)中。

硬件設(shè)置:

pYYBAGOYygyAX9zbAABr6pPlAe8002.png
?
  • 將 IR 傳感器的 VCC 連接到螺栓模塊的 5V。
  • 將 IR 傳感器的 GND 連接到螺栓模塊的 GND。
  • 將 IR 傳感器的 OUT/DATA 連接到螺栓模塊的引腳 4。

注意:您可以使用具有與所示相同連接的 PIR 傳感器。

軟件設(shè)置:

創(chuàng)建一個名為 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 來享受您的個人自動燈的樂趣

當(dāng)您因日常事務(wù)而離開家時,您可以運行 intruder_alert_system.py,在野外無憂無慮地游蕩,知道您的個人系統(tǒng)會提醒您任何闖入事件。

最終的集成電路和所有代碼如下所示。


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
  2. 1.06 MB  |  532次下載  |  免費
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費
  5. 3TC358743XBG評估板參考手冊
  6. 1.36 MB  |  330次下載  |  免費
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費
  9. 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費
  11. 6迪文DGUS開發(fā)指南
  12. 31.67 MB  |  194次下載  |  免費
  13. 7元宇宙底層硬件系列報告
  14. 13.42 MB  |  182次下載  |  免費
  15. 8FP5207XR-G1中文應(yīng)用手冊
  16. 1.09 MB  |  178次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關(guān)電源設(shè)計實例指南
  8. 未知  |  21549次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅(qū)動電路設(shè)計》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537798次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191187次下載  |  免費
  13. 7十天學(xué)會AVR單片機(jī)與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費