Spisu treści:
2025 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2025-01-13 06:58
Home System 3000 to urządzenie, które wykorzystuje Arduino, czujnik temperatury, brzęczyk piezoelektryczny, detektor optyczny/fototranzystor i serwo do wyświetlania sposobów poprawy efektywności energetycznej domu.
Krok 1: czujnik temperatury
· Poprowadź przewody zasilające i uziemiające z
mikrokontroler z boku deski do krojenia chleba
· Umieść czujnik temperatury w płytce do krojenia chleba i odpowiednio poprowadź odpowiednie przewody zasilające i uziemiające
· Zauważ, że czujnik temperatury ma trzy bolce, a środkowy bolec ma przewód wychodzący z portu „A0”.
· Kod czujnika temperatury:
answer = questdlg('Proszę uruchomić kod startowy arduino i serwomechanizmu', 'odpowiedź', 'Ok', 'Ok')
monit = 'Naciśnij dowolny klawisz, aby rozpocząć'
pauza
prompt1 = 'Ustaw minimalną temperaturę'
x = wejście(podpowiedź1)
prompt2 = 'Ustaw maksymalną temperaturę'
y = wejście(podpowiedź2)
prompt3 = 'naciśnij dowolny klawisz, aby rozpocząć'
pauza
postać
h = animowana linia;
topór = gca;
topór. YGrid = 'włączony';
topór. YLim = [65 85];
stop = fałsz;
startTime = datetime('teraz');
podczas ~stop
% Odczyt aktualnej wartości napięcia
v = odczytaj napięcie(a, 'A0');
% Oblicz temperaturę z napięcia (na podstawie arkusza danych)
TempC = (v-0,5)*100;
TempF = 9/5*TempC + 32;
% Uzyskaj aktualny czas
t = datetime('teraz') - startTime;
% Dodaj punkty do animacji
punkty dodania(h, datanum(t), TempF)
% Aktualizuj osie
ax. XLim = datanum([t-sekund(15) t]);
datetick('x', 'przechowaj limity')
narysowany
% Sprawdź warunek zatrzymania
stop = odczytajPinCyfrowy(a, 'D12');
Krok 2: Brzęczyk
· Przewód w brzęczyku, który będzie używany do sygnalizowania ekstremalnie wysokiej lub ekstremalnie niskiej temperatury
· Żaden przewód nie jest prowadzony od dodatniej kolumny do dodatniej strony brzęczyka
· Zamiast tego przewód biegnie od dodatniej strony brzęczyka do portu oznaczonego „11”
Będzie to później używane do wywołania lokalizacji brzęczyka w napisanym kodzie.
· Kod dla brzęczyka:
jeśli TempF >= y
disp('zamknij drzwi, jest gorąco')
playTone(a, 'D11', 500, 1)
elseif TempF <= x
disp('zamknij drzwi, jest zimno')
playTone(a, 'D11', 250, 1)
kończyć się
kończyć się
Krok 3: Detektor optyczny/fototranzystor
· Ten czujnik wymaga rezystorów w przeciwieństwie do innych
· Upewnij się, że wszystkie cztery wtyki czujnika znajdują się w pętli po podłączeniu przewodów
· Czujnik wykrywa zmianę światła reprezentującą ruch i rejestruje ją jako dane wejściowe
· Kod dla detektora optycznego/fototranzystora:
jasne
a = arduino('/dev/tty.usbserial-DN01DVI2', 'Uno', 'Biblioteki', 'Servo');
monit = „Ustaw próg poziomu światła”
z = wejście (podpowiedź)
poziom światła = 0
podczas gdy poziom światła ~= -1
lightLevel = readVoltage (a, 'A1')
jeśli poziom światła >= z
answer = questdlg('chcesz zmienić AC?', 'Tak', 'Nie')
zmień odpowiedź
przypadek „Tak”
answer2 = questdlg('Włącz lub wyłącz klimatyzator?', 'odpowiedź', 'W dół', 'W górę', 'W górę')
zmień odpowiedź2
przypadek „Dół”
s = serwo(a, 'D10');
dla kąta = 0:.1:.5
pozycja(y, kąt);
bieżąca pozycja = odczytajPozycję(-e);
bieżąca pozycja = bieżąca pozycja * 180;
% wydrukuj aktualną pozycję serwomotoru
fprintf('Aktualna pozycja to %d\n', aktualna_pozycja);
% małe opóźnienie jest wymagane, aby serwo mogło być ustawione na
Podano mu % kąta.
pauza(2);
kończyć się
% przywrócić silnik do pozycji kątowej 0
pozycja(y, 0);
jasne s
monit = 'Naciśnij dowolny klawisz, aby kontynuować'
questdlg('Odrzucono AC', 'odpowiedź', 'Ok', 'Ok')
wielkość liter „W górę”
s = serwo(a, 'D10');
dla kąta = 0,5:.1:1
pozycja(e, kąt);
bieżąca pozycja = odczytajPozycję(-e);
bieżąca pozycja = bieżąca pozycja * 180;
% wydrukuj aktualną pozycję serwomotoru
fprintf('Aktualna pozycja to %d\n', aktualna_pozycja);
% małe opóźnienie jest wymagane, aby serwo mogło być ustawione na
Podano mu % kąta.
pauza(2);
kończyć się
Krok 4: Serwo
· Serwo reprezentuje
klimatyzator i jest wyjściem wejścia detekcji ruchu
· Wymaga przewodu dodatniego, przewodu uziemiającego i przewodu od portu „D9” do serwomechanizmu
· Kod dla serwa:
% przywrócić silnik do pozycji kątowej 0
pozycja(y, 0);
jasne s
monit = 'Naciśnij dowolny klawisz, aby kontynuować'
questdlg('Włączono AC', 'odpowiedź', 'Ok', 'Ok')
kończyć się
kończyć się
pauza
przerwa
kończyć się
kończyć się
*Uwaga szczególna: część kodu dla serwomechanizmu jest zintegrowana z kodem dla detektora optycznego/fototranzystora.