Përmbajtje:

EF 230: Home System 3000 Udhëzues: 4 hapa
EF 230: Home System 3000 Udhëzues: 4 hapa

Video: EF 230: Home System 3000 Udhëzues: 4 hapa

Video: EF 230: Home System 3000 Udhëzues: 4 hapa
Video: Урок 68. Домашняя автоматизация: как управлять 16-канальным релейным модулем с помощью Arduino, управляя 16 нагрузками переменного тока. 2024, Korrik
Anonim
EF 230: Home System 3000 Instructable
EF 230: Home System 3000 Instructable

Home System 3000 është një pajisje që përdor një Arduino, një sensor të temperaturës, një zile piezo, një detektor optik/fototransistor dhe një servo për të shfaqur mënyra për të përmirësuar efikasitetin e energjisë në shtëpi.

Hapi 1: Sensori i temperaturës

Sensor temperature
Sensor temperature

· Drejtoni telat tuaj të energjisë dhe tokëzimit nga

mikrokontrolluesi në anën e bordit të bukës

· Vendoseni sensorin e temperaturës në tabelën e bukës dhe drejtojini në përputhje me rrethanat fuqinë përkatëse dhe telat e tokëzimit

· Vini re se sensori i temperaturës ka tre priza, dhe priza e mesme ka një tel që del nga porti "A0".

· Kodi për sensorin e temperaturës:

answer = questdlg ('Ju lutemi drejtoni kodin e fillimit arduino dhe servo', 'përgjigje', 'Ok', 'Ok')

shpejtë = 'Shtypni çdo çelës për të filluar'

pauzë

prompt1 = 'Cakto temperaturën minimale'

x = hyrje (kërkesë1)

prompt2 = 'Cakto temperaturën maksimale'

y = hyrje (kërkesa2)

prompt3 = 'shtyp ndonjë tast për të filluar'

pauzë

figura

h = vija e animuar;

ax = gca;

ax. YGrid = 'aktiv';

ax. YLim = [65 85];

stop = false;

startTime = koha e datës ('tani');

ndërsa ~ ndalet

% Lexoni vlerën e tensionit aktual

v = readVoltage (a, 'A0');

% Llogaritni temperaturën nga tensioni (bazuar në fletën e të dhënave)

TempC = (v - 0.5)*100;

TempF = 9/5*TempC + 32;

% Merr kohën aktuale

t = koha e datës ('tani') - startTime;

% Shtoni pikë animacionit

shtesa (h, dataenum (t), TempF)

% Akset e përditësimit

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

datetick ('x', 'keeplimits')

tërheqje

% Kontrolloni gjendjen e ndalimit

stop = lexoDigitalPin (a, 'D12');

Hapi 2: Zile

Zile
Zile

· Tela në zile që do të përdoret për të sinjalizuar një lexim ekstrem të lartë ose ekstrem të ulët të temperaturës

· Asnjë tel nuk kalon nga kolona pozitive në anën pozitive të ziles

· Në vend të kësaj, një tel kalon nga ana pozitive e ziles në një port të etiketuar "11"

Kjo do të përdoret më vonë për të thirrur vendndodhjen e ziles në kodin e shkruar.

· Kodi për zile:

nëse TempF> = y

disp ("mbyll derën është nxehtë")

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

elseif TempF <= x

disp ('mbyll derën është ftohtë')

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

fund

fund

Hapi 3: Detektor optik/fototransistor

Detektor optik/fototransistor
Detektor optik/fototransistor

· Ky sensor kërkon rezistencë ndryshe nga të tjerët

· Sigurohuni që të katër kunjat e sensorit të përfshihen në lak pasi të keni lidhur telat

· Sensori zbulon një ndryshim në dritë, që përfaqëson lëvizjen dhe e regjistron atë si një hyrje

· Kodi për Detektor Optik/Fototransistor:

e qartë a

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

shpejtë = 'Vendos pragun e nivelit të dritës'

z = hyrje (kërkesë)

Niveli i dritës = 0

ndërsa lightLevel ~ = -1

lightLevel = readVoltage (a, 'A1')

nëse lightLevel> = z

answer = questdlg ('do të doje të ndryshoje AC?', 'Po', 'Jo')

ndërro përgjigjen

rasti 'po'

answer2 = questdlg ('Kthejeni AC lart ose poshtë?', 'Përgjigje', 'Poshtë', 'Lart', 'Lart')

ndërro përgjigjen2

rasti 'Poshte'

s = servo (a, 'D10');

për këndin = 0:.1:.5

shkruajPozicioni (et, këndi);

current_position = readPozicioni (et);

aktuale_pozita = pozicioni_ aktual * 180;

% printoni pozicionin aktual të servo motorit

fprintf ('Pozicioni aktual është %d / n', pozicioni aktual);

% vonesë e vogël kërkohet në mënyrë që servo të pozicionohet në

% kënd i thënë atij.

pauzë (2);

fund

% kthejeni motorin në pozicionin 0 kënd

writePosition (s, 0);

e qartë s

shpejtë = 'Shtypni çdo çelës për të vazhduar'

questdlg ('AC u refuzua', 'përgjigje', 'Ok', 'Ok')

rasti 'lart'

s = servo (a, 'D10');

për këndin =.5:.1: 1

shkruajPozicioni (et, këndi);

current_position = readPozicioni (et);

aktuale_pozita = pozicioni_ aktual * 180;

% printoni pozicionin aktual të servo motorit

fprintf ('Pozicioni aktual është %d / n', pozicioni aktual);

% vonesë e vogël kërkohet në mënyrë që servo të pozicionohet në

% kënd i thënë atij.

pauzë (2);

fund

Hapi 4: Servo

Servo
Servo

· Servo përfaqëson

një kondicioner, dhe është një dalje e hyrjes së zbulimit të lëvizjes

· Kërkon një tel pozitiv, tela tokëzimi dhe një tel nga porti "D9" në servo

· Kodi për servo:

% kthejeni motorin në pozicionin 0 kënd

writePosition (s, 0);

e qartë s

shpejtë = 'Shtypni çdo çelës për të vazhduar'

questdlg ('AC u shfaq', 'përgjigje', 'Ok', 'Ok')

fund

fund

pauzë

pushim

fund

fund

*Shënim special: disa nga kodi për servo është i integruar me kodin për detektorin/fototransistorin optik.

Recommended: