Sisukord:

EF 230: kodusüsteem 3000 Juhendatav: 4 sammu
EF 230: kodusüsteem 3000 Juhendatav: 4 sammu

Video: EF 230: kodusüsteem 3000 Juhendatav: 4 sammu

Video: EF 230: kodusüsteem 3000 Juhendatav: 4 sammu
Video: EF 230 Roomba Project video (Fall 2018) 2024, Juuli
Anonim
EF 230: kodusüsteem 3000 juhendatav
EF 230: kodusüsteem 3000 juhendatav

Kodusüsteem 3000 on seade, mis kasutab kodu energiatõhususe parandamiseks võimalusi Arduino, temperatuuriandurit, piesosummerit, optilist detektorit/fototransistorit ja servot.

Samm: temperatuuriandur

Temperatuuriandur
Temperatuuriandur

· Juhtige toite- ja maandusjuhtmeid

mikrokontroller leivalaua küljele

· Asetage temperatuuriandur leivalauale ja juhtige vastavalt toite- ja maandusjuhtmeid

· Pange tähele, et temperatuurianduril on kolm haru ja keskmisel harul on traat, mis jookseb pordist "A0".

· Temperatuurianduri kood:

answer = questdlg ('Palun käivitage arduino ja servo käivituskood', 'response', 'Ok', 'Ok')

prompt = 'Alustamiseks vajutage suvalist klahvi'

paus

prompt1 = 'Määra minimaalne temperatuur'

x = sisend (viip1)

prompt2 = 'Määra maksimaalne temperatuur'

y = sisend (viip2)

prompt3 = 'alustamiseks vajutage suvalist klahvi'

paus

joonis

h = animatedline;

kirves = gca;

ax. YGrid = 'sees';

kirves. YLim = [65 85];

peatus = vale;

startTime = datetime ('praegu');

samas ~ seisma

% Loe praegust pinge väärtust

v = lugemispinge (a, 'A0');

% Arvutage temperatuur pinge põhjal (andmelehe põhjal)

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

TempF = 9/5*TempC + 32;

% Hangi praegune aeg

t = datetime ('praegu') - startTime;

% Lisa animatsioonile punkte

lisandeid (h, kuupäev (t), TempF)

% Telgede värskendamine

ax. XLim = kuupäev ([t-sekundit (15) t]);

andmestik ('x', 'keeplimits')

tõmmatud

% Kontrollige seisukorra olekut

stop = readDigitalPin (a, 'D12');

2. samm: helisignaal

Sumin
Sumin

· Juhe sumerisse, mida kasutatakse äärmiselt kõrge või väga madala temperatuuri näitamiseks

· Positiivsest tulbast ei edastata traati sumisti positiivsele küljele

· Selle asemel suunatakse traat helisignaali positiivsest küljest sadamasse, millel on silt "11"

Seda kasutatakse hiljem helina asukoha määramiseks kirjutatud koodis.

· Signaali kood:

kui TempF> = y

disp ('sulge uks, see on kuum')

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

elseif TempF <= x

disp ("sulgege uks, see on külm")

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

lõpp

lõpp

3. samm: optiline detektor/fototransistor

Optiline detektor/fototransistor
Optiline detektor/fototransistor

· See andur nõuab takistit, erinevalt teistest

· Veenduge, et pärast juhtmete ühendamist on kõik neli anduri haru silmusesse lisatud

· Andur tuvastab liikumist kujutava valguse muutuse ja salvestab selle sisendina

· Optilise detektori/fototransistori kood:

selge a

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

prompt = 'Valgustustaseme läve seadmine'

z = sisend (viip)

valgusaste = 0

samas lightLevel ~ = -1

lightLevel = readVoltage (a, 'A1')

kui lightLevel> = z

vastus = questdlg ('tahaks vahelduvvoolu muuta?', 'jah', 'ei')

lülita vastus

juhtum "jah"

answer2 = questdlg ('Kas lülitada vahelduvvoolu üles või alla?', 'vastus', 'alla', 'üles', 'üles')

lülita vastus2

juhtum 'alla'

s = servo (a, 'D10');

nurga korral = 0:.1:.5

writePosition (s, nurk);

praegune_positsioon = readPosition (s);

praegune_positsioon = praegune_positsioon * 180;

Servomootori praeguse asukoha printimine %

fprintf ('Praegune asukoht on %d / n', praegune_asend);

% väike viivitus on vajalik, et servo saaks paigutada

% nurk, mis talle on öeldud.

paus (2);

lõpp

% viia mootor tagasi 0 nurga asendisse

writePosition (s, 0);

selge s

prompt = 'Jätkamiseks vajutage suvalist klahvi'

questdlg ('AC keelatud', 'vastus', 'Ok', 'OK')

juhtum 'Üles'

s = servo (a, 'D10');

nurga korral =.5:.1: 1

writePosition (s, nurk);

praegune_positsioon = readPosition (s);

praegune_positsioon = praegune_positsioon * 180;

Servomootori praeguse asukoha printimine %

fprintf ('Praegune asukoht on %d / n', praegune_asend);

% väike viivitus on vajalik, et servo saaks paigutada

% nurk, mis talle on öeldud.

paus (2);

lõpp

Samm: servo

Servo
Servo

· Servo esindab

kliimaseade ja on liikumistuvastuse sisendi väljund

· See nõuab positiivset traati, maandusjuhet ja traati pordist "D9" kuni servo

· Servo kood:

% viia mootor tagasi 0 nurga asendisse

writePosition (s, 0);

selge s

prompt = 'Jätkamiseks vajutage suvalist klahvi'

questdlg ('AC sisse lülitatud', 'vastus', 'ok', 'okei')

lõpp

lõpp

paus

murda

lõpp

lõpp

*Erimärkus: osa servo koodist on integreeritud optilise detektori/fototransistori koodiga.

Soovitan: