Мазмұны:

Темір жолдарды қорғау үшін Arduino -да температура, жаңбыр суы және діріл сенсорларын қолдану: 8 қадам (суреттермен)
Темір жолдарды қорғау үшін Arduino -да температура, жаңбыр суы және діріл сенсорларын қолдану: 8 қадам (суреттермен)

Бейне: Темір жолдарды қорғау үшін Arduino -да температура, жаңбыр суы және діріл сенсорларын қолдану: 8 қадам (суреттермен)

Бейне: Темір жолдарды қорғау үшін Arduino -да температура, жаңбыр суы және діріл сенсорларын қолдану: 8 қадам (суреттермен)
Бейне: Темір жол туралы қызықты деректер 2024, Шілде
Anonim
Темір жолдарды қорғау үшін температураны, жаңбыр суын және діріл сенсорларын Arduino -да қолдану
Темір жолдарды қорғау үшін температураны, жаңбыр суын және діріл сенсорларын Arduino -да қолдану

Қазіргі қоғамда теміржол жолаушыларының көбеюі теміржол компаниялары сұранысты қанағаттандыру үшін желілерді оңтайландыру үшін көп жұмыс жасауы керек дегенді білдіреді. Бұл жобада біз ардуино тақтасындағы температура, жаңбыр суы мен діріл сенсорлары жолаушылардың қауіпсіздігін арттыруға қалай көмектесетінін шағын көлемде көрсететін боламыз.

Бұл нұсқаулық ардуинодағы температура, жаңбыр суы мен діріл датчиктерінің сымдарын біртіндеп көрсетеді, сонымен қатар осы сенсорларды іске қосу үшін қажет MATLAB кодын көрсетеді.

1 -қадам: Бөлшектер мен материалдар

1. MATLAB соңғы нұсқасы орнатылған компьютер

2. Arduino тақтасы

3. Температура сенсоры

4. Жаңбыр суы датчигі

5. Діріл сенсоры

6. Қызыл жарықдиодты шам

7. Көк жарықдиодты шам

8. Жасыл жарықдиодты шам

9. RBG жарықдиодты шамы

10. Дыбыстық сигнал

11. 18 Ер-Ер сымдары

12. 3 әйел-еркек сымдары

13. 2 әйел-аналық сымдар

14. 6 330 Ом резисторы

15. 100 Ом кедергісі

2 -қадам: температура сенсорының сымдары

Температура сенсорының сымы
Температура сенсорының сымы
Температура сенсорының сымы
Температура сенсорының сымы

Жоғарыда температура датчигінің кірісі үшін сымдар мен MATLAB коды бар.

Жерден және 5В сымдары барлық тақта үшін тек бір рет теріс және позитивті болуы керек. Осыдан бастап кез келген жерге қосылу теріс бағаннан, ал кез келген 5В қосылым оң бағаннан болады.

Төмендегі кодты температура сенсоры үшін көшіруге және қоюға болады.

%% TEMPERATURE SENSOR % Температура сенсоры үшін біз келесі көзді қолдандық

Пайдаланушыға рұқсат ету үшін температура сенсорын өзгертуге арналған % EF230 веб -сайты

% кіріс және графигі бар 3 жарықдиодты жарық.

%Бұл эскизді SparkFun Electronics жазған, %Arduino қауымдастығының үлкен көмегі арқылы.

%EAT Davishahl MATLAB -қа бейімделген.

%SIK ақпараты үшін https://learn.sparkfun.com/products/2 сайтына кіріңіз.

бәрін тазалаңыз, clc

tempPin = 'A0'; % Температура сенсорына қосылған аналогты түйреуішті жариялау

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

% Кернеуді температураға түрлендіретін анонимді функцияны анықтаңыз

tempCfromVolts = @(вольт) (вольт-0,5)*100;

іріктеу ұзақтығы = 30;

samplepingInterval = 2; % Температура көрсеткіштері арасындағы секунд

іріктеу уақыттарының %векторы орнатылды

samplingTimes = 0: samplingInterval: samplelingDuration;

%ұзақтығы мен интервалына негізделген үлгілер санын есептейді

numSamples = ұзындығы (samplelingTimes);

%уақытша айнымалыларды және сақталатын оқулар санына айнымалыны алдын ала бөледі

tempC = нөлдер (numSamples, 1);

tempF = tempC;

% рельстің максималды және минималды температураларын сақтау үшін енгізу диалогтық терезесін қолданады

dlg_prompts = {'Максималды температураны енгізу', 'Минималды температураны енгізу'};

dlg_title = 'Темір жолдың температуралық интервалдары';

N = 22;

dlg_ans = inputdlg (dlg_prompts, dlg_title, [1, ұзындық (dlg_title)+N]);

% Пайдаланушының кірістерін сақтау және кірістің жазылғанын көрсету

max_temp = str2double (dlg_ans {1})

min_temp = str2double (dlg_ans {2})

txt = sprintf ('Сіздің кіріс жазылды');

h = msgbox (txt);

күту (h);

% Температураны белгілі бір рет оқуға арналған цикл үшін.

index = 1 үшін: numSamples

% TempPin кернеуін оқыңыз және айнымалы вольт ретінде сақтаңыз

вольт = readVoltage (a, tempPin);

tempC (индекс) = tempCfromVolts (вольт);

tempF (индекс) = tempC (индекс)*9/5+32; % Цельсийден Фаренгейтке түрлендіру

% Егер қандай да бір шарттың орындалуына байланысты арнайы жарық диодты шамдар жыпылықтайтын мәлімдемелер

егер tempF (индекс)> = max_temp % Қызыл ЖШД

writeDigitalPin (a, 'D13', 0);

үзіліс (0,5);

writeDigitalPin (a, 'D13', 1);

үзіліс (0,5);

writeDigitalPin (a, 'D13', 0);

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

writeDigitalPin (a, 'D11', 0);

үзіліс (0,5);

writeDigitalPin (a, 'D11', 1);

үзіліс (0,5);

writeDigitalPin (a, 'D11', 0);

elseif tempF (индекс) <= min_temp % Көк жарық диоды

writeDigitalPin (a, 'D12', 0);

үзіліс (0,5);

writeDigitalPin (a, 'D12', 1);

үзіліс (0,5);

writeDigitalPin (a, 'D12', 0);

Соңы

% Температураны өлшеу кезінде көрсетіңіз

fprintf (' %d секундтағы температура %5.2f C немесе %5.2f F. / n',…

samplingTimes (индекс), tempC (индекс), tempF (индекс));

кідірту (іріктеу аралығы) %кешіктіру келесі үлгіге дейін

Соңы

% Температура көрсеткіштерін сызу

сурет (1)

сюжет (іріктеуTimes, tempF, 'r-*')

xlabel ('Уақыт (секунд)')

ylabel ('Температура (F)')

атауы ('RedBoard температуралық көрсеткіштері')

3 -қадам: температура сенсорының шығысы

Температура сенсорының шығысы
Температура сенсорының шығысы
Температура сенсорының шығысы
Температура сенсорының шығысы

Жоғарыда температура сенсорының шығуына арналған сымдар мен MATLAB коды бар.

Бұл жоба үшін біз температура сенсорының шығуы үшін үш жарықдиодты шамды қолдандық. Біз жолдар тым ыстық болса, қызыл, егер олар тым суық болса, көк, ал егер олардың арасында болса - жасыл түсті қолдандық.

4 -қадам: Жаңбыр суы датчигінің кірісі

Жаңбыр суы датчигінің кірісі
Жаңбыр суы датчигінің кірісі
Жаңбыр суы датчигінің кірісі
Жаңбыр суы датчигінің кірісі

Жоғарыда жаңбыр суы датчигінің сымдары орналасқан және MATLAB коды төменде көрсетілген.

%% Су сенсоры

бәрін тазалаңыз, clc

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

waterPin = 'A1';

vDry = 4.80; % Су болмаған кезде кернеу

іріктеу ұзақтығы = 60;

samplepingInterval = 2;

samplingTimes = 0: samplingInterval: samplelingDuration;

numSamples = ұзындығы (samplelingTimes);

% Цикл кернеуді белгілі бір уақыт ішінде оқуы үшін (60 секунд)

index = 1 үшін: numSamples

volt2 = readVoltage (a, waterPin); % Су штыры аналогынан кернеуді оқу

% Су анықталса, дыбыстық сигнал шығаратын If операторы. Кернеудің төмендеуі = су

егер вольт2 <vҚұрғақ

playTone (a, 'D09', 2400) % playTone функциясы MathWorks -тен

% Су анықталған жағдайда жолаушыларға ескертуді көрсетіңіз

күту (ескерту ('Сіздің пойыз су қаупіне байланысты кешігуі мүмкін')));

Соңы

% Кернеуді су сенсоры өлшегенде көрсетіңіз

fprintf (' %d секундтағы кернеу - %5.4f V. / n',…

samplingTimes (индекс), вольт2);

үзіліс (іріктеу аралығы)

Соңы

5 -қадам: Жаңбыр суы датчигінің шығысы

Жаңбыр суы датчигінің шығысы
Жаңбыр суы датчигінің шығысы

Жоғарыда рельсте тым көп су құлаған кезде дыбыстық сигнал беретін дыбыстық сигнал. Дыбыстық сигналдың коды жаңбыр суының кіру кодына ендірілген.

6 -қадам: діріл датчигінің кірісі

Діріл датчигінің кірісі
Діріл датчигінің кірісі
Діріл датчигінің кірісі
Діріл датчигінің кірісі

Жоғарыда діріл датчигінің сымы орналасқан. Діріл датчиктері рельсте тау жыныстары құлаған жағдайда теміржол жүйелері үшін маңызды болуы мүмкін. MATLAB коды төменде орналастырылған.

%% Діріл сенсоры Барлығын тазалау, clc

PIEZO_PIN = 'A3'; % A = arduino діріл датчигіне қосылған аналогты түйреуішті жариялау ('/dev/tty.usbserial-DA017PNO', 'uno'); % Вибрациялық іріктеуді өлшеу үшін уақыт пен интервалды баптауDuration = 30; % Секундтық іріктеу аралығы = 1;

samplingTimes = 0: samplingInterval: samplelingDuration;

numSamples = ұзындығы (samplelingTimes);

% Келесі дереккөзден алынған кодты қолдана отырып, біз оны қосу үшін өзгерттік

діріл анықталған жағдайда % күлгін жарық диоды.

% SparkFun Tinker Kit, RGB LED, SparkFun Electronics жазған, % Arduino қауымдастығының үлкен көмегі арқылы

% EAT Davishahl MATLAB -қа бейімделген

% RGB түйреуішін инициализациялау

RED_PIN = 'D5';

GREEN_PIN = 'D6';

BLUE_PIN = 'D7';

% Цикл діріл датчигінен кернеудің өзгеруін тіркеу үшін

% нақты уақыт аралығы (30 секунд)

index = 1 үшін: numSamples

volt3 = readVoltage (a, PIEZO_PIN);

% Егер діріл анықталса, күлгін жарық диодты қосатын If операторы

егер вольт3> 0,025

writeDigitalPin (a, RED_PIN, 1);

Күлгін түсті жарық жасау

writeDigitalPin (a, GREEN_PIN, 0);

writeDigitalPin (a, BLUE_PIN, 1);

else % Егер діріл анықталмаса, жарық диодты өшіріңіз.

writeDigitalPin (a, RED_PIN, 0);

writeDigitalPin (a, GREEN_PIN, 0);

writeDigitalPin (a, BLUE_PIN, 0);

Соңы

% Кернеуді өлшегенде көрсетіңіз.

fprintf (' %d секундтағы кернеу - %5.4f V. / n',…

samplingTimes (индекс), вольт3);

үзіліс (іріктеу аралығы)

Соңы

% Дірілді өлшеу кезінде жарықты өшіру

writeDigitalPin (a, RED_PIN, 0);

writeDigitalPin (a, GREEN_PIN, 0);

writeDigitalPin (a, BLUE_PIN, 0);

7 -қадам: Діріл датчигінің шығысы

Діріл датчигінің шығысы
Діріл датчигінің шығысы

Жоғарыда RBG жарықдиодты шамының сымы қолданылады. Діріл анықталған кезде жарық күлгін болып жанып тұрады. Шығуға арналған MATLAB коды кіріс кодының ішіне ендірілген.

8 -қадам: Қорытынды

Осы қадамдардың барлығын орындағаннан кейін сізде температураны, жаңбыр суы мен тербелісті анықтай алатын ардуино болуы керек. Бұл сенсорлардың шағын көлемде қалай жұмыс жасайтынын қарап отырып, олардың қазіргі өмірде теміржол жүйелері үшін қаншалықты маңызды екенін елестету қиын емес!

Ұсынылған: