İçindekiler:

EF230 Akıllı Ev Projesi: 7 Adım
EF230 Akıllı Ev Projesi: 7 Adım

Video: EF230 Akıllı Ev Projesi: 7 Adım

Video: EF230 Akıllı Ev Projesi: 7 Adım
Video: Ef230 RADbot 2024, Temmuz
Anonim
EF230 Akıllı Ev Projesi
EF230 Akıllı Ev Projesi

Gerekli Parça ve Malzemeler:

  • 1 Arduino MKR 1000
  • 3 Ekmek Tahtası
  • 2 Mini Fotosel
  • 1 NPN Transistör
  • 1 Mini Güç Anahtarı
  • 1 LED – RGB (4 uçlu)
  • 1 LED (seçtiğiniz renk)
  • 1 Diyot 1N4148
  • 1 10K Ohm Dirençler
  • 5 100 Ohm Direnç
  • 1 Sıcaklık Sensörü TMP36
  • 1 DAGU 48:1 Oranlı Redüktörlü Motor
  • 25 Jumper Tel
  • USB Kablosu
  • MATLAB Programı
  • Arduino 101/Genuino 101 Kartı için SIK Deney Kılavuzu - SIK Deney Kılavuzu Bağlantısı

Bu proje, ev sahiplerinin enerji kullanımlarını ve güvenliklerini optimize etmelerine yardımcı olmak için verileri kullanacak bir akıllı ev sisteminin kavramsal tasarımını detaylandırıyor. Geceleri dış mekan ışıklarını açmak için bir ışık sensörü, güvenlik için bir ışık sensörü ve iç sıcaklık kontrolü için bir sıcaklık sensörü ve fan içerir.

Adım 1: Işığa Duyarlı LED

  • Işığa duyarlı LED kurulumu, geceleri yanan bir evde dış mekan ışıklarını temsil etmek içindir.
  • Mini fotosel ışığın azaldığını algıladığında LED yanacaktır.
  • Akıllı bir ev için bunun enerji ve güvenlik etkileri vardır. Gündüz ışıkları kapalı bırakarak enerji tasarrufu sağlayacak ve geceleri güvenliği artıracaktır.
  • Projenin bu kısmı için tam kablolama ve kurulum, SIK Deney Kılavuzundaki deney 7 altında bulunabilir.

Adım 2: Mini Güç Anahtarı

  • Anahtar, akıllı evin güvenlik sürecindeki ilk adımdır.
  • Anahtar açıldığında, kullanıcıya 'Ev' moduna mı yoksa 'Dışarıda' moduna mı girmek isteyip istemediğini soran bir yanıt başlatacaktır.
  • Eğer 'Ev' modu seçilirse, güvenlik devre dışı olarak kabul edilir, ancak 'Dışarıda' modunun seçilmesi güvenlik sistemini devreye alacaktır.
  • Projenin bu kısmı için kablolama Deney Kılavuzunda deney 6 altında bulunabilir. Akıllı ev amacıyla, deney 6'da bulunan LED'lerin ve bağlantı kablolarının dahil edilmesine gerek yoktur.

Adım 3: İkinci Fotosel

İkinci Fotosel
İkinci Fotosel
  • İkinci fotosel ise akıllı evin güvenlik sistemi için hareket sensörü görevi görüyor.
  • Sensör, yalnızca sistem önceki adımda açıklandığı gibi 'Dışarıda' moduna alındığında kullanılır.
  • Fotosel, aldığı ışık miktarında bir azalma yaşarsa, bunu evin içinde hareket olarak algılar.
  • Projenin bu kısmı için kurulum, SIK Deney Kılavuzunda deney 7 altında bulunabilir. Ancak sadece fotosel ve bağlantı tellerinin kablolamaya dahil edilmesi gerekir.

Adım 4: RGB LED

  • RGB LED, akıllı evin güvenlik sistemi için mini güç anahtarı ve ikinci fotosel ile birlikte kullanılmaktadır.
  • Üç farklı renk, akıllı ev sakini için gösterge olarak kullanılır.
  • Sistem 'Ev' moduna alındığında LED maviye döner. Sistem 'Dışarıda' moduna alındığında LED yeşile döner. Hareket sensörü olarak kullanılan fotosel tetiklendiğinde ışık kırmızı renkte yanıp söner.
  • RGB LED için kablolama, SIK Deney Kılavuzunun 3. deneyinde bulunabilir.

Adım 5: Sıcaklık Sensörü

  • Sıcaklık sensörü, akıllı evde enerji tasarrufunun önemli bir parçasıdır.
  • Sakin, akıllı ev kullanımdayken evi için istediği sıcaklığı girebiliyor.
  • Sıcaklık sensörü, sistemin gerçek sıcaklığın istenen sıcaklıktan ne kadar uzakta olduğunu nasıl bildiğidir.
  • Sıcaklık sensörünün kurulumu, SIK Deney Kılavuzunun 9. deneyinde bulunabilir.

Adım 6: DAGU Redüktörlü Motor

DAGU Redüktörlü Motor
DAGU Redüktörlü Motor
  • Motor, akıllı evin, istenen sıcaklığa ve sıcaklık sensörünün okumalarına göre evdeki sıcaklığı düzenlemesini sağlar.
  • Evde AC ünitesi olarak görev yapan motor, gerçek sıcaklığın istenen sıcaklıktan ne kadar yüksek olduğuna bağlı olarak farklı hızlarda dönecektir. Fark ne kadar yüksek olursa, motor daha hızlı döner.
  • Motor için kablolama, deney 11 altındaki Deney Kılavuzunda bulunabilir.

7. Adım: Kod

  • Akıllı ev kodu, konut sakininin nasıl çalıştığını kolayca anlamasını ve ayarları kolayca değiştirmesini sağlayan birden fazla kullanıcı arayüzü içerir.
  • Akıllı ev sistemi ile, konut sakini, uzaktayken hareket sensörü çalıştırılırsa uyarı alacak ve e-posta gönderecektir.
  • Yapılması gereken tek değişiklik, gönderenin e-postası ve alıcının e-posta adresi bilgilerini girmektir.

temizle a; temizle s; temizle m; clc; hepsini kapat; % Arduino ve servo değişkenlerini temizle, böylece kodun etkin bir şekilde çalışması için her seferinde yeniden tanımlanabilsinler ("ifte m", while döngülerinden birinin düzgün çalışması için gereklidir)a = arduino(); % arduino değişkenini ayarlayın

s = servo(a, 'D6'); % Servo değişkenini ayarlayın

% Güvenlik sistemi uyarı e-postası için e-posta değişkenlerini başlat

emails = {'alıcı adresini girin'}; % Güvenlik e-postasının gönderileceği e-posta dizisi

% Posta göndermek üzere Gmail kullanmak için gerekli E-posta tercihi ayarları

setpref('İnternet', 'E_posta', 'gönderenin e-posta adresi');

setpref('Internet', 'SMTP_Username', 'gönderenin kullanıcı adı');

setpref('İnternet', 'SMTP_Password', 'gönderenin şifresi');

sahne = java.lang. System.getProperties;

props.setProperty('mail.smtp.auth', 'true');

props.setProperty('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty('mail.smtp.socketFactory.port', '465');

% E-posta konusu ve metin değişkenleri

subj = 'Evinize Davetsiz Misafir Uyarısı';

text = 'Merhaba, Bu, evinizin dışında hareket algılandığını bildiren Akıllı Ev güvenlik sisteminizdir. Sizin için gerekli önlemleri aldık ve yetkililerle iletişime geçtik. Güvende kal.';

doğru iken

komut istemi = {'İstenen ev sıcaklığını girin (65F ile 85F arasında):'}; % Kullanıcı giriş menüsü istemi

dlgtitle = 'Sıcaklık Seçimi'; % Kullanıcı giriş menüsü için başlık

karartır = [1 30]; Kullanıcı giriş menüsü için % Boyutlar

tanım = {'72'}; % Menü ilk açıldığında görünen varsayılan giriş

tempsel_array = inputdlg(istem, dlgtitle, dims, definput); % Girilen sayıyı bir diziye kaydedecek açılır kullanıcı giriş menüsü

if ~isempy(tempsel_array) % Dizi boş DEĞİLSE

tempsel_char = cell2mat(tempsel_array); % Diziyi bir karakter dizisine dönüştür

tempsel = str2double(tempsel_char); % Karakter dizisini sayılara dönüştürün

şeySpeakWrite(chID, tempsel, 'WriteKey', writeKey, 'Alanlar', 1); % Seçilen sıcaklığı ThingSpeak kanalınıza yazın

break % Menünün birden çok kez açılmaması için while döngüsünden ayrıl

else % Kullanıcı sıcaklık girmek yerine iptal'i tıklarsa

msg1 = msgbox('Sıcaklık seçilmedi, varsayılan ayar 85F', 'Uyarı!'); % İptal'i tıkladıktan sonra kullanıcıya görüntülenen mesaj

bekle(msg1); % Devam etmeden önce mesaj kutusunun kapanmasını bekleyin

sıcaklık = 85; % Sıcaklığı mesaj kutusunda belirtilene ayarlayın

şeySpeakWrite(chID, tempsel, 'WriteKey', writeKey, 'Alanlar', 1); % Seçilen sıcaklığı ThingSpeak kanalınıza yazın

break % Menünün birden çok kez açılmaması için while döngüsünden ayrıl

son

son

doğru iken

chID = 745517; % ThingSpeak Kanal Kimliği

writeKey = 'G9XOQTP8KOVSCT0N'; % ThingSpeak Kanalına erişim için Anahtar

% Veri almak için sensörleri başlat

tempread = readVoltage(a, 'A3'); % Sıcaklık sensörünün voltajını okuyun

lightl1 = readVoltage(a, 'A2'); % Kırmızı LED'e giden fotodirenç için ışık seviyesi

lightl2 = readVoltage(a, 'A5'); Güvenlik sistemine giden fotodirenç için % Işık seviyesi

switchv = readVoltage(a, 'A0'); Anahtar için % Değer

% Sıcaklık verilerini voltajdan Fahrenheit derecesine dönüştürün

tempC = (tempread - 0,5) * 100; % Voltajı Santigrat cinsinden sıcaklığa dönüştürün

tempF = (tempC * 9/5) + 32; % Santigrat cinsinden sıcaklığı Fahrenhayt cinsinden sıcaklığa dönüştürün

% Çok renkli LED için pin numaralarını sıfırlayın

redp = 'D9'; LED'den kırmızı ışık için % Pin

yeşilp = 'D10'; LED'den yeşil ışık için % Pin

mavip = 'D11'; LED'den mavi ışık için % Pin

tempsel < tempF % ise Seçilen sıcaklık oda sıcaklığından büyükse

writePosition(lar, 1); % Servo hareket etmeye başlayacak

duraklama(10) % Servo, AC'nin belirli bir süre sonra kapanacağını göstermek için 10 saniye boyunca dönmeye devam edecek

writePosition(s, 0); % Fan açık olmadan kodu devam ettirmek amacıyla fanı kapatın

tempsel = 150; % Fan kapandıktan sonra döngüden çıkmak için sıcaklık değerini değiştirin, yine sadece kodu devam ettirmek amacıyla

son

if lightl1 <= 3 % İlk fotodirenç düşük ışık seviyesi algılarsa

writeDigitalPin(a, 'A1', 1); % Dış mekan ışıklarını temsil eden kırmızı LED'i açın

else % Işık seviyesi tekrar yüksekse

writeDigitalPin(a, 'A1', 0); % Işık seviyesi tekrar yeterince yüksek olduğunda kırmızı LED'i kapatın

son

switchv > %3 ise Anahtar açıksa

A = var('m', 'var'); % 'm' değişkeninin varlığını kontrol edin, bu while döngüsü için başlatılacak ve bir menü öğesi seçildiğinde kırılmasına izin verecektir (bu yüzden kodun başlangıcında clear m yapılmalıdır)

iken A==0 % Döngü 'm' değişkeni var olana kadar yürütülür

menutext = 'Hangi güvenlik moduna girmek istiyorsunuz?'; % Güvenlik açılır menüsü için metin

seçimler = {'Ev', 'Dışarıda'}; Güvenlik açılır menüsü için % Seçenekler

m = menü(menü metni, seçenekler); % Güvenlik sistemi modları için açılır menü

break % Menünün birden çok kez açılmaması için while döngüsünün kesilmesini sağlar

son

eğer m == 1 % 'Ev' modu seçilirse

writeDigitalPin(a, bluep, 1); % Renk değiştiren LED'de sadece mavi ışığı açın

writeDigitalPin(a, redp, 0);

writeDigitalPin(a, greenp, 0);

elseif m == 2 % 'Dışarıda' modu seçilirse

writeDigitalPin(a, bluep, 0);

writeDigitalPin(a, redp, 0);

writeDigitalPin(a, greenp, 1); % Renk değiştiren LED'de sadece yeşil ışığı açın

if lightl2 <= 3 % İkinci fotodirençteki ışık seviyesi düşükse, güvenlik sistemi tarafından algılanan hareketi temsil eder

sendmail(e-postalar, özne, metin); % Önceden tanımlanmış e-posta özelliklerine sahip bir e-posta gönder writeDigitalPin(a, greenp, 0); % Kırmızı renk 2 kez yanıp söner

writeDigitalPin(a, redp, 1);

duraklat(0.3)

writeDigitalPin(a, redp, 0);

duraklat(0.3)

writeDigitalPin(a, redp, 1);

duraklat(0.3)

writeDigitalPin(a, redp, 0);

duraklat(0.3)

writeDigitalPin(a, redp, 1); % Işık seviyesi tekrar yükselene kadar hareket olduğunu göstermek için yanıp söndükten sonra sürekli kırmızı ile bitirin

msg2 = msgbox('Güvenlik sistemi tarafından davetsiz misafir algılandı, ev sahiplerine bilgilendirme amaçlı bir e-posta gönderildi.', 'UYARI!'); % Kullanıcıyı hareket konusunda bilgilendirmek ve gönderilen e-postayı bildirmek için waitfor(msg2) % Mesaj kutusu % Devam etmeden önce mesaj kutusunun kapanmasını bekleyin

Başka

writeDigitalPin(a, greenp, 1); % Işık seviyesi tekrar yükseldiğinde tekrar yeşile dönecektir.

son

son

elseif switchv < %3,3 Anahtar kapalıysa

writeDigitalPin(a, bluep, 0); % Güvenlik sisteminin kapalı olduğunu göstermek için LED'i tamamen kapatın

writeDigitalPin(a, redp, 0);

writeDigitalPin(a, greenp, 0);

son

son

Önerilen: