ዝርዝር ሁኔታ:

ስማርት ባቡር ስርዓት - 4 ደረጃዎች
ስማርት ባቡር ስርዓት - 4 ደረጃዎች

ቪዲዮ: ስማርት ባቡር ስርዓት - 4 ደረጃዎች

ቪዲዮ: ስማርት ባቡር ስርዓት - 4 ደረጃዎች
ቪዲዮ: አስደናቂ አፕሊኬሽን || የአንድን ሰው ስልክ ቁጥር በማስገባት ብቻ ስለ እሱ/ሷ መረጃ የሚሰጥ አፕ። 2024, ሀምሌ
Anonim
ስማርት ባቡር ስርዓት
ስማርት ባቡር ስርዓት

አደጋዎች ቢከሰቱ ለማገዝ ደህንነትን ለመጨመር ፣ አደጋዎችን ለመከላከል እና አዎንታዊ እና ምርታማ ምላሽ እንዲጨምር የተነደፈ።

ደረጃ 1: ክፍሎች እና ቁሳቁሶች

ክፍሎች እና ቁሳቁሶች
ክፍሎች እና ቁሳቁሶች
ክፍሎች እና ቁሳቁሶች
ክፍሎች እና ቁሳቁሶች
ክፍሎች እና ቁሳቁሶች
ክፍሎች እና ቁሳቁሶች
ክፍሎች እና ቁሳቁሶች
ክፍሎች እና ቁሳቁሶች

ከላይ ያሉት ሥዕሎች ከዚህ በታች ባሉት ክፍሎች ዝርዝር ቅደም ተከተል ተቀምጠዋል -

ክፍሎች ዝርዝር

1) አንድ Raspberry PI 3 - ሞዴል ቢ

2) አንድ የዳቦ ሰሌዳ

3) ኬብሎች (ከላይ ወደ ታች) - አንድ ኃይል ፣ አንድ ኤተርኔት ፣ አንድ አስማሚ

4) አንድ Servo ሞተር

5) አንድ 3 ዲ የታተመ የባቡር ሐዲድ በር

6) ሁለት ኤልኢዲዎች (የተሻለ ቀይ እና አረንጓዴ)

7) አንድ የግፊት ቁልፍ

8) አስር ዝላይ ሽቦዎች

9) አራት ተከላካዮች

10) ላፕቶፕ ወይም ዴስክቶፕ ከ MATLAB ጋር

ደረጃ 2: ውቅር

ውቅረት
ውቅረት
ውቅረት
ውቅረት
ውቅረት
ውቅረት
ውቅረት
ውቅረት

ከላይ ከብዙ ማዕዘኖች የማዋቀር ሥዕሎች አሉ-

የአሁኑን ፍሰት ተከትሎ በቅደም ተከተል የፒን ሥፍራዎች (የረድፍ ቁጥር የተከተለ ዝቅተኛ ፊደል) ከዚህ በታች ተዘርዝረዋል።

ሽቦዎች

j19 እስከ i47

j8 እስከ b50

b5 ወደ ሰርቮ

c6 ወደ ሰርቮ

ለ 7 ወደ servo

ከ 13 እስከ j7

a17 ወደ LED

LED ወደ a37

ከ e40 እስከ j20

j53 እስከ j18

j7 ወደ LED

LED ወደ j6

አዝራር ፦

e54 እስከ h51

ተከላካዮች ፦

ከ 40 እስከ ለ 37

ከ 50 እስከ 54

i51 እስከ j47

ደረጃ 3 ኮድ እና አመክንዮ

ኮድ እና ሎጂክ
ኮድ እና ሎጂክ

የባቡር ሥርዓታችን ዓላማ ደህንነትን ማሳደግ እና በባቡር ሐዲዶች መተላለፊያዎች ላይ ለሞት ሊዳርጉ የሚችሉ አደጋዎችን አደጋ ለመቀነስ ነው። ይህንን ለማሳካት የእኛ ስርዓት ለአሽከርካሪዎች የባቡር ማስጠንቀቂያ ስርዓት ፣ መኪናዎች ትራኩን እንዳያቋርጡ የሚከለክለው አካላዊ መሰናክል እና የቅድመ ማስጠንቀቂያ ስርዓቱ ካልተሳካ መሪውን ለመጫን የመጠባበቂያ የድንገተኛ አደጋ ቁልፍ አለው።

GUI የአመራር ስርዓተ ክወና

ከላይ የሚታየው GUI ፣ የመኪና ትራፊክ ባቡር መሻገሪያ ባላቸው የትራክ ቦታዎች ባቡሩን በሚያሽከረክሩበት ጊዜ ለተመራማሪው አጠቃቀም የተፈጠረ ነው።

በላይኛው ቀኝ ጥግ ላይ መጪው የባቡር ሐዲድ ማቋረጫ በር ከተዘጋ መሪውን በሩን እንዲከፍት ወይም እንዲዘጋ የሚያስችለውን ብርሃን የሚያስተላልፍ መብራት አለ። ከዚህ በታች ባቡሩ ከሚያልፈው ካሜራዎች የሚመገበው ምግብ ይታያል። በታችኛው ግራ ጥግ ላይ የባቡሩ ሥፍራ ያለማቋረጥ በግራፍ ላይ እና ከግራፉ በታች የተቀረፀ ሲሆን ባቡሩ በአንድ ቀን ያጠናቀቃቸው የጭንቶች ብዛት ተገል isል። ከቦታው ግራፍ በላይ ፣ የአደጋ ጊዜ ቁልፍ እና የሁኔታ መግለጫ አለ። በትራኩ ላይ መኪና ካለ ወይም የደህንነት በር በትክክል ካልሰራ ይህ ተቆጣጣሪው ለአስቸኳይ ጊዜ ምልክት እንዲያደርግ ያስችለዋል።

ኮድ ፦

classdef micro <matlab.apps. AppBase % ከመተግበሪያ ክፍሎች ጋር የሚዛመዱ ባህሪዎች

ንብረቶች (መዳረሻ = ይፋዊ)

UIFigure matlab.ui. ምስል

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

የአደጋ ጊዜ አዝራር ስታቲስፓምፕ ላምቤል matlab.ui.control. Label

የአደጋ ጊዜ አዝራር ስታቱስላፕ matlab.ui.control. Lamp

ያልተለመዱ ሁኔታዎች ላቤል matlab.ui.control. Label

UIAxes2 matlab.ui.control. UIAxes

EF230Group6Label matlab.ui.control. Label

ኢያን አሊሽ ኬሊ ቦንድ ኢያን ዳፍሮን ላቤል matlab.ui.control. ላቤል

LoopsCompletedLabel matlab.ui.control. Label

መለያ matlab.ui.control. Label

አበቃ

ንብረቶች (መዳረሻ = የግል)

ቆጣሪ int16

አበቃ

ዘዴዎች (መዳረሻ = ይፋዊ)

የተግባር ሰዓት ቆጣሪ ጥሪ (መተግበሪያ ፣ ኤስ አር ሲ ፣ ክስተት)

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

app.counter = app.counter + 1;

%ፕሮግራሙ የሚያስፈልጋቸውን ሁሉንም ተለዋዋጮች ይደውሉ - - - - - - - - - - - - - -

ዓለም አቀፍ rpi

global s

ዓለም አቀፍ ክፍት

ዓለም አቀፋዊ

ዓለም አቀፍ ካሜራ

ዓለም አቀፍ ኤም

ዓለም አቀፍ ኤም.ኤም

ዓለም አቀፍ t_count

%------------------------- የባቡር ክንድ ክፍል --------------------- ---------

ክፍት ከሆነ == 0

ቦታ (ቶች ፣ 50)

app.gateLamp. Color = 'አረንጓዴ';

አበቃ

ቅርብ ከሆነ == 0

ቦታ (ዎች ፣ 120)

app.gateLamp. Color = 'ቀይ';

አበቃ

%---------------------- በካሜራ በኩል የእንቅስቃሴ ማወቂያ -----------------------

እውነት እያለ

img = ቅጽበተ -ፎቶ (ካሜራ);

ምስል (img);

መተግበሪያ። UIAxes (drawow)

አበቃ

%---------------------- ክንድ ክፍት/ዝጋ ----------------------- --------------

ከተነበበ DigitalPin (rpi, 20)> 1 %ፒን 17 (ቁልፍ) ያነባል እና ምልክት ይፈትሻል

ለ i = 40:.5: 150 %ድልድይ ያነሳል

ቦታ (ዎች ፣ i)

አበቃ

ለ i = 1:10 %ቀለበቶች ብልጭ ድርግም የሚሉ ቀይ ብርሃን x ጊዜዎች ብዛት

ይፃፉ ዲጂታል ፒን (አርፒአይ ፣ 13 ፣ 1)

ለአፍታ አቁም (.5)

ይፃፉ ዲጂታል ፒን (አርፒአይ ፣ 13 ፣ 0)

ለአፍታ አቁም (.5)

አበቃ

መጻፍ አቀማመጥ (ቶች ፣ 50)%በሩን አስቀምጠዋል

አበቃ

%-------------------- የሞባይል ስልክ ድጋፍ/ሴራ ------------------------ -

m AccelerationSensorEnabled = 1

መ. ብሎግ = 1

ውሂብ = ዜሮዎች (200 ፣ 1); ለሚንከባለል ሴራ %መረጃን ያብጁ

ምስል (መተግበሪያ። UIAxes2)

p = ሴራ (ውሂብ)

ዘንግ ([xbounda, ybounds])

ለአፍታ አቁም (1)

tic

toc <30 %ለ 30 ሰከንዶች ያህል ሲሮጥ

[ሀ ፣ ~] = ተቀባዩ (ሜ);

ርዝመት (ሀ)> 200 ከሆነ

ውሂብ = ሀ (መጨረሻ -1999 መጨረሻ ፣ 3);

ሌላ

ውሂብ (1: ርዝመት (ሀ)) = ሀ (:, 3);

አበቃ

%እንደገና ይድገሙ

p. YData = ውሂብ;

Drawow

አበቃ

%------------------ ድንገተኛ የፒክሰል ለውጥ ---------------------------- ------

x1 = img; % ካሜራውን ከፓይ ያነባል

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)

%------------------ የአዝራር ኢኤምኤስ ፕሮግራም ---------------------------- ---

configurePin (rpi ፣ 12 ፣ ‘DigitalOutput’); %መሪውን ፒን ፣ ፒን 16 ን እንደ ውፅዓት ያዘጋጃል

configurePin (rpi, 16 ፣ 'DigitalInput'); %የአዝራር ፒን ፣ ፒን 24 ን እንደ ግብዓት ያዘጋጃል

buttonPressed = readDigitalPin (rpi, 16); % በፒን 16 ላይ ያለውን የአዝራር ተጫን እሴት ያነባል

አዝራር ከተጫነ == 1

አዝራር ተጭኖ == 1

ይፃፉ ዲጂታል ፒን (አርፒአይ ፣ 12 ፣ 1)

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

መጨረሻ % ያበቃል 'አዝራር ተጭኗል == 1' loop

አበቃ

writeDigitalPin (rpi, 16, 0) %አዝራሩ setpref ('በይነመረብ' ፣ 'SMTP_Server' ፣ 'smtp.gmail.com') ሲጫን መሪውን ያጠፋዋል ፤ setpref ('በይነመረብ' ፣ 'ኢ_ሜል' ፣ '[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. UnernormalconditionsLabel. Text = ems

አበቃ

አበቃ

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

ዘዴዎች (መዳረሻ = የግል)

% ክፍል ከተፈጠረ በኋላ የሚፈፀም ኮድ

የተግባር ጅምርFcn (መተግበሪያ)

%---------- ለዚህ ተግባር የሚያስፈልጉ ሁሉም ተለዋዋጮች --------------------

ዓለም አቀፍ rpi %arduino

rpi = raspi ('169.254.0.2' ፣ 'pi' ፣ 'raspberry');

ግሎባል s %servo

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

ዓለም አቀፍ ክፍት

ክፍት = 1;

ዓለም አቀፍ ተዘግቷል

ተዘግቷል = 1;

ዓለም አቀፍ ካሜራ

ካሜራ = የካሜራ ሰሌዳ (አርፒአይ);

ዓለም አቀፍ ኤም

m = mobiledev;

ዓለም አቀፍ ኤም.ኤም

ems = 'ድንገተኛ ሁኔታ ሪፖርት ተደርጓል ፣ ኢኤምኤስን ያሳውቃል';

ዓለም አቀፍ t_count

t_count = 0;

በ %ይለፍ ቃል ላይ ያለው አገናኝ EFGroup6 ነው

% የሰዓት ቆጣሪ ተግባር ለ Loop --------------------------------

app.counter = 0;

t = ሰዓት ቆጣሪ (…

'TimerFcn' ፣ @app.timerCallback ፣…

‹StartDelay› ፣ 1 ፣… ‘ክፍለ ጊዜ’ ፣ 1 ፣…

'ExecutionMode' ፣ 'FixSpacing' ፣…

'TasksToExecute', inf);

ጀምር (t);

አበቃ

% የመደወያ ተግባር

ተግባር ManualOverrideSwitchValueChanged (መተግበሪያ ፣ ክስተት)

አበቃ

% አዝራር የተገፋ ተግባር ፦ OpenGateButton

ተግባር OpenGateButtonPushed (መተግበሪያ ፣ ክስተት)

ዓለም አቀፋዊ

ዝጋ = 0;

አበቃ

% አዝራር የተገፋ ተግባር: CloseGateButton

ተግባር CloseGateButtonPushed (መተግበሪያ ፣ ክስተት)

ዓለም አቀፍ ክፍት

ክፍት = 0;

አበቃ

አበቃ

% የመተግበሪያ አጀማመር እና ግንባታ

ዘዴዎች (መዳረሻ = የግል)

% UIFigure እና ክፍሎችን ይፍጠሩ

ተግባር ፍጠር ተባባሪዎች (መተግበሪያ)

% UIFigure ን ይፍጠሩ

app. UIFigure = uifigure;

app. UIFigure. አቀማመጥ = [100 100 640 480];

app. UIFigure. Name = 'UI Figure';

% RailwaygatestatusLampLabel ን ይፍጠሩ

app. RailwaygatestatusLampLabel = uilabel (app. UIFigure);

app. RailwaygatestatusLampLabel. HorizontalAlignment = 'right'; app. RailwaygatestatusLampLabel. አቀማመጥ = [464 422 110 22]; app. RailwaygatestatusLampLabel. Text = 'የባቡር በር ሁኔታ';

% GateLamp ፍጠር

app.gateLamp = uilamp (app. UIFigure);

app.gateLamp. አቀማመጥ = [589 422 20 20];

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

% OpenGateButton ን ይፍጠሩ

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

app. OpenGateButton. ButtonPushedFcn = createCallbackFcn (መተግበሪያ ፣ @OpenGateButtonPushed ፣ እውነት); app. OpenGateButton. አቀማመጥ = [474 359 100 22];

app. OpenGateButton. Text = 'ክፍት በር';

% CloseGateButton ን ይፍጠሩ

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

app. CloseGateButton. ButtonPushedFcn = createCallbackFcn (መተግበሪያ ፣ @CloseGateButtonPushed ፣ እውነት); app. CloseGateButton. አቀማመጥ = [474 285 100 22];

app. CloseGateButton. Text = 'መዝጊያ በር';

% UIAxes ን ይፍጠሩ

app. UIAxes = uiaxes (app. UIFigure);

ርዕስ (መተግበሪያ። UIAxes ፣ 'የካሜራ ምግብ')

app. UIAxes. አቀማመጥ = [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];

% መደበኛ ያልሆኑ ሁኔታዎችን ይፍጠሩ

app. UndernormalconditionsLabel = uilabel (app. UIFigure);

app. UnernormalconditionsLabel. አቀማመጥ = [108 285 248 22];

app. UndernormalconditionsLabel. Text = 'በመደበኛ ሁኔታዎች ስር';

% UIAxes2 ን ይፍጠሩ

app. UIAxes2 = uiaxes (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 = 'center';

app. EF230Group6Label. FontSize = 28;

app. EF230Group6Label. FontWeight = 'ደፋር';

app. EF230Group6Label. አቀማመጥ = [-4 401 379 64];

app. EF230Group6Label. Text = 'EF 230 ቡድን 6';

% IanAllishKellyBondIanDaffronLabel ን ይፍጠሩ

app. IanAllishKellyBondIanDaffronLabel = uilabel (app. UIFigure); app. IanAllishKellyBondIanDaffronLabel. አቀማመጥ = [94 380 184 22]; app. IanAllishKellyBondIanDaffronLabel. Text = 'ኢያን አሊሽ ፣ ኬሊ ቦንድ ፣ ኢያን ዳፍሮን';

% LoopsCompletedLabel ፍጠር

app. LoopsCompletedLabel = uilabel (app. UIFigure);

app. LoopsCompletedLabel. አቀማመጥ = [18 10 103 22];

app. LoopsCompletedLabel. Text = 'Loops ተጠናቀዋል';

% መለያ ፍጠር

app. Label = uilabel (app. UIFigure);

app. Label. አቀማመጥ = [120 10 178 22];

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

አበቃ

አበቃ

ዘዴዎች (መዳረሻ = ይፋዊ)

% መተግበሪያ ይገንቡ

የተግባር መተግበሪያ = ማይክሮ

% ክፍሎችን ይፍጠሩ እና ያዋቅሩ

ተጓዳኞችን ፍጠር (መተግበሪያ)

% መተግበሪያውን በመተግበሪያ ዲዛይነር ያስመዝግቡት

registerApp (መተግበሪያ ፣ መተግበሪያ። ውቅር)

% የመነሻውን ተግባር ያከናውኑ

runStartupFcn (መተግበሪያ ፣ @startupFcn)

nargout == 0 ከሆነ

ግልጽ መተግበሪያ

አበቃ

አበቃ

ከመተግበሪያው ስረዛ በፊት የሚፈፀም %

ሰርዝ (መተግበሪያ)

መተግበሪያው ሲሰረዝ UIFigure ን ይሰርዙ

ሰርዝ (መተግበሪያ። መለያ)

አበቃ

አበቃ

አበቃ

ደረጃ 4: የመጨረሻ ደረጃ

የመጨረሻ ደረጃ
የመጨረሻ ደረጃ

ኮዱ ከተፃፈ እና Raspberry Pi ከተገጠመ በኋላ ፣ ከላይ በስዕሉ ላይ እንደተያያዘው የ servo ሞተርን በ 3-ዲ የታተመው የባቡር ሐዲድ ትራክ በር ላይ ያያይዙት።

አሁን ፕሮጀክቱ ተጠናቋል። Raspberry PI ን ከባቡሩ ትራክ ጋር ያገናኙ እና ለሁለቱም የመኪና አሽከርካሪዎች እና ለአስተዳዳሪዎች ደህንነቱ የተጠበቀ የባቡር መሻገሪያዎችን በመፍጠር አዲሱን ስርዓት ይመልከቱ። አደጋዎችን ለመከላከል በቦታው የተቀመጡ ያልተሳኩ ደህንነቶችን ለማስነሳት ከ GUI ጋር በመገናኘት ከስርዓቱ ጋር ይጫወቱ።

የመማሪያው መጨረሻ ይህ ነው ፣ በአዲሱ ስማርት ባቡር ስርዓትዎ ይደሰቱ!

የሚመከር: