İçindekiler:

Desert Railroad Sıcaklık Dedektörü ve Yolcu Sayacı: 5 Adım
Desert Railroad Sıcaklık Dedektörü ve Yolcu Sayacı: 5 Adım

Video: Desert Railroad Sıcaklık Dedektörü ve Yolcu Sayacı: 5 Adım

Video: Desert Railroad Sıcaklık Dedektörü ve Yolcu Sayacı: 5 Adım
Video: Amerika Birleşik Devletleri'ndeki en büyük model demiryollarından biri 2024, Kasım
Anonim
Desert Railroad Sıcaklık Dedektörü ve Yolcu Sayacı
Desert Railroad Sıcaklık Dedektörü ve Yolcu Sayacı

Amaç:

Sıcaklık: Bu talimat, bir demiryolunun sıcaklığını tespit etmek için bir Arduino RedBoard'u (MATLAB kullanarak) nasıl kuracağınızı ve programlayacağınızı öğretecektir. Yolcular için güvenli olmayan bir sıcaklığa ulaşıldığında bir uyarı mesajı duyulur, sesli uyarılar çalar ve bir uyarı işareti yanar.

Yolcu Sayacı: Bu bölüm size yolcuları saymak için bir düğmenin nasıl kullanılacağını öğretecek ve maksimum kapasiteye ulaşıldığında bir uyarı sesi verecektir.

Özellikleri:

  • Trene giren yolcuları saymak için Düğmeyi kullanır
  • Demiryolunun sıcaklığını algılamak için TMP36 (sıcaklık sensörü) kullanır
  • Tren istasyonunu uyarmak için Kırmızı LED ışık kullanır
  • Alarmı çalmak için buzzer kullanır
  • Sıcaklık ve zaman grafiğini içeren bir uyarı e-postası gönderir
  • MATLAB üzerinde açılır uyarı mesajları

Adım 1: Malzemeler ve Sarf Malzemeleri

Malzemeler ve Malzemeler
Malzemeler ve Malzemeler
  • 1 dizüstü bilgisayar
  • MATLAB 2017
  • Arduino Araç Kutusunu İndirin
  • Sparkfun Kırmızı Tahta
  • 1 Güç Kablosu
  • ekmek tahtası
  • 14 tel
  • 1 Piezo Zil
  • 1 Basma Düğmesi
  • 2 adet 10k ohm direnç
  • 1 TMP36 sensörü
  • Kırmızı LED ışık
  • 3D baskılı tabela (isteğe bağlı)

Adım 2: Kart Kurulumu

Kart Kurulumu
Kart Kurulumu

Yukarıdaki kurulumu izleyin

Adım 3: Kodu Yazma

while Döngüsü: Kodun sıcaklığı test etmeye ve düğme durumunu (basılı veya basılı değil) algılamaya devam etmesini sağlamak için kodu belirli bir süre boyunca while döngüsüne yerleştiririz.

TMP36'yı kullanarak: Gerilimi okuyarak ve dönüştürme faktörlerini kullanarak Fahrenheit derecesine çevirerek sıcaklığı belirleriz. Ardından, bir ton çalmak için bir if ifadesi kullanırız ve sıcaklık ayarlanan maksimum sıcaklıktan büyük veya ona eşitse uyarı verir/ses veririz.

Button Kullanımı: Bir if ifadesi ile readDigitalPin kullanarak butona basılıp basılmadığını test edebiliriz. Bu komut bir Boolean (1 veya 0) döndürür. Cevap 0 ise butona basılır ve yolcu sayacı yükselir ve hoş geldin mesajı verir. Ardından maksimum kapasiteye ulaşıldığında bir uyarı mesajı duyulur.

4. Adım: Kodu Kopyalayın

%Girişler: Düğmeye basıldığında, sıcaklık sensörü

%Çıkışlar: ışıklar, sesli uyarılar, sesli uyarı, e-postalar, grafikler

Amaç: Bu ürün, çölde trenle seyahat eden yolcuların güvenliğini ve konforunu sağlamaya yardımcı olmak için tasarlanmıştır.

%Kullanım: Bir düğmeyi kullanarak yolcu sayısını algılama ve bir sıcaklık sensörü kullanarak ısıyı % algılama ve grafiğini çizme ve hem yolcu sayılarını hem de sıcaklık grafiğini tren istasyonuna gönderme

configurePin(a, 'D2', 'çekme'); % gelecek sürümlerde configurePin kullanın

zaman = 200;

e=0;

x=0

süre > 0 iken

button_status = readDigitalPin(a, 'D2'); Düğmeye basıldığında % sıfıra, aksi takdirde 1'e eşittir

voltaj = readVoltage(a, 'A0');%pin nereye yerleştirdiğimize bağlıdır

sıcaklıkCelcius = (voltaj*100)-50; Sensör kılavuzunda verilen %

tempF(zaman) = (tempCelcius*1.8)+32 %bilinen dönüştürme formülü

maksimum = 120; %derece F

writeDigitalPin(a, 'D11', 1);

rem=mod(e, 2);

eğer tempF(zaman)>=maks

writeDigitalPin(a, 'D11', 0);

writeDigitalPin(a, 'D9', 1);

playTone(a, 'D9', 2400,.5)

duraklat(.5)

writeDigitalPin(a, 'D6', 1)

playTone(a, 'D6', 1000,.5)

duraklat(.5)

writeDigitalPin(a, 'D9', 1);

playTone(a, 'D9', 2400,.5)

duraklat(.5)

writeDigitalPin(a, 'D6', 1)

playTone(a, 'D6', 1000,.5) % "siren" çalıyor

z='Overheat.m4a'; %Bu, ses dosyasını bir değişkene koyar

[veri, sıklık]=sesli okuma(z); %Ses dosyasından veri yükler

o=ses oynatıcı(veri, frekans); %Ses dosyasının çalınmasını kontrol etmek için bir nesne oluşturur

o.play() %Ses dosyasını çalar

o.playblocking() %Dosyayı oynatır ve bitmesini bekler

son

if button_status == 0 && rem==0

e=e+1

msgbox('Gemiye Hoş Geldiniz!');

elseif button_status == 0 && rem==1

e=e+1

msgbox('Bienvenido bir bordo!');

son

e==5 ise

writeDigitalPin(a, 'D11', 0);

x==0 ise

playTone(a, 'D6', 600, 1);

s='Uyarı_EF.m4a'; %Bu, ses dosyasını bir değişkene koyar

[veri, sıklık]=sesli okuma(lar); %Ses dosyasından veri yükler

o=ses oynatıcı(veri, frekans); %Ses dosyasının çalınmasını kontrol etmek için bir nesne oluşturur

% o.play() %Ses dosyasını çalar

o.playblocking() %Dosyayı oynatır ve bitmesini bekler

msgbox('Maksimum Kapasite')

x=x+1

son

aksi takdirde e>=6

playTone(a, 'D6', 2400, 0);

son

zaman = zaman - 1;

% duraklama(0.1);

% ise e==5 && max(tempF)>=120

% zaman=0

% son

son

ee=sayı2dizi(e)

t=[1:200];

tempF2=fliplr(tempF);

arsa(t, tempF2);

başlık('Zaman ve Sıcaklık')

ylabel('Sıcaklık(F)')

xlabel('Zaman(lar)')

saveas(gcf, 'tempplot.jpg')

mail= '[email protected]'

şifre='Srsora123#'

host='smtp.gmail.com'

setpref('İnternet', 'SMTP_Sunucusu', ana bilgisayar);

setpref('İnternet', 'E_posta', posta);

setpref('İnternet', 'SMTP_Kullanıcı Adı', posta);

setpref('İnternet', 'SMTP_Şifre', şifre);

sahne = java.lang. System.getProperties;

props.setProperty('mail.smtp.auth', 'true');

props.setProperty('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory');

props.setProperty('mail.smtp.socketFactory.port', '465');

sendmail(mail, 'Merhaba Tren İstasyonu! Trende bu kadar yolcu var', ee, 'tempplot.jpg')

Adım 5: Sonuçlar

Önerilen: