Inhoudsopgave:

EF 230: Home System 3000 Instrueerbaar: 4 stappen
EF 230: Home System 3000 Instrueerbaar: 4 stappen

Video: EF 230: Home System 3000 Instrueerbaar: 4 stappen

Video: EF 230: Home System 3000 Instrueerbaar: 4 stappen
Video: Как выбрать сейф для дома? Какой сейф лучше и не дорого... 2024, Juli-
Anonim
EF 230: Home System 3000 Instructable
EF 230: Home System 3000 Instructable

Het Home System 3000 is een apparaat dat een Arduino, een temperatuursensor, een piëzo-zoemer, een optische detector/fototransistor en een servo gebruikt om manieren weer te geven om de energie-efficiëntie van het huis te verbeteren.

Stap 1: Temperatuursensor

Temperatuursensor
Temperatuursensor

· Leid uw stroom- en aardingsdraden van

de microcontroller aan de zijkant van het breadboard

· Plaats de temperatuursensor in het breadboard en voer de bijbehorende stroom- en aardingsdraden dienovereenkomstig uit

· Merk op dat de temperatuursensor drie uitsteeksels heeft, en de middelste uitsteeksel heeft een draad die loopt van de poort "A0".

· Code voor temperatuursensor:

answer = questdlg('Voer arduino en servo startcode uit', 'response', 'Ok', 'Ok')

prompt = 'Druk op een willekeurige toets om te beginnen'

pauze

prompt1 = 'Minimumtemperatuur instellen'

x = invoer (prompt1)

prompt2 = 'Maximale temperatuur instellen'

y = invoer (prompt2)

prompt3 = 'druk op een willekeurige toets om te beginnen'

pauze

figuur

h = geanimeerde lijn;

bijl = gca;

ax. YGrid = 'aan';

ax. YLim = [65 85];

stoppen = onwaar;

startTime = datetime('nu');

terwijl ~stop

% Lees huidige spanningswaarde:

v = leesspanning (a, 'A0');

% Bereken temperatuur uit spanning (gebaseerd op gegevensblad)

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

TempF = 9/5*TempC + 32;

% Krijg huidige tijd

t = datetime('nu') - startTime;

% Punten toevoegen aan animatie

addpoints (h, datum (t), TempF)

% Update assen

ax. XLim = datum ([t-seconden (15) t]);

datetick('x', 'keeplimits')

getekend

% Controleer stopconditie

stop = readDigitalPin(a, 'D12');

Stap 2: Zoemer

Zoemer
Zoemer

· Draad in de zoemer die zal worden gebruikt om een extreem hoge of extreem lage temperatuurmeting te signaleren

· Er loopt geen draad van de positieve kolom naar de positieve kant van de zoemer

· In plaats daarvan loopt er een draad van de positieve kant van de zoemer naar een poort met het label "11"

Dit wordt later gebruikt om de locatie van de zoemer in de geschreven code te noemen.

· Code voor zoemer:

als TempF >= y

disp('sluit de deur, het is heet')

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

elseif TempF <= x

disp('sluit de deur, het is koud')

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

einde

einde

Stap 3: optische detector/fototransistor

Optische detector/fototransistor
Optische detector/fototransistor

· Deze sensor vereist weerstanden in tegenstelling tot de andere

· Zorg ervoor dat alle vier de uitsteeksels van de sensor in de lus zitten nadat u de draden hebt aangesloten

· De sensor detecteert een verandering in licht, die beweging voorstelt, en registreert deze als invoer

· Code voor optische detector/fototransistor:

duidelijk een

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

prompt = 'Drempel voor lichtniveau instellen'

z = invoer (prompt)

lichtniveau = 0

terwijl lightLevel ~= -1

lightLevel = leesspanning (a, 'A1')

if lightLevel >= z

answer = questdlg('wil je AC wijzigen?', 'Ja', 'Nee')

wisselen van antwoord

geval 'Ja'

answer2 = questdlg('Zet AC hoger of lager?', 'respons', 'Down', 'Up', 'Up')

wisselen van antwoord

geval 'Omlaag'

s = servo(a, 'D10');

voor hoek = 0:.1:.5

schrijfPositie(s, hoek);

huidige_positie = leesPositie(s);

huidige_positie = huidige_positie * 180;

% print huidige positie van servomotor

fprintf('Huidige positie is %d\n', huidige_positie);

% kleine vertraging is vereist zodat servo kan worden gepositioneerd op de

% hoek die eraan wordt verteld.

pauze (2);

einde

% breng motor terug naar 0 hoekpositie

schrijfPositie(s, 0);

duidelijk s

prompt = 'Druk op een willekeurige toets om door te gaan'

questdlg('AC afgewezen', 'antwoord', 'Ok', 'Ok')

koffer 'Omhoog'

s = servo(a, 'D10');

voor hoek =.5:.1:1

schrijfPositie(s, hoek);

huidige_positie = leesPositie(s);

huidige_positie = huidige_positie * 180;

% print huidige positie van servomotor

fprintf('Huidige positie is %d\n', huidige_positie);

% kleine vertraging is vereist zodat servo kan worden gepositioneerd op de

% hoek die eraan wordt verteld.

pauze (2);

einde

Stap 4: servo

Servo
Servo

· De servo vertegenwoordigt

een airconditioner, en is een uitgang van de bewegingsdetectie-ingang

· Het vereist een positieve draad, aardedraad en een draad van poort "D9" naar de servo

· Code voor servo:

% breng motor terug naar 0 hoekpositie

schrijfPositie(s, 0);

duidelijk s

prompt = 'Druk op een willekeurige toets om door te gaan'

questdlg('AC verscheen', 'antwoord', 'Ok', 'Ok')

einde

einde

pauze

pauze

einde

einde

*Speciale opmerking: een deel van de code voor de servo is geïntegreerd met de code voor de optische detector/fototransistor.

Aanbevolen: