विषयसूची:

स्मार्ट ट्रेन सिस्टम: 4 कदम
स्मार्ट ट्रेन सिस्टम: 4 कदम

वीडियो: स्मार्ट ट्रेन सिस्टम: 4 कदम

वीडियो: स्मार्ट ट्रेन सिस्टम: 4 कदम
वीडियो: Smart Phone Security || How to Secure Your Android Smartphone || Security Steps... 2024, जुलाई
Anonim
स्मार्ट ट्रेन सिस्टम
स्मार्ट ट्रेन सिस्टम

सुरक्षा बढ़ाने, दुर्घटनाओं को रोकने, और दुर्घटनाएं होने पर मदद करने के लिए सकारात्मक और उत्पादक प्रतिक्रिया बढ़ाने के लिए डिज़ाइन किया गया।

चरण 1: भागों और सामग्री

भागों और सामग्री
भागों और सामग्री
भागों और सामग्री
भागों और सामग्री
भागों और सामग्री
भागों और सामग्री
भागों और सामग्री
भागों और सामग्री

ऊपर दिए गए चित्रों को नीचे भागों की सूची के क्रम में रखा गया है:

हिस्सों की सूची

1) एक रास्पबेरी पीआई 3 - मॉडल बी

2) एक ब्रेडबोर्ड

3) केबल्स (ऊपर से नीचे तक) - एक पावर, एक ईथरनेट, एक एडाप्टर

4) वन सर्वो मोटर

५) एक ३डी प्रिंटेड रेलरोड गेट

6) दो एलईडी (अधिमानतः लाल और हरा)

7) एक पुश बटन

8) दस जम्पर तार

9) चार प्रतिरोध

10) MATLAB के साथ लैपटॉप या डेस्कटॉप

चरण 2: कॉन्फ़िगरेशन

विन्यास
विन्यास
विन्यास
विन्यास
विन्यास
विन्यास
विन्यास
विन्यास

ऊपर कई कोणों से विन्यास की तस्वीरें हैं:

वर्तमान प्रवाह के क्रम में पिन स्थान (लोअर केस अक्षर के बाद एक पंक्ति संख्या) को नीचे सूचीबद्ध किया गया है।

तार:

j19 से i47

j8 से b50

b5 से सर्वो

c6 से सर्वो

b7 से सर्वो

a13 से j7

a17 से एलईडी

a37. के लिए एलईडी

e40 से j20

j53 से j18

j7 एलईडी करने के लिए

एलईडी से j6

बटन:

e54 से h51

प्रतिरोधक:

d40 से b37

c50 से d54

i51 से j47

चरण 3: कोड और तर्क

कोड और तर्क
कोड और तर्क

हमारी ट्रेन प्रणाली का लक्ष्य रेल क्रॉसिंग पर सुरक्षा बढ़ाना और संभावित घातक दुर्घटनाओं के जोखिम को कम करना है। इसे प्राप्त करने के लिए, हमारे सिस्टम में ड्राइवरों के लिए एक ट्रेन चेतावनी प्रणाली है, एक भौतिक अवरोध जो कारों को ट्रैक पार करने से रोकने के लिए कम किया जाता है, और यदि प्रारंभिक चेतावनी प्रणाली विफल हो जाती है तो कंडक्टर के लिए एक बैकअप आपातकालीन बटन दबाया जाता है।

जीयूआई कंडक्टर ऑपरेटिंग सिस्टम:

ऊपर दिखाया गया GUI, कंडक्टर के उपयोग के लिए बनाया गया था क्योंकि वे ट्रैक के उन क्षेत्रों के माध्यम से ट्रेन चला रहे हैं जिनमें कार ट्रैफ़िक रेलरोड क्रॉसिंग हैं।

ऊपरी दाहिने हाथ के कोने में, एक प्रकाश है जो कंडक्टर को सूचित करता है कि आने वाले रेलवे क्रॉसिंग गेट को बंद कर दिया गया है और यदि आवश्यक हो तो कंडक्टर को गेट खोलने या बंद करने की अनुमति देता है। उसके नीचे, कैमरे से ट्रेन गुजरने वाली फीड दिखाई जाती है। निचले बाएँ कोने में, ट्रेन का स्थान लगातार एक ग्राफ पर प्लॉट किया जाता है और ग्राफ के नीचे, ट्रेन ने एक दिन में कितने लैप्स पूरे किए हैं, यह बताया गया है। स्थिति ग्राफ के ऊपर, एक आपातकालीन बटन और स्थिति विवरण होता है। यह कंडक्टर को किसी आपात स्थिति के लिए संकेत देने की अनुमति देता है यदि ट्रैक पर कोई कार है या सुरक्षा द्वार ठीक से काम नहीं कर रहा है।

कोड:

क्लासडेफ माइक्रो < matlab.apps. AppBase% गुण जो ऐप घटकों के अनुरूप हैं

गुण (पहुँच = सार्वजनिक)

UIfigure matlab.ui.figure

RailwaygatestatusLampLabel matlab.ui.control. Label

गेटलैंप matlab.ui.control. Lamp

ओपनगेटबटन 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

EF230Group6लेबल matlab.ui.control. Label

IanAllishKellyBondIanDaffronLabel matlab.ui.control. Label

LoopsCompletedLabel matlab.ui.control. Label

लेबल matlab.ui.control. Label

समाप्त

गुण (पहुँच = निजी)

काउंटर int16

समाप्त

तरीके (पहुँच = सार्वजनिक)

फ़ंक्शन टाइमर कॉलबैक (ऐप, src, ईवेंट)

ऐप.टेम्प.टेक्स्ट = int2str (ऐप.काउंटर);

ऐप.काउंटर = ऐप.काउंटर + 1;

प्रोग्राम के लिए आवश्यक सभी चरों को %कॉल करें - - - - - - - - - - - - - -

वैश्विक आरपीआई

वैश्विक

वैश्विक खुला

वैश्विक बंद

वैश्विक कैमरा

वैश्विक एम

वैश्विक ईएमएस

वैश्विक t_count

% ---------------- ट्रेन आर्म सेक्शन ---------------------- -------------

अगर खुला == 0

राइटपोजिशन (एस, 50)

app.gateLamp. Color = 'हरा';

समाप्त

अगर करीब == 0

राइटपोजिशन (एस, 120)

app.gateLamp. Color = 'लाल';

समाप्त

%--------------------- कैमरा के माध्यम से मोशन डिटेक्शन ------------------------

जबकि सच

आईएमजी = स्नैपशॉट (कैम);

छवि (आईएमजी);

app. UIAxes (आकर्षित)

समाप्त

%--------------------- हाथ खुला/बंद ------------------------ --------------

अगर रीडडिजिटलपिन (आरपीआई, 20)> 1% पिन 17 (बटन) पढ़ता है और सिग्नल की जांच करता है

i=40:.5:150% के लिए ब्रिज बढ़ाता है

लिखने की स्थिति (ओं, मैं)

समाप्त

i= 1:10% के लिए लाल बत्ती झपकाने वाले लूप x बार की मात्रा

राइटडिजिटलपिन (आरपीआई, 13, 1)

विराम (.5)

राइटडिजिटलपिन (आरपीआई, 13, 0)

विराम (.5)

समाप्त

राइटपोजिशन (एस, 50)% गेट डाउन करें

समाप्त

% ---------------------- मोबाइल फोन सपोर्ट/प्लॉट ------------------------ --

एम.त्वरण सेंसर सक्षम = 1

एम.लॉगिंग=1

डेटा = शून्य (200, 1); रोलिंग प्लॉट के लिए %प्रारंभिक डेटा

आंकड़ा (ऐप। UIAxes2)

पी = प्लॉट (डेटा)

अक्ष ([xbounda, ybounds])

विराम(1)

घरेलू

जबकि toc <30% 30 सेकंड के लिए दौड़ें

[ए, ~] = एक्सेलॉग (एम);

अगर लंबाई (ए)> 200

डेटा = ए (अंत-१९९: अंत, ३);

अन्यथा

डेटा (1: लंबाई (ए)) = ए (:, 3);

समाप्त

%redraw प्लॉट

p. YData=डेटा;

ड्राव

समाप्त

% ------------------ अचानक पिक्सेल परिवर्तन ----------------------------- ------

x1 = आईएमजी; % कैमरे को pi. से दूर पढ़ता है

red_mean = माध्य (माध्य (X1 (:,:, 1))); % लाल पिक्सेल की औसत मात्रा पढ़ता है

ग्रीन_मीन = माध्य (माध्य (X1 (:,:, 2))); % हरे पिक्सेल की औसत मात्रा पढ़ता है

blue_mean = माध्य (माध्य (X1 (:,:, 3))); % नीले पिक्सेल की औसत मात्रा पढ़ता है

अगर red_mean > १५० && ग्रीन_मीन > १५० && blue_mean > १५०

t_count = t_count + १;

समाप्त

app. LoopsCompletedLabel. Text = num2str(t_count)

% ------------------ बटन ईएमएस प्रोग्रामिंग ----------------------------- ---

कॉन्फ़िगरपिन (आरपीआई, 12, 'डिजिटल आउटपुट'); % एलईडी पिन सेट करता है, पिन 16, आउटपुट के रूप में

कॉन्फ़िगरपिन (आरपीआई, 16, 'डिजिटल इनपुट'); % बटन पिन, पिन 24, इनपुट के रूप में सेट करता है

बटन दबाया गया = रीडडिजिटलपिन (आरपीआई, 16); % पिन पर बटन प्रेस मान पढ़ता है 16

अगर बटन दबाया गया == 1

जबकि बटन दबाया == 1

राइटडिजिटलपिन (आरपीआई, 12, 1)

बटनुनप्रेस्ड = राइटडिजिटलपिन (आरपीआई, 12, 0); %

अंत% समाप्त होता है 'बटन दबाए जाने पर == 1' लूप

समाप्त

writeDigitalPin(rpi, 16, 0) % लेड को बंद कर देता है जब बटन अब दबाया नहीं जाता है setpref('Internet', 'SMTP_Server', 'smtp.gmail.com'); setpref ('इंटरनेट', 'E_mail', '[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');

sendmail('[email protected]', 'Emergency Status!', 'कंडक्टर ने तत्काल प्रतिक्रिया का अनुरोध करते हुए मैन्युअल ओवरराइड स्विच को सक्रिय कर दिया है!')

app. UndernormalconditionsLabel. Text = ems

समाप्त

समाप्त

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

तरीके (पहुंच = निजी)

% कोड जो घटक निर्माण के बाद निष्पादित होता है

फंक्शन स्टार्टअप एफसीएन (ऐप)

%---------- इस फ़ंक्शन के लिए आवश्यक सभी चर ----------------------

वैश्विक आरपीआई% arduino

आरपीआई = रास्पि ('169.254.0.2', 'पीआई', 'रास्पबेरी');

वैश्विक s% सर्वो

एस = सर्वो (आरपीआई, 17, 'मिन पल्स अवधि', 5e-4, 'मैक्सपल्स अवधि', 2.5e-3);

वैश्विक खुला

खुला = 1;

वैश्विक बंद

बंद = 1;

वैश्विक कैमरा

कैम = कैमराबोर्ड (आरपीआई);

वैश्विक एम

एम = मोबाइलदेव;

वैश्विक ईएमएस

ईएमएस = 'ईएमएस को सूचित करते हुए एक आपात स्थिति की सूचना दी गई है';

वैश्विक t_count

टी_काउंट = 0;

%पासवर्ड पर कनेक्टर EFGroup6. है

लूप के लिए % टाइमर फंक्शन ---------------------------------

ऐप.काउंटर = 0;

टी = टाइमर (…

'टाइमरएफसीएन', @app.timerCallback,…

'स्टार्टडेल', 1, … 'अवधि', 1, …

'निष्पादन मोड', 'फिक्स्डस्पेसिंग', …

'टास्क टू एक्सक्यूट', इंफ);

प्रारंभ (टी);

समाप्त

% कॉलबैक फ़ंक्शन

फ़ंक्शन मैनुअलऑवरराइडस्विचवैल्यू चेंज (ऐप, इवेंट)

समाप्त

% बटन पुश फ़ंक्शन: OpenGateButton

समारोह OpenGateButtonPushed (ऐप, घटना)

वैश्विक बंद

बंद = 0;

समाप्त

% बटन पुश फ़ंक्शन: CloseGateButton

फ़ंक्शन CloseGateButtonPushed (ऐप, ईवेंट)

वैश्विक खुला

खुला = 0;

समाप्त

समाप्त

% ऐप आरंभीकरण और निर्माण

तरीके (पहुंच = निजी)

% UI चित्र और घटक बनाएं

फंक्शन क्रिएट कॉम्पोनेंट्स (ऐप)

% यूआईफिगर बनाएं

app. UIfigure = uifigure;

app. UIfigure. Position = [१०० १०० ६४० ४८०];

ऐप.यूआईफिगर.नाम = 'यूआई फिगर';

% रेलवेगेट स्थिति लैंप लेबल बनाएं

app. RailwaygatestatusLampLabel = uilabel(app. UIfigure);

app. RailwaygatestatusLampLabel. HorizontalAlignment = 'दाएं'; app. RailwaygatestatusLampLabel. Position = [४६४ ४२२ ११० २२]; app. RailwaygatestatusLampLabel. Text = 'रेलवे गेट की स्थिति';

% गेटलैंप बनाएं

ऐप.गेटलैंप = यूलैम्प (ऐप.यूआईफिगर);

app.gateLamp. Position = [५८९ ४२२ २० २०];

app.gateLamp. Color = [०.९४१२ ०.९४१२ ०.९४१२];

% ओपनगेटबटन बनाएं

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

app. OpenGateButton. ButtonPushedFcn = createCallbackFcn (ऐप, @OpenGateButtonPushed, true); app. OpenGateButton. Position = [४७४ ३५९ १०० २२];

app. OpenGateButton. Text = 'ओपन गेट';

% क्लोजगेटबटन बनाएं

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

app. CloseGateButton. ButtonPushedFcn = createCallbackFcn (ऐप, @CloseGateButtonPushed, true); app. CloseGateButton. Position = [४७४ २८५ १०० २२];

app. CloseGateButton. Text = 'बंद गेट';

% UIAxes बनाएं

app. UIAxes = uiaxes(app. UIfigure);

शीर्षक (ऐप। UIAxes, 'कैमरा फ़ीड')

app. UIAxes. Position = [३४१ ४३ ३०० १८५];

% आपातकालीनबटन स्थितिलैम्पलेबल बनाएं

app. EmergencyButtonStatusLampLabel = uilabel(app. UIfigure); app. EmergencyButtonStatusLampLabel. HorizontalAlignment = 'दाएं'; app. EmergencyButtonStatusLampLabel. Position = [९७ ३२३ १४२ २२]; app. EmergencyButtonStatusLampLabel. Text = 'आपातकालीन बटन स्थिति';

% आपातकालीनबटन स्थितिलैम्प बनाएं

ऐप.इमरजेंसीबटनस्टैटसलैंप = यूलैम्प (ऐप.यूआईफिगर); app. EmergencyButtonStatusLamp. Position = [२५४ ३२३ २० २०];

%असामान्य स्थिति बनाएंलेबल

app. UndernormalconditionsLabel = uilabel(app. UIfigure);

ऐप.अंडरनॉर्मल कंडीशंसलेबल.पोजिशन = [१०८ २८५ २४८ २२];

app. UndernormalconditionsLabel. Text = 'सामान्य परिस्थितियों में';

% UIAxes2 Create बनाएं

app. UIAxes2 = uiaxes(app. UIfigure);

शीर्षक (ऐप। UIAxes2, 'ट्रेन की स्थिति')

xlabel(app. UIAxes2, 'X स्थिति')

ylabel(app. UIAxes2, 'Y स्थिति')

app. UIAxes2. Box = 'चालू';

app. UIAxes2. XGrid = 'चालू';

app. UIAxes2. YGrid = 'चालू';

app. UIAxes2. Position = [१८ 43 ३०० १८५];

% 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 = [९४ ३८० १८४ २२]; app. IanAllishKellyBondIanDaffronLabel. Text = 'इयान अलिश, केली बॉन्ड, इयान डैफ्रॉन';

% लूप्स बनाएं पूर्ण लेबल

app. LoopsCompletedLabel = uilabel(app. UIfigure);

app. LoopsCompletedLabel. Position = [१८ १० १०३ २२];

app. LoopsCompletedLabel. Text = 'लूप्स पूर्ण:';

% लेबल बनाएं

ऐप। लेबल = यूलाबेल (ऐप। यूआईफिगर);

ऐप.लेबल.स्थिति = [१२० १० १७८ २२];

ऐप.लेबल.टेक्स्ट = '####';

समाप्त

समाप्त

तरीके (पहुँच = सार्वजनिक)

% निर्माण ऐप

फंक्शन ऐप = माइक्रो

% घटक बनाएं और कॉन्फ़िगर करें

क्रिएट कॉम्पोनेंट्स (ऐप)

% ऐप डिज़ाइनर के साथ ऐप को पंजीकृत करें

रजिस्टर ऐप (ऐप, ऐप। यूआईफिगर)

% स्टार्टअप फ़ंक्शन निष्पादित करें

runStartupFcn (ऐप, @startupFcn)

अगर नर्गआउट == 0

स्पष्ट ऐप

समाप्त

समाप्त

% कोड जो ऐप हटाने से पहले निष्पादित होता है

हटाएं (ऐप)

जब ऐप डिलीट हो जाए तो यूआइफिगर को% डिलीट कर दें

हटाएं (ऐप.यूआईफिगर)

समाप्त

समाप्त

समाप्त

चरण 4: अंतिम चरण

अंतिम चरण
अंतिम चरण

एक बार कोड लिखे जाने और रास्पबेरी पाई को तार दिए जाने के बाद, सर्वो मोटर को 3-डी प्रिंटेड रेलरोड ट्रैक गेट से जोड़ दें क्योंकि यह ऊपर की तस्वीर में संलग्न है।

अब, परियोजना पूरी हो गई है। रास्पबेरी पीआई को ट्रेन ट्रैक से कनेक्ट करें और कार चालकों और कंडक्टरों दोनों के लिए सुरक्षित रेलवे क्रॉसिंग बनाने वाली नई प्रणाली का निरीक्षण करें। दुर्घटनाओं को रोकने के लिए स्थापित विफल तिजोरियों को ट्रिगर करने के लिए GUI के साथ बातचीत करके सिस्टम के साथ खेलें।

यह ट्यूटोरियल का अंत है, अपने नए स्मार्ट ट्रेन सिस्टम का आनंद लें!

सिफारिश की: