- అది ఎలా పని చేస్తుంది
- అవసరమైన భాగాలు
- స్కీమాటిక్స్
- ఆర్డునో ఓస్క్లోస్కోప్ కోడ్
- పైథాన్ (ప్లాటర్) స్క్రిప్ట్
- ఆర్డునో కోడ్
- ఆర్డునో ఓసిల్లోస్కోప్ ఇన్ యాక్షన్
ఏదైనా ఎలక్ట్రానిక్స్ ఇంజనీర్ లేదా మేకర్ యొక్క వర్క్బెంచ్లో మీరు కనుగొనే అతి ముఖ్యమైన సాధనాల్లో ఓసిల్లోస్కోప్ ఒకటి. ఇది ప్రధానంగా తరంగ రూపాన్ని చూడటానికి మరియు వోల్టేజ్ స్థాయిలు, ఫ్రీక్వెన్సీ, శబ్దం మరియు దాని ఇన్పుట్ వద్ద వర్తించే సిగ్నల్స్ యొక్క ఇతర పారామితులను నిర్ణయించడానికి ఉపయోగించబడుతుంది, ఇది కాలక్రమేణా మారవచ్చు. కోడ్ డీబగ్గింగ్ కోసం ఎంబెడెడ్ సాఫ్ట్వేర్ డెవలపర్లు మరియు మరమ్మత్తు సమయంలో ఎలక్ట్రానిక్ పరికరాల ట్రబుల్షూటింగ్ కోసం సాంకేతిక నిపుణులు కూడా దీనిని ఉపయోగిస్తారు. ఈ కారణాలు ఓసిల్లోస్కోప్ను ఏదైనా ఇంజనీర్కు తప్పనిసరిగా కలిగి ఉండాలి. ఒకే సమస్య ఏమిటంటే అవి చాలా ఖరీదైనవి, అతి తక్కువ ఖచ్చితత్వంతో అత్యంత ప్రాధమిక విధులను నిర్వర్తించే ఓసిల్లోస్కోప్లు $ 45 నుండి $ 100 వరకు ఖరీదైనవి, అయితే మరింత ఆధునిక మరియు సమర్థవంతమైన ధర $ 150 కంటే ఎక్కువ. ఈ రోజు నేను ఎలా ఉపయోగించాలో చూపిస్తూ ఉంటుంది Arduinoమరియు నా అభిమాన ప్రోగ్రామింగ్ లాంగ్వేజ్ పైథాన్తో అభివృద్ధి చేయబడే ఒక సాఫ్ట్వేర్, తక్కువ ఖర్చుతో, 4-ఛానల్ ఆర్డునో ఓసిల్లోస్కోప్ను నిర్మించగలదు, వీటి కోసం కొన్ని చౌకైన ఓసిల్లోస్కోప్ తరంగ రూపాల ప్రదర్శన మరియు వోల్టేజ్ స్థాయిలను నిర్ణయించడం వంటివి అమలు చేయబడతాయి. సంకేతాల కోసం.
అది ఎలా పని చేస్తుంది
ఈ ప్రాజెక్ట్ కోసం రెండు భాగాలు ఉన్నాయి;
- డేటా కన్వర్టర్
- ది ప్లాటర్
ఓసిల్లోస్కోప్లు సాధారణంగా దాని ఇన్పుట్ ఛానెల్కు వర్తించే అనలాగ్ సిగ్నల్ యొక్క దృశ్యమాన ప్రాతినిధ్యాన్ని కలిగి ఉంటాయి. దీన్ని సాధించడానికి, మేము మొదట సిగ్నల్ను అనలాగ్ నుండి డిజిటల్గా మార్చాలి, ఆపై డేటాను ప్లాట్ చేయాలి. మార్పిడి కోసం, సిగ్నల్ ఇన్పుట్ వద్ద అనలాగ్ డేటాను డిజిటల్ సిగ్నల్కు మార్చడానికి ఆర్డునో ఉపయోగించిన atmega328p మైక్రోకంట్రోలర్ పై ADC (అనలాగ్ టు డిజిటల్ కన్వర్టర్) పై మేము పరపతి పొందుతాము. మార్పిడి తరువాత, సమయానికి విలువ UART ద్వారా Arduino నుండి PC కి పంపబడుతుంది, ఇక్కడ పైథాన్ ఉపయోగించి అభివృద్ధి చేయబడే ప్లాటర్ సాఫ్ట్వేర్ ప్రతి డేటాను సమయానికి వ్యతిరేకంగా ప్లాట్ చేయడం ద్వారా ఇన్కమింగ్ డేటా ప్రవాహాన్ని తరంగ రూపంలోకి మారుస్తుంది.
అవసరమైన భాగాలు
ఈ ప్రాజెక్ట్ను నిర్మించడానికి క్రింది భాగాలు అవసరం;
- ఆర్డునో యునో (ఇతర బోర్డులలో దేనినైనా ఉపయోగించవచ్చు)
- బ్రెడ్బోర్డ్
- 10 కె రెసిస్టర్ (1)
- LDR (1)
- జంపర్ వైర్లు
అవసరమైన సాఫ్ట్వేర్లు
- Arduino IDE
- పైథాన్
- పైథాన్ లైబ్రరీస్: పైసిరియల్, మాట్ప్లోట్లిబ్, డ్రానో
స్కీమాటిక్స్
ఆర్డునో ఓసిల్లోస్కోప్ యొక్క స్కీమాటిక్ చాలా సులభం. ఆర్డ్యునో యొక్క పేర్కొన్న అనలాగ్ పిన్కు పరిశీలించాల్సిన సిగ్నల్ను కనెక్ట్ చేయడమే మనం చేయాల్సిందల్లా. ఏది ఏమయినప్పటికీ, పరిశీలించవలసిన సిగ్నల్ను ఉత్పత్తి చేయడానికి మేము సాధారణ వోల్టేజ్ డివైడర్ సెటప్లో ఎల్డిఆర్ను ఉపయోగిస్తాము, అంటే ఉత్పత్తి చేయబడిన తరంగ రూపం ఎల్డిఆర్ చుట్టూ కాంతి తీవ్రత ఆధారంగా వోల్టేజ్ స్థాయిని వివరిస్తుంది.
దిగువ స్కీమాటిక్స్లో చూపిన విధంగా భాగాలను కనెక్ట్ చేయండి;
కనెక్షన్ తరువాత, సెటప్ క్రింద ఉన్న చిత్రాన్ని ఇష్టపడాలి.
కనెక్షన్లు అన్నీ పూర్తయిన తరువాత, మేము కోడ్ రాయడానికి కొనసాగవచ్చు.
ఆర్డునో ఓస్క్లోస్కోప్ కోడ్
మేము ప్రతి రెండు విభాగాలకు సంకేతాలు వ్రాస్తాము. ఇంతకు ముందు చెప్పినట్లుగా ప్లాటర్ కోసం, మేము ఆర్టునో నుండి డేటాను UART మరియు ప్లాట్ల ద్వారా అంగీకరించే పైథాన్ స్క్రిప్ట్ వ్రాస్తాము , కన్వర్టర్ కోసం, మేము ADC నుండి డేటాను తీసుకొని దానిని మార్చే ఒక ఆర్డునో స్కెచ్ వ్రాస్తాము. వోల్టేజ్ స్థాయిలు ప్లాటర్కు పంపబడతాయి.
పైథాన్ (ప్లాటర్) స్క్రిప్ట్
పైథాన్ కోడ్ మరింత క్లిష్టంగా ఉన్నందున, మేము దానితో ప్రారంభిస్తాము.
మేము కొన్ని లైబ్రరీలను ఉపయోగిస్తాము; ఇంతకు ముందు చెప్పినట్లుగా పైథాన్ లిపితో డ్రానో, మాట్ప్లోట్లిబ్ మరియు పైసిరియల్ . సీరియల్ పోర్టు ద్వారా కమ్యూనికేట్ చేయగల పైథాన్ లిపిని సృష్టించడానికి పైసిరియల్ మాకు అనుమతిస్తుంది, మాట్ప్లోట్లిబ్ సీరియల్ పోర్టు ద్వారా అందుకున్న డేటా నుండి ప్లాట్లను ఉత్పత్తి చేసే సామర్థ్యాన్ని ఇస్తుంది మరియు డ్రానో నిజ సమయంలో ప్లాట్ను నవీకరించడానికి మాకు ఒక మార్గాన్ని అందిస్తుంది.
మీ PC లో ఈ ప్యాకేజీలను వ్యవస్థాపించడానికి అనేక మార్గాలు ఉన్నాయి, పైప్ ద్వారా సులభమైనది. విండోస్ లేదా లైనక్స్ మెషీన్లో కమాండ్ లైన్ ద్వారా పిప్ను ఇన్స్టాల్ చేయవచ్చు. PIP పైథాన్ 3 తో ప్యాక్ చేయబడింది కాబట్టి పైథాన్ 3 ను ఇన్స్టాల్ చేయమని నేను మీకు సలహా ఇస్తాను మరియు పైథాన్ను మార్గానికి జోడించడం గురించి పెట్టెను తనిఖీ చేయండి. పైప్ను ఇన్స్టాల్ చేయడంలో మీకు సమస్యలు ఉంటే, చిట్కాల కోసం ఈ అధికారిక పైథాన్ వెబ్సైట్ను చూడండి.
పైప్ వ్యవస్థాపించడంతో, ఇప్పుడు మనకు అవసరమైన ఇతర గ్రంథాలయాలను వ్యవస్థాపించవచ్చు.
విండోస్ వినియోగదారుల కోసం కమాండ్ ప్రాంప్ట్, లైనక్స్ వినియోగదారుల కోసం టెర్మినల్ తెరిచి, కింది వాటిని నమోదు చేయండి;
పైప్ ఇన్స్టాల్ పైసిరియల్
ఇది పూర్తయిన తర్వాత, మాట్ప్లోట్లిబ్ను ఉపయోగించి ఇన్స్టాల్ చేయండి;
పిప్ ఇన్స్టాల్ మ్యాట్ప్లోట్లిబ్
డ్రానో కొన్నిసార్లు మ్యాట్ప్లోట్లిబ్తో పాటు ఇన్స్టాల్ చేయబడుతుంది, కాని ఖచ్చితంగా అమలు చేయండి;
పిప్ ఇన్స్టాల్ డ్రానో
ఇన్స్టాలేషన్ పూర్తవడంతో, మేము ఇప్పుడు పైథాన్ లిపిని వ్రాయడానికి సిద్ధంగా ఉన్నాము.
ఈ ప్రాజెక్ట్ కోసం పైథాన్ స్క్రిప్ట్ నేను రాస్ప్బెర్రీ పై బేస్డ్ ఓసిల్లోస్కోప్ కోసం వ్రాసిన మాదిరిగానే ఉంటుంది.
కోడ్కు అవసరమైన అన్ని లైబ్రరీలను దిగుమతి చేయడం ద్వారా మేము ప్రారంభిస్తాము;
డ్రానో దిగుమతి నుండి దిగుమతి సమయం దిగుమతి matplotlib.pyplot * దిగుమతి పైసిరియల్
తరువాత, మేము కోడ్ సమయంలో ఉపయోగించబడే వేరియబుల్స్ను సృష్టించి, ప్రారంభిస్తాము. సీరియల్ పోర్ట్ నుండి అందుకున్న డేటాను నిల్వ చేయడానికి అర్రే వాల్ ఉపయోగించబడుతుంది మరియు లెక్కించడానికి cnt ఉపయోగించబడుతుంది. ప్రతి 50 డేటా గణనల తరువాత స్థానం 0 వద్ద ఉన్న డేటా తొలగించబడుతుంది. డేటాను ఓసిల్లోస్కోప్లో ప్రదర్శించడానికి ఇది జరుగుతుంది.
val = cnt = 0
తరువాత, మేము ఆర్డినో మా పైథాన్ స్క్రిప్ట్తో కమ్యూనికేట్ చేసే సీరియల్ పోర్ట్ ఆబ్జెక్ట్ను సృష్టిస్తాము. దిగువ పేర్కొన్న కామ్ పోర్ట్ అదే కామ్ పోర్ట్ అని నిర్ధారించుకోండి, దీని ద్వారా మీ ఆర్డునో బోర్డు IDE తో కమ్యూనికేట్ చేస్తుంది. ఆర్డునోతో హై స్పీడ్ కమ్యూనికేషన్ ఉండేలా పైన ఉపయోగించిన 115200 బాడ్ రేటు ఉపయోగించబడింది. లోపాలను నివారించడానికి, ఈ బాడ్ రేటుతో కమ్యూనికేట్ చేయడానికి ఆర్డునో సీరియల్ పోర్ట్ కూడా ప్రారంభించబడాలి.
పోర్ట్ = సీరియల్.స్రియల్ ('COM4', 115200, సమయం ముగిసింది = 0.5)
తరువాత, మేము ప్లాట్ను ఉపయోగించి ఇంటరాక్టివ్గా చేస్తాము;
plt.ion ()
అందుకున్న డేటా నుండి ప్లాట్ను రూపొందించడానికి మేము ఒక ఫంక్షన్ను సృష్టించాలి, మేము ఆశిస్తున్న ఎగువ మరియు కనిష్ట పరిమితిని సృష్టిస్తాము, ఈ సందర్భంలో ఆర్డునో యొక్క ADC యొక్క తీర్మానం ఆధారంగా 1023 ఉంటుంది. మేము టైటిల్ను కూడా సెట్ చేసాము, ప్రతి అక్షానికి లేబుల్ చేసి, ప్లాట్ను గుర్తించడం సులభం చేయడానికి ఒక పురాణాన్ని జోడిస్తాము.
# ఫిగర్ ఫంక్షన్ను సృష్టించండి డెఫ్ మేక్ఫిగ్ (): plt.ylim (-1023,1023) plt.title ('ఓసిలోస్కోప్') plt.grid (ట్రూ) plt.ylabel ('ADC అవుట్పుట్లు') plt.plot (val, 'ro - ', లేబుల్ =' ఛానల్ 0 ') plt.legend (loc =' దిగువ కుడి ')
ఇది పూర్తయిన తర్వాత, సీరియల్ పోర్ట్ నుండి డేటాను అందుబాటులో ఉన్నప్పుడు తీసుకొని ప్లాట్ చేసే ప్రధాన లూప్ను వ్రాయడానికి మేము ఇప్పుడు సిద్ధంగా ఉన్నాము. ఆర్డునోతో సమకాలీకరించడానికి, డేటాను చదవడానికి దాని సంసిద్ధతను సూచించడానికి పైథాన్ స్క్రిప్ట్ ద్వారా హ్యాండ్షేక్ డేటా ఆర్డునోకు పంపబడుతుంది. Arduino హ్యాండ్షేక్ డేటాను అందుకున్నప్పుడు, అది ADC నుండి వచ్చిన డేటాతో ప్రత్యుత్తరం ఇస్తుంది. ఈ హ్యాండ్షేక్ లేకుండా, మేము డేటాను నిజ సమయంలో ప్లాట్ చేయలేము.
అయితే (ట్రూ): port.write (b's ') # Arduino తో హ్యాండ్షేక్ ఉంటే (port.inWaiting ()): # arduino ప్రత్యుత్తరం ఇస్తే విలువ = port.readline () # ప్రత్యుత్తరం ప్రింట్ (విలువ) # ప్రింట్ చదవండి కాబట్టి మనం మానిటర్ ఇట్ నంబర్ = పూర్ణాంకానికి (విలువ) # అందుకున్న డేటాను పూర్ణాంక ముద్రణకు మార్చండి ('ఛానల్ 0: {0}'. ఫార్మాట్ (సంఖ్య)) # అర సెకను నిద్రించండి. time.sleep (0.01) val.append (int (number)) drawnow (makeFig) # క్రొత్త డేటా ఇన్పుట్ను ప్రతిబింబించేలా ప్లాట్ను నవీకరించండి plt.pause (.000001) cnt = cnt + 1 if (cnt> 50): val.pop (0) # 0 స్థానంలో ఉన్న డేటాను తొలగించడం ద్వారా ప్లాట్ను తాజాగా ఉంచండి
Arduino ఒస్సిల్లోస్కోప్ పూర్తి python కోడ్ క్రింద చూపిన ఈ వ్యాసం చివరిలో ఇవ్వబడుతుంది.
ఆర్డునో కోడ్
రెండవ కోడ్ ADC నుండి సిగ్నల్ను సూచించే డేటాను పొందటానికి ఆర్డునో స్కెచ్, ఆపై ప్లాటర్ సాఫ్ట్వేర్ నుండి హ్యాండ్షేక్ సిగ్నల్ను స్వీకరించడానికి వేచి ఉండండి. ఇది హ్యాండ్షేక్ సిగ్నల్ను అందుకున్న వెంటనే, అది పొందిన డేటాను UART ద్వారా ప్లాటర్ సాఫ్ట్వేర్కు పంపుతుంది.
సిగ్నల్ వర్తించబడే ఆర్డునో యొక్క అనలాగ్ పిన్ యొక్క పిన్ను ప్రకటించడం ద్వారా మేము ప్రారంభిస్తాము.
int సెన్సార్పిన్ = A0;
తరువాత, మేము 115200 బాడ్ రేటుతో సీరియల్ కమ్యూనికేషన్ను ప్రారంభిస్తాము మరియు ప్రారంభిస్తాము
శూన్య సెటప్ () { // పైథాన్ స్క్రిప్ట్తో సరిపోలడానికి సెకనుకు 115200 బిట్స్ వద్ద సీరియల్ కమ్యూనికేషన్ను ప్రారంభించండి: సీరియల్.బెగిన్ (115200); }
చివరగా, voidloop () ఫంక్షన్, ఇది డేటా యొక్క పఠనాన్ని నిర్వహిస్తుంది మరియు డేటాను సీరియల్ ద్వారా ప్లాటర్కు పంపుతుంది.
void loop () { // అనలాగ్ పిన్ 0 పై ఇన్పుట్ చదవండి: ఫ్లోట్ సెన్సార్వాల్యూ = అనలాగ్ రీడ్ (సెన్సార్పిన్); బైట్ డేటా = సీరియల్.రెడ్ (); if (డేటా == 's') { Serial.println (సెన్సార్వాల్యూ); ఆలస్యం (10); // స్థిరత్వం కోసం రీడ్ల మధ్య ఆలస్యం } }
పూర్తి Arduino ఒస్సిల్లోస్కోప్ కోడ్ క్రింద చూపిన ఈ వ్యాసం చివరిలో అలాగే క్రింద ఇవ్వబడింది.
int సెన్సార్పిన్ = A0; శూన్య సెటప్ () { // పైథాన్ స్క్రిప్ట్తో సరిపోలడానికి సెకనుకు 115200 బిట్స్ వద్ద సీరియల్ కమ్యూనికేషన్ను ప్రారంభించండి: సీరియల్.బెగిన్ (115200); } శూన్య లూప్ () { // అనలాగ్ పిన్ 0 పై ఇన్పుట్ చదవండి: ########################### ################### ఫ్లోట్ సెన్సార్ విలువ = అనలాగ్ రీడ్ (సెన్సార్పిన్); బైట్ డేటా = సీరియల్.రెడ్ (); if (డేటా == 's') { Serial.println (సెన్సార్వాల్యూ); ఆలస్యం (10); // స్థిరత్వం కోసం రీడ్ల మధ్య ఆలస్యం } }
ఆర్డునో ఓసిల్లోస్కోప్ ఇన్ యాక్షన్
Arduino సెటప్కు కోడ్ను అప్లోడ్ చేసి పైథాన్ స్క్రిప్ట్ను అమలు చేయండి. పైథాన్ కమాండ్ లైన్ ద్వారా డేటా స్టార్ట్ స్ట్రీమింగ్ మరియు దిగువ చిత్రంలో చూపిన విధంగా కాంతి తీవ్రతతో ప్లాట్లు మారుతున్నట్లు మీరు చూడాలి.
కాబట్టి ఆర్డునోను ఓసిల్లోస్కోప్గా ఉపయోగించవచ్చు, దీనిని రాస్ప్బెర్రీ పై ఉపయోగించి కూడా తయారు చేయవచ్చు, రాస్ప్బెర్రీ పై ఆధారిత ఓసిల్లోస్కోప్ పై పూర్తి ట్యుటోరియల్ ఇక్కడ చూడండి.