Სარჩევი:

ჭკვიანი მატარებლის სისტემა: 4 ნაბიჯი
ჭკვიანი მატარებლის სისტემა: 4 ნაბიჯი

ვიდეო: ჭკვიანი მატარებლის სისტემა: 4 ნაბიჯი

ვიდეო: ჭკვიანი მატარებლის სისტემა: 4 ნაბიჯი
ვიდეო: კახი კალაძე დატროლეს 😀🤣🤣 2024, ნოემბერი
Anonim
ჭკვიანი მატარებლის სისტემა
ჭკვიანი მატარებლის სისტემა

შექმნილია უსაფრთხოების გაზრდის, უბედური შემთხვევების თავიდან ასაცილებლად და პოზიტიური და პროდუქტიული რეაგირების გასაადვილებლად, თუ უბედური შემთხვევა მოხდება.

ნაბიჯი 1: ნაწილები და მასალები

ნაწილები და მასალები
ნაწილები და მასალები
ნაწილები და მასალები
ნაწილები და მასალები
ნაწილები და მასალები
ნაწილები და მასალები
ნაწილები და მასალები
ნაწილები და მასალები

ზემოთ მოყვანილი სურათები მოთავსებულია ნაწილების ჩამონათვალის მიხედვით:

ნაწილების სია

1) ერთი ჟოლო PI 3 - მოდელი B

2) ერთი პურის დაფა

3) კაბელები (ზემოდან ქვემოდან) - ერთი დენის, ერთი Ethernet, ერთი ადაპტერი

4) ერთი სერვო ძრავა

5) ერთი 3D დაბეჭდილი რკინიგზის კარიბჭე

6) ორი LED (სასურველია წითელი და მწვანე)

7) ერთი დაჭერის ღილაკი

8) ათი მხტუნავი მავთული

9) ოთხი რეზისტორი

10) ლეპტოპი ან სამუშაო მაგიდა MATLAB– ით

ნაბიჯი 2: კონფიგურაცია

კონფიგურაცია
კონფიგურაცია
კონფიგურაცია
კონფიგურაცია
კონფიგურაცია
კონფიგურაცია
კონფიგურაცია
კონფიგურაცია

ზემოთ მოცემულია კონფიგურაციის სურათები მრავალი კუთხიდან:

პინების ადგილები (მცირე ზომის ასო, რასაც მოჰყვება რიგის ნომერი) ქვემოთ ჩამოთვლილია მიმდინარე ნაკადის მიხედვით.

მავთულები:

j19 to i47

j8 to b50

b5 სერვოზე

c6 სერვოსკენ

b7 სერვისზე

a13 to j7

a17 LED- მდე

LED დან a37

e40 to j20

j53 to j18

j7 LED- მდე

LED to j6

ღილაკი:

e54 to h51

რეზისტორები:

d40 დან b37

c50 დან d54

i51 to j47

ნაბიჯი 3: კოდი და ლოგიკა

კოდი და ლოგიკა
კოდი და ლოგიკა

ჩვენი მატარებლის სისტემის მიზანია უსაფრთხოების გაზრდა და რკინიგზის გადასასვლელებზე პოტენციურად სასიკვდილო ავარიების რისკის შემცირება. ამ მიზნის მისაღწევად, ჩვენს სისტემას აქვს მძღოლების მატარებლის გაფრთხილების სისტემა, ფიზიკური ბარიერი, რომელიც იშლება მანქანების ბილიკზე გადასვლის თავიდან ასაცილებლად და სარეზერვო გადაუდებელი ღილაკი დირიჟორისთვის, რომ დააჭიროს ადრეული გაფრთხილების სისტემას.

GUI დირიჟორის ოპერაციული სისტემა:

GUI, რომელიც ნაჩვენებია ზემოთ, შეიქმნა კონდუქტორის გამოყენებისათვის, რადგან ისინი მატარებელს მართავენ ბილიკის იმ უბნებში, სადაც მანქანების მოძრაობაა რკინიგზის გადასასვლელი.

ზედა მარჯვენა კუთხეში არის შუქი, რომელიც აცნობებს გამტარს, თუ მომავალი რკინიგზის გადასასვლელი კარი დახურულია და საშუალებას აძლევს დირიჟორს გახსნას ან დახუროს კარიბჭე საჭიროების შემთხვევაში. ამის ქვემოთ ნაჩვენებია კამერების მატარებელი, რომელსაც მატარებელი გადის. ქვედა მარცხენა კუთხეში, მატარებლის ადგილმდებარეობა განუწყვეტლივ არის გამოსახული გრაფიკზე და გრაფის ქვემოთ, მითითებულია მატარებლის მიერ ერთი დღის განმავლობაში შესრულებული წრეების რაოდენობა. პოზიციის დიაგრამის ზემოთ, არის გადაუდებელი ღილაკი და სტატუსის განცხადება. ეს საშუალებას აძლევს კონდუქტორს სიგნალი გაუწიოს საგანგებო სიტუაციას, თუ ტრასაზე არის მანქანა ან უსაფრთხოების კარიბჭე არ მუშაობს სწორად.

კოდი:

classdef micro <matlab.apps. AppBase % თვისებები, რომლებიც შეესაბამება აპლიკაციის კომპონენტებს

თვისებები (წვდომა = საჯარო)

UIFigure matlab.ui. Figure

RailwaygatestatusLampLabel matlab.ui.control. Label

gateLamp matlab.ui.control. Lamp

OpenGateButton matlab.ui.control. Button

CloseGateButton matlab.ui.control. Button

UIAxes matlab.ui.control. UIAxes

EmergencyButtonStatusLampLabel matlab.ui.control. Label

EmergencyButtonStatusLamp 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

დასასრული

მეთოდები (წვდომა = საჯარო)

ფუნქციის ქრონომეტრი დარეკვა (აპლიკაცია, src, მოვლენა)

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

app.counter = app.counter + 1;

%იძახებს პროგრამის საჭირო ყველა ცვლადს - - - - - - - - - - - - - -

გლობალური rpi

გლობალური ს

გლობალური ღია

გლობალური დახურვა

გლობალური კამერა

გლობალური მ

გლობალური ems

გლობალური t_count

%------------------------- მატარებლის მკლავის განყოფილება --------------------- ---------

თუ გახსნილია == 0

writePosition (s, 50)

app.gateLamp. Color = 'მწვანე';

დასასრული

თუ ახლოს == 0

writePosition (s, 120)

app.gateLamp. Color = 'წითელი';

დასასრული

%---------------------- კამერის საშუალებით მოძრაობის ამოცნობა -----------------------

მართალია

img = სურათი (კამერა);

სურათი (img);

აპლიკაცია. UIAxes (drawnow)

დასასრული

%---------------------- მკლავი გახსნა/დახურვა ----------------------- --------------

თუ readDigitalPin (rpi, 20)> 1 %კითხულობს პინ 17 -ს (ღილაკს) და ამოწმებს სიგნალს

for i = 40:.5: 150 %ამაღლებს ხიდს

writePosition (s, i)

დასასრული

for i = 1:10 %მარყუჟები აციმციმებს წითელ შუქს x ბევრჯერ

writeDigitalPin (rpi, 13, 1)

პაუზა (.5)

writeDigitalPin (rpi, 13, 0)

პაუზა (.5)

დასასრული

writePosition (s, 50)%put gate down

დასასრული

%-------------------- მობილური ტელეფონის მხარდაჭერა/ნაკვეთი ------------------------ -

მ. აჩქარების სენსორი ჩართულია = 1

მ. ჩაწერა = 1

მონაცემები = ნული (200, 1); %intialize მონაცემები მოძრავი ნაკვეთი

ფიგურა (აპლიკაცია. UIAxes2)

p = ნაკვეთი (მონაცემები)

ღერძი ([xbounda, ybounds])

პაუზა (1)

ტიკ

ხოლო toc <30 %მუშაობს 30 წამის განმავლობაში

[a, ~] = დამატება (მ);

თუ სიგრძე (a)> 200

მონაცემები = a (დასასრული-199: დასასრული, 3);

სხვა

მონაცემები (1: სიგრძე (ა)) = ა (:, 3);

დასასრული

%გადაწერო ნაკვეთი

გვ. მონაცემები = მონაცემები;

დნოუ

დასასრული

%------------------ პიქსელის უეცარი შეცვლა -------------------------------- ------

x1 = img; % კითხულობს pi- ს კამერას

red_mean = საშუალო (საშუალო (x1 (:,:, 1))); % კითხულობს წითელი პიქსელების საშუალო რაოდენობას

green_mean = საშუალო (საშუალო (x1 (:,,, 2))); % კითხულობს მწვანე პიქსელების საშუალო რაოდენობას

blue_mean = საშუალო (საშუალო (x1 (:,,, 3))); % კითხულობს ცისფერი პიქსელების საშუალო რაოდენობას

თუ red_mean> 150 && green_mean> 150 && blue_mean> 150

t_count = t_count + 1;

დასასრული

app. LoopsCompletedLabel. Text = num2str (t_count)

%------------------ ღილაკი EMS პროგრამირება ---------------------------- ---

configurePin (rpi, 12, 'DigitalOutput'); %ადგენს led pin, pin 16, როგორც გამომავალს

configurePin (rpi, 16, 'DigitalInput'); %ადგენს ღილაკის პინს, პინ 24, შეყვანის სახით

buttonPressed = readDigitalPin (rpi, 16); % კითხულობს ღილაკის დაჭერის მნიშვნელობას პინ 16 -ზე

თუ ღილაკიპრესილი == 1

ხოლო ღილაკი დაჭერილი == 1

writeDigitalPin (rpi, 12, 1)

buttonunPressed = ჩაწერეთDigitalPin (rpi, 12, 0); %

დასასრული % მთავრდება 'while buttonPressed == 1' მარყუჟში

დასასრული

writeDigitalPin (rpi, 16, 0) %აყენებს led- ს გამორთვას, როდესაც ღილაკს აღარ დააჭერთ setpref ('ინტერნეტი', 'SMTP_Server', 'smtp.gmail.com'); setpref ('ინტერნეტი', 'E_mail', '[email protected]'); % ფოსტის ანგარიში გაგზავნის setpref- დან ("ინტერნეტი", "SMTP_Username", "[email protected]"); % გამგზავნის მომხმარებლის სახელი setpref ("ინტერნეტი", "SMTP_Password", "efgroup6"); გამგზავნის პაროლი

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 ('[email protected] ',' გადაუდებელი მდგომარეობა! ',' დირიჟორმა გაააქტიურა ხელით გადართვის გადამრთველი, ითხოვს დაუყოვნებლივ რეაგირებას! ')

app. UndernormalconditionsLabel. Text = ems

დასასრული

დასასრული

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

მეთოდები (წვდომა = პირადი)

კოდი, რომელიც სრულდება კომპონენტის შექმნის შემდეგ

ფუნქციის გაშვება Fcn (აპლიკაცია)

%---------- ამ ფუნქციისათვის საჭირო ყველა ცვლადი --------------------

გლობალური rpi %arduino

rpi = raspi ('169.254.0.2', 'pi', 'ჟოლო');

გლობალური s %servo

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

გლობალური ღია

გახსნა = 1;

გლობალური დაიხურა

დაიხურა = 1;

გლობალური კამერა

კამერა = კამერა (rpi);

გლობალური მ

m = mobiledev;

გლობალური ems

ems = 'დაფიქსირდა საგანგებო მდგომარეობა, რომელიც აცნობებს EMS- ს';

გლობალური t_count

t_count = 0;

%პაროლის კონექტორი არის EFGroup6

% ტაიმერის ფუნქცია მარყუჟისთვის --------------------------------

app.counter = 0;

t = ტაიმერი (…

'TimerFcn', @app.timerCallback,…

'StartDelay', 1,… 'პერიოდი', 1,…

'ExecutionMode', 'fixedSpacing',…

'TasksToExecute', inf);

დაწყება (t);

დასასრული

% Callback ფუნქცია

ფუნქცია ManualOverrideSwitchValueChanged (აპლიკაცია, ღონისძიება)

დასასრული

ღილაკმა აიძულა ფუნქცია: OpenGateButton

ფუნქცია OpenGateButtonPushed (აპლიკაცია, ღონისძიება)

გლობალური დახურვა

დახურვა = 0;

დასასრული

ღილაკმა აიძულა ფუნქცია: CloseGateButton

ფუნქცია CloseGateButtonPushed (აპლიკაცია, ღონისძიება)

გლობალური ღია

გახსნა = 0;

დასასრული

დასასრული

აპლიკაციის ინიციალიზაცია და მშენებლობა

მეთოდები (წვდომა = პირადი)

შექმენით UIFigure და კომპონენტები

ფუნქცია createComponents (აპლიკაცია)

შექმენით UIFigure

app. UIFigure = uifigure;

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

app. UIFigure. Name = 'ინტერფეისის ფიგურა';

შექმენით RailwaygatestatusLampLabel

app. RailwaygatestatusLampLabel = uilabel (app. UIFigure);

app. RailwaygatestatusLampLabel. HorizontalAlignment = 'მარჯვნივ'; app. RailwaygatestatusLampLabel. Position = [464 422 110 22]; app. RailwaygatestatusLampLabel. Text = 'რკინიგზის კარიბჭის სტატუსი';

შექმნა gateLamp

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, 'ბიძგი');

app. OpenGateButton. ButtonPushedFcn = createCallbackFcn (აპლიკაცია, @OpenGateButtonPushed, ჭეშმარიტი); app. OpenGateButton. Position = [474 359 100 22];

app. OpenGateButton. Text = 'გახსენით კარიბჭე';

შექმენით CloseGateButton

app. CloseGateButton = uibutton (app. UIFigure, 'ბიძგი');

app. CloseGateButton. ButtonPushedFcn = createCallbackFcn (აპლიკაცია, @CloseGateButtonPushed, ჭეშმარიტი); app. CloseGateButton. Position = [474 285 100 22];

app. CloseGateButton. Text = 'დახურე კარიბჭე';

შექმნა UIAxes

app. UIAxes = uiaxes (app. UIFigure);

სათაური (აპლიკაცია. UIAxes, 'Camera Feed')

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

% შექმნა EmergencyButtonStatusLampLabel

app. EmergencyButtonStatusLampLabel = uilabel (app. UIFigure); app. EmergencyButtonStatusLampLabel. HorizontalAlignment = 'მარჯვნივ'; 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 = უიაქსები (app. UIFigure);

სათაური (აპლიკაცია. UIAxes2, "მატარებლის პოზიცია")

xlabel (აპლიკაცია. UIAxes2, 'X Position')

ylabel (აპლიკაცია. UIAxes2, 'Y Position')

app. UIAxes2. Box = 'ჩართული';

app. UIAxes2. XGrid = 'ჩართული';

app. UIAxes2. YGrid = 'ჩართული';

app. UIAxes2. პოზიცია = [18 43 300 185];

შექმენით EF230Group6Label

app. EF230Group6Label = uilabel (app. UIFigure);

app. EF230Group6Label. HorizontalAlignment = 'ცენტრი';

app. EF230Group6Label. FontSize = 28;

app. EF230Group6Label. FontWeight = 'თამამი';

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

app. EF230Group6Label. Text = 'EF 230 ჯგუფი 6';

შექმენით IanAllishKellyBondIanDaffronLabel

app. IanAllishKellyBondIanDaffronLabel = uilabel (app. UIFigure); app. IanAllishKellyBondIanDaffronLabel. Position = [94 380 184 22]; app. IanAllishKellyBondIanDaffronLabel. Text = 'იან ალლიში, კელი ბონდი, იან დაფრონი';

შექმნა LoopsCompletedLabel

app. LoopsCompletedLabel = uilabel (app. UIFigure);

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

app. LoopsCompletedLabel. Text = 'მარყუჟები დასრულებულია:';

ლეიბლის შექმნა

app. Label = uilabel (app. UIFigure);

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

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

დასასრული

დასასრული

მეთოდები (წვდომა = საჯარო)

% ააშენე აპლიკაცია

ფუნქციის აპლიკაცია = მიკრო

კომპონენტების შექმნა და კონფიგურაცია

კომპონენტების შექმნა (აპლიკაცია)

რეგისტრაცია app ერთად App დიზაინერი

registerApp (აპლიკაცია, აპლიკაცია. UIFigure)

შეასრულეთ გაშვების ფუნქცია

runStartupFcn (აპლიკაცია, @startupFcn)

თუ ნარგუტი == 0

წმინდა აპლიკაცია

დასასრული

დასასრული

% კოდი, რომელიც მუშაობს პროგრამის წაშლამდე

წაშლა (აპლიკაცია)

% წაშლა UIFigure როდესაც აპლიკაცია წაიშლება

წაშლა (აპლიკაცია. UIFigure)

დასასრული

დასასრული

დასასრული

ნაბიჯი 4: საბოლოო ნაბიჯი

დასკვნითი ნაბიჯი
დასკვნითი ნაბიჯი

მას შემდეგ, რაც კოდი დაიწერება და Raspberry Pi იქნება ჩართული, მიამაგრეთ სერვო ძრავა სამგანზომილებიან ბეჭდვით სარკინიგზო ბილიკზე, როგორც ეს მიმაგრებულია ზემოთ მოცემულ სურათზე.

ახლა, პროექტი დასრულებულია. შეაერთეთ ჟოლოს PI მატარებლის ბილიკზე და დააკვირდით ახალ სისტემას, რომელიც ქმნის უსაფრთხო რკინიგზის გადასასვლელს როგორც მანქანის მძღოლებისთვის, ასევე გამტარებისთვის. ითამაშეთ სისტემასთან GUI– სთან ურთიერთობით, რათა მოხდეს ავარიების თავიდან ასაცილებლად შექმნილი სეიფები.

ეს არის გაკვეთილის დასასრული, ისიამოვნეთ თქვენი ახალი ჭკვიანი მატარებლის სისტემით!

გირჩევთ: