فهرست مطالب:

آشکارساز دمای راه آهن صحرا و شمارنده مسافر: 5 مرحله
آشکارساز دمای راه آهن صحرا و شمارنده مسافر: 5 مرحله

تصویری: آشکارساز دمای راه آهن صحرا و شمارنده مسافر: 5 مرحله

تصویری: آشکارساز دمای راه آهن صحرا و شمارنده مسافر: 5 مرحله
تصویری: فیلم تاریخی از نقشه برداری راه آهن سراسری ایران در دهه ۱۳۱۰ شمسی- اپیزود ۴۸ #راه_آهن #پادکست 2024, نوامبر
Anonim
آشکارساز دمای راه آهن صحرا و شمارنده مسافر
آشکارساز دمای راه آهن صحرا و شمارنده مسافر

هدف:

دما: این دستورالعمل به شما نحوه تنظیم و برنامه ریزی Arduino RedBoard (با استفاده از MATLAB) برای تشخیص دمای راه آهن را آموزش می دهد. وقتی به دمای ناامن برای مسافران می رسیم ، یک پیام هشدار دهنده به صدا در می آید ، وزوزها خاموش می شوند و یک علامت هشدار دهنده روشن می شود.

شمارنده مسافر: این قسمت به شما آموزش می دهد که چگونه از یک دکمه برای شمارش مسافران استفاده کنید و هنگام رسیدن به حداکثر ظرفیت هشدار دهید.

امکانات:

  • از دکمه برای شمارش مسافران وارد قطار استفاده می کند
  • از TMP36 (سنسور دما) برای تشخیص دمای راه آهن استفاده می کند
  • از چراغ قرمز قرمز برای هشدار به ایستگاه قطار استفاده می کند
  • از زنگ ها برای زنگ خطر استفاده می کند
  • یک ایمیل هشدار با نمودار دما و زمان ارسال می کند
  • پیام های هشداردهنده بازشو در MATLAB

مرحله 1: مواد و لوازم

مواد و ملزومات
مواد و ملزومات
  • 1 لپ تاپ
  • متلب 2017
  • جعبه ابزار آردوینو را بارگیری کنید
  • Sparkfun RedBoard
  • 1 کابل برق
  • نان بند
  • 14 سیم
  • 1 Piezo Buzzer
  • 1 دکمه فشاری
  • 2 مقاومت 10 کیلو اهم
  • 1 سنسور TMP36
  • چراغ LED قرمز
  • علامت چاپ سه بعدی (اختیاری)

مرحله 2: راه اندازی برد

راه اندازی برد
راه اندازی برد

تنظیمات بالا را دنبال کنید

مرحله 3: نوشتن کد

در حالی که حلقه: برای اطمینان از اینکه کد همچنان به آزمایش دما و حس وضعیت دکمه (فشرده یا فشرده نشده) می پردازیم ، کد را در یک حلقه while برای یک دوره زمانی مشخص قرار می دهیم.

با استفاده از TMP36: ما دما را با خواندن ولتاژ و تبدیل آن به درجه فارنهایت ، با استفاده از عوامل تبدیل ، تعیین می کنیم. سپس ، از دستور if برای پخش صدا و ارسال/ارسال هشدارها در صورتی که دما بیشتر یا مساوی حداکثر دمای تنظیم شده است استفاده کنیم.

استفاده از دکمه: با دستور if می توانیم تست کنیم که آیا دکمه با استفاده از readDigitalPin فشار داده شده است یا خیر. این دستور یک بولی (1 یا 0) را برمی گرداند. اگر پاسخ 0 باشد ، دکمه را فشار داده و شمارنده مسافران افزایش می یابد و پیام خوش آمدگویی را نمایش می دهد. سپس ، با رسیدن به حداکثر ظرفیت ، یک پیام هشدار دهنده به صدا در می آید.

مرحله 4: کد را کپی کنید

٪ ورودی: فشار دادن دکمه ، سنسور دما

٪ خروجی ها: چراغ ها ، وزوزها ، هشدارهای صوتی ، ایمیل ها ، نمودارها

٪ هدف: این محصول برای اطمینان از ایمنی و راحتی passengers مسافرانی که با قطار در بیابان سفر می کنند ، طراحی شده است.

٪ استفاده: تشخیص تعداد مسافران با استفاده از یک دکمه ، و٪ تشخیص گرما با استفاده از سنسور دما و نمودار آن و ارسال٪ مسافران و نمودار دما به ایستگاه قطار

configurePin (a ، 'D2' ، 'pullup') ؛ ٪ در نسخه های بعدی از configurePin استفاده می کند

زمان = 200 ؛

e = 0 ؛

x = 0

در حالی که زمان> 0

button_status = readDigitalPin (a ، 'D2') ؛ ٪ با فشار دادن دکمه برابر صفر است ، در غیر این صورت برابر 1 است

ولتاژ = readVoltage (a ، 'A0') ؛٪ پین بستگی به جایی دارد که آن را قرار می دهیم

tempCelcius = (ولتاژ*100) -50 ؛ given در دفترچه راهنمای سنسور داده شده است

tempF (زمان) = (tempCelcius*1.8) +32٪ فرمول تبدیل شناخته شده

حداکثر = 120؛ ٪ درجه فارنهایت

writeDigitalPin (a، 'D11'، 1)؛

rem = mod (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' ؛ ٪ این فایل صوتی را در یک متغیر قرار می دهد

[data، freq] = audioread (z)؛ data داده ها را از فایل صوتی بار می کند

o = پخش کننده صوتی (داده ها ، فرکانس) ؛ an یک شی برای کنترل پخش فایل صوتی ایجاد می کند

o.play ()٪ فایل صوتی را پخش می کند

o.playblocking ()٪ فایل را پخش می کند و منتظر می ماند تا پایان یابد

پایان

if button_status == 0 && rem == 0

e = e+1

msgbox ('Welcome Aboard!')؛

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] = audioread (s)؛ data داده ها را از فایل صوتی بار می کند

o = پخش کننده صوتی (داده ها ، فرکانس) ؛ an یک شی برای کنترل پخش فایل صوتی ایجاد می کند

٪ o.play ()٪ فایل صوتی را پخش می کند

o.playblocking ()٪ فایل را پخش می کند و منتظر می ماند تا پایان یابد

msgbox ("حداکثر ظرفیت")

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) ؛

عنوان ('زمان در مقابل دما')

ylabel ('دما (F)')

xlabel ("زمان (ها)")

saveas (gcf، 'tempplot.jpg')

mail = '[email protected]'

رمز عبور = 'Srsora123#'

میزبان = 'smtp.gmail.com'

setpref ("اینترنت" ، "SMTP_Server" ، میزبان) ؛

setpref ("اینترنت" ، "E_mail" ، نامه) ؛

setpref ("اینترنت" ، "SMTP_Username" ، نامه) ؛

setpref ('اینترنت' ، 'SMTP_Password' ، رمز عبور) ؛

props = 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: نتایج

توصیه شده: