สารบัญ:

EF 230: Home System 3000 สอนได้: 4 ขั้นตอน
EF 230: Home System 3000 สอนได้: 4 ขั้นตอน

วีดีโอ: EF 230: Home System 3000 สอนได้: 4 ขั้นตอน

วีดีโอ: EF 230: Home System 3000 สอนได้: 4 ขั้นตอน
วีดีโอ: ประกอบอุปกรณ์โซล่าเซลล์ ทำเองใช้เองครับ(Solarcell Control Panel) 2024, ธันวาคม
Anonim
EF 230: Home System 3000 สอนได้
EF 230: Home System 3000 สอนได้

Home System 3000 เป็นอุปกรณ์ที่ใช้ Arduino, เซ็นเซอร์อุณหภูมิ, Piezo Buzzer, เครื่องตรวจจับแสง/โฟโตทรานซิสเตอร์ และเซอร์โวเพื่อแสดงวิธีการปรับปรุงประสิทธิภาพการใช้พลังงานในบ้าน

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

เซ็นเซอร์อุณหภูมิ
เซ็นเซอร์อุณหภูมิ

· ใช้สายไฟและสายกราวด์ของคุณจาก

ไมโครคอนโทรลเลอร์ที่ด้านข้างของบอร์ดขนมปัง

· วางเซ็นเซอร์อุณหภูมิลงในบอร์ดขนมปัง แล้วรันสายไฟและสายกราวด์ที่สอดคล้องกัน

· สังเกตว่าเซ็นเซอร์อุณหภูมิมีสามขา และขาตรงกลางมีลวดที่วิ่งจากพอร์ต "A0"

· รหัสสำหรับเซ็นเซอร์อุณหภูมิ:

answer = questdlg ('โปรดเรียกใช้ Arduino และรหัสเริ่มต้นของเซอร์โว', 'ตอบกลับ', 'ตกลง', 'ตกลง')

prompt = 'กดปุ่มใดก็ได้เพื่อเริ่มต้น'

หยุดชั่วคราว

prompt1 = 'ตั้งอุณหภูมิต่ำสุด'

x = อินพุต (พร้อมท์1)

prompt2 = 'ตั้งอุณหภูมิสูงสุด'

y = อินพุต (พร้อมท์2)

prompt3 = 'กดปุ่มใดก็ได้เพื่อเริ่มต้น'

หยุดชั่วคราว

รูป

h = อนิเมชั่นไลน์;

ขวาน = gca;

ax. YGrid = 'เปิด';

ขวาน. YLim = [65 85];

หยุด = เท็จ;

startTime = datetime('ตอนนี้');

ในขณะที่ ~หยุด

% อ่านค่าแรงดันไฟฟ้าปัจจุบัน

v = readVoltage (a, 'A0');

% คำนวณอุณหภูมิจากแรงดันไฟ (ตามข้อมูล)

อุณหภูมิ C = (v - 0.5)*100;

TempF = 9/5*TempC + 32;

% รับเวลาปัจจุบัน

t = datetime('ตอนนี้') - startTime;

% เพิ่มคะแนนให้กับแอนิเมชั่น

แอดพอยท์(h, datenum(t), TempF)

% อัปเดตแกน

ax. XLim = datenum([t-seconds(15) t]);

datetick('x', 'keeplimits')

drawow

% ตรวจสอบเงื่อนไขการหยุด

หยุด = readDigitalPin (a, 'D12');

ขั้นตอนที่ 2: Buzzer

Buzzer
Buzzer

· ต่อสายในออดที่จะใช้เพื่อส่งสัญญาณการอ่านอุณหภูมิที่สูงมากหรือต่ำมาก

· ไม่มีสายไฟวิ่งจากคอลัมน์บวกไปยังด้านบวกของออด

· แทนที่จะเดินสายไฟจากด้านบวกของออดไปยังพอร์ตที่ระบุว่า "11"

จะใช้ในภายหลังเพื่อเรียกตำแหน่งของออดในรหัสที่เขียน

· รหัสสำหรับออด:

ถ้า TempF >= y

disp('ปิดประตูมันร้อน')

playTone (a, 'D11', 500, 1)

elseif TempF <= x

disp('ปิดประตูมันหนาว')

playTone (a, 'D11', 250, 1)

จบ

จบ

ขั้นตอนที่ 3: ตัวตรวจจับแสง/โฟโตทรานซิสเตอร์

เครื่องตรวจจับแสง/โฟโต้ทรานซิสเตอร์
เครื่องตรวจจับแสง/โฟโต้ทรานซิสเตอร์

· เซ็นเซอร์นี้ต้องการตัวต้านทานที่ไม่เหมือนตัวอื่นๆ

· ตรวจสอบให้แน่ใจว่าขาทั้งสี่ของเซ็นเซอร์รวมอยู่ในลูปหลังจากเสียบสายไฟแล้ว

· เซ็นเซอร์ตรวจจับการเปลี่ยนแปลงของแสง แสดงถึงการเคลื่อนไหว และบันทึกเป็นสัญญาณเข้า

· รหัสสำหรับตัวตรวจจับแสง/โฟโตทรานซิสเตอร์:

ชัดเจน

a = arduino('/dev/tty.usbserial-DN01DVI2', 'Uno', 'Libraries', 'Servo');

prompt = 'ตั้งค่าเกณฑ์ระดับแสง'

z = อินพุต (พร้อมท์)

lightLevel = 0

ในขณะที่ lightLevel ~= -1

lightLevel = readVoltage (a, 'A1')

ถ้า lightLevel >= z

answer = questdlg('ต้องการเปลี่ยน AC หรือไม่', 'ใช่', 'ไม่')

เปลี่ยนคำตอบ

กรณี 'ใช่'

answer2 = questdlg('เปิดไฟฟ้ากระแสสลับขึ้นหรือลง', 'ตอบสนอง', 'ลง', 'ขึ้น', 'ขึ้น')

เปลี่ยนคำตอบ2

กรณี 'ลง'

s = เซอร์โว (a, 'D10');

สำหรับมุม = 0:.1:.5

เขียนตำแหน่ง(s, มุม);

current_position = readPosition(s);

current_position = current_position * 180;

% พิมพ์ตำแหน่งปัจจุบันของเซอร์โวมอเตอร์

fprintf('ตำแหน่งปัจจุบันคือ %d\n', current_position);

ต้องมีการหน่วงเวลาเล็กน้อย % เพื่อให้สามารถวางตำแหน่งเซอร์โวที่

% มุมบอกกับมัน

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

จบ

% นำมอเตอร์กลับไปที่ตำแหน่งมุม 0

writePosition(s, 0);

ชัดเจน

prompt = 'กดปุ่มใดก็ได้เพื่อดำเนินการต่อ'

questdlg('AC ปฏิเสธ', 'การตอบสนอง', 'ตกลง', 'ตกลง')

กรณี 'ขึ้น'

s = เซอร์โว (a, 'D10');

สำหรับมุม =.5:.1:1

เขียนตำแหน่ง(s, มุม);

current_position = readPosition(s);

current_position = current_position * 180;

% พิมพ์ตำแหน่งปัจจุบันของเซอร์โวมอเตอร์

fprintf('ตำแหน่งปัจจุบันคือ %d\n', current_position);

ต้องมีการหน่วงเวลาเล็กน้อย % เพื่อให้สามารถวางตำแหน่งเซอร์โวที่

% มุมบอกกับมัน

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

จบ

ขั้นตอนที่ 4: เซอร์โว

เซอร์โว
เซอร์โว

·เซอร์โวหมายถึง

เครื่องปรับอากาศและเป็นเอาต์พุตของอินพุตการตรวจจับการเคลื่อนไหว

· ต้องใช้สายบวก สายกราวด์ และสายจากพอร์ต "D9" ไปยังเซอร์โว

· รหัสสำหรับเซอร์โว:

% นำมอเตอร์กลับไปที่ตำแหน่งมุม 0

writePosition(s, 0);

ชัดเจน

prompt = 'กดปุ่มใดก็ได้เพื่อดำเนินการต่อ'

questdlg ('AC เปิดขึ้น', 'การตอบสนอง', 'ตกลง', 'ตกลง')

จบ

จบ

หยุดชั่วคราว

หยุดพัก

จบ

จบ

*หมายเหตุพิเศษ: โค้ดบางส่วนสำหรับเซอร์โวถูกรวมเข้ากับโค้ดสำหรับตัวตรวจจับออปติคัล/โฟโตทรานซิสเตอร์

แนะนำ: