İçindekiler:

Demiryollarını Korumak İçin Arduino Üzerindeki Sıcaklık, Yağmur Suyu ve Titreşim Sensörlerini Kullanma: 8 Adım (Resimlerle)
Demiryollarını Korumak İçin Arduino Üzerindeki Sıcaklık, Yağmur Suyu ve Titreşim Sensörlerini Kullanma: 8 Adım (Resimlerle)

Video: Demiryollarını Korumak İçin Arduino Üzerindeki Sıcaklık, Yağmur Suyu ve Titreşim Sensörlerini Kullanma: 8 Adım (Resimlerle)

Video: Demiryollarını Korumak İçin Arduino Üzerindeki Sıcaklık, Yağmur Suyu ve Titreşim Sensörlerini Kullanma: 8 Adım (Resimlerle)
Video: 03-#TrafikTehlikeUyarıİşaretleri#Elektronik Ehliyet Uygun #SrcSoruları 2024, Temmuz
Anonim
Demiryollarını Korumak İçin Arduino Üzerindeki Sıcaklık, Yağmur Suyu ve Titreşim Sensörlerini Kullanma
Demiryollarını Korumak İçin Arduino Üzerindeki Sıcaklık, Yağmur Suyu ve Titreşim Sensörlerini Kullanma

Günümüz toplumunda, demiryolu yolcularındaki artış, demiryolu şirketlerinin talebe ayak uydurmak için ağları optimize etmek için daha fazlasını yapması gerektiği anlamına gelir. Bu projede, bir arduino kartındaki sıcaklık, yağmur suyu ve titreşim sensörlerinin potansiyel olarak yolcuların güvenliğini artırmaya nasıl yardımcı olabileceğini küçük ölçekte göstereceğiz.

Bu Eğitim Tablosu, arduino üzerindeki sıcaklık, yağmur suyu ve titreşim sensörlerinin kablolarını adım adım gösterecek ve ayrıca bu sensörleri çalıştırmak için gereken MATLAB kodunu gösterecektir.

Adım 1: Parçalar ve Malzemeler

1. MATLAB'ın en son sürümünün kurulu olduğu bir bilgisayar

2. Arduino Kurulu

3. Sıcaklık Sensörü

4. Yağmur Suyu Sensörü

5. Titreşim Sensörü

6. Kırmızı LED Işık

7. Mavi LED Işık

8. Yeşil LED Işık

9. RBG LED Işık

10. Zil

11. 18 Erkek-Erkek Tel

12. 3 Dişi-Erkek Tel

13. 2 Dişi-Dişi Tel

14. 6 330 ohm direnç

15. 1 100 ohm direnç

Adım 2: Sıcaklık Sensörü Kablolaması

Sıcaklık Sensörü Kablolaması
Sıcaklık Sensörü Kablolaması
Sıcaklık Sensörü Kablolaması
Sıcaklık Sensörü Kablolaması

Sıcaklık sensörü girişi için de kablolama ve MATLAB kodu yukarıdadır.

Topraktan ve 5V'den gelen kabloların, tüm pano için yalnızca bir kez sırasıyla negatif ve pozitif olarak çalıştırılması gerekir. Buradan itibaren, herhangi bir toprak bağlantısı negatif sütundan ve herhangi bir 5V bağlantısı pozitif sütundan gelecektir.

Sıcaklık sensörü için aşağıdaki kod kopyalanıp yapıştırılabilir.

%% SICAKLIK SENSÖRÜ % Sıcaklık sensörü için aşağıdaki kaynağı kullandık.

Kullanıcıya izin vermek için sıcaklık sensörümüzü değiştirmek için % EF230 web sitesi materyali

Grafikli % giriş ve 3 LED ışık çıkışı.

%Bu taslak SparkFun Electronics tarafından yazılmıştır, Arduino topluluğundan bolca yardım alarak.

Eric Davishahl tarafından MATLAB'a uyarlanmıştır.

%SIK bilgileri için https://learn.sparkfun.com/products/2 adresini ziyaret edin.

hepsini temizle, clc

tempPin = 'A0'; % Sıcaklık sensörüne bağlı analog pinin bildirilmesi

a=arduino('/dev/tty.usbserial-DA017PNO', 'uno');

% Voltajı sıcaklığa dönüştüren anonim işlevi tanımlayın

tempCfromVolts = @(volt) (volt-0.5)*100;

örneklemeSüresi = 30;

örneklemeAralığı = 2; % Sıcaklık okumaları arasındaki saniye

%örnekleme zamanları vektörünü ayarla

sampleTimes = 0:samplingInterval:samplingDuration;

%süre ve aralığa göre örnek sayısını hesaplayın

numSamples = uzunluk(samplingTimes);

Depolayacağı okuma sayısı için geçici değişkenleri ve değişkeni %preallocate

tempC = sıfırlar(numSamples, 1);

tempF = tempC;

Maksimum ve minimum ray sıcaklıklarını saklamak için giriş iletişim kutusunu kullanma %

dlg_prompts = {'Maks Temp'i Girin', 'Min Temp'i Girin'};

dlg_title = 'Ray Sıcaklık aralıkları';

N=22;

dlg_ans = inputdlg(dlg_prompts, dlg_title, [1, uzunluk(dlg_title)+N]);

% Kullanıcıdan gelen girişlerin saklanması ve girişin kaydedildiğinin görüntülenmesi

max_temp = str2double(dlg_ans{1})

min_temp = str2double(dlg_ans{2})

txt = sprintf('Girişiniz kaydedildi');

h=msgbox(txt);

bekle(h);

% For döngüsü, sıcaklıkları belirli sayıda okumak için.

dizin için = 1:numÖrnekler

% TempPin'deki voltajı okuyun ve değişken volt olarak saklayın

volt = readVoltage(a, tempPin);

tempC(indeks) = tempCfromVolts(volt);

tempF(indeks) = tempC(indeks)*9/5+32; % Santigrattan Fahrenhayt'a Dönüştür

% Belirli LED ışıklarının hangi koşulun karşılandığına bağlı olarak yanıp sönmesini sağlayan ifadeler

if tempF(index) >= max_temp % Kırmızı LED

writeDigitalPin(a, 'D13', 0);

duraklat(0.5);

writeDigitalPin(a, 'D13', 1);

duraklat(0.5);

writeDigitalPin(a, 'D13', 0);

elseif tempF(index) >= min_temp && tempF(index) < max_temp % Yeşil LED

writeDigitalPin(a, 'D11', 0);

duraklat(0.5);

writeDigitalPin(a, 'D11', 1);

duraklat(0.5);

writeDigitalPin(a, 'D11', 0);

elseif tempF(index) <= min_temp % Mavi LED

writeDigitalPin(a, 'D12', 0);

duraklat(0.5);

writeDigitalPin(a, 'D12', 1);

duraklat(0.5);

writeDigitalPin(a, 'D12', 0);

son

% Sıcaklıkları ölçüldüğü gibi görüntüleyin

fprintf('%d saniyedeki sıcaklık %5.2f C veya %5.2f F.\n', …

örneklemeTimes(index), tempC(index), tempF(index));

duraklatma(samplingInterval) sonraki örneğe kadar %delay

son

% Sıcaklık okumalarının çizilmesi

Şekil 1)

arsa(samplingTimes, tempF, 'r-*')

xlabel('Zaman (Saniye)')

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

title('RedBoard'dan Sıcaklık Okumaları')

Adım 3: Sıcaklık Sensörü Çıkışı

Sıcaklık Sensörü Çıkışı
Sıcaklık Sensörü Çıkışı
Sıcaklık Sensörü Çıkışı
Sıcaklık Sensörü Çıkışı

Sıcaklık sensörü çıkışı için kablolama ve MATLAB kodu yukarıdadır.

Bu proje için sıcaklık sensörümüzün çıkışı için üç LED ışık kullandık. Raylar çok sıcaksa kırmızı, çok soğuksa mavi ve aradaysa yeşil kullandık.

Adım 4: Yağmur Suyu Sensör Girişi

Yağmur Suyu Sensör Girişi
Yağmur Suyu Sensör Girişi
Yağmur Suyu Sensör Girişi
Yağmur Suyu Sensör Girişi

Yukarıda yağmur suyu sensörü için kablolama ve MATLAB kodu aşağıda belirtilmiştir.

%% Su sensörü

hepsini temizle, clc

a=arduino('/dev/tty.usbserial-DA017PNO', 'uno');

suPin = 'A1';

vKuru = 4.80; % Su olmadığında voltaj

örneklemeSüresi = 60;

örneklemeAralığı = 2;

sampleTimes = 0:samplingInterval:samplingDuration;

numSamples = uzunluk(samplingTimes);

% Belirli bir süre için voltajı okumak için döngü için (60 saniye)

dizin için = 1:numÖrnekler

volt2 = okumaVoltaj(a, suPin); % Su pimi analogundan okuma voltajı

% If ifadesi su algılanırsa sesli uyarı verir. Voltaj düşüşü = su

volt2 < vDry ise

playTone(a, 'D09', 2400) MathWorks'ten % playTone işlevi

% Su tespit edilirse yolculara bir uyarı göster

waitfor(warndlg('Treniniz su tehlikesi nedeniyle gecikebilir'));

son

% Su sensörü tarafından ölçülen voltajı göster

fprintf('%d saniyedeki voltaj %5.4f V.\n', …

örneklemeTimes(index), volt2;

duraklat(örneklemeAralığı)

son

Adım 5: Yağmur Suyu Sensör Çıkışı

Yağmur Suyu Sensör Çıkışı
Yağmur Suyu Sensör Çıkışı

Yukarıda, raya çok fazla su düştüğünde bip sesi çıkaran bir sesli uyarının kabloları bulunmaktadır. Zil kodu, yağmur suyu girişi kodunun içine yerleştirilmiştir.

Adım 6: Titreşim Sensörü Girişi

Titreşim Sensör Girişi
Titreşim Sensör Girişi
Titreşim Sensör Girişi
Titreşim Sensör Girişi

Yukarıda titreşim sensörü için kablolama var. Titreşim sensörleri, bir ray üzerine düşen kayalar durumunda demiryolu sistemleri için önemli olabilir. MATLAB kodu aşağıda yayınlanmıştır.

%% Titreşim Sensörütümünü temizle, clc

PIEZO_PIN = 'A3'; % Titreşim sensörüne bağlı analog pinin bildirilmesi a=arduino('/dev/tty.usbserial-DA017PNO', 'uno'); % Titreşim örneklemesini ölçmek için zaman ve aralığın başlatılmasıSüre = 30; % Saniye örnekleme Aralığı = 1;

sampleTimes = 0:samplingInterval:samplingDuration;

numSamples = uzunluk(samplingTimes);

% Aşağıdaki kaynaktan gelen kodu kullanarak, bir

Titreşim algılanırsa % mor LED.

% SparkFun Tinker Kit, RGB LED, SparkFun Electronics tarafından yazılmış, Arduino topluluğundan bolca yardım alarak %

% Eric Davishahl tarafından MATLAB'a uyarlanmıştır

% RGB pinini başlatma

RED_PIN = 'D5';

YEŞİL_PIN = 'D6';

MAVİ_PIN = 'D7';

% Titreşim sensöründen gelen voltaj değişikliklerini bir süre boyunca kaydetmek için döngü için

% belirli zaman aralığı (30 saniye)

dizin için = 1:numÖrnekler

volt3 = okumaVoltage(a, PIEZO_PIN);

% If ifadesi, titreşim algılandığında mor bir LED'i açar

volt3>0.025 ise

writeDigitalPin(a, RED_PIN, 1);

% Mor bir ışık oluşturma

writeDigitalPin(a, YEŞİL_PIN, 0);

writeDigitalPin(a, MAVİ_PIN, 1);

başka % Titreşim algılanmazsa LED'i kapatın.

writeDigitalPin(a, RED_PIN, 0);

writeDigitalPin(a, YEŞİL_PIN, 0);

writeDigitalPin(a, MAVİ_PIN, 0);

son

% Voltajı ölçüldüğü gibi görüntüleyin.

fprintf('%d saniyedeki voltaj %5.4f V.\n', …

örneklemeTimes(indeks), volt3);

duraklat(örneklemeAralığı)

son

% Titreşimleri ölçerken ışığı kes

writeDigitalPin(a, RED_PIN, 0);

writeDigitalPin(a, YEŞİL_PIN, 0);

writeDigitalPin(a, MAVİ_PIN, 0);

Adım 7: Titreşim Sensör Çıkışı

Titreşim Sensör Çıkışı
Titreşim Sensör Çıkışı

Yukarıda kullanılan RBG LED ışığı için kablolama verilmiştir. Titreşim algılandığında ışık mor renkte yanacaktır. Çıktı için MATLAB kodu, girdi kodu içinde gömülüdür.

Adım 8: Sonuç

Tüm bu adımları izledikten sonra artık sıcaklık, yağmur suyu ve titreşimleri algılama yeteneğine sahip bir arduinoya sahip olmalısınız. Bu sensörlerin küçük ölçekte nasıl çalıştığını incelerken, modern yaşamda demiryolu sistemleri için ne kadar hayati olabileceklerini hayal etmek kolaydır!

Önerilen: