İçindekiler:
2025 Yazar: John Day | [email protected]. Son düzenleme: 2025-01-13 06:58
Home System 3000, evdeki enerji verimliliğini artırmanın yollarını göstermek için bir Arduino, bir sıcaklık sensörü, bir piezo buzzer, bir optik dedektör/fototransistör ve bir servo kullanan bir cihazdır.
Adım 1: Sıcaklık Sensörü
· Güç ve topraklama kablolarınızı
ekmek tahtasının yanındaki mikro denetleyici
· Sıcaklık sensörünü ekmek tahtasına yerleştirin ve ilgili güç ve topraklama kablolarını buna göre çalıştırın
· Sıcaklık sensörünün üç tırnağı olduğuna ve orta tırnağın "A0" bağlantı noktasından geçen bir kabloya sahip olduğuna dikkat edin.
· Sıcaklık sensörü kodu:
answer = questdlg('Lütfen arduino ve servo başlatma kodunu çalıştırın', 'yanıt', 'Tamam', 'Tamam')
komut istemi = 'Başlamak için herhangi bir tuşa basın'
Duraklat
istem1 = 'Minimum sıcaklığı ayarla'
x = girdi(istem1)
istem2 = 'Maksimum sıcaklığı ayarla'
y = girdi(istem2)
istem3 = 'başlamak için herhangi bir tuşa basın'
Duraklat
figür
h = animasyonlu çizgi;
balta = gca;
ax. YGrid = 'açık';
ax. YLim = [65 85];
dur = yanlış;
startTime = tarihsaat('şimdi');
~dururken
% Akım voltaj değerini oku
v = readVoltage(a, 'A0');
% Voltajdan sıcaklığı hesaplayın (veri sayfasına göre)
TempC = (v - 0.5)*100;
TempF = 9/5*TempC + 32;
% Geçerli saati al
t = tarihsaat('şimdi') - başlangıçsaati;
% Animasyona puan ekle
ekleme noktaları(h, datenum(t), TempF)
% Eksenleri güncelle
ax. XLim = tarih([t-saniye(15) t]);
datatick('x', 'tutun')
çizilmiş
% Durdurma durumunu kontrol edin
dur = readDigitalPin(a, 'D12');
2. Adım: Zil
· Aşırı yüksek veya aşırı düşük sıcaklık okumasını belirtmek için kullanılacak sesli uyarıcıyı bağlayın
· Buzzer'ın pozitif kolonundan pozitif tarafına kablo geçmez
· Bunun yerine, sesli uyarının pozitif tarafından "11" etiketli bir bağlantı noktasına bir kablo geçirilir.
Bu, daha sonra yazılı koddaki buzzer'ın yerini aramak için kullanılacaktır.
· Zil için kod:
TempF >= y ise
disp('kapıyı kapat hava sıcak')
playTone(a, 'D11', 500, 1)
yoksa TempF <= x
disp('kapıyı kapat' soğuk')
playTone(a, 'D11', 250, 1)
son
son
Adım 3: Optik Dedektör/Fototransistör
· Bu sensör diğerlerinden farklı olarak direnç gerektirir
· Kabloları taktıktan sonra sensörün dört ucunun da döngüye dahil edildiğinden emin olun.
· Sensör, hareketi temsil eden ışıktaki bir değişikliği algılar ve bunu giriş olarak kaydeder.
· Optik Dedektör/Fototransistör Kodu:
temizle
a = arduino('/dev/tty.usbserial-DN01DVI2', 'Uno', 'Kütüphaneler', 'Servo');
komut istemi = 'Işık seviyesi eşiğini ayarla'
z = giriş(istem)
ışıkSeviyesi = 0
while lightLevel ~= -1
lightLevel = readVoltage (a, 'A1')
lightLevel >= z ise
cevap = questdlg('AC'yi değiştirmek ister misiniz?', 'Evet', 'Hayır')
cevabı değiştir
durum 'evet'
answer2 = questdlg('AC'yi aç veya kapat?', 'yanıt', 'Aşağı', 'Yukarı', 'Yukarı')
cevap2'yi değiştir
durum 'Aşağı'
s = servo(a, 'D10');
açı için = 0:.1:.5
writePosition(lar, açı);
current_position = readPosition(lar);
current_position = current_position * 180;
% servo motorun geçerli konumunu yazdır
fprintf('Mevcut pozisyon %d\n', current_position);
Servonun pozisyona yerleştirilebilmesi için % küçük gecikme gereklidir.
% açı ona söyledi.
duraklat(2);
son
% motoru 0 açı konumuna geri getir
writePosition(s, 0);
temizle
komut istemi = 'Devam etmek için herhangi bir tuşa basın'
questdlg('AC kapatıldı', 'yanıt', 'Tamam', 'Tamam')
durum 'Yukarı'
s = servo(a, 'D10');
açı için =.5:1:1
writePosition(lar, açı);
current_position = readPosition(lar);
current_position = current_position * 180;
% servo motorun geçerli konumunu yazdır
fprintf('Mevcut pozisyon %d\n', current_position);
Servonun pozisyona yerleştirilebilmesi için % küçük gecikme gereklidir.
% açı ona söyledi.
duraklat(2);
son
Adım 4: Servo
· Servo temsil eder
bir klimadır ve hareket algılama girişinin bir çıkışıdır
· Pozitif bir kablo, topraklama kablosu ve "D9" bağlantı noktasından servoya giden bir kablo gerektirir
· Servo için kod:
% motoru 0 açı konumuna geri getir
writePosition(s, 0);
temizle
komut istemi = 'Devam etmek için herhangi bir tuşa basın'
questdlg('AC açıldı', 'yanıt', 'Tamam', 'Tamam')
son
son
Duraklat
kırmak
son
son
*Özel not: servo kodunun bir kısmı optik dedektör/fototransistör koduyla entegre edilmiştir.