Mundarija:

Temir yo'llarni himoya qilish uchun Arduino -dagi harorat, yomg'ir suvi va tebranish sensorlaridan foydalanish: 8 qadam (rasmlar bilan)
Temir yo'llarni himoya qilish uchun Arduino -dagi harorat, yomg'ir suvi va tebranish sensorlaridan foydalanish: 8 qadam (rasmlar bilan)

Video: Temir yo'llarni himoya qilish uchun Arduino -dagi harorat, yomg'ir suvi va tebranish sensorlaridan foydalanish: 8 qadam (rasmlar bilan)

Video: Temir yo'llarni himoya qilish uchun Arduino -dagi harorat, yomg'ir suvi va tebranish sensorlaridan foydalanish: 8 qadam (rasmlar bilan)
Video: Qo'rquvni yo'qotish usullari #Шухратхужа Шухрат хужа 2024, Iyul
Anonim
Temir yo'llarni himoya qilish uchun Arduino -dagi harorat, yomg'ir suvi va tebranish sensorlaridan foydalanish
Temir yo'llarni himoya qilish uchun Arduino -dagi harorat, yomg'ir suvi va tebranish sensorlaridan foydalanish

Zamonaviy jamiyatda temir yo'l yo'lovchilarining ko'payishi shuni anglatadiki, temir yo'l kompaniyalari talabni qondirish uchun tarmoqlarni optimallashtirish uchun ko'proq harakat qilishlari kerak. Ushbu loyihada biz arduino bortidagi harorat, yomg'ir suvi va tebranish sensori yo'lovchilar xavfsizligini oshirishga qanday yordam berishi mumkinligini kichik hajmda ko'rsatamiz.

Bu ko'rsatma asta-sekin arduino-dagi harorat, yomg'ir suvi va tebranish datchiklarining simlarini ko'rsatadi va bu sensorlarni ishga tushirish uchun zarur bo'lgan MATLAB kodini ko'rsatadi.

1 -qadam: ehtiyot qismlar va materiallar

1. MATLAB -ning eng so'nggi versiyasi o'rnatilgan kompyuter

2. Arduino taxtasi

3. Harorat sensori

4. Yomg'ir suvi sensori

5. Vibratsiyali sensor

6. Qizil LED chiroq

7. Moviy LED chiroq

8. Yashil LED chiroq

9. RBG LED chirog'i

10. Buzzer

11. 18 erkak-erkak simlari

12. 3 ta ayol-erkak simlari

13. 2 ta ayol-ayol simlari

14. 6 330 ohmli rezistorlar

15. 100 ohmlik qarshilik

2 -qadam: harorat sensori simlari

Harorat sensori simlari
Harorat sensori simlari
Harorat sensori simlari
Harorat sensori simlari

Yuqorida harorat sensori kiritish uchun simlar va MATLAB kodi ko'rsatilgan.

Erdan va 5V dan keladigan simlar butun taxta uchun faqat bir marta manfiy va musbatga o'tkazilishi kerak. Bu erdan har qanday erga ulanishlar manfiy ustundan, har qanday 5V ulanishlari esa musbat ustundan keladi.

Quyidagi kodni harorat sensori uchun nusxalash va joylashtirish mumkin.

%% TEMPERATURE SENSOR % Harorat sensori uchun biz quyidagi manbadan foydalanganmiz

% EF230 veb -sayti foydalanuvchiga ruxsat berish uchun harorat sensori o'zgartirish uchun

% kirish va grafikli 3 ta LED yorug'lik chiqishi.

%Bu eskiz SparkFun Electronics tomonidan yozilgan, %Arduino hamjamiyatining katta yordami bilan.

%Erik Davishahl tomonidan MATLABga moslashtirilgan.

%SIK ma'lumotlari uchun https://learn.sparkfun.com/products/2 saytiga tashrif buyuring.

Hammasini tozalash, clc

tempPin = 'A0'; % Harorat sensori ulangan analog pinni e'lon qilish

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

% Kuchlanishni haroratga aylantiradigan anonim funktsiyani aniqlang

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

namuna olish muddati: 30;

namuna olish Interval = 2; % Harorat ko'rsatkichlari orasidagi soniya

%namuna olish vaqtining vektorini sozlash

samplingTimes = 0: samplingInterval: samplelingDuration;

%davomiyligi va intervaliga qarab namunalar sonini hisoblab chiqadi

numSamples = uzunlik (samplelingTimes);

%temp o'zgaruvchilarini va saqlanadigan o'qishlar soni uchun o'zgaruvchini oldindan ajratadi

tempC = nol (numSamples, 1);

tempF = tempC;

% maksimal va minimal temir yo'l haroratini saqlash uchun kirish dialog oynasi yordamida

dlg_prompts = {'Maksimal haroratni kiriting', 'Min haroratni kiriting'};

dlg_title = 'Temir yo'l harorati intervallari';

N = 22;

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

% Foydalanuvchining kirishini saqlash va kirish yozilganligini ko'rsatish

max_temp = str2double (dlg_ans {1})

min_temp = str2double (dlg_ans {2})

txt = sprintf ('Sizning kirishingiz yozildi');

h = msgbox (txt);

kutish (h);

% Haroratni ma'lum vaqtlarda o'qish uchun.

index = 1 uchun: numSamples

% TempPin -dagi kuchlanishni o'qing va o'zgarmaydigan volt sifatida saqlang

volt = o'qish voltaji (a, tempPin);

tempC (indeks) = tempCfromVolts (volt);

tempF (indeks) = tempC (indeks)*9/5+32; % Selsiydan Farengeytga aylantirish

% Agar ma'lum bir LED chiroqlari qaysi shart bajarilganiga qarab yonib -o'chadigan bo'lsa

agar tempF (indeks)> = max_temp % Qizil LED

writeDigitalPin (a, 'D13', 0);

pauza (0,5);

writeDigitalPin (a, 'D13', 1);

pauza (0,5);

writeDigitalPin (a, 'D13', 0);

elseif tempF (indeks)> = min_temp && tempF (indeks) <max_temp % Yashil LED

writeDigitalPin (a, 'D11', 0);

pauza (0,5);

writeDigitalPin (a, 'D11', 1);

pauza (0,5);

writeDigitalPin (a, 'D11', 0);

elseif tempF (indeks) <= min_temp % Moviy LED

writeDigitalPin (a, 'D12', 0);

pauza (0,5);

writeDigitalPin (a, 'D12', 1);

pauza (0,5);

writeDigitalPin (a, 'D12', 0);

oxiri

% Haroratni o'lchaganicha ko'rsatish

fprintf (' %d soniyadagi harorat %5.2f S yoki %5.2f F. / n',…

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

pauza (samplingInterval) %kechikish keyingi namunaga qadar

oxiri

% Harorat ko'rsatkichlarini chizish

raqam (1)

uchastka (samplepingTimes, tempF, 'r-*')

xlabel ('Vaqt (soniya)')

ylabel ('Harorat (F)')

sarlavha ("Qizil taxtadan harorat ko'rsatkichlari")

3 -qadam: harorat sensori chiqishi

Harorat sensori chiqishi
Harorat sensori chiqishi
Harorat sensori chiqishi
Harorat sensori chiqishi

Yuqorida harorat sensori chiqishi uchun simlar va MATLAB kodi ko'rsatilgan.

Ushbu loyiha uchun biz harorat sensori chiqishi uchun uchta LED chiroqdan foydalanganmiz. Agar biz yo'llar juda issiq bo'lsa, qizil rangni, agar ular juda sovuq bo'lsa, ko'kni va agar ular o'rtasida bo'lsa, yashil rangni ishlatardik.

4 -qadam: Yomg'ir suvi sensori kirishi

Yomg'ir suvi sensori kirishi
Yomg'ir suvi sensori kirishi
Yomg'ir suvi sensori kirishi
Yomg'ir suvi sensori kirishi

Yuqorida yomg'ir suvi sensori uchun simlar bor va MATLAB kodi quyida keltirilgan.

%% suv sensori

Hammasini tozalash, clc

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

waterPin = 'A1';

vDry = 4.80; % Suv yo'q bo'lganda kuchlanish

namuna olish muddati: 60;

namuna olish Interval = 2;

samplingTimes = 0: samplingInterval: samplelingDuration;

numSamples = uzunlik (samplelingTimes);

% Loop ma'lum bir vaqt (60 soniya) davomida kuchlanishni o'qishi uchun

index = 1 uchun: numSamples

volt2 = readVoltage (a, waterPin); % Suv pinining analogidan kuchlanishni o'qing

% If, agar suv aniqlansa, ovozli signal eshitiladi. Voltaj tushishi = suv

agar volt2 <vDry

playTone (a, 'D09', 2400) % playTone funktsiyasi MathWorks -dan

% Suv aniqlansa, yo'lovchilarga ogohlantirish ko'rsatilsin

waitfor (ogohlantirish ('Sizning xavfingiz tufayli sizning poyezdingiz kechikishi mumkin')));

oxiri

% Voltajni suv sensori o'lchaganidek ko'rsatish

fprintf (' %d soniyadagi kuchlanish %5.4f V. / n',…

samplingTimes (indeks), volt2);

pauza (vaqt oralig'ida namuna olish)

oxiri

5 -qadam: Yomg'ir suvi sensori chiqishi

Yomg'ir suvi sensori chiqishi
Yomg'ir suvi sensori chiqishi

Yuqorida - yo'lga suv ko'p tushganda signal beradigan signal signalizatori. Buzzer kodi yomg'ir suvini kiritish kodiga kiritilgan.

6 -qadam: tebranish sensori kirishi

Vibratsiyali sensorning kiritilishi
Vibratsiyali sensorning kiritilishi
Vibratsiyali sensorning kiritilishi
Vibratsiyali sensorning kiritilishi

Yuqorida tebranish sensori uchun simlar joylashgan. Vibratsiyali datchiklar temir yo'l tizimlari uchun tog 'jinslari tushgan taqdirda muhim bo'lishi mumkin. MATLAB kodi quyida joylashtirilgan.

%% Vibratsiyali sensori Hammasi aniq, clc

PIEZO_PIN = 'A3'; % A = arduino tebranish sensoriga ulangan analog pinni e'lon qilish ('/dev/tty.usbserial-DA017PNO', 'uno'); % Vibratsiyali namuna olishni o'lchash uchun vaqt va intervalni ishga tushirishDuration = 30; % Saniyali namuna olish Interval = 1;

samplingTimes = 0: samplingInterval: samplelingDuration;

numSamples = uzunlik (samplelingTimes);

% Quyidagi manbadan olingan kodni ishlatib, uni yoqish uchun o'zgartirdik

% binafsha rangli LED, agar tebranish aniqlansa.

% SparkFun Tinker Kit, RGB LED, SparkFun Electronics tomonidan yozilgan, % Arduino hamjamiyatining katta yordami bilan

% Erik Davishahl tomonidan MATLABga moslashtirilgan

% RGB pinini ishga tushirish

RED_PIN = 'D5';

GREEN_PIN = 'D6';

BLUE_PIN = 'D7';

% A ga tebranish sensori orqali kuchlanish o'zgarishini qayd qilish uchun

% aniq vaqt oralig'i (30 soniya)

index = 1 uchun: numSamples

volt3 = o'qish voltaji (a, PIEZO_PIN);

Agar tebranish aniqlansa, binafsha rangli LEDni yoqish uchun if ifoda

agar volt3> 0,025 bo'lsa

writeDigitalPin (a, RED_PIN, 1);

Binafsha rang chiroqni yaratish

writeDigitalPin (a, GREEN_PIN, 0);

writeDigitalPin (a, BLUE_PIN, 1);

boshqa % Agar tebranish aniqlanmasa, LEDni o'chiring.

writeDigitalPin (a, RED_PIN, 0);

writeDigitalPin (a, GREEN_PIN, 0);

writeDigitalPin (a, BLUE_PIN, 0);

oxiri

% Voltani o'lchaganicha ko'rsatish.

fprintf (' %d soniyadagi kuchlanish %5.4f V. / n',…

samplingTimes (indeks), volt3);

pauza (vaqt oralig'ida namuna olish)

oxiri

% Vibratsiyani o'lchashda yorug'likni o'chiring

writeDigitalPin (a, RED_PIN, 0);

writeDigitalPin (a, GREEN_PIN, 0);

writeDigitalPin (a, BLUE_PIN, 0);

7 -qadam: tebranish sensori chiqishi

Vibratsiyali sensorning chiqishi
Vibratsiyali sensorning chiqishi

Yuqorida RBG LED yoritgichining simi ishlatiladi. Vibratsiyani aniqlaganda yorug'lik binafsha rangda yonadi. Chiqish uchun MATLAB kodi kirish kodi ichiga joylashtirilgan.

8 -qadam: Xulosa

Ushbu qadamlarning barchasini bajarganingizdan so'ng, sizda harorat, yomg'ir suvi va tebranishlarni aniqlash qobiliyatiga ega bo'lgan arduino bo'lishi kerak. Bu datchiklarning kichik hajmda ishlashini ko'rib, ularning zamonaviy hayotda temir yo'l tizimlari uchun qanchalik muhimligini tasavvur qilish oson!

Tavsiya: