সুচিপত্র:

স্মার্ট ট্রেন সিস্টেম: 4 টি ধাপ
স্মার্ট ট্রেন সিস্টেম: 4 টি ধাপ

ভিডিও: স্মার্ট ট্রেন সিস্টেম: 4 টি ধাপ

ভিডিও: স্মার্ট ট্রেন সিস্টেম: 4 টি ধাপ
ভিডিও: নতুন নিয়মে সিট দেখে ট্রেনের টিকেট কাটুন | Train Ticket Booking Online 2024, জুলাই
Anonim
স্মার্ট ট্রেন সিস্টেম
স্মার্ট ট্রেন সিস্টেম

নিরাপত্তা বৃদ্ধি, দুর্ঘটনা রোধ, এবং দুর্ঘটনা ঘটলে সাহায্য করার জন্য ইতিবাচক এবং উৎপাদনশীল প্রতিক্রিয়া বৃদ্ধি করার জন্য ডিজাইন করা হয়েছে।

ধাপ 1: যন্ত্রাংশ এবং উপকরণ

যন্ত্রাংশ এবং উপকরণ
যন্ত্রাংশ এবং উপকরণ
যন্ত্রাংশ এবং উপকরণ
যন্ত্রাংশ এবং উপকরণ
যন্ত্রাংশ এবং উপকরণ
যন্ত্রাংশ এবং উপকরণ
যন্ত্রাংশ এবং উপকরণ
যন্ত্রাংশ এবং উপকরণ

উপরের ছবিগুলি নিচের অংশের তালিকার ক্রমে রাখা হয়েছে:

অংশ তালিকা

1) এক রাস্পবেরি পিআই 3 - মডেল বি

2) একটি ব্রেডবোর্ড

3) তারগুলি (উপরে থেকে নীচে) - এক শক্তি, এক ইথারনেট, এক অ্যাডাপ্টার

4) এক Servo মোটর

5) একটি 3D মুদ্রিত রেলরোড গেট

6) দুটি LEDs (বিশেষত লাল এবং সবুজ)

7) একটি পুশ বোতাম

8) দশ জাম্পার তারের

9) চারজন প্রতিরোধক

10) MATLAB সহ ল্যাপটপ বা ডেস্কটপ

পদক্ষেপ 2: কনফিগারেশন

কনফিগারেশন
কনফিগারেশন
কনফিগারেশন
কনফিগারেশন
কনফিগারেশন
কনফিগারেশন
কনফিগারেশন
কনফিগারেশন

উপরে একাধিক কোণ থেকে কনফিগার করার ছবি রয়েছে:

পিন লোকেশন (লোয়ার কেস লেটার এবং তারপরে একটি সারি নম্বর) বর্তমান প্রবাহের পরে ক্রম অনুসারে তালিকাভুক্ত করা হয়েছে।

তারের:

j19 থেকে i47

j8 থেকে b50

b5 থেকে Servo

c6 থেকে Servo

b7 থেকে servo

a13 থেকে j7

a17 থেকে LED

LED থেকে a37

e40 থেকে j20

j53 থেকে j18

j7 থেকে LED

LED থেকে j6

বোতাম:

e54 থেকে h51

প্রতিরোধক:

d40 থেকে b37

c50 থেকে d54

i51 থেকে j47

ধাপ 3: কোড এবং যুক্তি

কোড এবং লজিক
কোড এবং লজিক

আমাদের ট্রেন ব্যবস্থার লক্ষ্য হল নিরাপত্তা বৃদ্ধি করা এবং রেলক্রসিংয়ে সম্ভাব্য মারাত্মক দুর্ঘটনার ঝুঁকি কমানো। এটি অর্জনের জন্য, আমাদের সিস্টেমে চালকদের জন্য একটি ট্রেন সতর্কীকরণ ব্যবস্থা রয়েছে, ট্র্যাক অতিক্রম করতে গাড়িগুলিকে আটকাতে একটি শারীরিক বাধা, এবং প্রাথমিক সতর্কতা ব্যবস্থা ব্যর্থ হলে কন্ডাক্টরের জন্য একটি ব্যাকআপ জরুরী বোতাম টিপুন।

GUI কন্ডাকটর অপারেটিং সিস্টেম:

উপরে দেখানো GUI, কন্ডাকটর ব্যবহারের জন্য তৈরি করা হয়েছে কারণ তারা ট্র্যাকের যেসব এলাকায় গাড়ি ট্রাফিক রেলপথ ক্রসিং রয়েছে সেখান দিয়ে ট্রেন চালাচ্ছে।

উপরের ডান দিকের কোণে, একটি আলো রয়েছে যা কন্ডাক্টরকে জানিয়ে দেয় যদি আসন্ন রেলরোড ক্রসিং গেট বন্ধ থাকে এবং প্রয়োজনে কন্ডাক্টরকে গেট খুলতে বা বন্ধ করতে দেয়। তার নীচে, ক্যামেরা থেকে ট্রেন পাস করে ফিড দেখানো হয়। নীচের বাম কোণে, ট্রেনের অবস্থান ক্রমাগত একটি গ্রাফে এবং গ্রাফের নীচে প্লট করা হয়, একটি দিনে ট্রেনটি সম্পন্ন হওয়া ল্যাপের সংখ্যা বলা হয়েছে। অবস্থান গ্রাফের উপরে, একটি জরুরী বোতাম এবং স্থিতি বিবৃতি রয়েছে। এটি ট্র্যাকের উপর গাড়ি থাকলে বা নিরাপত্তা গেট সঠিকভাবে কাজ না করলে কন্ডাক্টর জরুরী অবস্থার জন্য সংকেত দিতে পারে।

কোড:

classdef মাইক্রো

বৈশিষ্ট্য (অ্যাক্সেস = পাবলিক)

UIFigure matlab.ui. চিত্র

RailwaygatestatusLampLabel matlab.ui.control. Label

গেটল্যাম্প matlab.ui.control. Lamp

OpenGateButton matlab.ui.control. Button

CloseGateButton matlab.ui.control. Button

UIAxes matlab.ui.control. UIAxes

জরুরী বোতাম স্ট্যাটাস ল্যাম্প লেবেল matlab.ui.control. Label

জরুরী বোতাম স্ট্যাটাস ল্যাম্প matlab.ui.control. Lamp

অস্বাভাবিক শর্তাবলী matlab.ui.control. Label

UIAxes2 matlab.ui.control. UIAxes

EF230Group6Label matlab.ui.control. Label

IanAllishKellyBondIanDaffronLabel matlab.ui.control. Label

LoopsCompletedLabel matlab.ui.control. Label

লেবেল matlab.ui.control. Label

শেষ

বৈশিষ্ট্য (অ্যাক্সেস = ব্যক্তিগত)

কাউন্টার int16

শেষ

পদ্ধতি (অ্যাক্সেস = পাবলিক)

ফাংশন টাইমার কলব্যাক (অ্যাপ, এসআরসি, ইভেন্ট)

app. Temp. Text = int2str (app.counter);

app.counter = app.counter + 1;

প্রোগ্রামের প্রয়োজনীয় সকল ভেরিয়েবলকে কল করুন - - - - - - - - - - - - -

গ্লোবাল rpi

গ্লোবাল এস

বৈশ্বিক উন্মুক্ত

বিশ্বব্যাপী বন্ধ

গ্লোবাল ক্যাম

বিশ্বব্যাপী মি

বৈশ্বিক ইএমএস

বৈশ্বিক t_count

%------------------------- ট্রেন আর্ম বিভাগ --------------------- ---------

খোলা থাকলে == 0

লেখার অবস্থান (গুলি, 50)

app.gateLamp. Color = 'সবুজ';

শেষ

যদি বন্ধ == 0

লেখার অবস্থান (গুলি, 120)

app.gateLamp. Color = 'লাল';

শেষ

%---------------------- ক্যামেরার মাধ্যমে গতি সনাক্তকরণ -----------------------

যখন সত্য

img = স্ন্যাপশট (ক্যাম);

ছবি (img);

app. UIAxes (drawnow)

শেষ

%---------------------- বাহু খোলা/বন্ধ ----------------------- --------------

যদি পড়ুন

i = 40:.5: 150 %সেতু উত্থাপন করে

লেখার অবস্থান (গুলি, আমি)

শেষ

i = 1:10 %লুপ জ্বলজ্বল করে লাল আলো x পরিমাণে

লিখুন ডিজিটালপিন (rpi, 13, 1)

বিরতি (.5)

লিখুন ডিজিটালপিন (rpi, 13, 0)

বিরতি (.5)

শেষ

writePosition (গুলি, 50)%গেট ডাউন রাখুন

শেষ

%-------------------- মোবাইল ফোন সাপোর্ট/প্লট ------------------------ -

m. AxcelerationSensorEnabled = 1

m.logging = ১

তথ্য = শূন্য (200, 1); রোলিং প্লটের জন্য %intialize ডেটা

চিত্র (app. UIAxes2)

p = চক্রান্ত (তথ্য)

অক্ষ ([xbounda, ybounds])

বিরতি (1)

টিক

যখন toc <30 %30 সেকেন্ডের জন্য চালান

[a, ~] = accellog (m);

যদি দৈর্ঘ্য (a)> 200

ডেটা = একটি (শেষ -199: শেষ, 3);

অন্য

তথ্য (1: দৈর্ঘ্য (a)) = a (:, 3);

শেষ

%redraw প্লট

p. YData = ডেটা;

আঁকা

শেষ

%------------------ হঠাৎ পিক্সেল পরিবর্তন ---------------------------- ------

x1 = img; % পাই এর ক্যামেরা বন্ধ পড়ে

red_mean = mean (mean (x1 (:,:, 1))); % লাল পিক্সেলের গড় পরিমাণ পড়ে

green_mean = mean (mean (x1 (:,:, 2))); % সবুজ পিক্সেলের গড় পরিমাণ পড়ে

blue_mean = mean (mean (x1 (:,:, 3))); % নীল পিক্সেলের গড় পরিমাণ পড়ে

যদি red_mean> 150 && green_mean> 150 && blue_mean> 150

t_count = t_count + 1;

শেষ

app. LoopsCompletedLabel. Text = num2str (t_count)

%------------------ বোতাম ইএমএস প্রোগ্রামিং ---------------------------- ---

configurePin (rpi, 12, 'DigitalOutput'); %আউটপুট হিসাবে নেতৃত্বাধীন পিন, পিন 16 সেট করে

configurePin (rpi, 16, 'DigitalInput'); %একটি ইনপুট হিসাবে বোতাম পিন, পিন 24 সেট করে

buttonPressed = readDigitalPin (rpi, 16); % পিন 16 এ বোতাম প্রেস মান পড়ে

যদি buttonPressed == 1

যখন buttonPressed == 1

লিখুন ডিজিটালপিন (rpi, 12, 1)

buttonunPressed = writeDigitalPin (rpi, 12, 0); %

শেষ % শেষ হয় 'while buttonPressed == 1' লুপ

শেষ

writeDigitalPin (rpi, 16, 0) %সেট বাছাই না করলে বাটনে চাপ দেওয়া হয় setpref (ইন্টারনেট setpref ('ইন্টারনেট', 'ই_মেইল', '[email protected]'); setpref ('ইন্টারনেট', 'SMTP_Username', '[email protected]') থেকে পাঠানোর জন্য % মেল অ্যাকাউন্ট; % প্রেরকের ব্যবহারকারীর নাম setpref ('ইন্টারনেট', 'SMTP_Password', 'efgroup6'); % প্রেরকদের পাসওয়ার্ড

প্রপস = 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');

সেন্ডমেইল ('[email protected] ',' জরুরী অবস্থা! '

app. UndernormalconditionsLabel. Text = ems

শেষ

শেষ

%app. Label_4. Text = num2str (curr_temp);

পদ্ধতি (অ্যাক্সেস = ব্যক্তিগত)

% কোড যা কম্পোনেন্ট তৈরির পরে কার্যকর হয়

ফাংশন স্টার্টআপএফসিএন (অ্যাপ)

এই ফাংশনের জন্য প্রয়োজনীয় সকল ভেরিয়েবল --------------------

গ্লোবাল rpi %arduino

rpi = রাস্পি ('169.254.0.2', 'পাই', 'রাস্পবেরি');

গ্লোবাল s %সার্ভো

s = servo (rpi, 17, 'MinPulseDuration', 5e-4, 'MaxPulseDuration', 2.5e-3);

বৈশ্বিক উন্মুক্ত

খোলা = 1;

বিশ্বব্যাপী বন্ধ

বন্ধ = 1;

গ্লোবাল ক্যাম

ক্যাম = ক্যামেরাবোর্ড (আরপিআই);

বিশ্বব্যাপী মি

m = মোবাইলদেব;

বৈশ্বিক ইএমএস

ems = 'একটি জরুরি অবস্থা রিপোর্ট করা হয়েছে, EMS কে অবহিত করে';

বৈশ্বিক t_count

t_count = 0;

%পাসওয়ার্ডের সংযোগকারী হল EFGroup6

লুপের জন্য % টাইমার ফাংশন --------------------------------

app.counter = 0;

t = টাইমার (…

'টাইমারএফসিএন', @app.timerCallback,…

'StartDelay', 1, … 'Period', 1, …

'এক্সিকিউশন মোড', 'ফিক্সডস্পেসিং',…

'TasksToExecute', inf);

শুরু (টি);

শেষ

% কলব্যাক ফাংশন

ফাংশন ManualOverrideSwitchValueChanged (app, event)

শেষ

% বাটন পুশ ফাংশন: OpenGateButton

ফাংশন OpenGateButtonPushed (অ্যাপ, ইভেন্ট)

বিশ্বব্যাপী বন্ধ

বন্ধ = 0;

শেষ

% বোতাম ধাক্কা ফাংশন: CloseGateButton

ফাংশন CloseGateButtonPushed (অ্যাপ, ইভেন্ট)

বৈশ্বিক উন্মুক্ত

খোলা = 0;

শেষ

শেষ

% অ্যাপ আরম্ভ এবং নির্মাণ

পদ্ধতি (অ্যাক্সেস = ব্যক্তিগত)

% UIFigure এবং উপাদান তৈরি করুন

ফাংশন createComponents (অ্যাপ)

% UIFigure তৈরি করুন

app. UIFigure = uifigure;

app. UIFigure. Position = [100 100 640 480];

app. UIFigure. Name = 'UI চিত্র';

% RailwaygatestatusLampLabel তৈরি করুন

app. RailwaygatestatusLampLabel = uilabel (app. UIFigure);

app. RailwaygatestatusLampLabel. HorizontalAlignment = 'right'; app. RailwaygatestatusLampLabel. Position = [464 422 110 22]; app. RailwaygatestatusLampLabel. Text = 'রেল গেটের অবস্থা';

% গেটল্যাম্প তৈরি করুন

app.gateLamp = uilamp (app. UIFigure);

app.gateLamp. Position = [589 422 20 20];

app.gateLamp. Color = [0.9412 0.9412 0.9412];

% OpenGateButton তৈরি করুন

app. OpenGateButton = uibutton (app. UIFigure, 'push');

app. OpenGateButton. ButtonPushedFcn = createCallbackFcn (app, penOpenGateButtonPushed, true); app. OpenGateButton. Position = [474 359 100 22];

app. OpenGateButton. Text = 'Open Gate';

% CloseGateButton তৈরি করুন

app. CloseGateButton = uibutton (app. UIFigure, 'push');

app. CloseGateButton. ButtonPushedFcn = createCallbackFcn (app, loseCloseGateButtonPushed, true); app. CloseGateButton. Position = [474 285 100 22];

app. CloseGateButton. Text = 'গেট বন্ধ করুন';

UIAxes তৈরি করুন

app. UIAxes = uiaxes (app. UIFigure);

শিরোনাম (app. UIAxes, 'ক্যামেরা ফিড')

app. UIAxes. Position = [341 43 300 185];

% EmergencyButtonStatusLampLabel তৈরি করুন

app. EmergencyButtonStatusLampLabel = uilabel (app. UIFigure); app. EmergencyButtonStatusLampLabel. HorizontalAlignment = 'right'; app. EmergencyButtonStatusLampLabel. Position = [97 323 142 22]; app. EmergencyButtonStatusLampLabel. Text = 'জরুরী বোতাম অবস্থা';

% EmergencyButtonStatusLamp তৈরি করুন

app. EmergencyButtonStatusLamp = uilamp (app. UIFigure); app. EmergencyButtonStatusLamp. Position = [254 323 20 20];

% UndernormalconditionsLabel তৈরি করুন

app. UndernormalconditionsLabel = uilabel (app. UIFigure);

app. UndernormalconditionsLabel. Position = [108 285 248 22];

app. UndernormalconditionsLabel. Text = 'স্বাভাবিক অবস্থায়';

% UIAxes2 তৈরি করুন

app. UIAxes2 = uiaxes (app. UIFigure);

শিরোনাম (app. UIAxes2, 'ট্রেনের অবস্থান')

xlabel (app. UIAxes2, 'X পজিশন')

ylabel (app. UIAxes2, 'Y অবস্থান')

app. UIAxes2. Box = 'on';

app. UIAxes2. XGrid = 'on';

app. UIAxes2. YGrid = 'on';

app. UIAxes2. Position = [18 43 300 185];

EF230Group6Label তৈরি করুন

app. EF230Group6Label = uilabel (app. UIFigure);

app. EF230Group6Label. HorizontalAlignment = 'center';

app. EF230Group6Label. FontSize = 28;

app. EF230Group6Label. FontWeight = 'সাহসী';

app. EF230Group6Label. Position = [-4 401 379 64];

app. EF230Group6Label. Text = 'EF 230 Group 6';

IanAllishKellyBondIanDaffronLabel তৈরি করুন

app. IanAllishKellyBondIanDaffronLabel = uilabel (app. UIFigure); app. IanAllishKellyBondIanDaffronLabel. Position = [94 380 184 22]; app. IanAllishKellyBondIanDaffronLabel. Text = 'Ian Allish, Kelly Bond, Ian Daffron';

% LoopsCompletedLabel তৈরি করুন

app. LoopsCompletedLabel = uilabel (app. UIFigure);

app. LoopsCompletedLabel. Position = [18 10 103 22];

app. LoopsCompletedLabel. Text = 'Loops Completed:';

% লেবেল তৈরি করুন

app. Label = uilabel (app. UIFigure);

app. Label. Position = [120 10 178 22];

app. Label. Text = '####';

শেষ

শেষ

পদ্ধতি (অ্যাক্সেস = পাবলিক)

% কনস্ট্রাক্ট অ্যাপ

ফাংশন অ্যাপ = মাইক্রো

% উপাদান তৈরি এবং কনফিগার করুন

createComponents (অ্যাপ)

অ্যাপ ডিজাইনারের সাথে অ্যাপটি নিবন্ধন করুন

RegisterApp (app, app. UIFigure)

% স্টার্টআপ ফাংশন চালান

runStartupFcn (অ্যাপ, artstartupFcn)

যদি nargout == 0

পরিষ্কার অ্যাপ

শেষ

শেষ

% কোড যা অ্যাপ মুছে ফেলার আগে কার্যকর হয়

মুছে ফেলুন (অ্যাপ)

অ্যাপ মুছে গেলে UIFigure % মুছে দিন

মুছে দিন (app. UIFigure)

শেষ

শেষ

শেষ

ধাপ 4: চূড়ান্ত ধাপ

শেষ ধাপ
শেষ ধাপ

একবার কোড লেখা হয়ে গেলে এবং রাস্পবেরি পাই তারযুক্ত হয়ে গেলে, 3-ডি মুদ্রিত রেলরোড ট্র্যাক গেটে সার্ভো মোটর সংযুক্ত করুন কারণ এটি উপরের ছবিতে সংযুক্ত রয়েছে।

এখন, প্রকল্পটি সম্পূর্ণ। রাস্পবেরি পিআইকে ট্রেনের ট্র্যাকের সাথে সংযুক্ত করুন এবং গাড়ি চালক এবং কন্ডাক্টর উভয়ের জন্য নিরাপদ রেলপথ ক্রসিং তৈরি করে নতুন সিস্টেমটি পর্যবেক্ষণ করুন। দুর্ঘটনা রোধ করার জন্য সেট করা ব্যর্থ সেফগুলিকে ট্রিগার করতে GUI- এর সাথে যোগাযোগ করে সিস্টেমের সাথে খেলুন।

এটি টিউটোরিয়ালের সমাপ্তি, আপনার নতুন স্মার্ট ট্রেন সিস্টেম উপভোগ করুন!

প্রস্তাবিত: