Mục lục:

Dự án nhà thông minh EF230: 7 bước
Dự án nhà thông minh EF230: 7 bước

Video: Dự án nhà thông minh EF230: 7 bước

Video: Dự án nhà thông minh EF230: 7 bước
Video: Smart Home project - Đồ án Nhà Thông Minh sử dụng Blynk | Arduino, app android 2024, Tháng bảy
Anonim
Dự án nhà thông minh EF230
Dự án nhà thông minh EF230

Các bộ phận và vật liệu cần thiết:

  • 1 Arduino MKR 1000
  • 3 bảng bánh mì
  • 2 tế bào quang điện nhỏ
  • 1 bóng bán dẫn NPN
  • 1 Công tắc nguồn nhỏ
  • 1 LED - RGB (4 ngạnh)
  • 1 đèn LED (màu bạn chọn)
  • 1 Diode 1N4148
  • 1 điện trở 10K Ohm
  • Điện trở 5 100 Ohm
  • 1 Cảm biến nhiệt độ TMP36
  • 1 DAGU 48: 1 Tỷ lệ bánh răng
  • 25 dây nhảy
  • Dây USB
  • Chương trình MATLAB
  • Hướng dẫn Thử nghiệm SIK cho Bo mạch Arduino 101 / Genuino 101 - Liên kết Hướng dẫn Thử nghiệm SIK

Dự án này trình bày chi tiết về thiết kế ý tưởng của một hệ thống nhà thông minh sẽ sử dụng dữ liệu để giúp chủ nhà tối ưu hóa việc sử dụng năng lượng và bảo mật của họ. Nó bao gồm một cảm biến ánh sáng để bật đèn ngoài trời vào ban đêm, một cảm biến ánh sáng cho an ninh, một cảm biến nhiệt độ và quạt để kiểm soát nhiệt độ trong nhà.

Bước 1: Đèn LED nhạy sáng

  • Thiết lập đèn LED nhạy sáng có nghĩa là đại diện cho ánh sáng ngoài trời của một ngôi nhà đang chiếu vào ban đêm.
  • Khi tế bào quang điện mini cảm nhận được lượng ánh sáng giảm, đèn LED sẽ sáng.
  • Đối với một ngôi nhà thông minh, điều này có ý nghĩa về năng lượng và an ninh. Nó sẽ tiết kiệm năng lượng bằng cách tắt đèn vào ban ngày và sẽ tăng cường an ninh vào ban đêm.
  • Hệ thống dây điện và thiết lập chính xác cho phần này của dự án có thể được tìm thấy trong thử nghiệm 7 trong Hướng dẫn thử nghiệm SIK.

Bước 2: Công tắc nguồn nhỏ

  • Công tắc là bước đầu tiên trong quy trình bảo mật của ngôi nhà thông minh.
  • Khi được bật, công tắc sẽ bắt đầu phản hồi hỏi người dùng xem họ muốn vào chế độ 'Nhà riêng' hay chế độ 'Đi vắng'.
  • Nếu chế độ 'Nhà riêng' được chọn, hệ thống bảo mật được coi là bị vô hiệu hóa, nhưng việc chọn chế độ 'Đi vắng' sẽ hỗ trợ hệ thống an ninh.
  • Hệ thống dây điện cho phần này của dự án có thể được tìm thấy trong thử nghiệm 6 trong Hướng dẫn thử nghiệm. Đối với mục đích của ngôi nhà thông minh, đèn LED và dây kết nối của chúng được tìm thấy trong thí nghiệm 6 không cần phải được đưa vào.

Bước 3: Tế bào quang thứ hai

Tế bào quang thứ hai
Tế bào quang thứ hai
  • Tế bào quang thứ hai đóng vai trò như một cảm biến chuyển động cho hệ thống an ninh của ngôi nhà thông minh.
  • Cảm biến chỉ được sử dụng khi hệ thống được đặt ở chế độ 'Đi vắng' như được mô tả trong bước trước.
  • Nếu tế bào quang điện bị giảm lượng ánh sáng mà nó nhận được, nó sẽ nhận ra đây là chuyển động bên trong ngôi nhà.
  • Thiết lập cho phần này của dự án có thể được tìm thấy trong thử nghiệm 7 trong Hướng dẫn thử nghiệm SIK. Tuy nhiên, chỉ cần có tế bào quang điện và các dây kết nối của nó trong hệ thống dây điện.

Bước 4: Đèn LED RGB

  • Đèn LED RGB được sử dụng để kết hợp với công tắc nguồn mini và tế bào quang điện thứ hai cho hệ thống an ninh của ngôi nhà thông minh.
  • Ba màu sắc khác nhau được sử dụng làm chỉ báo cho cư dân của ngôi nhà thông minh.
  • Khi hệ thống được đặt ở chế độ 'Home', đèn LED sẽ chuyển sang màu xanh lam. Khi hệ thống được đặt ở chế độ 'Đi vắng', đèn LED sẽ chuyển sang màu xanh lục. Khi tế bào quang điện được sử dụng làm cảm biến chuyển động bị vấp, đèn sẽ nhấp nháy màu đỏ.
  • Hệ thống dây cho đèn LED RGB có thể được tìm thấy trong thử nghiệm 3 của Hướng dẫn thử nghiệm SIK.

Bước 5: Cảm biến nhiệt độ

  • Cảm biến nhiệt độ là một phần chính của việc tiết kiệm năng lượng trong ngôi nhà thông minh.
  • Cư dân có thể nhập nhiệt độ mong muốn cho ngôi nhà của họ khi ngôi nhà thông minh được sử dụng.
  • Cảm biến nhiệt độ là cách hệ thống biết nhiệt độ thực tế là bao xa so với nhiệt độ mong muốn.
  • Thiết lập cho cảm biến nhiệt độ có thể được tìm thấy trong thử nghiệm 9 của Hướng dẫn Thử nghiệm SIK.

Bước 6: DAGU Gearmotor

DAGU Gearmotor
DAGU Gearmotor
  • Động cơ cho phép ngôi nhà thông minh điều chỉnh nhiệt độ trong nhà dựa trên nhiệt độ mong muốn và các chỉ số của cảm biến nhiệt độ.
  • Đóng vai trò là bộ xoay chiều trong nhà, động cơ sẽ quay với các tốc độ khác nhau dựa trên nhiệt độ thực tế cao hơn nhiệt độ mong muốn là bao nhiêu. Chênh lệch càng cao thì động cơ quay càng nhanh.
  • Hệ thống dây điện cho động cơ có thể được tìm thấy trong Hướng dẫn thí nghiệm trong thí nghiệm 11.

Bước 7: Mã

  • Mã cho ngôi nhà thông minh bao gồm nhiều giao diện người dùng cho phép người dân dễ dàng hiểu cách hoạt động của nó và dễ dàng thay đổi cài đặt.
  • Với hệ thống nhà thông minh, cư dân sẽ nhận được email cảnh báo nếu cảm biến chuyển động bị tắt khi họ đi vắng.
  • Thay đổi duy nhất cần thực hiện là chèn thông tin cho email của người gửi và địa chỉ email của người nhận.

rõ ràng a; rõ ràng s; rõ ràng m; clc; đóng tất cả; % Xóa các biến arduino và servo để chúng có thể được định nghĩa lại mỗi lần để mã chạy hiệu quả ("clear m" là cần thiết để một trong các vòng lặp while hoạt động bình thường) a = arduino (); % Đặt biến arduino

s = servo (a, 'D6'); % Đặt biến servo

% Khởi tạo các biến email cho email cảnh báo hệ thống bảo mật

email = {'chèn địa chỉ người nhận'}; % Mảng email để gửi email bảo mật tới

% Cài đặt tùy chọn email cần thiết để sử dụng Gmail để gửi thư từ

setpref ('Internet', 'E_mail', 'địa chỉ email của người gửi');

setpref ('Internet', 'SMTP_Username', 'tên người dùng của người gửi');

setpref ('Internet', 'SMTP_Password', 'mật khẩu của người gửi');

props = 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');

% Chủ đề email và biến văn bản

subj = 'Cảnh báo kẻ xâm nhập tại nhà của bạn';

text = 'Xin chào, Đây là hệ thống an ninh Nhà thông minh của bạn thông báo cho bạn biết rằng đã có chuyển động được phát hiện bên ngoài nhà của bạn. Chúng tôi đã thực hiện các biện pháp cần thiết và liên hệ với các cơ quan chức năng cho bạn. Giữ an toàn.';

trong khi đúng

prompt = {'Nhập nhiệt độ nhà mong muốn (từ 65F đến 85F):'}; % Nhắc nhở cho menu nhập của người dùng

dlgtitle = 'Chọn nhiệt độ'; % Tiêu đề cho menu nhập của người dùng

dims = [1 30]; % Thứ nguyên cho menu nhập của người dùng

definput = {'72'}; % Đầu vào mặc định hiển thị khi menu được mở lần đầu tiên

tempsel_array = inputdlg (nhắc, dlgtitle, dims, definput); % Popup trình đơn người dùng nhập sẽ lưu số đã nhập vào một mảng

if ~ isempty (tempsel_array)% Nếu mảng KHÔNG trống

tempsel_char = cell2mat (tempsel_array); % Chuyển đổi mảng thành chuỗi ký tự

tempsel = str2double (tempsel_char); % Chuyển đổi chuỗi ký tự thành số

thingSpeakWrite (chID, tempsel, 'WriteKey', writeKey, 'Fields', 1); % Ghi nhiệt độ đã chọn vào kênh ThingSpeak của bạn

break% Break từ vòng lặp while để menu không bật lên nhiều lần

else% Nếu người dùng nhấp vào hủy thay vì nhập nhiệt độ

msg1 = msgbox ('Không chọn nhiệt độ, mặc định là 85F', 'Cảnh báo!'); % Thông báo được hiển thị cho người dùng sau khi nhấp vào hủy

chờ đợi (msg1); % Chờ cho hộp thông báo đóng trước khi tiếp tục

tempsel = 85; % Đặt nhiệt độ thành những gì đã được nêu trong hộp thông báo

thingSpeakWrite (chID, tempsel, 'WriteKey', writeKey, 'Fields', 1); % Ghi nhiệt độ đã chọn vào kênh ThingSpeak của bạn

break% Break từ vòng lặp while để menu không bật lên nhiều lần

kết thúc

kết thúc

trong khi đúng

chID = 745517; ID kênh% ThingSpeak

writeKey = 'G9XOQTP8KOVSCT0N'; % Key để truy cập vào Kênh ThingSpeak

% Khởi tạo cảm biến để tìm nạp dữ liệu

tempread = readVoltage (a, 'A3'); % Đọc điện áp của cảm biến nhiệt độ

lightl1 = readVoltage (a, 'A2'); % Mức độ ánh sáng cho điện trở quang đi đến đèn LED màu đỏ

lightl2 = readVoltage (a, 'A5'); % Mức độ ánh sáng cho điện trở quang đi vào hệ thống an ninh

switchv = readVoltage (a, 'A0'); % Giá trị cho công tắc

% Chuyển đổi dữ liệu nhiệt độ từ điện áp sang độ F.

tempC = (tempread - 0,5) * 100; % Chuyển đổi điện áp thành nhiệt độ tính bằng độ C

tempF = (tempC * 9/5) + 32; % Chuyển đổi nhiệt độ tính bằng độ C sang nhiệt độ tính bằng độ F

% Khởi tạo các số pin cho đèn LED nhiều màu

redp = 'D9'; % Pin cho ánh sáng đỏ từ đèn LED

greenp = 'D10'; % Pin cho ánh sáng xanh từ đèn LED

bluep = 'D11'; % Pin cho ánh sáng xanh lam từ đèn LED

nếu tempsel <tempF% Nếu nhiệt độ đã chọn lớn hơn nhiệt độ phòng

writePosition (s, 1); % Servo sẽ bắt đầu di chuyển

tạm dừng (10)% Servo sẽ tiếp tục quay trong 10 giây để biểu thị rằng AC sẽ tắt sau một khoảng thời gian nhất định

writePosition (s, 0); % Tắt quạt với mục đích tiếp tục mã mà không bật quạt

tempsel = 150; % Thay đổi giá trị nhiệt độ để thoát ra khỏi vòng lặp sau khi quạt đã tắt, một lần nữa chỉ với mục đích tiếp tục mã

kết thúc

nếu lightl1 <= 3% Nếu điện trở quang đầu tiên phát hiện mức ánh sáng yếu

writeDigitalPin (a, 'A1', 1); % Bật đèn LED màu đỏ biểu thị đèn ngoài trời

else% Nếu mức ánh sáng lại cao

writeDigitalPin (a, 'A1', 0); % Tắt đèn LED màu đỏ khi mức ánh sáng đủ cao trở lại

kết thúc

nếu switchv> 3% Nếu công tắc được bật

A = tồn tại ('m', 'var'); % Kiểm tra sự tồn tại của biến 'm', biến này sẽ khởi tạo cho vòng lặp while và cho phép nó bị phá vỡ khi một mục menu được chọn (đây là lý do tại sao phải thực hiện xóa m ở đầu mã)

trong khi A == 0% Vòng lặp sẽ thực thi cho đến khi biến 'm' tồn tại

menutext = 'Bạn muốn vào chế độ bảo mật nào?'; % Văn bản cho menu bật lên bảo mật

lựa chọn = {'Nhà riêng', 'Đi vắng'}; % Lựa chọn cho menu bật lên bảo mật

m = menu (menutext, các lựa chọn); % Menu bật lên cho các chế độ hệ thống bảo mật

break% Đảm bảo rằng vòng lặp while bị hỏng để menu sẽ không bật lên nhiều lần

kết thúc

nếu m == 1% Nếu chế độ 'Nhà riêng' được chọn

writeDigitalPin (a, bluep, 1); % Chỉ bật ánh sáng xanh lam trong đèn LED thay đổi màu

writeDigitalPin (a, redp, 0);

writeDigitalPin (a, greenp, 0);

elseif m == 2% Nếu chế độ 'Đi vắng' được chọn

writeDigitalPin (a, bluep, 0);

writeDigitalPin (a, redp, 0);

writeDigitalPin (a, greenp, 1); % Chỉ bật đèn xanh trong đèn LED thay đổi màu

if lightl2 <= 3% Nếu mức ánh sáng trong điện trở quang thứ hai thấp, thể hiện chuyển động được hệ thống an ninh phát hiện

sendmail (email, subj, text); % Gửi email với các thuộc tính email được xác định trước đó writeDigitalPin (a, greenp, 0); % Flash màu đỏ bật và tắt 2 lần

writeDigitalPin (a, redp, 1);

tạm dừng (0,3)

writeDigitalPin (a, redp, 0);

tạm dừng (0,3)

writeDigitalPin (a, redp, 1);

tạm dừng (0,3)

writeDigitalPin (a, redp, 0);

tạm dừng (0,3)

writeDigitalPin (a, redp, 1); % Kết thúc bằng màu đỏ đặc sau khi nhấp nháy để hiển thị có chuyển động cho đến khi mức ánh sáng tăng trở lại

msg2 = msgbox ('Đã phát hiện kẻ xâm nhập bởi hệ thống an ninh, một email đã được gửi đến chủ nhà để thông báo cho họ.', 'CẢNH BÁO!'); % Hộp thông báo để thông báo cho người dùng về chuyển động và để thông báo về email đã gửi đợi (msg2)% Chờ hộp thông báo đóng trước khi tiếp tục

khác

writeDigitalPin (a, greenp, 1); % Khi mức ánh sáng đã tăng trở lại, nó sẽ trở lại màu xanh lục

kết thúc

kết thúc

elseif switchv <3,3% Nếu công tắc bị tắt

writeDigitalPin (a, bluep, 0); % Tắt hoàn toàn đèn LED để hiển thị hệ thống an ninh đang tắt

writeDigitalPin (a, redp, 0);

writeDigitalPin (a, greenp, 0);

kết thúc

kết thúc

Đề xuất: