İçindekiler:
- Adım 1: Parçalar ve Malzemeler
- Adım 2: Sıcaklık Sensörü Kablolaması
- Adım 3: Sıcaklık Sensörü Çıkışı
- Adım 4: Yağmur Suyu Sensör Girişi
- Adım 5: Yağmur Suyu Sensör Çıkışı
- Adım 6: Titreşim Sensörü Girişi
- Adım 7: Titreşim Sensör Çıkışı
- Adım 8: Sonuç
Video: Demiryollarını Korumak İçin Arduino Üzerindeki Sıcaklık, Yağmur Suyu ve Titreşim Sensörlerini Kullanma: 8 Adım (Resimlerle)
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:20
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ü 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ışı 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
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ışı
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
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ışı
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:
Arduino ve Yağmur Damlası Sensörü Kullanan Yağmur Dedektörü: 8 Adım
Arduino ve Yağmur Damlası Sensörü Kullanan Yağmur Dedektörü: Bu derste, bir yağmur sensörü kullanarak bir yağmurun nasıl algılanacağını ve bir buzzer modülü ve OLED Ekran ve Visuino kullanarak nasıl ses çıkarılacağını öğreneceğiz.Videoyu izleyin
Sıcaklık Sensörlerini Test Etme - Hangisi Benim İçin?: 15 Adım (Resimlerle)
Sıcaklık Sensörlerini Test Etme - Hangisi Benim İçin?: Fiziksel hesaplamaya yeni başlayanların denemek istediği ilk sensörlerden biri, sıcaklığı ölçmek için bir şeydir. En popüler sensörlerden dördü, analog çıkışa sahip olan ve analogdan dijitale dönüştürücüye ihtiyaç duyan TMP36, DS18B20'dir
Ubidots+ESP32 ve Titreşim Sensörünü Kullanma-Uyarı Oluşturma-Kullanma: 8 Adım
Ubidots+ESP32 ve Titreşim Sensörünü Kullanma-Uyarı Oluşturma: Bu projede, Ubidots-titreşim sensörünü ve ESP32'yi kullanarak makine titreşimi ve sıcaklığı hakkında bir e-posta uyarısı oluşturacağız. motorlu araçlardaki makineler ve bileşenler. Titreşim ben
Ultrasonik Yağmur Suyu Tankı Kapasite Ölçer: 10 Adım (Resimlerle)
Ultrasonik Yağmur Suyu Tankı Kapasite Ölçer: Benim gibiyseniz ve biraz çevre bilinciniz varsa (ya da sadece birkaç kuruş biriktirmek isteyen cimrilerseniz - ki bu da benim…), bir yağmur suyu tankınız olabilir. Aldığımız oldukça nadir yağmurları toplamak için bir tankım var
Yağmur Suyu Kanalı: 11 Adım (Resimlerle)
Yağmur Suyu Yuvası: Şiddetli bir yağmur fırtınası, kaldırımlarımız, yağmur suyu kuyularımız, polderlerimiz ve bentlerimiz üzerinde bir taşmaya neden olabilir. Bunun olmasını önlemek için bir yağmur suyu savağı icat ettik! Yağmur suyu kanalı, yağmur suyu arasındaki mesafeyi dijital olarak hesaplar