Arduino కమ్యూనికేషన్ ప్రోటోకాల్స్
కమ్యూనికేషన్ ప్రోటోకాల్లను ఉపయోగించడం ద్వారా, మేము ఏదైనా సెన్సార్ డేటాను Arduinoలో పంపవచ్చు మరియు స్వీకరించవచ్చు.
ఇన్ఫ్రారెడ్ (IR) వంటి కొన్ని సాధారణ సెన్సార్లు నేరుగా Arduinoతో కమ్యూనికేట్ చేయగలవు కానీ Wi-Fi మాడ్యూల్, SD కార్డ్ మాడ్యూల్ మరియు గైరోస్కోప్ వంటి కొన్ని క్లిష్టమైన సెన్సార్లు ఎలాంటి కమ్యూనికేషన్ ప్రోటోకాల్లు లేకుండా Arduinoతో నేరుగా కమ్యూనికేట్ చేయలేవు. కాబట్టి, ఈ ప్రోటోకాల్లు Arduino కమ్యూనికేషన్లో అంతర్భాగం.
Arduino దానికి బహుళ పెరిఫెరల్స్ జతచేయబడి ఉంటాయి; వాటిలో Arduino బోర్డులలో ఉపయోగించే మూడు కమ్యూనికేషన్ పెరిఫెరల్స్ ఉన్నాయి.
Arduino కమ్యూనికేషన్ ప్రోటోకాల్స్
Arduino వంటి వివిధ ఎలక్ట్రానిక్ పరికరాల మధ్య కమ్యూనికేషన్ ఈ మూడు ప్రోటోకాల్లలో ప్రమాణీకరించబడింది; ఇది వివిధ పరికరాల మధ్య ఎటువంటి అనుకూలత సమస్యలు లేకుండా సులభంగా కమ్యూనికేట్ చేయడానికి డిజైనర్లను అనుమతిస్తుంది. ఈ మూడు ప్రోటోకాల్ల పని ఒకే విధంగా ఉంటుంది, అవి కమ్యూనికేషన్ యొక్క ఒకే ప్రయోజనాన్ని అందిస్తాయి, అయితే అవి సర్క్యూట్ లోపల అమలులో విభిన్నంగా ఉంటాయి. ఈ ప్రోటోకాల్ల యొక్క మరింత వివరణ క్రింద చర్చించబడింది.
UART
UARTని అంటారు యూనివర్సల్ ఎసిన్క్రోనస్ రిసీవర్ ట్రాన్స్మిటర్. UART అనేది సీరియల్ కమ్యూనికేషన్ ప్రోటోకాల్, అంటే డేటా బిట్లు ఒకదాని తర్వాత ఒకటి సీక్వెన్షియల్ రూపంలో బదిలీ చేయబడతాయి. UART కమ్యూనికేషన్ని సెటప్ చేయడానికి మనకు రెండు లైన్లు అవసరం. ఒకటి Arduino బోర్డు యొక్క Tx (D1) పిన్ మరియు రెండవది Arduino బోర్డు యొక్క Rx(D0) పిన్. Tx పిన్ అనేది పరికరాలకు డేటాను ప్రసారం చేయడానికి మరియు Rx పిన్ డేటాను స్వీకరించడానికి ఉపయోగించబడుతుంది. వివిధ Arduino బోర్డులు బహుళ UART పిన్లను కలిగి ఉంటాయి.
Arduino డిజిటల్ పిన్ | UART పిన్ |
D1 | Tx |
D0 | Rx |
UART పోర్ట్ని ఉపయోగించి సీరియల్ కమ్యూనికేషన్ని ఏర్పాటు చేయడానికి, మేము క్రింద చూపిన కాన్ఫిగరేషన్లో రెండు పరికరాలను కనెక్ట్ చేయాలి:
Arduino Unoలో, ఒక సీరియల్ పోర్ట్ కమ్యూనికేషన్ కోసం అంకితం చేయబడింది, దీనిని సాధారణంగా USB పోర్ట్ అని పిలుస్తారు. యూనివర్సల్ సీరియల్ బస్ పేరు సూచించినట్లుగా, ఇది సీరియల్ పోర్ట్. USB పోర్ట్ Arduino ఉపయోగించి కంప్యూటర్లతో కమ్యూనికేషన్ను ఏర్పాటు చేసుకోవచ్చు. USB పోర్ట్ Arduino యొక్క ఆన్బోర్డ్ పిన్స్ Tx మరియు Rxకి కనెక్ట్ చేయబడింది. ఈ పిన్లను ఉపయోగించి, మేము USB ద్వారా కంప్యూటర్ కాకుండా ఏదైనా బాహ్య హార్డ్వేర్ను కనెక్ట్ చేయవచ్చు. Arduino IDE సాఫ్ట్వేర్ సీరియల్ లైబ్రరీని అందిస్తుంది (SoftwareSerial.h) ఇది GPIO పిన్లను సీరియల్ Tx మరియు Rx పిన్లుగా ఉపయోగించడానికి వినియోగదారులను అనుమతిస్తుంది.
- UART Arduinoతో పనిచేయడం సులభం
- UARTకి ఎలాంటి క్లాక్ సిగ్నల్ అవసరం లేదు
- డేటా నష్టాన్ని నివారించడానికి బాడ్ రేట్ తప్పనిసరిగా కమ్యూనికేట్ చేసే పరికరాల 10% పరిమితిలో సెట్ చేయబడాలి
- మాస్టర్ స్లేవ్ కాన్ఫిగరేషన్లో Arduinoతో బహుళ పరికరాలు UARTతో సాధ్యం కాదు
- UART సగం డ్యూప్లెక్స్, అంటే పరికరాలు ఒకే సమయంలో డేటాను ప్రసారం చేయలేవు మరియు స్వీకరించలేవు
- ఒక సమయంలో రెండు పరికరాలు మాత్రమే UART ప్రోటోకాల్తో కమ్యూనికేట్ చేయగలవు
సీరియల్ పెరిఫెరల్ ఇంటర్ఫేస్ (SPI)
SPI మైక్రోకంట్రోలర్లు వాటితో కమ్యూనికేట్ చేయడానికి ప్రత్యేకంగా రూపొందించబడిన సీరియల్ పెరిఫెరల్ ఇంటర్ఫేస్ యొక్క సంక్షిప్త రూపం. SPI పూర్తి-డ్యూప్లెక్స్ మోడ్లో పనిచేస్తుంది అంటే SPI ఏకకాలంలో డేటాను పంపగలదు మరియు స్వీకరించగలదు. UART మరియు I2C లతో పోల్చినప్పుడు ఇది Arduino బోర్డులలో వేగవంతమైన కమ్యూనికేషన్ పరిధీయమైనది. LCD డిస్ప్లే మరియు మైక్రో SD కార్డ్ అప్లికేషన్లలో అధిక డేటా రేట్ అవసరమయ్యే చోట ఇది సాధారణంగా ఉపయోగించబడుతుంది.
Arduino పై SPI డిజిటల్ పిన్స్ ముందే నిర్వచించబడ్డాయి. Arduino Uno SPI పిన్ కాన్ఫిగరేషన్ క్రింది విధంగా ఉంది:
SPI లైన్ | GPIO | ICSP హెడర్ పిన్ |
SCK | 13 | 3 |
MISO | 12 | 1 |
పొగ | పదకొండు | 4 |
SS | 10 | – |
- MOSI అంటే మాస్టర్ అవుట్ స్లేవ్ ఇన్ , MOSI అనేది మాస్టర్ టు స్లేవ్ కోసం డేటా ట్రాన్స్మిషన్ లైన్.
- SCK అనేది a క్లాక్ లైన్ ఇది ప్రసార వేగం మరియు ప్రారంభ ముగింపు లక్షణాలను నిర్వచిస్తుంది.
- SS అంటే స్లేవ్ సెలెక్ట్ ; బహుళ స్లేవ్ కాన్ఫిగరేషన్లో పనిచేస్తున్నప్పుడు నిర్దిష్ట స్లేవ్ పరికరాన్ని ఎంచుకోవడానికి SS లైన్ మాస్టర్ను అనుమతిస్తుంది.
- MISO అంటే స్లేవ్ అవుట్లో మాస్టర్ ; MISO అనేది డేటా కోసం స్లేవ్ టు మాస్టర్ ట్రాన్స్మిషన్ లైన్.
SPI ప్రోటోకాల్ యొక్క ప్రధాన ముఖ్యాంశాలలో ఒకటి మాస్టర్-స్లేవ్ కాన్ఫిగరేషన్. SPIని ఉపయోగించడం ద్వారా అనేక స్లేవ్ పరికరాలను నియంత్రించడానికి ఒక పరికరాన్ని మాస్టర్గా నిర్వచించవచ్చు. SPI ప్రోటోకాల్ ద్వారా స్లేవ్ పరికరాలపై మాస్టర్ పూర్తి నియంత్రణలో ఉన్నారు.
SPI అనేది సింక్రోనస్ ప్రోటోకాల్, అంటే కమ్యూనికేషన్ అనేది మాస్టర్ మరియు స్లేవ్ మధ్య సాధారణ క్లాక్ సిగ్నల్తో అనుసంధానించబడి ఉంటుంది. SPI ఒకే ట్రాన్స్మిట్ మరియు రిసీవ్ లైన్లో స్లేవ్గా బహుళ పరికరాలను నియంత్రించగలదు. స్లేవ్లందరూ కామన్ని ఉపయోగించి మాస్టర్కి కనెక్ట్ చేయబడతారు MISO పాటు లైన్ అందుకుంటారు పొగ ఒక సాధారణ ట్రాన్స్మిట్ లైన్. SCK మాస్టర్ మరియు స్లేవ్ పరికరాలలో సాధారణ క్లాక్ లైన్ కూడా. స్లేవ్ డివైజ్లలో ఉన్న తేడా ఏమిటంటే ప్రతి స్లేవ్ పరికరం విడిగా నియంత్రించబడుతుంది SS లైన్ ఎంచుకోండి. దీని అర్థం ప్రతి స్లేవ్కు Arduino బోర్డు నుండి అదనపు GPIO పిన్ అవసరం, ఇది నిర్దిష్ట స్లేవ్ పరికరం కోసం ఎంపిక లైన్గా పనిచేస్తుంది.
SPI ప్రోటోకాల్ యొక్క కొన్ని ప్రధాన ముఖ్యాంశాలు క్రింద ఇవ్వబడ్డాయి:
- I2C మరియు UART కంటే SPI వేగవంతమైన ప్రోటోకాల్
- UARTలో లాగా స్టార్ట్ మరియు స్టాప్ బిట్లు అవసరం లేదు అంటే నిరంతర డేటా ట్రాన్స్మిషన్ సాధ్యమవుతుంది
- సాధారణ మాస్టర్ స్లేవ్ కాన్ఫిగరేషన్ కారణంగా స్లేవ్ని సులభంగా పరిష్కరించవచ్చు
- ప్రతి స్లేవ్కి Arduino బోర్డ్లో అదనపు పిన్ ఆక్రమించబడింది. ఆచరణాత్మకంగా 1 మాస్టర్ 4 స్లేవ్ పరికరాలను నియంత్రించగలరు
- UARTలో ఉపయోగించినట్లుగా డేటా రసీదు లేదు
- బహుళ మాస్టర్ కాన్ఫిగరేషన్ సాధ్యం కాదు
I2C కమ్యూనికేషన్ ప్రోటోకాల్
ఇంటర్ ఇంటిగ్రేటెడ్ సర్క్యూట్ (I2C) అనేది Arduino బోర్డులు ఉపయోగించే మరొక కమ్యూనికేషన్ ప్రోటోకాల్. I2C అనేది Arduino మరియు ఇతర పరికరాలతో అమలు చేయడానికి అత్యంత కష్టమైన మరియు సంక్లిష్టమైన ప్రోటోకాల్. దాని సంక్లిష్టత ఉన్నప్పటికీ, ఇది బహుళ మాస్టర్ మరియు బహుళ స్లేవ్స్ కాన్ఫిగరేషన్ల వంటి ఇతర ప్రోటోకాల్లలో లేని బహుళ లక్షణాలను అందిస్తుంది. I2C ప్రధాన Arduino బోర్డ్కు 128 పరికరాల వరకు కనెక్ట్ చేయడానికి అనుమతిస్తుంది. I2C అన్ని స్లేవ్ పరికరాలలో సింగిల్ వైర్ను పంచుకోవడం వల్ల మాత్రమే ఇది సాధ్యమవుతుంది. Arduinoలోని I2C చిరునామా వ్యవస్థను ఉపయోగిస్తుంది, అంటే స్లేవ్ పరికరానికి డేటాను పంపే ముందు Arduino తప్పనిసరిగా ప్రత్యేక చిరునామాను పంపడం ద్వారా స్లేవ్ పరికరాన్ని ఎంచుకోవాలి. I2C మొత్తం Arduino పిన్ కౌంట్ను తగ్గించే రెండు వైర్లను మాత్రమే ఉపయోగిస్తుంది, అయితే I2C అనేది SPI ప్రోటోకాల్ కంటే నెమ్మదిగా ఉంటుంది.
Arduino అనలాగ్ పిన్ | I2C పిన్ |
A4 | SDA |
A5 | SCL |
హార్డ్వేర్ స్థాయిలో I2C కేవలం రెండు వైర్లకు మాత్రమే పరిమితం చేయబడింది, ఒకటి డేటా లైన్గా పిలువబడుతుంది SDA (సీరియల్ డేటా) మరియు క్లాక్ లైన్ కోసం రెండవది SCL (సీరియల్ క్లాక్). నిష్క్రియ స్థితిలో SDA మరియు SCL రెండూ ఎక్కువగా లాగబడతాయి. డేటాను ప్రసారం చేయవలసి వచ్చినప్పుడు ఈ లైన్లు MOSFET సర్క్యూట్రీని ఉపయోగించి తక్కువగా లాగబడతాయి. ప్రాజెక్ట్లలో I2Cని ఉపయోగించడం సాధారణంగా 4.7Kohm విలువ కలిగిన పుల్ అప్ రెసిస్టర్లను ఉపయోగించడం తప్పనిసరి. ఈ పుల్ అప్ రెసిస్టర్లు SDA మరియు SCL లైన్లు రెండూ వాటి నిష్క్రియ ప్రారంభంలో ఎక్కువగా ఉండేలా చూస్తాయి.
I2C ప్రోటోకాల్ల యొక్క కొన్ని ప్రధాన ముఖ్యాంశాలు:
- అవసరమైన పిన్ల సంఖ్య చాలా తక్కువ
- బహుళ మాస్టర్ స్లేవ్స్ పరికరాలను కనెక్ట్ చేయవచ్చు
- 2 వైర్లను మాత్రమే ఉపయోగిస్తుంది
- పుల్ అప్ రెసిస్టర్ల కారణంగా SPIతో పోలిస్తే వేగం తక్కువగా ఉంటుంది
- రెసిస్టర్లకు సర్క్యూట్లో ఎక్కువ స్థలం అవసరం
- పరికరాల సంఖ్య పెరుగుదలతో ప్రాజెక్ట్ యొక్క సంక్లిష్టత పెరుగుతుంది
UART vs I2C vs SPI మధ్య పోలిక
ప్రోటోకాల్ | UART | SPI | 2C |
వేగం | నెమ్మదిగా | అత్యంత వేగవంతమైనది | UART కంటే వేగంగా |
పరికరాల సంఖ్య | 2 వరకు | 4 పరికరాలు | గరిష్టంగా 128 పరికరాలు |
వైర్లు అవసరం | 2(Tx,Rx) | 4(SCK, పొగ, కళ్ళు, SS) | 2(SDA,SCL) |
డ్యూప్లెక్స్ మోడ్ | పూర్తి డ్యూప్లెక్స్ మోడ్ | పూర్తి డ్యూప్లెక్స్ మోడ్ | సగం డ్యూప్లెక్స్ |
మాస్టర్-స్లేవ్ల సంఖ్య సాధ్యమే | సింగిల్ మాస్టర్-సింగిల్ స్లేవ్ | సింగిల్ మాస్టర్-బహుళ బానిసలు | బహుళ యజమానులు-బహుళ బానిసలు |
సంక్లిష్టత | సింపుల్ | బహుళ పరికరాలను సులభంగా నియంత్రించవచ్చు | పరికరాల పెరుగుదలతో కాంప్లెక్స్ |
అక్నాలెడ్జ్మెంట్ బిట్ | లేదు | లేదు | అవును |
ముగింపు
ఈ వ్యాసంలో, మేము Arduinoలో ఉపయోగించిన UART, SPI మరియు I2C మూడు ప్రోటోకాల్ల సమగ్ర పోలికను కవర్ చేసాము. అన్ని ప్రోటోకాల్లను తెలుసుకోవడం చాలా ముఖ్యం ఎందుకంటే ఇది బహుళ పరికరాలను ఏకీకృతం చేయడానికి అంతులేని అవకాశాలను ఇస్తుంది. అన్ని కమ్యూనికేషన్ పెరిఫెరల్స్ను అర్థం చేసుకోవడం సమయాన్ని ఆదా చేస్తుంది మరియు సరైన ప్రోటోకాల్ ప్రకారం ప్రాజెక్ట్లను ఆప్టిమైజ్ చేయడంలో సహాయపడుతుంది.