Мазмуну:

Desert темир жолунун температура детектору жана жүргүнчүлөрдү эсептегич: 5 кадам
Desert темир жолунун температура детектору жана жүргүнчүлөрдү эсептегич: 5 кадам

Video: Desert темир жолунун температура детектору жана жүргүнчүлөрдү эсептегич: 5 кадам

Video: Desert темир жолунун температура детектору жана жүргүнчүлөрдү эсептегич: 5 кадам
Video: Германия абдан кооз - Ротенбург об дер Тауберден Ягстталга чейин жарыш велосипеди менен 🇩🇪 2024, Ноябрь
Anonim
Desert темир жолунун температура детектору жана жүргүнчүлөрдүн эсептегичи
Desert темир жолунун температура детектору жана жүргүнчүлөрдүн эсептегичи

Максаты:

Температура: Бул көрсөтмө сизге темир жолдун температурасын аныктоо үчүн Arduino RedBoard (MATLAB аркылуу) орнотууну жана программалоону үйрөтөт. Жүргүнчүлөр үчүн кооптуу температурага жеткенде, эскертүүчү билдирүү угулат, ызылдагандар өчөт жана эскертүү белгиси күйөт.

Жүргүнчүлөрдү эсептегич: Бул бөлүк сизге жүргүнчүлөрдү эсептөө үчүн баскычты колдонууну үйрөтөт жана максималдуу сыйымдуулукка жеткенде эскертүү берет.

Өзгөчөлүктөрү:

  • Поездге кирген жүргүнчүлөрдү эсептөө үчүн баскычты колдонот
  • Темир жолдун температурасын аныктоо үчүн TMP36 (температура сенсору) колдонот
  • Темир жол станциясына эскертүү берүү үчүн Кызыл LED чырак колдонулат
  • Ойготкуч үчүн сигналдарды колдонот
  • Температура менен убакытты камтыган эскертүү электрондук кат жөнөтөт
  • MATLAB боюнча калкыма эскертүү билдирүүлөрү

1 -кадам: материалдар жана материалдар

Материалдар жана материалдар
Материалдар жана материалдар
  • 1 ноутбук
  • MATLAB 2017
  • Arduino Toolboxту жүктөп алыңыз
  • Sparkfun RedBoard
  • 1 Power Cable
  • Breadbord
  • 14 зым
  • 1 Piezo Buzzer
  • 1 баскыч
  • 2 10k ohm резисторлор
  • 1 TMP36 сенсор
  • Кызыл LED жарык
  • 3D басылган белги (милдеттүү эмес)

2 -кадам: Board орнотуу

Board Setup
Board Setup

Жогорудагы орнотууну ээрчиңиз

3 -кадам: Код жазуу

Цикл: коддун температураны текшерүүсүн жана баскычтын абалын сезүүсүн камсыз кылуу үчүн (басылган же басылбаган), биз кодду белгилүү бир убакыт аралыгында while циклине жайгаштырабыз.

TMP36 колдонуу: Конверсиялык факторлорду колдонуу менен температураны чыңалууну окуп, Фаренгейт градусына айландыруу менен аныктайбыз. Андан кийин, биз эгерде темп белгиленген максималдуу температурадан чоң же ага барабар болсо, үн билдирүү жана үн чыгаруу/эскертүүлөрдү жөнөтүү үчүн if операторун колдонобуз.

Баскычты колдонуу: if операторунун жардамы менен, биз баскычтын readDigitalPin аркылуу басылганын текшере алабыз. Бул буйрук логикалык (1 же 0) кайтып келет. Эгерде жооп 0 болсо, анда баскыч басылып, жүргүнчүлөрдүн эсептегичи көбөйүп, саламдашуу билдирүүсү көрсөтүлөт. Андан кийин, максималдуу кубаттуулукка жеткенде, эскертүүчү билдирүү угулат.

4 -кадам: Кодду көчүрүү

%Киргизүүлөр: Баскычты басуу, температура сенсору

%Чыгыштар: жарыктар, сигналдар, аудио эскертүү, электрондук каттар, графиктер

%Максаты: Бул продукт чөл менен поезд менен бараткан %жүргүнчүлөрдүн коопсуздугун жана жайлуулугун камсыздоого жардам берүү үчүн иштелип чыккан.

%Колдонуу: Баскычтын жардамы менен жүргүнчүлөрдүн санын аныктоо жана %температура сенсорунун жардамы менен жылуулукту аныктоо жана аны график кылуу жана %жүргүнчүлөрдүн санын жана температура графигин темир жол станциясына жөнөтөт

configurePin (a, 'D2', 'pullup'); %келечектеги релиздерде configurePin колдонот

убакыт = 200;

e = 0;

x = 0

убакыт> 0

button_status = readDigitalPin (a, 'D2'); Кнопка басылганда % нөлгө барабар, болбосо 1ге барабар

Voltage = readVoltage (a, 'A0');%пин биз койгон жерге көз каранды

tempCelcius = (чыңалуу*100) -50; %сенсордун колдонмосунда берилген

tempF (убакыт) = (tempCelcius*1.8) +32 %белгилүү формула

max = 120; %градус F

writeDigitalPin (a, 'D11', 1);

rem = mod (e, 2);

if tempF (time)> = max

writeDigitalPin (a, 'D11', 0);

writeDigitalPin (a, 'D9', 1);

playTone (a, 'D9', 2400,.5)

тындыруу (.5)

writeDigitalPin (a, 'D6', 1)

playTone (a, 'D6', 1000,.5)

тындыруу (.5)

writeDigitalPin (a, 'D9', 1);

playTone (a, 'D9', 2400,.5)

тындыруу (.5)

writeDigitalPin (a, 'D6', 1)

playTone (a, 'D6', 1000,.5) %"сиренаны" ойнойт

z = 'Overheat.m4a'; %Бул үн файлын өзгөрмөгө киргизет

[маалымат, freq] = аудио окуу (z); %Үн файлынан маалыматтарды жүктөйт

o = аудио ойнотуучу (маалымат, жыштык); %Аудио файлдын ойнотулушун көзөмөлдөө үчүн объект түзөт

o.play () %Аудио файлды ойнотот

o.playblocking () %Файлды ойнотот жана анын бүтүшүн күтөт

аяктоо

if button_status == 0 && rem == 0

e = e+1

msgbox ('Кош келиңиз! );

elseif button_status == 0 && rem == 1

e = e+1

msgbox ('Bienvenido a bordo!');

аяктоо

эгер e == 5

writeDigitalPin (a, 'D11', 0);

эгер x == 0

playTone (a, 'D6', 600, 1);

s = 'Warning_EF.m4a'; %Бул үн файлын өзгөрмөгө киргизет

[маалыматтар, freq] = аудио окуу (лар); %Үн файлынан маалыматтарды жүктөйт

o = аудио ойнотуучу (маалымат, жыштык); %Аудио файлдын ойнотулушун көзөмөлдөө үчүн объект түзөт

% o.play () % Аудио файлды ойнотот

o.playblocking () %Файлды ойнотот жана анын бүтүшүн күтөт

msgbox ('Max Capacity')

x = x+1

аяктоо

elseif e> = 6

playTone (a, 'D6', 2400, 0);

аяктоо

убакыт = убакыт - 1;

% тыным (0.1);

% эгерде e == 5 && max (tempF)> = 120

% убакыт = 0

% аягы

аяктоо

ee = num2str (e)

t = [1: 200];

tempF2 = fliplr (tempF);

сюжет (t, tempF2);

аталышы ('Убакыт vs. Температура')

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

xlabel ('Time (s)')

сактоо (gcf, 'tempplot.jpg')

почта = '[email protected]'

password = 'Srsora123#'

хост = 'smtp.gmail.com'

setpref ('Интернет', 'SMTP_Server', хост);

setpref ('Интернет', 'E_mail', почта);

setpref ('Интернет', 'SMTP_Username', почта);

setpref ('Интернет', 'SMTP_Password', пароль);

реквизиттер = java.lang. System.getProperties;

props.setProperty ('mail.smtp.auth', 'true');

props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory');

props.setProperty ('mail.smtp.socketFactory.port', '465');

sendmail (почта, 'Hello Train Station! Поездде көптөгөн жүргүнчүлөр бар', ee, 'tempplot.jpg')

5 -кадам: Жыйынтыктар

Сунушталууда: