Cuprins:

EF 230: Home System 3000 Instructabil: 4 pași
EF 230: Home System 3000 Instructabil: 4 pași

Video: EF 230: Home System 3000 Instructabil: 4 pași

Video: EF 230: Home System 3000 Instructabil: 4 pași
Video: Как выбрать сейф для дома? Какой сейф лучше и не дорого... 2024, Iulie
Anonim
EF 230: Sistem Home 3000 Instruibil
EF 230: Sistem Home 3000 Instruibil

Home System 3000 este un dispozitiv care folosește un Arduino, un senzor de temperatură, un buzzer piezo, un detector optic / fototranzistor și un servo pentru a afișa modalități de îmbunătățire a eficienței energetice a casei.

Pasul 1: senzor de temperatură

Senzor de temperatura
Senzor de temperatura

· Executați-vă cablurile de alimentare și de împământare

microcontrolerul în partea laterală a plăcii pentru pâine

· Așezați senzorul de temperatură în placa de pâine și rulați corespunzător cablurile de alimentare și de împământare corespunzător

· Observați că senzorul de temperatură are trei vârfuri, iar vârful din mijloc are un fir care trece de la portul "A0".

· Cod pentru senzorul de temperatură:

answer = questdlg („Vă rugăm să rulați codul de pornire arduino și servo”, „răspuns”, „Ok”, „Ok”)

prompt = 'Apăsați orice tastă pentru a începe'

pauză

prompt1 = 'Setați temperatura minimă'

x = input (prompt1)

prompt2 = 'Setați temperatura maximă'

y = intrare (prompt2)

prompt3 = 'apăsați orice tastă pentru a începe'

pauză

figura

h = linia animată;

ax = gca;

ax. YGrid = 'on';

ax. YLim = [65 85];

stop = fals;

startTime = datetime ('acum');

while ~ stop

% Citiți valoarea tensiunii curente

v = readVoltage (a, 'A0');

% Calculați temperatura din tensiune (pe baza fișei tehnice)

TempC = (v - 0,5) * 100;

TempF = 9/5 * TempC + 32;

% Obțineți ora curentă

t = datetime ('acum') - startTime;

% Adăugați puncte la animație

puncte de adăugare (h, datenum (t), TempF)

% Actualizați axele

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

datetick ('x', 'keeplimits')

drawow

% Verificați starea de oprire

stop = readDigitalPin (a, 'D12');

Pasul 2: Buzzer

Buzzer
Buzzer

· Sârmă în buzzer care va fi utilizată pentru a semnaliza o citire extremă a temperaturii ridicate sau extrem de scăzute

· Niciun fir nu este rulat de la coloana pozitivă la partea pozitivă a soneriei

· În schimb, un fir este rulat din partea pozitivă a soneriei către un port etichetat „11”

Aceasta va fi utilizată ulterior pentru a apela locația sonorului în codul scris.

· Cod pentru buzzer:

dacă TempF> = y

disp („închide ușa, e cald”)

playTone (a, „D11”, 500, 1)

elseif TempF <= x

disp („închide ușa, e frig”)

playTone (a, „D11”, 250, 1)

Sfârșit

Sfârșit

Pasul 3: Detector optic / fototranzistor

Detector optic / fototranzistor
Detector optic / fototranzistor

· Acest senzor necesită rezistențe spre deosebire de celelalte

· Asigurați-vă că toate cele patru vârfuri ale senzorului sunt incluse în buclă după conectarea firelor

· Senzorul detectează o modificare a luminii, reprezentând mișcarea și o înregistrează ca intrare

· Cod pentru detector optic / fototranzistor:

clar un

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

prompt = 'Setați pragul nivelului de lumină'

z = intrare (prompt)

lightLevel = 0

în timp ce lightLevel ~ = -1

lightLevel = readVoltage (a, 'A1')

dacă lightLevel> = z

answer = questdlg („ați dori să modificați AC?”, „Da”, „Nu”)

comuta răspuns

cazul „Da”

answer2 = questdlg („Întoarceți AC în sus sau în jos?”, „răspuns”, „Jos”, „Sus”, „Sus”)

comuta răspuns2

cazul „jos”

s = servo (a, 'D10');

pentru unghiul = 0:.1:.5

writePosition (s, angle);

current_position = readPosition (s);

current_position = current_position * 180;

% tipăriți poziția curentă a servomotorului

fprintf ('Poziția actuală este% d / n', poziția_curentă);

Este necesară o mică întârziere, astfel încât servo să poată fi poziționat la

% unghi spus.

pauză (2);

Sfârșit

% readuceți motorul în poziția 0 unghi

writePosition (s, 0);

clar s

prompt = 'Apăsați orice tastă pentru a continua'

questdlg („AC a refuzat”, „răspuns”, „Ok”, „Ok”)

cazul „Sus”

s = servo (a, 'D10');

pentru unghiul =.5:.1: 1

writePosition (s, angle);

current_position = readPosition (s);

current_position = current_position * 180;

% poziția curentă de imprimare a servomotorului

fprintf ('Poziția actuală este% d / n', poziția_curentă);

Este necesară o mică întârziere, astfel încât servo să poată fi poziționat la

% unghi spus.

pauză (2);

Sfârșit

Pasul 4: Servo

Servo
Servo

· Servo reprezintă

un aparat de aer condiționat și este o ieșire a intrării de detectare a mișcării

· Necesită un fir pozitiv, un fir de împământare și un fir de la portul "D9" la servo

· Cod pentru servo:

% readuceți motorul în poziția 0 unghi

writePosition (s, 0);

clar s

prompt = 'Apăsați orice tastă pentru a continua'

questdlg („AC a apărut”, „răspuns”, „Ok”, „Ok”)

Sfârșit

Sfârșit

pauză

pauză

Sfârșit

Sfârșit

* Notă specială: o parte din codul pentru servo este integrat cu codul pentru detectorul optic / fototranzistor.

Recomandat: