İçindekiler:

EF 230: Home System 3000 Eğitilebilir: 4 Adım
EF 230: Home System 3000 Eğitilebilir: 4 Adım

Video: EF 230: Home System 3000 Eğitilebilir: 4 Adım

Video: EF 230: Home System 3000 Eğitilebilir: 4 Adım
Video: 220 В переменного тока от 12 В 90 А Автомобильный генератор переменного тока 1000 Вт DIY 2024, Kasım
Anonim
EF 230: Ev Sistemi 3000 Eğitilebilir
EF 230: Ev Sistemi 3000 Eğitilebilir

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ü

Sıcaklık sensörü
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

zil
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

Optik Dedektör/Fototransistör
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
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.

Önerilen: