ระบบบ้านอัจฉริยะ Arduino: 7 ขั้นตอน
ระบบบ้านอัจฉริยะ Arduino: 7 ขั้นตอน
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 แล้วไปได้เลย!