Мазмұны:

Шөлдегі темір жолдың температура детекторы мен жолаушыларды есептегіш: 5 қадам
Шөлдегі темір жолдың температура детекторы мен жолаушыларды есептегіш: 5 қадам

Бейне: Шөлдегі темір жолдың температура детекторы мен жолаушыларды есептегіш: 5 қадам

Бейне: Шөлдегі темір жолдың температура детекторы мен жолаушыларды есептегіш: 5 қадам
Бейне: Темір жолдың жалпы курсы 2024, Қараша
Anonim
Шөлдегі темір жол температурасының детекторы мен жолаушыларды есептегіш
Шөлдегі темір жол температурасының детекторы мен жолаушыларды есептегіш

Мақсаты:

Температура: Бұл нұсқаулық сізге теміржолдың температурасын анықтау үшін Arduino RedBoard тақтасын (MATLAB көмегімен) орнатуды және бағдарламалауды үйретеді. Жолаушыларға қауіпті температураға жеткенде, ескерту хабары шығады, дыбыстық сигналдар сөнеді және ескерту белгісі жанады.

Жолаушылар есептегіші: Бұл бөлім жолаушыларды санау және максималды сыйымдылыққа жеткенде ескертуді беру үшін түймені қолдануға үйретеді.

Ерекше өзгешеліктері:

  • Пойызға кіретін жолаушыларды санау үшін батырманы қолданады
  • Темір жолдың температурасын анықтау үшін TMP36 (температура сенсоры) қолданады
  • Теміржол вокзалына ескерту үшін қызыл жарықдиодты шамды қолданады
  • Дабыл беру үшін дыбыстық сигналдарды қолданады
  • Уақыт пен температураның графигі бар ескерту электрондық поштаны жібереді
  • MATLAB-те қалқымалы ескерту хабарламалары

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

Материалдар мен жабдықтар
Материалдар мен жабдықтар
  • 1 ноутбук
  • MATLAB 2017
  • Arduino құралдар тақтасын жүктеңіз
  • Sparkfun RedBoard
  • 1 Қуат кабелі
  • Breadbord
  • 14 сым
  • 1 Piezo Buzzer
  • 1 Басу түймесі
  • 2 10км резистор
  • 1 TMP36 датчигі
  • Қызыл жарықдиодты шам
  • 3D басып шығарылған белгі (міндетті емес)

2 -қадам: тақтаны орнату

Тақтаны орнату
Тақтаны орнату

Жоғарыдағы орнатуды орындаңыз

3 -қадам: кодты жазу

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

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 -ге тең

кернеу = readVoltage (a, 'A0');%түйреуіш оны қайда орналастыратындығымызға байланысты

tempCelcius = (кернеу*100) -50; %сенсорлық нұсқаулықта берілген

tempF (уақыт) = (tempCelcius*1.8) +32 %белгілі түрлендіру формуласы

максимум = 120; %градус F

writeDigitalPin (a, 'D11', 1);

rem = мод (e, 2);

егер tempF (уақыт)> = макс

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 = 'Қызып кету.m4a'; %Бұл дыбыстық файлды айнымалыға қояды

[деректер, жиілік] = аудио оқу (z); %Дыбыстық файлдан деректерді жүктейді

o = аудиоплейер (деректер, жиілік); %Аудио файлды ойнатуды басқару үшін объект жасайды

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

o.playblocking () %Файлды ойнатады және оның аяқталуын күтеді

Соңы

егер 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'; %Бұл дыбыстық файлды айнымалыға қояды

[деректер, жиілік] = аудио оқу (лар); %Дыбыстық файлдан деректерді жүктейді

o = аудиоплейер (деректер, жиілік); %Аудио файлды ойнатуды басқару үшін объект жасайды

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

o.playblocking () %Файлды ойнатады және оның аяқталуын күтеді

msgbox ('Максималды сыйымдылық')

x = x+1

Соңы

басқаша 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);

тақырып ('Уақыт температураға қарсы')

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

xlabel ('Time (s)')

сақтау (gcf, 'tempplot.jpg')

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

пароль = '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 (пошта, 'Сәлем теміржол вокзалы! Пойызда көптеген жолаушылар бар', ee, 'tempplot.jpg')

5 -қадам: Нәтижелер

Ұсынылған: