สารบัญ:

ระบบบ้านอัจฉริยะ Arduino: 7 ขั้นตอน
ระบบบ้านอัจฉริยะ Arduino: 7 ขั้นตอน

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

วีดีโอ: ระบบบ้านอัจฉริยะ Arduino: 7 ขั้นตอน
วีดีโอ: Arduino ระบบควบคุมหลอดไฟในบ้านอัจฉริยะ 2024, กรกฎาคม
Anonim
Arduino Smart Home System
Arduino Smart Home System
Arduino Smart Home System
Arduino Smart Home System

ในคำแนะนำนี้ เราจะแสดงวิธีสร้างระบบบ้านอัจฉริยะของคุณเองด้วย App Designer ของ MATLAB พร้อมกระดาน Sparkfun Red คำแนะนำนี้สามารถใช้เพื่อช่วยเพิ่มความเข้าใจพื้นฐานเกี่ยวกับ App Designer ของ MATLAB ตลอดจนการใช้โฟโตรีซีสเตอร์ เซอร์โวมอเตอร์ และเซ็นเซอร์ตรวจจับความเคลื่อนไหว PIR

ขั้นตอนที่ 1: เริ่มต้น: วัสดุ

โครงการนี้ต้องการวัสดุดังต่อไปนี้:

- Arduino Uno (สำหรับโครงการนี้เราใช้กระดาน Sparkfun Red)

- โฟโตรีซีสเตอร์หนึ่งตัว

- มอเตอร์เซอร์โวขนาดเล็กหนึ่งตัว

- เซอร์โวมอเตอร์ต่อเนื่องหนึ่งตัว

- เซ็นเซอร์ตรวจจับความเคลื่อนไหว PIR หนึ่งตัว

- เซ็นเซอร์อุณหภูมิหนึ่งตัว

- ไฟ LED 2 ดวง

- สายไฟและตัวต้านทานตามต้องการ

ขั้นตอนที่ 2: ขั้นตอนที่ 2: เข้าใกล้ปัญหาเพื่อแก้ไข

เป้าหมายหลักของโครงการนี้คือการสร้างระบบบ้านอัจฉริยะที่ใช้งานง่ายโดยการเข้ารหัสบอร์ด Arduino Uno ด้วย MATLAB ตอนแรกเราคิดแค่ว่าจะทำงานกับเซ็นเซอร์อุณหภูมิและความชื้น แต่ถ้าเราใช้เซ็นเซอร์สองตัวนี้ ระบบบ้านอัจฉริยะของเราจะขายได้ไม่ง่ายสำหรับผู้ชมทั่วไป เราตัดสินใจว่าเราต้องการสร้างระบบพลังงานในบ้านอัจฉริยะโดยรวมที่จะทำงานเป็นเทอร์โมสแตทและระบบรักษาความปลอดภัยอัจฉริยะ สุดท้าย เราต้องการทำงานร่วมกับ AppDesigner ของ MATLAB เพื่อให้ผู้ใช้สามารถปรับเปลี่ยนบ้านอัจฉริยะได้อย่างง่ายดายตามต้องการ

ขั้นตอนที่ 3: ขั้นตอนที่ 3: กำหนดค่า GUI และรหัสพื้นฐาน Flow

ขั้นตอนที่ 3: การกำหนดค่า GUI และรหัสพื้นฐาน Flow
ขั้นตอนที่ 3: การกำหนดค่า GUI และรหัสพื้นฐาน Flow

ในการเริ่มต้น คุณจะต้องเปิด MATLAB AppDesigner และวางสิ่งต่อไปนี้:

ช่องแก้ไขตัวเลขสองช่องสำหรับการป้อนข้อมูลขีดจำกัดแบบร้อนและแบบเย็น

ปุ่มปลดล็อคประตู

และไฟสัญญาณสี่ดวงสำหรับเตาผิง ประตู พัดลม และไฟน้ำท่วม

สองป้ายเพื่อสื่อสารกับผู้ใช้

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

ทั่วโลก

a = arduino ('COM3', 'uno', 'Libraries', 'Servo'); global s global p global hotUI global coldUI global ปลดล็อค global temp global curr_temp global int_light

ตอนนี้เรามีเพียงการมอบหมายสำหรับตัวแปรเพื่อให้คอมพิวเตอร์ของคุณสามารถอ่าน Arduino ได้ COM3 อาจแตกต่างกันไปขึ้นอยู่กับพอร์ตที่คอมพิวเตอร์ของคุณอาจใช้

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

หมายเหตุ: เราไม่ได้ให้คำแนะนำในการเดินสายใดๆ สำหรับระบบ เราอ้างอิงถึงคู่มือที่มาพร้อมกับกระดาน SparkFun Red

ขั้นตอนที่ 4: ขั้นตอนที่ 3: การตั้งค่าระบบควบคุมอุณหภูมิ

ขั้นตอนที่ 3: การตั้งค่าระบบเทอร์โมสตัท
ขั้นตอนที่ 3: การตั้งค่าระบบเทอร์โมสตัท
ขั้นตอนที่ 3: การตั้งค่าระบบเทอร์โมสตัท
ขั้นตอนที่ 3: การตั้งค่าระบบเทอร์โมสตัท

ฟังก์ชันสำหรับเทอร์โมสตัททำงานดังต่อไปนี้:

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

ในการโค้ดระบบเทอร์โมสตัท:

เราจะเริ่มภายในฟังก์ชันการเริ่มต้นเพื่อแสดงอุณหภูมิปัจจุบันและให้ผู้ใช้ป้อนเกณฑ์ที่เย็นและร้อน

p = 'A0' %Photoresistor พิน

โวลต์ = อ่านแรงดันไฟฟ้า (a, อุณหภูมิ); celc = (โวลต์-0.5).*100; curr_temp = celc*9/5+32; app. Label_4. Text = num2str(curr_temp); %หมายเลขฉลากสามารถเปลี่ยนการหยุดชั่วคราว(10); %อาจต้องการเปลี่ยน!!!!!

จากนั้นเราจะทำระบบเทอร์โมสตัทให้สมบูรณ์ภายในคุณสมบัติตัวจับเวลา

โลกcurr_temp

global coldUI global เป็น global hotUI ถ้าแอป curr_temp hotUI. FanStateLamp. Color = [0.47 0.67 0.19]; % เปลี่ยนไฟ GUI เป็นสีเขียว writePWMDutyCycle(a, 'D11',.9) %โค้ดสามบรรทัดถัดไปเรียกใช้พัดลมเซอร์โวหยุดชั่วคราว (10) writePWMDutyCycle(a, 'D11',.0) อื่น app. FireplaceStateLamp. Color = [0.90 0.90 0.90]; นี้จะปิดทั้งหมดโคมไฟ GUI และ app. FanStateLamp. Color = [0.9 0.9 0.9]; writeDigitalPin(a, 'D13', 0); จบ

ขั้นตอนที่ 5: ขั้นตอนที่ 4: การตั้งค่าระบบประตู

ขั้นตอนที่ 4: การตั้งค่าระบบประตู
ขั้นตอนที่ 4: การตั้งค่าระบบประตู

ฟังก์ชั่นสำหรับประตูทำงานดังต่อไปนี้:

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

ในการกำหนดค่าเซอร์โวมอเตอร์และโฟโตรีซีสเตอร์:

รหัสระบบประตู:

เราจะเริ่มภายในฟังก์ชันเริ่มต้นเพื่ออ่านค่าแสงเริ่มต้น

s = เซอร์โว (a, 'D9') % พินอาจเปลี่ยนแปลงตามการเดินสาย

app. Label_4. Text='โปรดเปิดประตูเพื่อปรับเทียบระบบ'; หยุดชั่วคราว(15); นี้ให้เวลาสำหรับผู้ใช้ในการเปิดประตู int_light = readVoltage(a, p); app. Label_4. Text = 'คุณสามารถเอานิ้วออกได้';

ต่อไปเราจะกรอกรหัสภายในคุณสมบัติตัวจับเวลา

ปลดล็อคทั่วโลก

global int_light global s global a % รับการอ่านแสงปัจจุบันเพื่อเปรียบเทียบ curr_light = readVoltage(a, p); % -- ล็อคประตู -- ถ้า int_light<curr_light writePosition(s, 1) % ตำแหน่งเซอร์โวอาจแตกต่างกันในแต่ละมอเตอร์หยุด (0.5); app. DoorStateLamp. Color = [0.47 0.67 0.19]; สิ้นสุด % - ปลดล็อกประตู - หากปลดล็อก == 1234 หยุดชั่วคราว (0.5); แอป writePosition(s,.52) DoorStateLamp. Color = [0.85 0.33 0.10]; จบ

ในที่สุดเราจะสร้างการโทรกลับปุ่มปลดล็อค เมื่อผู้ใช้กดปุ่มปลดล็อค การปลดล็อคตัวแปรส่วนกลางจะได้รับหมายเลขซึ่งสามารถกรอกคำสั่ง if ในคุณสมบัติตัวจับเวลาได้

ปลดล็อคทั่วโลก

ปลดล็อค = 1234;

ขั้นตอนที่ 6: ขั้นตอนที่ 6: การตั้งค่าระบบไฟน้ำท่วม

ขั้นตอนที่ 6: การตั้งค่าระบบไฟน้ำท่วม
ขั้นตอนที่ 6: การตั้งค่าระบบไฟน้ำท่วม

ฟังก์ชันสำหรับไฟฟลัดไลท์ทำงานดังต่อไปนี้:

เมื่อคุณเริ่มรหัส MATLAB เซ็นเซอร์ตรวจจับความเคลื่อนไหว PIR จะเริ่มตรวจจับการเคลื่อนไหว เมื่อตรวจพบการเคลื่อนไหวบางประเภทแล้ว มันจะตัดสัญญาณไฟ เมื่อตัดสัญญาณแล้ว ไฟน้ำท่วมก็จะเปิดออกนอกบ้าน

ในการกำหนดค่าระบบไฟน้ำท่วม:

รหัสระบบไฟน้ำท่วม:

คราวนี้เราสามารถข้ามไปที่คุณสมบัติ Timer ได้เพราะเราไม่ต้องเขียนตัวแปรเพิ่มเติมใดๆ

human_detected = readDigitalPin (a, 'D2'); % พินอาจเปลี่ยนแปลงตามการกำหนดค่าหาก human_detected == 0 writeDigitalPin(a, 'D7', 1) %Pin อาจเปลี่ยน app. FloodLightStateLamp. Color = [0.47 0.67 0.19]; elseif human_detected == 1 app. FloodLightStateLamp. Color = [0.9 0.9 0.9]; writeDigitalPin(a, 'D7', 0) สิ้นสุด

ขั้นตอนที่ 7: บทสรุป

ตอนนี้คุณมี GUI แบบร่างกับ App Designer และโค้ดของคุณสำหรับ Arduino แล้ว คุณก็พร้อมที่จะทำการแก้ไขของคุณเองหรือเสียบ Arduino แล้วไปได้เลย!

แนะนำ: