สารบัญ:

โครงการบ้านอัจฉริยะ EF230: 7 ขั้นตอน
โครงการบ้านอัจฉริยะ EF230: 7 ขั้นตอน

วีดีโอ: โครงการบ้านอัจฉริยะ EF230: 7 ขั้นตอน

วีดีโอ: โครงการบ้านอัจฉริยะ EF230: 7 ขั้นตอน
วีดีโอ: #แบไต๋บุก บ้านกลางเมือง ชมตัวอย่างบ้านอัจฉริยะ 2024, กรกฎาคม
Anonim
โครงการบ้านอัจฉริยะ EF230
โครงการบ้านอัจฉริยะ EF230

ชิ้นส่วนและวัสดุที่จำเป็น:

  • 1 Arduino MKR 1000
  • 3 เขียงหั่นขนม
  • โฟโตเซลล์ขนาดเล็ก 2 อัน
  • 1 ทรานซิสเตอร์ NPN
  • 1 สวิตช์ไฟขนาดเล็ก
  • 1 LED – RGB (4 ขา)
  • 1 LED (สีที่คุณเลือก)
  • 1 ไดโอด 1N4148
  • 1 ตัวต้านทาน 10K โอห์ม
  • 5 ตัวต้านทาน 100 โอห์ม
  • 1 เซ็นเซอร์อุณหภูมิ TMP36
  • 1 DAGU 48:1 อัตราทดเกียร์มอเตอร์
  • สายจัมเปอร์ 25 สาย
  • สาย USB
  • โปรแกรม MATLAB
  • คู่มือการทดลอง SIK สำหรับบอร์ด Arduino 101/Genuino 101 - SIK Experiment Guide Link

โครงการนี้มีรายละเอียดเกี่ยวกับการออกแบบแนวความคิดของระบบบ้านอัจฉริยะซึ่งจะใช้ข้อมูลเพื่อช่วยให้เจ้าของบ้านเพิ่มประสิทธิภาพการใช้พลังงานและความปลอดภัย ประกอบด้วยเซ็นเซอร์วัดแสงสำหรับเปิดไฟกลางแจ้งในเวลากลางคืน เซ็นเซอร์วัดแสงเพื่อความปลอดภัย เซ็นเซอร์อุณหภูมิและพัดลมสำหรับการควบคุมอุณหภูมิในร่ม

ขั้นตอนที่ 1: LED ที่ไวต่อแสง

  • การตั้งค่า LED ที่ไวต่อแสงมีขึ้นเพื่อแสดงแสงกลางแจ้งที่บ้านที่เปิดขึ้นในเวลากลางคืน
  • เมื่อโฟโตเซลล์ขนาดเล็กสัมผัสได้ถึงปริมาณแสงที่ลดลง ไฟ LED จะสว่างขึ้น
  • สำหรับบ้านอัจฉริยะ สิ่งนี้มีผลกระทบต่อพลังงานและความปลอดภัย มันจะประหยัดพลังงานโดยการปิดไฟในระหว่างวันและจะเพิ่มความปลอดภัยในเวลากลางคืน
  • การเดินสายและการตั้งค่าที่แน่นอนสำหรับส่วนนี้ของโครงการสามารถพบได้ในการทดลองที่ 7 ในคู่มือการทดสอบ SIK

ขั้นตอนที่ 2: สวิตช์ไฟขนาดเล็ก

  • สวิตช์เป็นขั้นตอนแรกในกระบวนการรักษาความปลอดภัยของบ้านอัจฉริยะ
  • เมื่อเปิดสวิตช์ สวิตช์จะเริ่มตอบกลับโดยถามผู้ใช้ว่าต้องการเข้าสู่โหมด "บ้าน" หรือโหมด "ไม่อยู่"
  • หากเลือกโหมด 'Home' การรักษาความปลอดภัยจะถือว่าปลดอาวุธ แต่การเลือกโหมด 'ไม่อยู่' จะทำให้ระบบรักษาความปลอดภัยติดอาวุธ
  • การเดินสายสำหรับส่วนนี้ของโครงการสามารถพบได้ในการทดลองที่ 6 ในคู่มือการทดลอง สำหรับวัตถุประสงค์ของบ้านอัจฉริยะ ไม่จำเป็นต้องรวม LED และสายเชื่อมต่อที่พบในการทดลองที่ 6

ขั้นตอนที่ 3: ตาแมวที่สอง

ตาแมวที่สอง
ตาแมวที่สอง
  • ตาแมวที่สองทำหน้าที่เป็นเซ็นเซอร์ตรวจจับความเคลื่อนไหวสำหรับระบบรักษาความปลอดภัยของบ้านอัจฉริยะ
  • เซ็นเซอร์จะใช้เฉพาะเมื่อระบบอยู่ในโหมด "ไม่อยู่" ตามที่อธิบายไว้ในขั้นตอนก่อนหน้า
  • หากตาแมวประสบกับปริมาณแสงที่ได้รับลดลง ก็จะรับรู้ว่านี่เป็นการเคลื่อนไหวภายในบ้าน
  • การตั้งค่าสำหรับส่วนนี้ของโครงการสามารถพบได้ในการทดลองที่ 7 ในคู่มือการทดสอบ SIK อย่างไรก็ตาม ต้องรวมเฉพาะโฟโตเซลล์และสายเชื่อมต่อไว้ในสายไฟเท่านั้น

ขั้นตอนที่ 4: LED RGB

  • RGB LED ใช้ร่วมกับสวิตช์เปิดปิดขนาดเล็กและโฟโตเซลล์ตัวที่สองสำหรับระบบรักษาความปลอดภัยของบ้านอัจฉริยะ
  • สามสีที่ต่างกันถูกใช้เป็นตัวบ่งชี้สำหรับผู้อยู่อาศัยในบ้านอัจฉริยะ
  • เมื่อระบบอยู่ในโหมด 'Home' ไฟ LED จะเปลี่ยนเป็นสีน้ำเงิน เมื่อระบบอยู่ในโหมด "ไม่อยู่" ไฟ LED จะเปลี่ยนเป็นสีเขียว เมื่อตาแมวที่ใช้เป็นเซ็นเซอร์ตรวจจับความเคลื่อนไหวสะดุด ไฟจะกะพริบเป็นสีแดง
  • การเดินสายไฟสำหรับ RGB LED สามารถพบได้ในการทดลองที่ 3 ของ SIK Experiment Guide

ขั้นตอนที่ 5: เซ็นเซอร์อุณหภูมิ

  • เซ็นเซอร์อุณหภูมิเป็นส่วนสำคัญในการประหยัดพลังงานในบ้านอัจฉริยะ
  • ผู้อยู่อาศัยสามารถป้อนอุณหภูมิที่ต้องการสำหรับบ้านของตนได้เมื่อมีการใช้งานบ้านอัจฉริยะ
  • เซ็นเซอร์อุณหภูมิเป็นวิธีที่ระบบรู้ว่าอุณหภูมิจริงอยู่ห่างจากอุณหภูมิที่ต้องการเท่าใด
  • การตั้งค่าเซ็นเซอร์อุณหภูมิสามารถพบได้ในการทดลองที่ 9 ของคู่มือการทดสอบ SIK

ขั้นตอนที่ 6: DAGU Gearmotor

มอเตอร์เกียร์ DAGU
มอเตอร์เกียร์ DAGU
  • มอเตอร์ช่วยให้บ้านอัจฉริยะควบคุมอุณหภูมิในบ้านตามอุณหภูมิที่ต้องการและการอ่านค่าของเซ็นเซอร์อุณหภูมิ
  • ทำหน้าที่เป็นหน่วยไฟฟ้ากระแสสลับในบ้าน มอเตอร์จะหมุนด้วยความเร็วที่แตกต่างกัน ขึ้นอยู่กับอุณหภูมิจริงที่สูงกว่าอุณหภูมิที่ต้องการมากน้อยเพียงใด ยิ่งความแตกต่างสูงเท่าไหร่ เขาก็ยิ่งหมุนมอเตอร์เร็วขึ้น
  • การเดินสายไฟสำหรับมอเตอร์มีอยู่ในคู่มือการทดลองภายใต้การทดลองที่ 11

ขั้นตอนที่ 7: รหัส

  • รหัสสำหรับบ้านอัจฉริยะประกอบด้วยอินเทอร์เฟซผู้ใช้หลายแบบที่ช่วยให้ผู้อยู่อาศัยเข้าใจวิธีการทำงานและเปลี่ยนการตั้งค่าได้อย่างง่ายดาย
  • ด้วยระบบสมาร์ทโฮม ผู้อยู่อาศัยจะได้รับและอีเมลแจ้งเตือนหากเซ็นเซอร์ตรวจจับความเคลื่อนไหวถูกตั้งค่าไว้ขณะที่ไม่อยู่
  • การเปลี่ยนแปลงเพียงอย่างเดียวที่ต้องทำคือการแทรกข้อมูลสำหรับอีเมลของผู้ส่งและที่อยู่อีเมลของผู้รับ

ล้าง; ชัดเจน s; ชัดเจน ม.; ซีแอลซี; ปิดทั้งหมด; % ล้างตัวแปร arduino และ servo เพื่อให้สามารถกำหนดใหม่ได้ในแต่ละครั้งเพื่อให้โค้ดทำงานได้อย่างมีประสิทธิภาพ ("clear m" จำเป็นสำหรับหนึ่งใน while loops เพื่อให้ทำงานได้อย่างถูกต้อง)a = arduino(); % ตั้งค่าตัวแปร Arduino

s = เซอร์โว (a, 'D6'); % ตั้งค่าตัวแปรเซอร์โว

% เริ่มต้นตัวแปรอีเมลสำหรับอีเมลแจ้งเตือนระบบความปลอดภัย

อีเมล = {'ใส่ที่อยู่ผู้รับ'}; % อาร์เรย์ของอีเมลที่จะให้ส่งอีเมลความปลอดภัยไปที่

% การตั้งค่ากำหนดอีเมลที่จำเป็นสำหรับการใช้ Gmail เพื่อส่งอีเมลจาก

setpref('อินเทอร์เน็ต', 'อีเมล', 'ที่อยู่อีเมลของผู้ส่ง');

setpref('อินเทอร์เน็ต', 'SMTP_Username', 'ชื่อผู้ใช้ของผู้ส่ง');

setpref('อินเทอร์เน็ต', 'SMTP_Password', 'รหัสผ่านของผู้ส่ง');

อุปกรณ์ประกอบฉาก = 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');

% หัวเรื่องอีเมลและตัวแปรข้อความ

subj = 'การแจ้งเตือนผู้บุกรุกที่บ้านของคุณ';

text = 'สวัสดี นี่คือระบบรักษาความปลอดภัย Smart Home ของคุณเพื่อแจ้งให้คุณทราบว่ามีการตรวจจับการเคลื่อนไหวนอกบ้านของคุณ เราได้ดำเนินการตามมาตรการที่จำเป็นและติดต่อเจ้าหน้าที่เพื่อคุณแล้ว อยู่อย่างปลอดภัย.';

ในขณะที่จริง

prompt = {'ป้อนอุณหภูมิบ้านที่ต้องการ (ระหว่าง 65F ถึง 85F):'}; % แจ้งให้ผู้ใช้ป้อนเมนู

dlgtitle = 'เลือกอุณหภูมิ'; % ชื่อเมนูอินพุตของผู้ใช้

หรี่แสง = [1 30]; % ขนาดสำหรับเมนูป้อนข้อมูลของผู้ใช้

กำหนด = {'72'}; % อินพุตเริ่มต้นที่ปรากฏขึ้นเมื่อเปิดเมนูครั้งแรก

tempsel_array = inputdlg (พร้อมท์, dlgtitle, dims, definput); % เมนูป้อนข้อมูลของผู้ใช้ป๊อปอัปที่จะบันทึกหมายเลขที่ป้อนลงในอาร์เรย์

if ~isempty(tempsel_array) % หากอาร์เรย์ไม่ว่างเปล่า

tempsel_char = cell2mat (tempsel_array); % แปลงอาร์เรย์เป็นสตริงอักขระ

tempsel = str2double(tempsel_char); % แปลงสตริงอักขระเป็นตัวเลข

thingSpeakWrite (chID, tempsel, 'WriteKey', writeKey, 'Fields', 1); % เขียนอุณหภูมิที่เลือกไปยังช่อง ThingSpeak ของคุณ

แยก % ออกจากวง while เพื่อไม่ให้เมนูปรากฏขึ้นหลายครั้ง

อื่น% หากผู้ใช้คลิกยกเลิกแทนที่จะป้อนอุณหภูมิ

msg1 = msgbox('ไม่ได้เลือกอุณหภูมิ, ค่าเริ่มต้นเป็น 85F', 'คำเตือน!'); % ข้อความที่แสดงต่อผู้ใช้หลังจากคลิกยกเลิก

รอ(msg1); % รอให้กล่องข้อความปิดก่อนดำเนินการต่อ

เทมเซล = 85; % ตั้งอุณหภูมิตามที่ระบุไว้ในกล่องข้อความ

thingSpeakWrite (chID, tempsel, 'WriteKey', writeKey, 'Fields', 1); % เขียนอุณหภูมิที่เลือกไปยังช่อง ThingSpeak ของคุณ

แยก % ออกจากวง while เพื่อไม่ให้เมนูปรากฏขึ้นหลายครั้ง

จบ

จบ

ในขณะที่จริง

ชิด = 745517; % ID ช่องของ ThingSpeak

writeKey = 'G9XOQTP8KOVSCT0N'; % คีย์สำหรับการเข้าถึงช่อง ThingSpeak

% เริ่มต้นเซ็นเซอร์เพื่อดึงข้อมูล

tempread = readVoltage (a, 'A3'); % อ่านแรงดันไฟฟ้าของเซ็นเซอร์อุณหภูมิ

lightl1 = readVoltage (a, 'A2'); % ระดับแสงสำหรับโฟโตรีซีสเตอร์ไปที่ LED สีแดง

lightl2 = readVoltage (a, 'A5'); % ระดับแสงสำหรับโฟโตรีซีสเตอร์ที่ไปยังระบบรักษาความปลอดภัย

switchv = readVoltage (a, 'A0'); % ค่าของสวิตช์

% แปลงข้อมูลอุณหภูมิจากแรงดันไฟฟ้าเป็นองศาฟาเรนไฮต์

tempC = (ชั่วคราว - 0.5) * 100; % แปลงแรงดันไฟฟ้าเป็นอุณหภูมิในเซลเซียส

tempF = (tempC * 9/5) + 32; % แปลงอุณหภูมิในเซลเซียสเป็นอุณหภูมิในฟาเรนไฮต์

% เริ่มต้นหมายเลขพินสำหรับ LED หลากสี

redp = 'D9'; % พินไฟแดงจาก LED

กรีนพี = 'D10'; % พินไฟเขียวจาก LED

bluep = 'D11'; % พินสำหรับแสงสีน้ำเงินจาก LED

if tempsel < tempF % หากอุณหภูมิที่เลือกมากกว่าอุณหภูมิห้อง

writePosition(s, 1); % เซอร์โวจะเริ่มเคลื่อนที่

หยุดชั่วคราว(10) % เซอร์โวจะหมุนต่อไปเป็นเวลา 10 วินาทีเพื่อแสดงว่า AC จะปิดหลังจากเวลาที่กำหนด

writePosition(s, 0); % ปิดพัดลมเพื่อรหัสต่อโดยไม่เปิดพัดลม

เทมเซล = 150; % เปลี่ยนค่าอุณหภูมิเพื่อแยกออกจากลูปหลังจากปิดพัดลมอีกครั้งเพียงเพื่อจุดประสงค์ในการดำเนินการต่อรหัส

จบ

ถ้า lightl1 <= 3% ถ้า photoresistor ตัวแรกตรวจพบระดับแสงน้อย

writeDigitalPin(a, 'A1', 1); % เปิดไฟ LED สีแดงที่แสดงไฟภายนอกอาคาร

อื่น% หากระดับแสงสูงอีกครั้ง

writeDigitalPin(a, 'A1', 0); % ปิดไฟ LED สีแดงเมื่อระดับแสงสูงเพียงพออีกครั้ง

จบ

ถ้า switchv > 3% ถ้าสวิตช์เปิดอยู่

A = มีอยู่ ('m', 'var'); % ตรวจสอบการมีอยู่ของตัวแปร 'm' ซึ่งจะเริ่มต้นสำหรับลูป while และอนุญาตให้ใช้งานไม่ได้เมื่อเลือกรายการเมนู (นี่คือสาเหตุที่ต้องล้าง m ที่จุดเริ่มต้นของโค้ด)

ในขณะที่ A==0 % วนรอบจะดำเนินการจนกว่าจะมีตัวแปร 'm' อยู่

menutext = 'คุณต้องการเข้าสู่โหมดความปลอดภัยใด'; % ข้อความสำหรับเมนูป๊อปอัปความปลอดภัย

ตัวเลือก = {'Home', 'Away'}; % ตัวเลือกสำหรับเมนูป๊อปอัปความปลอดภัย

m = เมนู(เมนู, ตัวเลือก); % เมนูป๊อปอัปสำหรับโหมดระบบความปลอดภัย

break% ตรวจสอบให้แน่ใจว่าวง while เสียดังนั้นเมนูจะไม่ปรากฏขึ้นหลายครั้ง

จบ

ถ้า m == 1% หากเลือกโหมด 'Home' ไว้

writeDigitalPin(a, bluep, 1); % เปิดเพียงแสงสีน้ำเงินใน LED เปลี่ยนสี

writeDigitalPin(a, redp, 0);

writeDigitalPin(a, greenp, 0);

elseif m == 2% หากเลือกโหมด 'ไม่อยู่' ไว้

writeDigitalPin(a, bluep, 0);

writeDigitalPin(a, redp, 0);

writeDigitalPin(a, greenp, 1); % เปิดเฉพาะไฟสีเขียวใน LED เปลี่ยนสี

ถ้า lightl2 <= 3% ถ้าระดับแสงในโฟโตรีซีสเตอร์ตัวที่สองต่ำ แสดงว่าระบบรักษาความปลอดภัยตรวจพบการเคลื่อนไหว

sendmail(อีเมล, หัวข้อ, ข้อความ); % ส่งอีเมลพร้อมคุณสมบัติอีเมลที่กำหนดไว้ก่อนหน้านี้ writeDigitalPin(a, greenp, 0); % เปิดปิดแฟลชสีแดง 2 ครั้ง

writeDigitalPin(a, redp, 1);

หยุดชั่วคราว(0.3)

writeDigitalPin(a, redp, 0);

หยุดชั่วคราว(0.3)

writeDigitalPin(a, redp, 1);

หยุดชั่วคราว(0.3)

writeDigitalPin(a, redp, 0);

หยุดชั่วคราว(0.3)

writeDigitalPin(a, redp, 1); % ปิดท้ายด้วยสีแดงค้างหลังจากกะพริบเพื่อแสดงว่ามีการเคลื่อนไหวจนกว่าระดับแสงจะถอยกลับ

msg2 = msgbox('ระบบรักษาความปลอดภัยตรวจพบผู้บุกรุก อีเมลถูกส่งไปยังเจ้าของบ้านเพื่อแจ้งให้ทราบ', 'คำเตือน!'); % กล่องข้อความเพื่อแจ้งให้ผู้ใช้การเคลื่อนไหวและแจ้งเกี่ยวกับอีเมลที่ส่ง waitfor(msg2) % รอให้กล่องข้อความปิดก่อนดำเนินการต่อ

อื่น

writeDigitalPin(a, greenp, 1); % เมื่อระดับแสงขึ้นอีกครั้งจะเปลี่ยนกลับเป็นสีเขียว

จบ

จบ

elseif switchv < 3.3 % หากสวิตช์ปิดอยู่

writeDigitalPin(a, bluep, 0); % ปิดไฟ LED ให้สมบูรณ์เพื่อแสดงว่าระบบความปลอดภัยปิดอยู่

writeDigitalPin(a, redp, 0);

writeDigitalPin(a, greenp, 0);

จบ

จบ

แนะนำ: