- RS-485 సీరియల్ కమ్యూనికేషన్
- భాగాలు అవసరం
- సర్క్యూట్ రేఖాచిత్రం
- RS485 సీరియల్ కమ్యూనికేషన్ కోసం ప్రోగ్రామింగ్ STM32F103C8 & Arduino UNO
- STM32F103C8 మరియు Arduino UNO మధ్య RS485 కమ్యూనికేషన్ను పరీక్షిస్తోంది:
కమ్యూనికేషన్ ప్రోటోకాల్స్ డిజిటల్ ఎలక్ట్రానిక్స్ మరియు ఎంబెడెడ్ సిస్టమ్ యొక్క అంతర్భాగం. బహుళ మైక్రోకంట్రోలర్ మరియు పెరిఫెరల్స్ యొక్క ఇంటర్ఫేసింగ్ ఉన్నచోట, బంచ్ డేటాను మార్పిడి చేయడానికి కమ్యూనికేషన్ ప్రోటోకాల్ను ఉపయోగించాలి. అనేక రకాల సీరియల్ కమ్యూనికేషన్ ప్రోటోకాల్ అందుబాటులో ఉంది. RS485 సీరియల్ కమ్యూనికేషన్ ప్రోటోకాల్లో ఒకటి మరియు ఇది పారిశ్రామిక ప్రాజెక్టులు మరియు భారీ యంత్రాలలో ఉపయోగించబడుతుంది.
మునుపటి ట్యుటోరియల్లో ఆర్డునో యునో మరియు ఆర్డునో నానోల మధ్య RS485 సీరియల్ కమ్యూనికేషన్ గురించి తెలుసుకున్నాము . ఈ ట్యుటోరియల్ STM32F103C8 మైక్రోకంట్రోలర్లో RS-485 సీరియల్ కమ్యూనికేషన్ను ఉపయోగించడం గురించి. మీరు STM32 మైక్రోకంట్రోలర్కు క్రొత్తగా ఉంటే, ఆర్డునో IDE: మెరిసే LED ని ఉపయోగించి STM32 తో ప్రారంభించండి మరియు ఇక్కడ అన్ని STM32 ప్రాజెక్ట్లను తనిఖీ చేయండి.
ఈ ట్యుటోరియల్లో మాస్టర్ STM32F103C8 లో మూడు పుష్ బటన్లు ఉన్నాయి, ఇవి RS-485 సీరియల్ కమ్యూనికేషన్ను ఉపయోగించడం ద్వారా స్లేవ్ ఆర్డునో యునో వద్ద ఉన్న మూడు LED ల యొక్క స్థితిని నియంత్రించడానికి ఉపయోగించబడతాయి.
RS-485 సీరియల్ కమ్యూనికేషన్ యొక్క పనిని అర్థం చేసుకోవడం ద్వారా ప్రారంభిద్దాం.
RS-485 సీరియల్ కమ్యూనికేషన్
RS-485 అనేది అసమకాలిక సీరియల్ కమ్యూనికేషన్ ప్రోటోకాల్, దీనికి గడియారం అవసరం లేదు. ఇది బైనరీ డేటాను ఒక పరికరం నుండి మరొక పరికరానికి బదిలీ చేయడానికి అవకలన సిగ్నల్ అనే సాంకేతికతను ఉపయోగిస్తుంది.
కాబట్టి ఈ డిఫరెన్షియల్ సిగ్నల్ ట్రాన్స్ఫర్ మెథడ్ ఏమిటి ??
సానుకూల మరియు ప్రతికూల 5V ని ఉపయోగించి అవకలన వోల్టేజ్ను సృష్టించడం ద్వారా డిఫరెన్షియల్ సిగ్నల్ పద్ధతి పనిచేస్తుంది. ఇది రెండు వైర్లను ఉపయోగించినప్పుడు హాఫ్-డ్యూప్లెక్స్ కమ్యూనికేషన్ మరియు నాలుగు వైర్లను ఉపయోగించినప్పుడు ఫుల్-డ్యూప్లెక్స్ కమ్యూనికేషన్ను అందిస్తుంది.
ఈ పద్ధతిని ఉపయోగించడం ద్వారా:
- RS-485 గరిష్టంగా 30Mbps అధిక డేటా బదిలీ రేటుకు మద్దతు ఇస్తుంది.
- ఇది RS-232 ప్రోటోకాల్తో పోలిస్తే గరిష్ట డేటా బదిలీ దూరాన్ని కూడా అందిస్తుంది. ఇది గరిష్టంగా 1200 మీటర్ల వరకు డేటాను బదిలీ చేస్తుంది.
- RS-232 కంటే RS-485 యొక్క ప్రధాన ప్రయోజనం సింగిల్ మాస్టర్తో ఉన్న బహుళ బానిస, RS-232 ఒకే బానిసకు మాత్రమే మద్దతు ఇస్తుంది.
- RS-485 ప్రోటోకాల్కు కనెక్ట్ చేయబడిన గరిష్టంగా 32 పరికరాలను కలిగి ఉంటుంది.
- RS-485 యొక్క మరొక ప్రయోజనం శబ్దం నుండి రోగనిరోధక శక్తిని కలిగి ఉంటుంది, ఎందుకంటే అవి బదిలీ చేయడానికి అవకలన సిగ్నల్ పద్ధతిని ఉపయోగిస్తాయి.
- I2C ప్రోటోకాల్తో పోలిస్తే RS-485 వేగంగా ఉంటుంది.
RS-485 మాడ్యూల్ సీరియల్ పోర్ట్ ఉన్న ఏదైనా మైక్రోకంట్రోలర్కు కనెక్ట్ చేయవచ్చు. మైక్రోకంట్రోలర్లతో RS-485 మాడ్యూల్ను ఉపయోగించడం కోసం 5V MAX485 TTL నుండి RS485 వరకు మాడ్యూల్ MAX485 IC పై ఆధారపడిన మాడ్యూల్ అవసరం, ఎందుకంటే ఇది 1200 మీటర్ల దూరానికి సీరియల్ కమ్యూనికేషన్ను అనుమతిస్తుంది మరియు ఇది ద్వి దిశాత్మక మరియు సగం డ్యూప్లెక్స్ డేటా బదిలీ రేటు 2.5 Mbps. ఈ మాడ్యూల్కు 5 వి వోల్టేజ్ అవసరం.
RS-485 పిన్ వివరణ:
పిన్ పేరు |
వివరణ |
వీసీసీ |
5 వి |
జ |
నాన్-ఇన్వర్టింగ్ రిసీవర్ ఇన్పుట్ నాన్-ఇన్వర్టింగ్ డ్రైవర్ అవుట్పుట్ |
బి |
రివర్స్ ఇన్పుట్ విలోమం విలోమ డ్రైవర్ అవుట్పుట్ |
GND |
GND (0V) |
R0 |
రిసీవర్ అవుట్ (RX పిన్) |
RE |
స్వీకర్త అవుట్పుట్ (తక్కువ-ప్రారంభించు) |
DE |
డ్రైవర్ అవుట్పుట్ (హై-ఎనేబుల్) |
DI |
డ్రైవర్ ఇన్పుట్ (TX పిన్) |
RS485 మాడ్యూల్ క్రింది లక్షణాలను కలిగి ఉంది:
- ఆపరేటింగ్ వోల్టేజ్: 5 వి
- ఆన్-బోర్డు MAX485 చిప్
- RS485 కమ్యూనికేషన్ కోసం తక్కువ విద్యుత్ వినియోగం
- స్లీ-రేట్ పరిమిత ట్రాన్స్సీవర్
- 5.08 మిమీ పిచ్ 2 పి టెర్మినల్
- అనుకూలమైన RS-485 కమ్యూనికేషన్ వైరింగ్
- చిప్ యొక్క అన్ని పిన్స్ మైక్రోకంట్రోలర్ ద్వారా నియంత్రించబడతాయి
- బోర్డు పరిమాణం: 44 x 14 మిమీ
ఈ మాడ్యూల్ను STM32F103C8 మరియు Arduino UNO తో ఉపయోగించడం చాలా సులభం. మైక్రోకంట్రోలర్ల యొక్క హార్డ్వేర్ సీరియల్ పోర్టులు ఉపయోగించబడతాయి. STM32 మరియు arduino UNO లోని హార్డ్వేర్ సీరియల్ పిన్లు క్రింద ఇవ్వబడ్డాయి.
- STM32F103C8 లో: పిన్స్ PA9 (TX) & PA10 (RX)
- Arduino Uno లో: పిన్ 0 (RX) & 1 (TX)
ప్రోగ్రామింగ్ కేవలం ఉపయోగించడానికి కూడా సులభం Serial.print () RS-485 మరియు వ్రాయడానికి Serial.Read () నుండి RS-485 మరియు పిన్స్ చదవడానికి DE & RE యొక్క RS-485 చేసిన సమాచారాన్ని అందుకోవచ్చు LOW మరియు తయారు చేయడానికి HIGH RS-485 బస్కు డేటా రాయండి.
భాగాలు అవసరం
- STM32F103C8
- ఆర్డునో UNO
- MAX485 TTL నుండి RS485 కన్వర్టర్ మాడ్యూల్ - (2)
- 10 కె పొటెన్టోమీటర్
- పుష్ బటన్ - 3
- LED - 3
- రెసిస్టర్లు
- బ్రెడ్బోర్డ్
- వైర్లను కనెక్ట్ చేస్తోంది
సర్క్యూట్ రేఖాచిత్రం
ఈ ట్యుటోరియల్లో STM32F103C8 ను ఒక RS-485 మాడ్యూల్తో మాస్టర్గా ఉపయోగిస్తారు మరియు Arduino UNO ను మరొక RS-485 మాడ్యూల్తో బానిసగా ఉపయోగిస్తారు.
RS-485 మరియు STM32F103C8 (మాస్టర్) మధ్య సర్క్యూట్ కనెక్షన్:
RS-485 |
STM32F103C8 |
DI |
PA9 (TX1) |
DE RE |
PA3 |
R0 |
PA10 (RX1) |
వీసీసీ |
5 వి |
GND |
GND |
జ |
స్లేవ్ RS-485 యొక్క A కు |
బి |
స్లేవ్ RS-485 యొక్క B కి |
త్రీ పుష్ బటన్తో STM32F103C8:
10 కె యొక్క మూడు పుల్ డౌన్ రెసిస్టర్తో మూడు పుష్ బటన్లు STM32F103C8 యొక్క పిన్స్ PA0, PA1, PA2 లకు అనుసంధానించబడి ఉన్నాయి.
RS-485 మరియు Arduino UNO (స్లేవ్) మధ్య సర్క్యూట్ కనెక్షన్:
RS-485 |
ఆర్డునో UNO |
DI |
1 (టిఎక్స్) |
DE RE |
2 |
R0 |
0 (RX) |
వీసీసీ |
5 వి |
GND |
GND |
జ |
మాస్టర్ RS-485 యొక్క A కు |
బి |
మాస్టర్ RS-485 యొక్క B కి |
330 ఓంల రెసిస్టర్తో ఎల్ఈడీల యానోడ్లు ఆర్డునో యుఎన్ఓ యొక్క పిన్స్ 4, 7, 8 మరియు ఎల్ఇడిల కాథోడ్ జిఎన్డికి అనుసంధానించబడిన చోట మూడు ఎల్ఇడిలు ఉపయోగించబడతాయి.
RS485 సీరియల్ కమ్యూనికేషన్ కోసం ప్రోగ్రామింగ్ STM32F103C8 & Arduino UNO
ఆర్డునో IDE రెండు బోర్డుల అభివృద్ధి మరియు ప్రోగ్రామింగ్ కొరకు ఉపయోగించబడుతుంది, అంటే STM32 మరియు Arduino UNO. కానీ మీరు టూల్స్-> పోర్ట్ మరియు బోర్డ్ నుండి టూల్స్-> బోర్డ్ నుండి సంబంధిత పోర్ట్ను ఎంచుకున్నారని నిర్ధారించుకోండి. మీకు ఏవైనా ఇబ్బందులు లేదా సందేహాలు కనిపిస్తే, ARDUINO IDE లో మీ STM32 ను ప్రోగ్రామింగ్ చేయండి. ఈ ట్యుటోరియల్ కోసం ప్రోగ్రామింగ్లో STM32F103C8 (మాస్టర్) కోసం రెండు సెక్షన్ ఒకటి మరియు ఆర్డునో UNO (స్లేవ్) కోసం మరొక విభాగం ఉంటుంది. రెండు సంకేతాలు క్రింద ఒక్కొక్కటిగా వివరించబడతాయి.
STM32F103C8 మాస్టర్గామాస్టర్ వైపు, పుష్ బటన్ యొక్క స్థితి చదివి, ఆ విలువలను STM32F103C8 యొక్క హార్డ్వేర్ సీరియల్ పోర్ట్స్ 1 (PA9, PA10) ద్వారా RS-485 బస్సుకు సీరియల్గా వ్రాస్తారు. ప్రస్తుతానికి బాహ్య లైబ్రరీ అవసరం లేదు. ఆర్డునోలో సీరియల్ కమ్యూనికేషన్ కోసం అవసరమైన అన్ని లైబ్రరీ ఉంది.
9600 బడ్రేట్ వద్ద హార్డ్వేర్ సీరియల్ పిన్స్ (PA9, PA10) ఉపయోగించి సీరియల్ కమ్యూనికేషన్ను ప్రారంభించండి.
సీరియల్ 1.బెగిన్ (9600);
STM32F103C8 యొక్క పిన్స్ PA0, PA1, PA2 వద్ద పుష్ బటన్ యొక్క స్థితిని చదవండి మరియు వాటిని వేరియబుల్ బటన్ 1val, button2val, button3val లో నిల్వ చేయండి. బటన్ నొక్కితే విలువ HIGH మరియు నొక్కినప్పుడు తక్కువ.
int button1val = DigitalRead (button1); int button2val = DigitalRead (button2); int button3val = DigitalRead (button3);
సీరియల్ పోర్ట్కు బటన్ విలువలను పంపే ముందు, RS-485 యొక్క పిన్లు DE & RE అధికంగా ఉండాలి, ఇది STM32F103C8 యొక్క పిన్ PA3 కి అనుసంధానించబడి ఉంటుంది (పిన్ PA3 HIGH చేయడానికి):
డిజిటల్ రైట్ (ఎనేబుల్ పిన్, హై);
ఆ విలువలను సీరియల్ పోర్టులో ఉంచడానికి తరువాత మరియు ఏ పుష్ బటన్ నొక్కినదానిపై ఆధారపడి విలువలను పంపండి, లేకపోతే స్టేట్మెంట్ వాడండి మరియు బటన్ నొక్కినప్పుడు సంబంధిత విలువను పంపండి.
మొదటి బటన్ నొక్కితే పరిస్థితి సరిపోతుంది మరియు '1' విలువ Arduino UNO అనుసంధానించబడిన సీరియల్ పోర్టుకు పంపబడుతుంది.
if (button1val == HIGH) { int num1 = 1; సీరియల్ 1.ప్రింట్ల్న్ (నం 1); }
అదేవిధంగా, బటన్ 2 నొక్కినప్పుడు విలువ 2 సీరియల్ పోర్టు ద్వారా పంపబడుతుంది మరియు బటన్ 3 నొక్కినప్పుడు విలువ 3 సీరియల్ పోర్ట్ ద్వారా పంపబడుతుంది.
else if (button2val == HIGH) { int num2 = 2; సీరియల్ 1.ప్రింట్ల్న్ (నం 2); } else if (button3val == HIGH) { int num3 = 3; సీరియల్ 1.ప్రింట్ల్న్ (నం 3); }
మరియు బటన్ నొక్కినప్పుడు విలువ 0 అర్డునో యునోకు పంపబడుతుంది.
else { int num = 0; సీరియల్ 1.ప్రింట్ల్న్ (నం); }
ఇది STM32 ను మాస్టర్గా కాన్ఫిగర్ చేయడానికి ప్రోగ్రామింగ్ను పూర్తి చేస్తుంది.
అర్డునో UNO బానిసగాస్లేవ్ వైపు Arduino UNO మాస్టర్ STM32F103C8 నుండి పంపబడిన పూర్ణాంక విలువను పొందుతుంది, ఇది RS-485 మాడ్యూల్ అనుసంధానించబడిన Arduino UNO (P0, 1) యొక్క హార్డ్వేర్ సీరియల్ పోర్టులో లభిస్తుంది.
విలువను చదివి వేరియబుల్లో నిల్వ చేయండి. అందుకున్న విలువను బట్టి సంబంధిత LED ఆన్ లేదా ఆఫ్ చేయబడి Arduino GPIO కి కనెక్ట్ చేయబడింది.
మాస్టర్ నుండి విలువలను స్వీకరించడానికి RS-485 మాడ్యూల్ యొక్క పిన్స్ DE & RE ను తక్కువ చేయండి. కాబట్టి Arduino UNO యొక్క పిన్ -2 (ఎనేబుల్ పిన్) తక్కువగా తయారు చేయబడింది.
డిజిటల్ రైట్ (ఎనేబుల్ పిన్, తక్కువ);
ఇప్పుడు సీరియల్ పోర్ట్ వద్ద అందుబాటులో ఉన్న పూర్ణాంక డేటాను చదివి వాటిని వేరియబుల్ లో భద్రపరుచుకోండి.
int స్వీకరించండి = Serial.parseInt ();
అందుకున్న విలువపై ఆధారపడి (0, 1, 2, 3), తదనుగుణంగా మూడు LED లలో ఒకటి ఆన్ చేయబడుతుంది.
if (స్వీకరించండి == 1) // స్వీకరించిన విలువను బట్టి సంబంధిత LED ఆన్ లేదా ఆఫ్ చేయబడుతుంది { DigitalWrite (ledpin1, HIGH); } else if (స్వీకరించండి == 2) { DigitalWrite (ledpin2, HIGH); } else ఉంటే (స్వీకరించండి == 3) { DigitalWrite (ledpin3, HIGH); } else { డిజిటల్ రైట్ (లెడ్పిన్ 1, తక్కువ); డిజిటల్ రైట్ (లెడ్పిన్ 2, తక్కువ); డిజిటల్ రైట్ (లెడ్పిన్ 3, తక్కువ); }
ఇది ప్రోగ్రామింగ్ను పూర్తి చేస్తుంది మరియు ఆర్డునో UNO ను బానిసగా కాన్ఫిగర్ చేస్తుంది. ఇది Arduino UNO మరియు STM32 కొరకు పూర్తి ఆకృతీకరణలను పూర్తి చేస్తుంది. ఈ ట్యుటోరియల్ చివరిలో పని వీడియో మరియు అన్ని కోడ్లు జతచేయబడతాయి.
STM32F103C8 మరియు Arduino UNO మధ్య RS485 కమ్యూనికేషన్ను పరీక్షిస్తోంది:
1. మాస్టర్ STM32 కి అనుసంధానించబడిన పుష్ బటన్ -1 నొక్కినప్పుడు, LED 1 టర్న్ ఆన్ ఆన్ స్లేవ్ ఆర్డునోకు కనెక్ట్ చేయబడింది.
2. మాస్టర్ STM32 కి కనెక్ట్ అయిన పుష్ బటన్ -2 నొక్కినప్పుడు, LED 2 టర్న్ ఆన్ ఆన్ స్లేవ్ ఆర్డునోకు కనెక్ట్ చేయబడింది.
3. అదేవిధంగా పుష్ బటన్ -3 నొక్కినప్పుడు LED 3 స్లేవ్ ఆర్డునోకు కనెక్ట్ చేయబడింది.
ఇది STM32F103C8 మరియు Arduino UNO మధ్య RS485 సీరియల్ కమ్యూనికేషన్ను పూర్తి చేస్తుంది. Arduino UNO మరియు STM32 బోర్డులు వేగంగా ప్రోటోటైపింగ్ కోసం విస్తృతంగా ఉపయోగించబడుతున్న బోర్డులు మరియు మేము ఈ బోర్డులపై చాలా ఉపయోగకరమైన ప్రాజెక్టులను చేసాము. మీకు ఏవైనా సందేహాలు కనిపిస్తే లేదా మాకు ఏదైనా సలహా ఉంటే క్రింద వ్రాసి వ్యాఖ్యానించండి.