Arduino ప్లాట్ఫారమ్ వివిధ ప్రాజెక్ట్లను రూపొందించడానికి వ్యక్తులను అనుమతిస్తుంది. Arduino అనేది విస్తృత శ్రేణి లైబ్రరీలకు మద్దతుతో కూడిన వినియోగదారు-స్నేహపూర్వక వేదిక సాఫ్ట్వేర్ సీరియల్ లైబ్రరీ . ది సాఫ్ట్వేర్ సీరియల్ లైబ్రరీ మీ Arduino బోర్డ్లోని ఏదైనా డిజిటల్ పిన్లపై సీరియల్ పోర్ట్ను సృష్టించడానికి మిమ్మల్ని అనుమతిస్తుంది.
ఈ కథనంలో, మేము సాఫ్ట్వేర్సీరియల్ లైబ్రరీలో లోతుగా డైవ్ చేస్తాము మరియు అది ఎలా పనిచేస్తుందో అన్వేషిస్తాము.
సాఫ్ట్వేర్ సీరియల్ లైబ్రరీకి పరిచయం
ది సాఫ్ట్వేర్ సీరియల్ లైబ్రరీ TX మరియు RX కాకుండా డిజిటల్ పిన్లపై సీరియల్ కమ్యూనికేషన్ను అనుమతించే ప్రామాణిక Arduino లైబ్రరీ. లైబ్రరీ సాఫ్ట్వేర్ సీరియల్ పోర్ట్ను రూపొందించడాన్ని ప్రారంభిస్తుంది, ఇది ఇతర మైక్రోకంట్రోలర్లు, కంప్యూటర్లు లేదా బ్లూటూత్ మాడ్యూల్స్ వంటి ఇతర పరికరాలతో కమ్యూనికేట్ చేయడానికి ఉపయోగించవచ్చు. SoftwareSerial లైబ్రరీ Arduino IDEతో చేర్చబడింది మరియు ఏదైనా Arduino బోర్డుతో ఉపయోగించవచ్చు.
గమనిక: సాధారణంగా, TX మరియు RX పిన్స్ సీరియల్ కమ్యూనికేషన్ కోసం ఉపయోగించబడతాయి కానీ ఈ లైబ్రరీని ఉపయోగించి మేము TX మరియు RX పిన్లను భర్తీ చేయడానికి ఏదైనా డిజిటల్ పిన్లను ఉపయోగించడానికి Arduino బోర్డ్ను ప్రారంభించవచ్చు.
సాఫ్ట్వేర్ సీరియల్ లైబ్రరీ ఫంక్షన్లను అర్థం చేసుకోవడం
ది సాఫ్ట్వేర్ సీరియల్ లైబ్రరీ సాఫ్ట్వేర్ సీరియల్ పోర్ట్ను సెటప్ చేయడానికి మరియు నియంత్రించడానికి మిమ్మల్ని అనుమతించే అనేక ఫంక్షన్లను కలిగి ఉంది. మీరు తెలుసుకోవలసిన కొన్ని ప్రధాన విధులు ఇక్కడ ఉన్నాయి:
సాఫ్ట్వేర్ సీరియల్()
ఈ ఫంక్షన్ ఒక కొత్త ఉదాహరణను సృష్టిస్తుంది సాఫ్ట్వేర్ సీరియల్ తరగతి. ఈ ఫంక్షన్కు RX పిన్ మరియు TX పిన్ అనే రెండు ఆర్గ్యుమెంట్లు ఉన్నాయి. ఉదాహరణకు, మీరు పిన్స్ 2 మరియు 3లో సాఫ్ట్వేర్ సీరియల్ పోర్ట్ను సృష్టించాలనుకుంటే, మీరు ఈ క్రింది కోడ్ని ఉపయోగిస్తారు:
SoftwareSerial mySerial ( 2 , 3 ) ; // RX, TX
ది సాఫ్ట్వేర్ సీరియల్() a యొక్క కొత్త ఉదాహరణను సృష్టించడానికి పద్ధతి ఉపయోగించబడుతుంది సాఫ్ట్వేర్ సీరియల్ వస్తువు. ఇది బహుళ సందర్భాలను సృష్టించడానికి అనుమతిస్తుంది, అయితే ఒక సమయంలో ఒకటి మాత్రమే సక్రియంగా ఉంటుంది.
వాక్యనిర్మాణం
కోసం వాక్యనిర్మాణం సాఫ్ట్వేర్ సీరియల్() పద్ధతి క్రింది విధంగా ఉంది:
సాఫ్ట్వేర్ సీరియల్ ( rxPin, txPin, inverse_logic )
పారామితులు
కోసం పారామితులు సాఫ్ట్వేర్ సీరియల్() ఉన్నాయి
rxPin: ఈ పరామితి సీరియల్ డేటాను స్వీకరించడానికి ఉపయోగించే పిన్ను నిర్దేశిస్తుంది.
txPin: ఈ పరామితి సీరియల్ డేటాను ప్రసారం చేయడానికి ఉపయోగించే పిన్ను నిర్దేశిస్తుంది.
విలోమ_తర్కం: ఈ పరామితి ఐచ్ఛికం మరియు ఇది ఇన్కమింగ్ బిట్స్ సెన్స్ను విలోమం చేస్తుంది. డిఫాల్ట్ విలువ తప్పు, అంటే RX పిన్పై తక్కువ అనేది 0-బిట్గా మరియు హైని 1-బిట్గా అన్వయించబడుతుంది. ఒప్పుకు సెట్ చేయబడితే, RX పిన్పై తక్కువ ఇప్పుడు 1-బిట్ మరియు అధికం 0-బిట్గా పడుతుంది.
తిరిగి
ది సాఫ్ట్వేర్ సీరియల్() దేనినీ తిరిగి ఇవ్వదు.
Arduino SoftwareSerial() లైబ్రరీ విధులు
ఆర్డునో సాఫ్ట్వేర్ సీరియల్() పరికరాల మధ్య సీరియల్ కమ్యూనికేషన్ కోసం ఫంక్షన్ల జాబితాను కలిగి ఉంది. కొన్ని ప్రధాన విధులు ఇక్కడ చర్చించబడ్డాయి:
ప్రారంభం()
ది ప్రారంభం() ఫంక్షన్ సాఫ్ట్వేర్ సీరియల్ పోర్ట్ను బాడ్ రేట్తో ప్రారంభిస్తుంది. బాడ్ రేటు అనేది సీరియల్ పోర్ట్పై డేటా ట్రాన్స్మిషన్ వేగం. ఉదాహరణకు, సీరియల్ కమ్యూనికేషన్ కోసం 9600ని బాడ్ రేట్గా సెట్ చేయడానికి, మీరు ఈ క్రింది కోడ్ని ఉపయోగిస్తారు:
mySerial.begin ( 9600 ) ;
అందుబాటులో ()
ది అందుబాటులో () f unction సాఫ్ట్వేర్ సీరియల్ పోర్ట్లో చదవడానికి అందుబాటులో ఉన్న బైట్లను అందిస్తుంది. ఉదాహరణకు, చదవడానికి ఏదైనా డేటా అందుబాటులో ఉందో లేదో తనిఖీ చేయడానికి, మీరు క్రింది కోడ్ని ఉపయోగిస్తారు:
ఉంటే ( mySerial.అందుబాటులో ఉంది ( ) > 0 ) {// చదవండి ఇన్పుట్ డేటా
char incomingByte = mySerial.read ( ) ;
}
చదవండి()
ది చదవండి() ఫంక్షన్ సాఫ్ట్వేర్ సీరియల్ పోర్ట్ నుండి డేటా యొక్క తదుపరి బైట్ను రీడ్ చేస్తుంది. ఉదాహరణకు, బైట్ డేటాను చదవడానికి మరియు దానిని సీరియల్ మానిటర్కు ప్రింట్ చేయడానికి, మీరు క్రింది కోడ్ని ఉపయోగిస్తారు:
char incomingByte = mySerial.read ( ) ;Serial.println ( ఇన్కమింగ్బైట్ ) ;
వ్రాయడానికి()
ది వ్రాయడానికి() ఫంక్షన్ సాఫ్ట్వేర్ సీరియల్ పోర్ట్కు బైట్ డేటాను వ్రాస్తుంది. ఉదాహరణకు, లేఖ పంపడానికి 'ఎ' సాఫ్ట్వేర్ సీరియల్ పోర్ట్లో, మీరు ఈ క్రింది కోడ్ని ఉపయోగిస్తారు:
mySerial.write ( 'ఎ' ) ;
Arduino SoftwareSerial() లైబ్రరీ ఉదాహరణ కోడ్
ఇప్పుడు మేము ఈ లైబ్రరీని ఉపయోగించి సీరియల్ కమ్యూనికేషన్ ద్వారా రెండు Arduino బోర్డుల మధ్య కమ్యూనికేట్ చేస్తాము. రెండు Arduino బోర్డులను తీసుకోండి మరియు దిగువ చిత్రంలో చూపిన విధంగా వాటిని కనెక్ట్ చేయండి.
కనెక్ట్ చేయండి D2 మాస్టర్ ఆర్డునో బోర్డుతో D3 స్లేవ్ ఆర్డునో బోర్డు, అదేవిధంగా కనెక్ట్ చేయండి D3 మాస్టర్ Arduino తో D2 స్లేవ్ ఆర్డునో యొక్క.
గమనిక: సీరియల్ కమ్యూనికేషన్ కోసం, ది TX పిన్ ఎల్లప్పుడూ కనెక్ట్ చేయబడింది RX వ్యతిరేక Arduino యొక్క పిన్ మరియు ది RX మాస్టర్ యొక్క పిన్ ఎల్లప్పుడూ దీనికి కనెక్ట్ చేయబడింది TX ఇతర Arduino యొక్క పిన్.
రెండు Arduino బోర్డుల హార్డ్వేర్ క్రిందిది.
Arduino కోడ్ను ఎలా ఉపయోగించాలో ప్రదర్శించే ఉదాహరణ ఇక్కడ ఉంది సాఫ్ట్వేర్ సీరియల్ లైబ్రరీ రెండు Arduino బోర్డుల మధ్య కమ్యూనికేషన్ ఏర్పాటు చేయడానికి:
పంపినవారి బోర్డు కోడ్
దిగువ కోడ్ పంపిన వ్యక్తి Arduino కోసం, ఇది రిసీవర్ Arduino బోర్డ్కు స్ట్రింగ్ను వ్రాస్తుంది.
#// సాఫ్ట్వేర్ సీరియల్ ఆబ్జెక్ట్ని సెటప్ చేయండి
SoftwareSerial mySerial ( 2 , 3 ) ;
శూన్యమైన సెటప్ ( ) {
// సీరియల్ కమ్యూనికేషన్ను ప్రారంభించండి
సీరియల్.ప్రారంభం ( 9600 ) ;
అయితే ( ! క్రమ ) {
; // వేచి ఉండండి కోసం కనెక్ట్ చేయడానికి సీరియల్ పోర్ట్
}
// సాఫ్ట్వేర్ సీరియల్ కమ్యూనికేషన్ను ప్రారంభించండి
mySerial.begin ( 9600 ) ;
}
శూన్య లూప్ ( ) {
// సాఫ్ట్వేర్ సీరియల్ కనెక్షన్ ద్వారా సందేశాన్ని పంపండి
mySerial.println ( 'హలో, రిసీవర్ బోర్డ్!' ) ;
ఆలస్యం ( 1000 ) ;
}
రిసీవర్ బోర్డు కోడ్
దిగువ కోడ్ రిసీవర్ బోర్డు కోసం. ఈ కోడ్ని ఉపయోగించి Arduino రెండు Arduino బోర్డుల మధ్య ఏర్పాటు చేయబడిన సీరియల్ కమ్యూనికేషన్ ద్వారా మరొక బోర్డు నుండి స్ట్రింగ్ను అందుకుంటుంది.
#// సాఫ్ట్వేర్ సీరియల్ ఆబ్జెక్ట్ని సెటప్ చేయండి
SoftwareSerial mySerial ( 2 , 3 ) ;
శూన్యమైన సెటప్ ( ) {
// సీరియల్ కమ్యూనికేషన్ను ప్రారంభించండి
సీరియల్.ప్రారంభం ( 9600 ) ;
అయితే ( ! క్రమ ) {
; // వేచి ఉండండి కోసం కనెక్ట్ చేయడానికి సీరియల్ పోర్ట్
}
// సాఫ్ట్వేర్ సీరియల్ కమ్యూనికేషన్ను ప్రారంభించండి
mySerial.begin ( 9600 ) ;
}
శూన్య లూప్ ( ) {
// తనిఖీ ఉంటే సాఫ్ట్వేర్ సీరియల్ కనెక్షన్లో డేటా అందుబాటులో ఉంది
ఉంటే ( mySerial.అందుబాటులో ఉంది ( ) ) {
// డేటాను చదివి, సీరియల్ మానిటర్కు ప్రింట్ చేయండి
Serial.println ( mySerial.readString ( ) ) ;
}
}
ఈ ఉదాహరణలో, మేము మొదట చేర్చాము సాఫ్ట్వేర్ సీరియల్ లైబ్రరీ కోడ్ ప్రారంభంలో. అప్పుడు, మేము ఒక సృష్టిస్తాము సాఫ్ట్వేర్ సీరియల్ అనే వస్తువు ' నా సీరియల్ ”పిన్స్ 2 మరియు 3తో వరుసగా RX మరియు TX పిన్లుగా పేర్కొనబడ్డాయి.
లో సెటప్() ఫంక్షన్, మేము హార్డ్వేర్ సీరియల్ మరియు సాఫ్ట్వేర్ సీరియల్ కమ్యూనికేషన్ రెండింటినీ 9600 బాడ్ రేటుతో ప్రారంభిస్తాము. లూప్() సెండర్ బోర్డ్ యొక్క ఫంక్షన్, మేము mySerial.println() పద్ధతిని ఉపయోగించి సాఫ్ట్వేర్ సీరియల్ కనెక్షన్ ద్వారా సందేశాన్ని పంపుతాము మరియు తదుపరి సందేశాన్ని పంపే ముందు ఒక సెకను వేచి ఉండండి.
రిసీవర్ బోర్డ్ యొక్క లూప్() ఫంక్షన్లో, ఉపయోగించి సాఫ్ట్వేర్ సీరియల్ కనెక్షన్లో సీరియల్ డేటా లభ్యత కోసం కోడ్ తనిఖీ చేస్తుంది mySerial.available() పద్ధతి. డేటా అందుబాటులో ఉంటే, మేము mySerial.readString() పద్ధతిని ఉపయోగించి డేటాను చదివి, Serial.println() పద్ధతిని ఉపయోగించి సీరియల్ మానిటర్కు ప్రింట్ చేస్తాము.
సాఫ్ట్వేర్ సీరియల్() లైబ్రరీ పరిమితులు
ది సాఫ్ట్వేర్ సీరియల్ లైబ్రరీ అనేక విభిన్న ప్రయోజనాలను కలిగి ఉంది కానీ వినియోగదారులు తెలుసుకోవలసిన కొన్ని పరిమితులు కూడా ఉన్నాయి. ఈ పరిమితులు ఉన్నాయి
- డేటాను ఏకకాలంలో ప్రసారం చేయడం మరియు స్వీకరించడం అసమర్థత.
- బహుళ సాఫ్ట్వేర్ సీరియల్ పోర్ట్లను ఉపయోగిస్తున్నప్పుడు, ఒక పోర్ట్ మాత్రమే డేటాను ఒకేసారి స్వీకరించగలదు.
- ఈ లైబ్రరీని ఉపయోగించి సృష్టించబడిన సాఫ్ట్వేర్ ఆధారిత సీరియల్ పోర్ట్లు తక్కువ బాడ్ రేట్లతో పనిచేస్తాయి మరియు హార్డ్వేర్ ఆధారిత సీరియల్ పోర్ట్ల వలె నమ్మదగినవి కావు.
- Mega మరియు Mega 2560 బోర్డ్లలోని కొన్ని పిన్లు RX కోసం మార్పు అంతరాయాలకు మద్దతు ఇవ్వవు, ఏ పిన్లను ఉపయోగించవచ్చో పరిమితం చేస్తుంది.
- అదేవిధంగా, లియోనార్డో మరియు మైక్రో బోర్డ్లలో, మార్పు అంతరాయాలు లేకపోవడం వల్ల RX కోసం నిర్దిష్ట పిన్లను మాత్రమే ఉపయోగించవచ్చు.
- Arduino లేదా Genuino 101 బోర్డులపై గరిష్ట RX వేగం 57600 bps.
- Arduino లేదా Genuino 101 బోర్డుల డిజిటల్ పిన్ 13పై RX పని చేయదు.
బోర్డు | RX పిన్స్ |
మెగా & మెగా 2560 | 10, 11, 12, 13, 14, 15, 50, 51, 52, 53, A8 (62), A9 (63), A10 (64), A11 (65), A12 (66), A13 (67), A14 (68), A15 (69).
|
లియోనార్డో & మైక్ | 8, 9, 10, 11, 14 (MISO), 15 (SCK), 16 (MOSI). |
ముగింపు
ది సాఫ్ట్వేర్ సీరియల్ లైబ్రరీ Arduino లో సీరియల్ కమ్యూనికేషన్ ప్రోటోకాల్లను ఉపయోగించి పరికరాలతో కమ్యూనికేట్ చేయడానికి ఉపయోగకరమైన సాధనం. హార్డ్వేర్-ఆధారిత సీరియల్ పోర్ట్లతో కలిపి ఉపయోగించగల సాఫ్ట్వేర్-ఆధారిత సీరియల్ పోర్ట్లను రూపొందించడానికి ఇది డెవలపర్లను అనుమతిస్తుంది. ఏకకాలంలో డేటా బదిలీని అనుమతించనందున ఈ లైబ్రరీకి కొన్ని పరిమితులు ఉన్నాయి. మరిన్ని వివరాల కోసం పై కథనాన్ని చదవండి.