Sommario:

EF 230: Home System 3000 Instructable: 4 passaggi
EF 230: Home System 3000 Instructable: 4 passaggi

Video: EF 230: Home System 3000 Instructable: 4 passaggi

Video: EF 230: Home System 3000 Instructable: 4 passaggi
Video: 220 В переменного тока от 12 В 90 А Автомобильный генератор переменного тока 1000 Вт DIY 2024, Dicembre
Anonim
EF 230: Home System 3000 Instructable
EF 230: Home System 3000 Instructable

L'Home System 3000 è un dispositivo che utilizza un Arduino, un sensore di temperatura, un cicalino piezoelettrico, un rilevatore ottico/fototransistor e un servo per visualizzare i modi per migliorare l'efficienza energetica della casa.

Passaggio 1: sensore di temperatura

Termometro
Termometro

· Esegui i cavi di alimentazione e di terra da

il micro controller sul lato della breadboard

· Posizionare il sensore di temperatura nella breadboard e far passare i cavi di alimentazione e di terra corrispondenti di conseguenza

· Notare che il sensore di temperatura ha tre poli e il polo centrale ha un filo che va dalla porta "A0".

· Codice per sensore di temperatura:

answer = questdlg('Esegui arduino e servo start code', 'response', 'Ok', 'Ok')

prompt = 'Premi un tasto qualsiasi per iniziare'

pausa

prompt1 = 'Imposta temperatura minima'

x = input (prompt1)

prompt2 = 'Imposta temperatura massima'

y = input (prompt2)

prompt3 = 'premere un tasto qualsiasi per iniziare'

pausa

figura

h = linea animata;

ax = gca;

ax. YGrid = 'on';

ax. YLim = [65 85];

stop = falso;

startTime = datetime('ora');

mentre ~fermati

% Leggere il valore di tensione corrente

v = readVoltage(a, 'A0');

% Calcolare la temperatura dalla tensione (in base alla scheda tecnica)

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

TempF = 9/5*TempC + 32;

% Ottieni l'ora corrente

t = datetime('now') - startTime;

% Aggiungi punti all'animazione

addpoints(h, datenum(t), TempF)

% Aggiorna assi

ax. Xlim = datenum([t-secondi(15) t]);

datetick('x', 'keeplimits')

disegnato

% Controllare la condizione di arresto

stop = readDigitalPin(a, 'D12');

Passaggio 2: cicalino

Cicalino
Cicalino

· Cavo nel cicalino che verrà utilizzato per segnalare una lettura di temperatura estremamente alta o estremamente bassa

· Nessun filo passa dalla colonna positiva al lato positivo del cicalino

· Invece un filo viene eseguito dal lato positivo del cicalino a una porta etichettata "11"

Questo servirà in seguito per chiamare la posizione del cicalino nel codice scritto.

· Codice per cicalino:

se TempF >= y

disp('chiudi la porta fa caldo')

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

elseif TempF <= x

disp('chiudi la porta fa freddo')

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

fine

fine

Passaggio 3: rilevatore ottico/fototransistor

Rivelatore ottico/fototransistor
Rivelatore ottico/fototransistor

· Questo sensore richiede resistori a differenza degli altri

· Assicurarsi che tutti e quattro i poli del sensore siano inclusi nell'anello dopo aver collegato i fili

· Il sensore rileva un cambiamento nella luce, che rappresenta il movimento, e lo registra come input

· Codice per rivelatore ottico/fototransistor:

chiaro a

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

prompt = 'Imposta soglia livello luce'

z = input (prompt)

livelloluce = 0

mentre lightLevel ~= -1

lightLevel = readVoltage (a, 'A1')

se lightLevel >= z

answer = questdlg('Vorresti modificare AC?', 'Sì', 'No')

cambia risposta

caso 'Sì'

answer2 = questdlg('Aumenta o abbassa l'aria condizionata?', 'risposta', 'Giù', 'Su', 'Su')

cambia risposta2

caso 'Giù'

s = servo(a, 'D10');

per angolo = 0:.1:.5

writePosition(s, angle);

posizione_corrente = readPosition(s);

posizione_corrente = posizione_corrente * 180;

% stampa la posizione corrente del servomotore

fprintf('La posizione attuale è %d\n', current_position);

% di ritardo è necessario un piccolo ritardo in modo che il servo possa essere posizionato al

% angolo detto ad esso.

pausa(2);

fine

% riportare il motore in posizione ad angolo 0

writePosition(s, 0);

chiaro s

prompt = 'Premi un tasto qualsiasi per continuare'

questdlg('AC rifiutata', 'risposta', 'Ok', 'Ok')

caso 'Su'

s = servo(a, 'D10');

per angolo =.5:.1:1

writePosition(s, angle);

posizione_corrente = readPosition(s);

posizione_corrente = posizione_corrente * 180;

% stampa la posizione corrente del servomotore

fprintf('La posizione attuale è %d\n', current_position);

% di ritardo è necessario un piccolo ritardo in modo che il servo possa essere posizionato al

% angolo detto ad esso.

pausa(2);

fine

Passaggio 4: servo

Servo
Servo

· Il servo rappresenta

un condizionatore d'aria ed è un'uscita dell'ingresso di rilevamento del movimento

· Richiede un filo positivo, un filo di terra e un filo dalla porta "D9" al servo

· Codice per servo:

% riportare il motore in posizione ad angolo 0

writePosition(s, 0);

chiaro s

prompt = 'Premi un tasto qualsiasi per continuare'

questdlg('AC si è presentato', 'risposta', 'Ok', 'Ok')

fine

fine

pausa

rottura

fine

fine

*Nota speciale: parte del codice per il servo è integrato con il codice per il rilevatore ottico/fototransistor.

Consigliato: