Daftar Isi:

Menggunakan Sensor Suhu, Air Hujan, dan Getaran pada Arduino untuk Melindungi Perkeretaapian: 8 Langkah (dengan Gambar)
Menggunakan Sensor Suhu, Air Hujan, dan Getaran pada Arduino untuk Melindungi Perkeretaapian: 8 Langkah (dengan Gambar)

Video: Menggunakan Sensor Suhu, Air Hujan, dan Getaran pada Arduino untuk Melindungi Perkeretaapian: 8 Langkah (dengan Gambar)

Video: Menggunakan Sensor Suhu, Air Hujan, dan Getaran pada Arduino untuk Melindungi Perkeretaapian: 8 Langkah (dengan Gambar)
Video: Undangan Pemaparan Online Mahasiswa PKL di Stasiun Geofisika Jayapura dan Pelepasan 2024, Juli
Anonim
Menggunakan Sensor Suhu, Air Hujan, dan Getaran pada Arduino untuk Melindungi Kereta Api
Menggunakan Sensor Suhu, Air Hujan, dan Getaran pada Arduino untuk Melindungi Kereta Api

Dalam masyarakat modern, peningkatan penumpang kereta api berarti bahwa perusahaan kereta api harus berbuat lebih banyak untuk mengoptimalkan jaringan untuk memenuhi permintaan. Dalam proyek ini kami akan menunjukkan dalam skala kecil bagaimana sensor suhu, air hujan, dan getaran pada papan arduino berpotensi membantu meningkatkan keselamatan penumpang.

Instruksi ini akan menunjukkan langkah demi langkah pengkabelan untuk sensor suhu, air hujan, dan getaran pada arduino serta menunjukkan kode MATLAB yang diperlukan untuk menjalankan sensor ini.

Langkah 1: Bagian dan Bahan

1. Komputer dengan MATLAB versi terbaru terinstal

2. Papan Arduino

3. Sensor Suhu

4. Sensor Air Hujan

5. Sensor Getaran

6. Lampu LED Merah

7. Lampu LED Biru

8. Lampu LED Hijau

9. Lampu LED RBG

10. Buzzer

11. 18 Kabel Pria-Pria

12. 3 Kabel Wanita-Pria

13. 2 Kabel Wanita-Wanita

14. 6 330 ohm resistor

15. Resistor 1 100 ohm

Langkah 2: Pengkabelan Sensor Suhu

Pengkabelan Sensor Suhu
Pengkabelan Sensor Suhu
Pengkabelan Sensor Suhu
Pengkabelan Sensor Suhu

Di atas adalah kabel dan kode MATLAB untuk input sensor suhu juga.

Kabel dari ground dan 5V hanya perlu dialirkan ke negatif dan positif masing-masing satu kali untuk seluruh papan. Mulai sekarang, koneksi ground apa pun akan berasal dari kolom negatif dan koneksi 5V apa pun akan berasal dari kolom positif.

Kode di bawah ini dapat disalin dan ditempel untuk sensor suhu.

%% TEMPERATURE SENSOR % Untuk sensor suhu kami menggunakan sumber berikut bersama dengan

% materi situs web EF230 untuk memodifikasi sensor suhu kami untuk memungkinkan pengguna

% input dan 3 output lampu LED dengan grafik.

%Sketsa ini ditulis oleh SparkFun Electronics, % dengan banyak bantuan dari komunitas Arduino.

% Diadaptasi ke MATLAB oleh Eric Davishahl.

%Kunjungi https://learn.sparkfun.com/products/2 untuk informasi SIK.

hapus semua, clc

tempPin = 'A0'; % Menyatakan pin analog terhubung ke sensor suhu

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

% Tentukan fungsi anonim yang mengubah tegangan menjadi suhu

tempCfromVolts = @(volt) (volt-0,5)*100;

samplingDurasi = 30;

samplingInterval = 2; % Detik antara pembacaan suhu

%set up vektor waktu pengambilan sampel

samplingTimes = 0:samplingInterval:samplingDuration;

%menghitung jumlah sampel berdasarkan durasi dan interval

numSamples = panjang(samplingTimes);

% mengalokasi variabel temp dan variabel untuk jumlah pembacaan yang akan disimpannya

tempC = nol(jumlahSampel, 1);

suhuF = suhuC;

% menggunakan kotak dialog input untuk menyimpan suhu rel maks dan min

dlg_prompts = {'Masukkan Suhu Maks', 'Masukkan Suhu Minimum'};

dlg_title = 'Interval Suhu Rel';

T=22;

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

% Menyimpan input dari pengguna dan menampilkan bahwa input telah direkam

max_temp = str2double(dlg_ans{1})

min_temp = str2double(dlg_ans{2})

txt = sprintf('Masukan Anda telah direkam');

h=kotak pesan(txt);

tunggu(h);

% Untuk loop membaca suhu beberapa kali.

untuk indeks = 1:numSamples

% Baca tegangan pada tempPin dan simpan sebagai volt variabel

volt = readVoltage(a, tempPin);

tempC(indeks) = tempCfromVolts(volt);

tempF(indeks) = tempC(indeks)*9/5+32; % Mengkonversi dari Celcius ke Fahrenheit

% Jika pernyataan untuk membuat lampu LED tertentu berkedip tergantung pada kondisi yang terpenuhi

jika tempF(indeks) >= max_temp % LED Merah

writeDigitalPin(a, 'D13', 0);

jeda(0.5);

writeDigitalPin(a, 'D13', 1);

jeda(0.5);

writeDigitalPin(a, 'D13', 0);

elseif tempF(index) >= min_temp && tempF(index) < max_temp % LED Hijau

writeDigitalPin(a, 'D11', 0);

jeda(0.5);

writeDigitalPin(a, 'D11', 1);

jeda(0.5);

writeDigitalPin(a, 'D11', 0);

elseif tempF(indeks) <= min_temp % LED Biru

writeDigitalPin(a, 'D12', 0);

jeda(0.5);

writeDigitalPin(a, 'D12', 1);

jeda(0.5);

writeDigitalPin(a, 'D12', 0);

akhir

% Tampilkan suhu saat diukur

fprintf('Suhu pada %d detik adalah %5.2f C atau %5.2f F.\n', …

samplingTimes(indeks), tempC(indeks), tempF(indeks));

jeda(samplingInterval) %delay hingga sampel berikutnya

akhir

% Merencanakan pembacaan suhu

Gambar 1)

plot(Waktu pengambilan sampel, tempF, 'r-*')

xlabel('Waktu (Detik)')

ylabel('Suhu (F)')

title('Bacaan Suhu dari RedBoard')

Langkah 3: Output Sensor Suhu

Keluaran Sensor Suhu
Keluaran Sensor Suhu
Keluaran Sensor Suhu
Keluaran Sensor Suhu

Di atas adalah kabel dan kode MATLAB untuk output sensor suhu.

Untuk proyek ini kami menggunakan tiga lampu LED untuk output dari sensor suhu kami. Kami menggunakan warna merah jika trek terlalu panas, biru jika terlalu dingin, dan hijau jika ada di antaranya.

Langkah 4: Input Sensor Air Hujan

Masukan Sensor Air Hujan
Masukan Sensor Air Hujan
Masukan Sensor Air Hujan
Masukan Sensor Air Hujan

Di atas adalah kabel untuk sensor air hujan dan kode MATLAB diposting di bawah ini.

%% Sensor air

hapus semua, clc

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

pin air = 'A1';

vKering = 4,80; % Tegangan saat tidak ada air

samplingDurasi = 60;

samplingInterval = 2;

samplingTimes = 0:samplingInterval:samplingDuration;

numSamples = panjang(Waktu pengambilan sampel);

% Untuk loop membaca voltase selama waktu tertentu (60 detik)

untuk indeks = 1:numSamples

volt2 = readVoltage(a, waterPin); % Baca tegangan dari analog pin air

% Jika pernyataan membunyikan bel jika air terdeteksi. Penurunan tegangan = air

jika volt2 < vKering

playTone(a, 'D09', 2400) % fungsi playTone dari MathWorks

% Menampilkan peringatan kepada penumpang jika air terdeteksi

waitfor(warndlg('Kereta Anda mungkin tertunda karena bahaya air'));

akhir

% Tampilkan voltase seperti yang diukur oleh sensor air

fprintf('Tegangan pada %d detik adalah %5.4f V.\n', …

samplingTimes(indeks), volt2);

jeda (interval pengambilan sampel)

akhir

Langkah 5: Output Sensor Air Hujan

Keluaran Sensor Air Hujan
Keluaran Sensor Air Hujan

Di atas adalah kabel untuk bel yang berbunyi bip setiap kali terlalu banyak air jatuh di trek. Kode untuk buzzer disematkan di dalam kode untuk input air hujan.

Langkah 6: Masukan Sensor Getaran

Masukan Sensor Getaran
Masukan Sensor Getaran
Masukan Sensor Getaran
Masukan Sensor Getaran

Di atas adalah kabel untuk sensor getaran. Sensor getaran dapat menjadi penting untuk sistem perkeretaapian dalam kasus batu jatuh di trek. Kode MATLAB diposting di bawah ini.

%% Sensor GetaranHapus semua, clc

PIEZO_PIN = 'A3'; % Mendeklarasikan pin analog terhubung ke sensor getaran a=arduino('/dev/tty.usbserial-DA017PNO', 'uno'); % Menginisialisasi waktu dan interval untuk mengukur sampling getaranDurasi = 30; % detik samplingInterval = 1;

samplingTimes = 0:samplingInterval:samplingDuration;

numSamples = panjang(samplingTimes);

% Menggunakan kode dari sumber berikut, kami memodifikasinya untuk mengaktifkan a

% LED ungu jika getaran terdeteksi.

% SparkFun Tinker Kit, LED RGB, ditulis oleh SparkFun Electronics, % dengan banyak bantuan dari komunitas Arduino

% Diadaptasi ke MATLAB oleh Eric Davishahl

% Menginisialisasi pin RGB

PIN_MERAH = 'D5';

PIN_HIJAU = 'D6';

PIN_BIRU = 'D7';

% Untuk loop untuk merekam perubahan tegangan dari sensor getaran di atas a

% interval waktu tertentu (30 detik)

untuk indeks = 1:numSamples

volt3 = readVoltage(a, PIEZO_PIN);

% Jika pernyataan untuk menyalakan LED ungu jika getaran terdeteksi

jika volt3> 0,025

writeDigitalPin(a, RED_PIN, 1);

% Membuat cahaya ungu

writeDigitalPin(a, PIN_HIJAU, 0);

writeDigitalPin(a, BLUE_PIN, 1);

lain % Matikan LED jika tidak ada getaran yang terdeteksi.

writeDigitalPin(a, RED_PIN, 0);

writeDigitalPin(a, GREEN_PIN, 0);

writeDigitalPin(a, PIN_BIRU, 0);

akhir

% Menampilkan tegangan seperti yang diukur.

fprintf('Tegangan pada %d detik adalah %5.4f V.\n', …

samplingTimes(indeks), volt3);

jeda (interval pengambilan sampel)

akhir

% Matikan lampu saat pengukuran getaran selesai

writeDigitalPin(a, RED_PIN, 0);

writeDigitalPin(a, PIN_HIJAU, 0);

writeDigitalPin(a, BLUE_PIN, 0);

Langkah 7: Output Sensor Getaran

Keluaran Sensor Getaran
Keluaran Sensor Getaran

Di atas adalah kabel untuk lampu LED RBG yang digunakan. Cahaya akan bersinar ungu ketika getaran terdeteksi. Kode MATLAB untuk output disematkan di dalam kode untuk input.

Langkah 8: Kesimpulan

Setelah mengikuti semua langkah ini, Anda sekarang seharusnya memiliki arduino dengan kemampuan untuk mendeteksi suhu, air hujan, dan getaran. Saat melihat bagaimana sensor ini bekerja dalam skala kecil, mudah untuk membayangkan betapa pentingnya mereka untuk sistem perkeretaapian dalam kehidupan modern!

Direkomendasikan: