- అవసరమైన పదార్థాలు:
- రోబోట్ను నివారించే అడ్డంకి యొక్క భావన:
- సర్క్యూట్ రేఖాచిత్రం మరియు వివరణ:
- ప్రోగ్రామింగ్ మీకు PIC మైక్రోకంట్రోలర్:
- రోబోట్ అడ్డంకి అడ్డంకి:
అడ్డంకి అవోయిడర్ రోబోట్ మరొక ప్రసిద్ధ రోబోట్, ఇది ఎంబెడెడ్ ప్రాజెక్టులను మసాలా చేస్తుంది. కొత్త అబ్స్టాకిల్ ఎవైడర్ రోబో అయిన వారికి, ఇది కేవలం ఒక సాధారణ చక్రాల రోబోట్, ఇది ఎటువంటి అడ్డంకులను ఎదుర్కోకుండా దాని మార్గంలో నావిగేట్ చేయగలదు. ప్రాజెక్ట్లో అబ్స్టాకిల్ ఎవైడర్ రోబోట్ను నిర్మించడానికి చాలా మార్గాలు ఉన్నాయి, మన రోబోట్ మూడు దిశల్లోనూ కళ్ళు ఉండేలా ఒక అల్ట్రాసోనిక్ సెన్సార్ (ముందు) మరియు రెండు ఐఆర్ సెన్సార్ (ఎడమ / కుడి) ను ఉపయోగించబోతున్నాం. ఈ విధంగా మీరు మూడు వైపులా ఉన్న వస్తువులను గుర్తించి, తదనుగుణంగా ఉపాయాలు చేయడం ద్వారా దీన్ని చాలా తెలివిగా మరియు వేగంగా చేయవచ్చు. రోబోట్ను నివారించే ఈ అడ్డంకి కోసం ఇక్కడ మేము PIC మైక్రోకంట్రోలర్ PIC16F877A పై కేసు వేస్తున్నాము.
రోబోట్ను నివారించే అడ్డంకి యొక్క ఆపరేషన్ను హోమ్ క్లీనింగ్ రోబోట్లు అనే నిజ సమయ ఉత్పత్తి నుండి గమనించవచ్చు. వీటిలో ఉపయోగించే సాంకేతికత మరియు సెన్సార్లు చాలా క్లిష్టంగా ఉన్నప్పటికీ, భావన అదే విధంగా ఉంది. మన సాధారణ సెన్సార్లు మరియు పిఐసి మైక్రోకంట్రోలర్లను ఉపయోగించి మనం ఎంతవరకు సాధించగలమో చూద్దాం.
రోబోట్లను నివారించే మా ఇతర అడ్డంకిని కూడా తనిఖీ చేయండి:
- రాస్ప్బెర్రీ పై బేస్డ్ అడ్డంకి రోబోట్ను తప్పించడం
- ఆర్డునో ఉపయోగించి DIY స్మార్ట్ వాక్యూమ్ క్లీనింగ్ రోబోట్
అవసరమైన పదార్థాలు:
- PIC16F877A
- IR సెన్సార్ (2 సంఖ్యలు)
- అల్ట్రాసోనిక్ సెన్సార్ (1 సంఖ్య)
- DC గేర్ మోటార్ (2 సంఖ్యలు)
- ఎల్ 293 డి మోటార్ డ్రైవర్
- ఛైసెస్ (మీరు కార్డ్బోర్డ్లను ఉపయోగించి మీ స్వంతంగా కూడా నిర్మించవచ్చు)
- పవర్ బ్యాంక్ (ఏదైనా అందుబాటులో ఉన్న విద్యుత్ వనరు)
రోబోట్ను నివారించే అడ్డంకి యొక్క భావన:
రోబోట్ను అడ్డుకోవడం అనే భావన చాలా సులభం. రోబోట్ చుట్టూ వస్తువుల ఉనికిని గుర్తించడానికి మేము సెన్సార్లను ఉపయోగిస్తాము మరియు ఆ వస్తువులపై రోబోట్ ide ీకొనకుండా ఈ డేటాను ఉపయోగిస్తాము. ఒక వస్తువును గుర్తించడానికి మేము IR సెన్సార్ మరియు అల్ట్రాసోనిక్ సెన్సార్ వంటి ఏదైనా ఉపయోగ సెన్సార్లను ఉపయోగించవచ్చు.
మా రోబోట్లో యుఎస్ సెన్సార్ను ఫ్రంట్ సెన్సార్గా మరియు ఎడమ మరియు కుడి వైపున రెండు ఐఆర్ సెన్సార్లను ఉపయోగించాము. రోబోట్ ముందు వస్తువు లేనప్పుడు ముందుకు కదులుతుంది. కాబట్టి అల్ట్రాసోనిక్ (యుఎస్) సెన్సార్ ఏదైనా వస్తువును గుర్తించే వరకు రోబోట్ ముందుకు సాగుతుంది.
యుఎస్ సెన్సార్ ద్వారా ఒక వస్తువు కనుగొనబడినప్పుడు, రోబోట్ యొక్క దిశను మార్చడానికి ఇది సమయం. మేము గానీ ఎడమ వైపు తిరగండి లేదా కుడి, మేము IR సెన్సార్ సహాయంతో ఉపయోగించండి రేపే దిశలో నిర్ణయించే విషయంలో ప్రస్తుతం ఎడమ లేదా రోబోట్ యొక్క కుడి వైపు సమీపంలో వస్తువు ఉంటే తనిఖీ.
రోబోట్ ముందు మరియు కుడి వైపున ఒక ఆబ్జెక్ట్ కనుగొనబడితే, అప్పుడు రోబోట్ తిరిగి వచ్చి ఎడమవైపుకి తిరుగుతుంది. మలుపు తిరిగేటప్పుడు వస్తువుపై ide ీకొనకుండా రోబోట్ను కొంత దూరం వెనుకకు నడిపించేలా చేస్తాము.
రోబోట్ ముందు మరియు ఎడమ వైపున ఒక ఆబ్జెక్ట్ కనుగొనబడితే, అప్పుడు రోబోట్ తిరిగి వచ్చి కుడి వైపుకు తిరుగుతుంది.
రోబోట్ గది యొక్క ఒక మూలకు చేరుకున్నట్లయితే, అది నలుగురిలో వస్తువు ఉన్నట్లు అనిపిస్తుంది. ఈ సందర్భంలో మనం రోబోను వెనుకకు నడపాలి.
ఇంకొక సాధ్యం ఏమిటంటే , ముందు ఒక వస్తువు ఉంటుంది, కానీ ఎడమ వైపున లేదా కుడి వైపున ఏదైనా వస్తువు ఉండకపోవచ్చు, ఈ సందర్భంలో మనం యాదృచ్చికంగా ఏ దిశలోనైనా తిరగాలి.
ఇది ఒక అబ్స్టాకిల్ ఎవైడర్ ఎలా పనిచేస్తుందనే దాని గురించి ఒక కఠినమైన ఆలోచన ఇచ్చిందని ఆశిస్తున్నాము, ఇప్పుడు ఈ బోట్ను నిర్మించడానికి మరియు చర్యలో ఆనందించడానికి సర్క్యూట్ రేఖాచిత్రంతో ముందుకు వెళ్దాం.
సర్క్యూట్ రేఖాచిత్రం మరియు వివరణ:
రోబోట్ను తప్పించే ఈ పిఐసి ఆధారిత అడ్డంకి యొక్క పూర్తి సర్క్యూట్ రేఖాచిత్రం పై చిత్రంలో చూపబడింది. మీరు చూడగలిగినట్లుగా, రోబోట్ యొక్క ఎడమ మరియు కుడి వైపున ఉన్న వస్తువులను వరుసగా గుర్తించడానికి మేము రెండు ఐఆర్ సెన్సార్లను మరియు రోబోట్ కంటే ముందు ఉన్న వస్తువు యొక్క దూరాన్ని కొలవడానికి అల్ట్రాసోనిక్ సెన్సార్ను ఉపయోగించాము. ఈ ప్రాజెక్ట్లో ఉన్న రెండు మోటారులను నడపడానికి మేము L293D మోటార్ డ్రైవర్ మాడ్యూల్ను కూడా ఉపయోగించాము. ఇవి చక్రాల కోసం సాధారణ DC గేర్ మోటార్లు మరియు అందువల్ల చాలా తేలికగా పొందవచ్చు. కింది పట్టిక కనెక్షన్లలో మీకు సహాయం చేస్తుంది.
ఎస్ |
నుండి కనెక్ట్ చేయబడింది |
సంబంధం కలిగిఉన్నది |
1 |
ఐఆర్ సెన్సార్ లెఫ్ట్ అవుట్ పిన్ |
RD2 (పిన్ 21) |
2 |
IR సెన్సార్ రైట్ అవుట్ పిన్ |
RD3 (పిన్ 22) |
4 |
మోటార్ 1 ఛానల్ ఎ పిన్ |
RC4 (పిన్ 23) |
5 |
మోటార్ 1 ఛానల్ బి పిన్ |
RC5 (పిన్ 25) |
6 |
మోటార్ 2 ఛానల్ ఎ పిన్ |
RC6 (పిన్ 26) |
7 |
మోటార్ 2 ఛానల్ బి పిన్ |
RC7 (పిన్ 27) |
8 |
యుఎస్ ట్రిగ్గర్ పిన్ |
ఆర్బి 1 (పిన్ 34) |
9 |
యుఎస్ ఎకో పిన్ |
RB2 (పిన్ 35) |
L293D వంటి మోటారు డ్రైవర్ మాడ్యూల్ తప్పనిసరి ఎందుకంటే DC గేర్ మోటారును నడపడానికి అవసరమైన కరెంట్ మొత్తాన్ని PIC మైక్రోకంట్రోలర్ యొక్క I / O పిన్ ద్వారా పొందలేము. సెన్సార్లు మరియు మాడ్యూల్ 7805 చే నియంత్రించబడుతున్న + 5 వి సరఫరా ద్వారా శక్తిని పొందుతుంది. మోటారు డ్రైవర్ మాడ్యూల్ + 12 విని ఉపయోగించి కూడా శక్తినివ్వగలదు, కానీ ఈ ప్రాజెక్ట్ కోసం నేను అందుబాటులో ఉన్న + 5 వికి అతుక్కుపోయాను.
పూర్తి రోబోట్ నా విషయంలో పవర్ బ్యాంక్ చేత శక్తినిస్తుంది. మీరు ఏదైనా సాధారణ పవర్ బ్యాంక్ను కూడా ఉపయోగించవచ్చు మరియు రెగ్యులేటర్ విభాగాన్ని పాస్ చేయడం ద్వారా లేదా పై సర్క్యూట్ను ఉపయోగించడం ద్వారా మరియు పైన ఉన్న సర్క్యూట్ రేఖాచిత్రంలో చూపిన విధంగా రోబోట్ కోసం ఏదైనా 9V లేదా 12V బ్యాటరీని ఉపయోగించవచ్చు. మీ కనెక్షన్లు పూర్తయిన తర్వాత ఇది క్రింద కనిపిస్తుంది
ప్రోగ్రామింగ్ మీకు PIC మైక్రోకంట్రోలర్:
అడ్డంకి నివారించేవారి కోసం పని చేయడానికి మీరు PIC ని ప్రోగ్రామింగ్ చేయడం చాలా సులభం. మేము ఈ మూడు సెన్సార్ల విలువను చదివి, తదనుగుణంగా మోటార్లను డ్రైవ్ చేయాలి. ఈ ప్రాజెక్ట్లో మేము అల్ట్రాసోనిక్ సెన్సార్ను ఉపయోగిస్తున్నాము. PIC మైక్రోకంట్రోలర్తో అల్ట్రాసోనిక్ను ఎలా ఇంటర్ఫేస్ చేయాలో మేము ఇప్పటికే నేర్చుకున్నాము, మీరు ఇక్కడ కొత్తగా ఉంటే, US సెన్సార్ PIC తో ఎలా పనిచేస్తుందో అర్థం చేసుకోవడానికి దయచేసి ఆ ట్యుటోరియల్కు తిరిగి వస్తాయి, ఎందుకంటే పునరావృతం కాకుండా ఉండటానికి నేను దాని గురించి వివరాలను ఇక్కడ దాటవేస్తాను.
పూర్తి కార్యక్రమం లేదా ఈ రోబోట్ ఈ పేజీ చివర ఇచ్చిన, నేను ఈ క్రింద కార్యక్రమం యొక్క ముఖ్యమైన భాగాలుగా వివరించారు చేశారు.
మనకు తెలిసినట్లుగా అన్ని ప్రోగ్రామ్లు ఇన్పుట్ మరియు అవుట్పుట్ పిన్ డిక్లరేషన్లతో ప్రారంభమవుతాయి. ఇక్కడ మోటారు డ్రైవర్ మాడ్యూల్ యొక్క నాలుగు పిన్స్ మరియు ట్రిగ్గర్ పిన్స్ అవుట్పుట్ పిన్లు కాగా, ఎకో పిన్ మరియు రెండు ఐఆర్ అవుట్ పిన్లు ఇన్పుట్ అవుతాయి. అల్ట్రాసోనిక్ సెన్సార్తో ఉపయోగించడానికి మేము టైమర్ 1 మాడ్యూల్ను ప్రారంభించాలి.
TRISD = 0x00; // PORTD LCD TRISB1 = 0 ఇంటర్ఫేసింగ్ కోసం అవుట్పుట్గా ప్రకటించబడింది; // యుఎస్ సెన్సార్ యొక్క ట్రిగ్గర్ పిన్ అవుట్పుట్ పిన్ TRISB2 = 1 గా పంపబడుతుంది; // యుఎస్ సెన్సార్ యొక్క ఎకో పిన్ ఇన్పుట్ పిన్ TRISB3 = 0 గా సెట్ చేయబడింది; // RB3 అనేది LED TRISD2 = 1 కొరకు అవుట్పుట్ పిన్; TRISD3 = 1; // ఐఆర్ సెన్సార్ పిన్స్ రెండూ ఇన్పుట్ TRISC4 = 0 గా ప్రకటించబడ్డాయి; TRISC5 = 0; // మోటారు 1 పిన్స్ అవుట్పుట్ TRISC6 = 0 గా ప్రకటించబడ్డాయి; TRISC7 = 0; // మోటారు 2 పిన్స్ అవుట్పుట్ T1CON = 0x20 గా ప్రకటించబడ్డాయి;
ఈ ప్రోగ్రామ్లో మనం సెన్సార్ మరియు ఆబ్జెక్ట్ మధ్య దూరాన్ని చాలా తరచుగా తనిఖీ చేయాల్సి ఉంటుంది, కాబట్టి మేము కాలిక్యులేట్_డిస్టెన్స్ () అనే ఫంక్షన్ను సృష్టించాము, దీని లోపల యుఎస్ సెన్సార్ ఇంటర్ఫేసింగ్ ట్యుటోరియల్లో చర్చించిన పద్ధతి ద్వారా దూరాన్ని కొలుస్తాము. కోడ్ క్రింద చూపబడింది
US {TMR1H = 0 యొక్క దూరాన్ని లెక్కించడానికి void calculate_distance () // ఫంక్షన్; టిఎంఆర్ 1 ఎల్ = 0; // టైమర్ బిట్స్ క్లియర్ ట్రిగ్గర్ = 1; __ ఆలస్యం_యూస్ (10); ట్రిగ్గర్ = 0; అయితే (ఎకో == 0); TMR1ON = 1; అయితే (ఎకో == 1); TMR1ON = 0; time_taken = (TMR1L - (TMR1H << 8%); దూరం = (0.0272 * సమయం_ తీసుకున్నారు) / 2; }
తదుపరి దశ అల్ట్రాసోనిక్ సెన్సార్ మరియు ఐఆర్ సెన్సార్ విలువలను పోల్చడం మరియు తదనుగుణంగా రోబోట్ను తరలించడం. ఇక్కడ ఈ ప్రోగ్రామ్లో నేను సెం.మీ విలువను క్లిష్టమైన దూరంగా ఉపయోగించాను, దాని క్రింద రోబోట్ దిశలో మార్పులు చేయడం ప్రారంభించాలి. మీరు ఇష్టపడే విలువలను ఉపయోగించవచ్చు. ఆబ్జెక్ట్ లేకపోతే రోబోట్ ముందుకు కదులుతుంది
if (దూరం> 5) {RC4 = 0; ఆర్సి 5 = 1; // మోటార్ 1 ఫార్వర్డ్ RC6 = 1; ఆర్సి 7 = 0; // మోటార్ 2 ఫార్వర్డ్}
ఒక వస్తువు కనుగొనబడితే, అప్పుడు దూరం సెం.మీ. ఈ సందర్భంలో మేము ఎడమ మరియు కుడి అల్ట్రాసోనిక్ సెన్సార్ విలువలను పరిశీలిస్తాము. ఈ విలువ ఆధారంగా మేము ఎడమ వైపు తిరగాలని లేదా కుడివైపు తిరగాలని నిర్ణయించుకుంటాము. MS యొక్క ఆలస్యం ఉపయోగించబడుతుంది, తద్వారా మార్పు దిశ కనిపిస్తుంది.
if (RD2 == 0 && RD3 == 1 && దూరం <= 5) // ఎడమ సెన్సార్ నిరోధించబడింది {back_off (); ఆర్సి 4 = 1; ఆర్సి 5 = 1; // మోటార్ 1 స్టాప్ RC6 = 1; ఆర్సి 7 = 0; // మోటార్ 2 ఫార్వర్డ్ __delay_ms (500); } లెక్కించు_డిస్టెన్స్ (); if (RD2 == 1 && RD3 == 0 && దూరం <= 5) // కుడి సెన్సార్ నిరోధించబడింది {back_off (); ఆర్సి 4 = 0; ఆర్సి 5 = 1; // మోటార్ 1 ఫార్వర్డ్ RC6 = 1; ఆర్సి 7 = 1; // మోటార్ 2 స్టాప్ __delay_ms (500); }
కొన్నిసార్లు అల్ట్రాసోనిక్ సెన్సార్ ఒక వస్తువును కనుగొంటుంది, కాని IR సెన్సార్ల ద్వారా ఏ వస్తువు కనుగొనబడదు. ఈ సందర్భంలో రోబోట్ అప్రమేయంగా ఎడమవైపుకి మారుతుంది. మీరు మీ ప్రాధాన్యతలను బట్టి కుడి వైపుకు లేదా యాదృచ్ఛిక దిశలో కూడా తిప్పవచ్చు. రెండు వైపులా వస్తువులు ఉంటే మనం దానిని వెనుకకు వెళ్తాము. అదే చేయటానికి కోడ్ క్రింద చూపబడింది.
లెక్కించు_డిస్టాన్స్ (); if (RD2 == 0 && RD3 == 0 && దూరం <= 5) // రెండు సెన్సార్ తెరిచి ఉంది {back_off (); ఆర్సి 4 = 0; ఆర్సి 5 = 1; // మోటార్ 1 ఫార్వర్డ్ RC6 = 1; ఆర్సి 7 = 1; // మోటార్ 2 స్టాప్ __delay_ms (500); } లెక్కించు_డిస్టెన్స్ (); if (RD2 == 1 && RD3 == 1 && దూరం <= 5) // రెండు సెన్సార్ నిరోధించబడింది {back_off (); ఆర్సి 4 = 1; ఆర్సి 5 = 0; // మోటార్ 1 రివర్స్ ఆర్సి 6 = 1; ఆర్సి 7 = 1; // మోటార్ 2 స్టాప్ __delay_ms (1000); }
రోబోట్ అడ్డంకి అడ్డంకి:
ప్రాజెక్ట్ యొక్క పని చూడటానికి చాలా ఆసక్తికరంగా మరియు సరదాగా ఉంటుంది. మీరు మీ సర్క్యూట్ మరియు కోడ్తో పూర్తి చేసిన తర్వాత, మీ బాట్పై శక్తినివ్వండి మరియు దానిని నేలపై ఉంచండి. ఇది అడ్డంకులను గుర్తించి వాటిని తెలివిగా నివారించగలగాలి. కానీ, ఇక్కడ సరదా భాగం వస్తుంది. మీరు కోడ్ను సవరించవచ్చు మరియు మెట్ల నుండి తప్పించుకోవడం, విలువైన మలుపులు నిల్వ చేయడం ద్వారా తెలివిగా మార్చడం మరియు ఏమి చేయకూడదు?
ఈ రోబోట్ ప్రోగ్రామింగ్ యొక్క ప్రాథమికాన్ని అర్థం చేసుకోవడానికి మరియు మీ కోడ్కు వాస్తవ హార్డ్వేర్ ఎలా స్పందిస్తుందో తెలుసుకోవడానికి మీకు సహాయపడుతుంది. ఈ రోబోట్ను ప్రోగ్రామ్ చేయడం మరియు వాస్తవ ప్రపంచంలో కోడ్ కోసం ఇది ఎలా ప్రవర్తిస్తుందో చూడటం ఎల్లప్పుడూ సరదాగా ఉంటుంది.
ఇక్కడ మేము పిఐసి మైక్రోకంట్రోలర్ ఉపయోగించి ఎల్ఇడి మెరిసేందుకు తయారుచేసిన అదే పిఐసి పెర్ఫ్ బోర్డ్ ను ఉపయోగించాము మరియు పిఐసి ట్యుటోరియల్ సిరీస్ యొక్క ఇతర ప్రాజెక్టులలో ఈ బోర్డుని ఉపయోగించాము.
మీ రోబోట్ పై చిత్రంలో చూపించిన మాదిరిగానే ఉండాలి. ఈ ప్రాజెక్ట్ యొక్క పూర్తి పని క్రింది వీడియోలో చూపబడింది.
మీరు ప్రాజెక్ట్ను అర్థం చేసుకున్నారని మరియు ఒకదాన్ని నిర్మించడాన్ని ఆస్వాదించారని ఆశిస్తున్నాము. మీకు ఏవైనా సందేహాలు ఉంటే లేదా చిక్కుకుపోయినట్లయితే మీరు మీ ప్రశ్నలను పోస్ట్ చేయడానికి వ్యాఖ్య విభాగాన్ని ఉపయోగించవచ్చు మరియు వాటికి సమాధానం ఇవ్వడానికి నేను నా వంతు ప్రయత్నం చేస్తాను.