- CAN పరిచయం
- SPI & I2C కంటే CAN యొక్క పోలిక
- ప్రోటోకాల్ అనువర్తనాలు చేయవచ్చు
- Arduino లో CAN ప్రోటోకాల్ ఎలా ఉపయోగించాలి
- భాగాలు అవసరం
- సర్క్యూట్ రేఖాచిత్రం
- రెండు MCP2515 CAN మాడ్యూళ్ల మధ్య కనెక్షన్
- CAN కమ్యూనికేషన్ కోసం ప్రోగ్రామింగ్ Arduino
- ట్రాన్స్మిటర్ సైడ్ కోడ్ వివరణ (ఆర్డునో నానో)
- రిసీవర్ సైడ్ కోడ్ వివరణ (Arduino UNO)
- Arduino లో CAN కమ్యూనికేషన్ యొక్క పని
ఈ రోజు ఏదైనా సగటు కారులో 60 నుండి 100 సెన్సార్ యూనిట్లు ఉంటాయి. అటానమస్ డ్రైవింగ్, ఎయిర్బ్యాగ్ సిస్టమ్, టైర్ ప్రెజర్ మానిటరింగ్, క్రూయిస్ కంట్రోల్ సిస్టమ్ వంటి లక్షణాలతో కారు నిరంతరం తమ కారును మరింత తెలివిగా తయారుచేస్తుంది. ఈ సంఖ్య అధికంగా ఉంటుంది. ఇతర సెన్సార్ల మాదిరిగా కాకుండా, ఈ సెన్సార్లు క్లిష్టమైన సమాచారాన్ని ప్రాసెస్ చేస్తాయి మరియు అందువల్ల ఈ సెన్సార్ల నుండి డేటాను ప్రామాణిక ఆటోమోటివ్ కమ్యూనికేషన్ ప్రోటోకాల్లను ఉపయోగించి కమ్యూనికేట్ చేయాలి. ఉదాహరణకు, వేగం, థొరెటల్ స్థానం మొదలైన క్రూయిజ్ కంట్రోల్ సిస్టమ్ డేటా ఎలక్ట్రానిక్ కంట్రోల్ యూనిట్ (ECU) కు పంపబడే ముఖ్యమైన విలువలుకారు యొక్క త్వరణం స్థాయిని నిర్ణయించడానికి, ఇక్కడ ఒక దుర్వినియోగం లేదా డేటా కోల్పోవడం క్లిష్టమైన వైఫల్యాలకు దారితీస్తుంది. అందువల్ల UART, SPI లేదా I2C వంటి ప్రామాణిక కమ్యూనికేషన్ ప్రోటోకాల్ల మాదిరిగా కాకుండా, డిజైనర్లు LIN, CAN, FlexRay మొదలైన నమ్మకమైన ఆటోమొబైల్ కమ్యూనికేషన్ ప్రోటోకాల్లను ఉపయోగిస్తారు.
అందుబాటులో ఉన్న అన్ని ప్రోటోకాల్లలో CAN ఎక్కువగా ఉపయోగించబడుతుంది మరియు ప్రాచుర్యం పొందింది. CAN అంటే ఏమిటి మరియు CAN ఎలా పనిచేస్తుందో మేము ఇప్పటికే చర్చించాము. కాబట్టి, ఈ వ్యాసంలో మనం మళ్ళీ బేసిక్లను పరిశీలిస్తాము, చివరకు CAN కమ్యూనికేషన్ను ఉపయోగించి ఇద్దరు ఆర్డునోల మధ్య డేటాను కూడా మార్పిడి చేస్తాము. ఆసక్తికరంగా అనిపిస్తుంది! కాబట్టి, ప్రారంభిద్దాం.
CAN పరిచయం
CAN aka కంట్రోలర్ ఏరియా నెట్వర్క్ పారిశ్రామిక మరియు ఆటోమోటివ్ అనువర్తనాల కోసం రూపొందించిన సీరియల్ కమ్యూనికేషన్ బస్సు. ఇది బహుళ పరికరాల మధ్య కమ్యూనికేషన్ కోసం ఉపయోగించే సందేశ-ఆధారిత ప్రోటోకాల్. క్రింద చూపిన విధంగా బహుళ CAN పరికరాలు కలిసి కనెక్ట్ అయినప్పుడు, కనెక్షన్ మా కేంద్ర నాడీ వ్యవస్థ వలె పనిచేసే నెట్వర్క్ను రూపొందిస్తుంది, ఏ పరికరాన్ని నోడ్లోని ఇతర పరికరాలతో మాట్లాడటానికి అనుమతిస్తుంది.
ఒక నెట్వర్క్ మాత్రమే రెండు వైర్లు ఉంటాయి CAN హై మరియు తక్కువ పైన చూపిన విధంగా ద్వి దిశాత్మక డేటా బదిలీ కోసం. సాధారణంగా CAN కోసం కమ్యూనికేషన్ వేగం 50 Kbps నుండి 1Mbps వరకు ఉంటుంది మరియు దూరం 1Mbps వద్ద 40 మీటర్ల నుండి 50kpbs వద్ద 1000 మీటర్ల వరకు ఉంటుంది.
CAN సందేశం యొక్క ఆకృతి:
CAN కమ్యూనికేషన్లో డేటా నెట్వర్క్లో ఒక నిర్దిష్ట సందేశ ఆకృతిగా ప్రసారం చేయబడుతుంది. ఈ సందేశ ఆకృతిలో అనేక విభాగాలు ఉన్నాయి, కాని రెండు ప్రధాన విభాగాలు ఐడెంటిఫైయర్ మరియు డేటా, ఇవి CAN బస్సులోని సందేశాలను పంపడానికి మరియు ప్రతిస్పందించడానికి సహాయపడతాయి.
ఐడెంటిఫైయర్ లేదా CAN ID: ఐడెంటిఫైయర్ను CAN ID అని కూడా పిలుస్తారు లేదా దీనిని PGN (పారామితి గ్రూప్ నంబర్) అని కూడా పిలుస్తారు. CAN నెట్వర్క్లో ఉన్న CAN పరికరాలను గుర్తించడానికి ఇది ఉపయోగించబడుతుంది. ఉపయోగించిన CAN ప్రోటోకాల్ రకం ఆధారంగా ఐడెంటిఫైయర్ యొక్క పొడవు 11 లేదా 29 బిట్స్.
ప్రామాణిక CAN: 0-2047 (11-బిట్)
విస్తరించిన CAN: 0-2 29 -1 (29-బిట్)
డేటా: ఇది అసలు సెన్సార్ / కంట్రోల్ డేటా, ఇది ఒక పరికరాన్ని మరొక పరికరానికి పంపాలి. పరిమాణ డేటా పొడవు 0 నుండి 8 బైట్ల వరకు ఉంటుంది.
డేటా పొడవు కోడ్ (DLC): ఉన్న డేటా బైట్ల సంఖ్యకు 0 నుండి 8 వరకు.
CAN లో ఉపయోగించిన తీగలు:
CAN ప్రోటోకాల్ సమాచారాన్ని పంపడానికి మరియు స్వీకరించడానికి CAN_H మరియు CAN_L అనే రెండు వైర్లను కలిగి ఉంటుంది. రెండు వైర్లు అవకలన రేఖగా పనిచేస్తాయి, అంటే CAN సిగ్నల్ (0 లేదా 1) CAN_L మరియు CAN_H మధ్య సంభావ్య వ్యత్యాసం ద్వారా సూచించబడుతుంది. వ్యత్యాసం సానుకూలంగా మరియు నిర్దిష్ట కనీస వోల్టేజ్ కంటే పెద్దదిగా ఉంటే అది 1 మరియు వ్యత్యాసం ప్రతికూలంగా ఉంటే అది 0.
సాధారణంగా వక్రీకృత జత కేబుల్ CAN కమ్యూనికేషన్ కోసం ఉపయోగించబడుతుంది. చిత్రంలో చూపిన విధంగా ఒకే 120-ఓం రెసిస్టర్ను సాధారణంగా CAN నెట్వర్క్ యొక్క రెండు చివర్లలో ఉపయోగిస్తారు, దీనికి కారణం లైన్ సమతుల్యతను కలిగి ఉండాలి మరియు అదే సామర్థ్యంతో ముడిపడి ఉండాలి.
SPI & I2C కంటే CAN యొక్క పోలిక
ఆర్డునోతో ఐపిసి మరియు ఆర్డునోతో ఐఐసిని ఎలా ఉపయోగించాలో మేము ఇప్పటికే నేర్చుకున్నాము కాబట్టి, ఎస్పిఐ మరియు ఐ 2 సి యొక్క లక్షణాలను CAN తో పోల్చండి
పరామితి | ఎస్పీఐ | I2C | చేయవచ్చు |
వేగం | 3Mbps నుండి 10Mbps వరకు | ప్రామాణికం: 100Kbps | 10KBps నుండి 1MBps వరకు ఉపయోగించిన తీగ పొడవుపై కూడా ఆధారపడి ఉంటుంది |
వేగంగా: 400 Kbps | |||
హైస్పీడ్: 3.4Mbps | |||
టైప్ చేయండి | సమకాలిక | సమకాలిక | అసమకాలిక |
వైర్ల సంఖ్య | 3+ (MISO, MOSI, SCK, SS1, SS2… SS (n)) | 2 వైర్లు (SDA, SCL) | 2 వైర్లు (CAN_H, CAN_L) |
డ్యూప్లెక్స్ | పూర్తి డ్యూప్లెక్స్ | సగం డ్యూప్లెక్స్ | సగం డ్యూప్లెక్స్ |
ప్రోటోకాల్ అనువర్తనాలు చేయవచ్చు
- CAN ప్రోటోకాల్ యొక్క దృ ness త్వం మరియు విశ్వసనీయత కారణంగా, వాటిని ఆటోమోటివ్, ఇండస్ట్రియల్ మెషీన్స్, అగ్రికల్చర్, మెడికల్ ఎక్విప్మెంట్ వంటి పరిశ్రమలలో ఉపయోగిస్తారు.
- CAN లో వైరింగ్ సంక్లిష్టత తగ్గినందున అవి ప్రధానంగా కారు వంటి ఆటోమోటివ్ అనువర్తనాలలో ఉపయోగించబడతాయి.
- అమలు చేయడానికి తక్కువ ఖర్చు మరియు హార్డ్వేర్ భాగాల ధర కూడా తక్కువ.
- CAN బస్సు పరికరాలను జోడించడం మరియు తొలగించడం సులభం.
Arduino లో CAN ప్రోటోకాల్ ఎలా ఉపయోగించాలి
Arduino లో అంతర్నిర్మిత CAN పోర్ట్ లేనందున, MCP2515 అని పిలువబడే CAN మాడ్యూల్ ఉపయోగించబడుతుంది. ఈ CAN మాడ్యూల్ SPI కమ్యూనికేషన్ను ఉపయోగించడం ద్వారా Arduino తో ఇంటర్ఫేస్ చేయబడింది. MCP2515 గురించి మరింత వివరంగా చూద్దాం మరియు ఇది ఆర్డునోతో ఎలా అనుసంధానించబడి ఉంది.
MCP2515 CAN మాడ్యూల్:
MCP2515 మాడ్యూల్ CAN కంట్రోలర్ MCP2515 ను కలిగి ఉంది, ఇది హై స్పీడ్ CAN ట్రాన్స్సీవర్. MCP2515 మరియు MCU మధ్య కనెక్షన్ SPI ద్వారా ఉంటుంది. కాబట్టి, SPI ఇంటర్ఫేస్ ఉన్న ఏదైనా మైక్రోకంట్రోలర్తో ఇంటర్ఫేస్ చేయడం సులభం.
CAN బస్సు నేర్చుకోవాలనుకునే ప్రారంభకులకు, ఈ మాడ్యూల్ మంచి ప్రారంభంగా పనిచేస్తుంది. పారిశ్రామిక ఆటోమేషన్, హోమ్ ఆటోమేషన్ మరియు ఇతర ఆటోమోటివ్ ఎంబెడెడ్ ప్రాజెక్టులకు ఈ CAN SPI బోర్డు అనువైనది.
MCP2515 యొక్క లక్షణాలు మరియు వివరణ:
- హై-స్పీడ్ CAN ట్రాన్స్సీవర్ TJA1050 ను ఉపయోగిస్తుంది
- పరిమాణం: 40 × 28 మిమీ
- బహుళ CAN బస్ ఇంటర్ఫేస్ విస్తరించడానికి SPI నియంత్రణ
- 8MHZ క్రిస్టల్ ఓసిలేటర్
- 120Ω టెర్మినల్ నిరోధకత
- స్వతంత్ర కీ, LED సూచిక, శక్తి సూచిక ఉంది
- 1 Mb / s CAN ఆపరేషన్కు మద్దతు ఇస్తుంది
- తక్కువ ప్రస్తుత స్టాండ్బై ఆపరేషన్
- 112 నోడ్లను కనెక్ట్ చేయవచ్చు
MCP2515 CAN మాడ్యూల్ యొక్క పిన్అవుట్:
పిన్ పేరు |
వా డు |
వీసీసీ |
5 వి పవర్ ఇన్పుట్ పిన్ |
GND |
గ్రౌండ్ పిన్ |
సి.ఎస్ |
SPI SLAVE సెలెక్ట్ పిన్ (యాక్టివ్ తక్కువ) |
SO |
SPI మాస్టర్ ఇన్పుట్ స్లేవ్ అవుట్పుట్ లీడ్ |
SI |
SPI మాస్టర్ అవుట్పుట్ స్లేవ్ ఇన్పుట్ సీసం |
ఎస్.సి.ఎల్.కె. |
SPI క్లాక్ పిన్ |
INT |
MCP2515 అంతరాయ పిన్ |
ఈ ట్యుటోరియల్లో ఆర్డినో నానో నుండి ఆర్డునో యునోకు CAN బస్ మాడ్యూల్ MCP2515 ద్వారా తేమ & ఉష్ణోగ్రత (DHT11) సెన్సార్ డేటాను ఎలా పంపించాలో చూద్దాం.
భాగాలు అవసరం
- ఆర్డునో UNO
- ఆర్డునో నానో
- DHT11
- 16x2 LCD డిస్ప్లే
- MCP2515 CAN మాడ్యూల్ - 2
- 10 కె పొటెన్టోమీటర్
- బ్రెడ్బోర్డ్
- వైర్లను కనెక్ట్ చేస్తోంది
సర్క్యూట్ రేఖాచిత్రం
ట్రాన్స్మిటర్ వైపు కనెక్షన్:
భాగం - పిన్ |
ఆర్డునో నానో |
MPC2515 - VCC |
+ 5 వి |
MPC2515 - GND |
GND |
MPC2515 - సి.ఎస్ |
D10 (SPI_SS) |
MPC2515 - SO |
D12 (SPI_MISO) |
MPC2515 - SI |
D11 (SPI_MOSI) |
MPC2515 - SCK |
D13 (SPI_SCK) |
MPC2515 - INT |
డి 2 |
డిహెచ్టి 11 - విసిసి |
+ 5 వి |
DHT11 - GND |
GND |
DHT11 - అవుట్ |
A0 |
CAN రిసీవర్ వైపు సర్క్యూట్ కనెక్షన్లు:
భాగం - పిన్ |
ఆర్డునో UNO |
MPC2515 - VCC |
+ 5 వి |
MPC2515 - GND |
GND |
MPC2515 - సి.ఎస్ |
10 (SPI_SS) |
MPC2515 - SO |
12 (SPI_MISO) |
MPC2515 - SI |
11 (SPI_MOSI) |
MPC2515 - SCK |
13 (SPI_SCK) |
MPC2515 - INT |
2 |
LCD - VSS |
GND |
LCD - VDD |
+ 5 వి |
LCD - V0 |
10 కె పొటెన్టోమీటర్ సెంటర్ పిన్కు |
LCD - RS |
3 |
LCD - RW |
GND |
ఎల్సిడి - ఇ |
4 |
LCD - D4 |
5 |
LCD - D5 |
6 |
LCD - D6 |
7 |
LCD - D7 |
8 |
ఎల్సిడి - ఎ |
+ 5 వి |
ఎల్సిడి - కె |
GND |
రెండు MCP2515 CAN మాడ్యూళ్ల మధ్య కనెక్షన్
H - అధికంగా ఉంటుంది
L - తక్కువగా ఉంటుంది
MCP2515 (ఆర్డునో నానో) |
MCP2515 (Arduino UNO) |
హెచ్ |
హెచ్ |
ఎల్ |
ఎల్ |
అన్ని కనెక్షన్లు చేసిన తర్వాత, నా హార్డ్వేర్ ఈ విధంగా కనిపిస్తుంది
CAN కమ్యూనికేషన్ కోసం ప్రోగ్రామింగ్ Arduino
మొదట మనం ఆర్డునో IDE లో CAN కోసం లైబ్రరీని ఇన్స్టాల్ చేయాలి. కింది లైబ్రరీని ఉపయోగించడం ద్వారా ఆర్డునోతో MCP2515 CAN మాడ్యూల్ ఇంటర్ఫేసింగ్ సులభం అవుతుంది.
- Arduino CAN MCP2515 లైబ్రరీ యొక్క ZIP ఫైల్ను డౌన్లోడ్ చేయండి.
- Arduino IDE నుండి: స్కెచ్ -> లైబ్రరీని చేర్చండి ->.ZIP లైబ్రరీని జోడించండి
ఈ ట్యుటోరియల్ కోడింగ్లో రెండు భాగాలుగా ఒకటి CAN ట్రాన్స్మిటర్ కోడ్ (ఆర్డునో నానో) మరియు మరొకటి CAN రిసీవర్ కోడ్ (Arduino UNO) గా విభజించబడింది, ఈ రెండూ ఈ పేజీ దిగువన చూడవచ్చు. దీనికి వివరణ ఈ క్రింది విధంగా ఉంది.
డేటాను పంపడం మరియు స్వీకరించడం కోసం ప్రోగ్రామ్ రాయడానికి ముందు మీరు పై దశలను అనుసరించి లైబ్రరీని ఇన్స్టాల్ చేశారని నిర్ధారించుకోండి మరియు CAN మాడ్యూల్ MCP2515 మీ ప్రోగ్రామ్లో ఈ క్రింది విధంగా ప్రారంభించబడింది.
MCP2515 CAN మాడ్యూల్ను ప్రారంభించండి:
MCP2515 తో కనెక్షన్ని సృష్టించడానికి దశలను అనుసరించండి:
1. SPI CS అనుసంధానించబడిన పిన్ నంబర్ను సెట్ చేయండి (అప్రమేయంగా 10)
MCP2515 mcp2515 (10);
2. బాడ్ రేట్ మరియు ఓసిలేటర్ ఫ్రీక్వెన్సీని సెట్ చేయండి
mcp2515.setBitrate (CAN_125KBPS, MCP_8MHZ);
అందుబాటులో ఉన్న బాడ్ రేట్లు:
CAN_5KBPS, CAN_10KBPS, CAN_20KBPS, CAN_31K25BPS, CAN_33KBPS, CAN_40KBPS, CAN_50KBPS, CAN_80KBPS, CAN_83K3BPS, CAN_95KBPS, CAN_100KBPS, CAN_125BB, CAN_125
అందుబాటులో ఉన్న గడియార వేగం:
MCP_20MHZ, MCP_16MHZ, MCP_8MHZ
3. మోడ్లను సెట్ చేయండి.
mcp2515.setNormalMode (); mcp2515.setLoopbackMode (); mcp2515.setListenOnlyMode ();
ట్రాన్స్మిటర్ సైడ్ కోడ్ వివరణ (ఆర్డునో నానో)
ట్రాన్స్మిటర్ విభాగంలో, ఆర్డునో నానో MCP2515 CAN మాడ్యూల్తో SPI పిన్ల ద్వారా ఇంటర్ఫేస్ చేయబడింది మరియు DHT11 ఉష్ణోగ్రత మరియు తేమ డేటాను CAN బస్కు పంపుతుంది.
మొదట అవసరమైన గ్రంథాలయాలు చేర్చబడ్డాయి, SPI కమ్యూనికేషన్ను ఉపయోగించటానికి SPI లైబ్రరీ, CAN కమ్యూనికేషన్ను ఉపయోగించడానికి MCP2515 లైబ్రరీ మరియు Arduino తో DHT సెన్సార్ను ఉపయోగించడం కోసం DHT లైబ్రరీ . మేము ఇంతకుముందు DHT11 ను Arduino తో ఇంటర్ఫేస్ చేసాము.
# చేర్చండి
ఇప్పుడు ఆర్డునో నానో యొక్క A0 తో అనుసంధానించబడిన DHT11 (OUT పిన్) యొక్క పిన్ పేరు నిర్వచించబడింది
# DHTPIN A0 ని నిర్వచించండి
మరియు, DHTTYPE DHT11 గా నిర్వచించబడింది.
# DHTTYPE DHT11 ని నిర్వచించండి
ఒక canMsg CAN సందేశం ఫార్మాట్ నిల్వ చేయడానికి struct డేటా రకం.
struct can_frame canMsg;
SPI CS కనెక్ట్ చేయబడిన పిన్ నంబర్ను సెట్ చేయండి (అప్రమేయంగా 10)
MCP2515 mcp2515 (10);
అలాగే, క్లాస్ డిహెచ్టి కోసం డిహెచ్టి పిన్తో ఆర్డునో నానోతో డిహెచ్టి రకం మరియు డిహెచ్టి 11 డిహెచ్టి 11 గా ప్రారంభించబడింది.
DHT dht (DHTPIN, DHTTYPE);
శూన్య సెటప్ () లో తదుపరిది:
కింది స్టేట్మెంట్ ఉపయోగించి SPI కమ్యూనికేషన్ను ప్రారంభించండి
SPI.begin ();
ఆపై DHT11 సెన్సార్ నుండి ఉష్ణోగ్రత మరియు తేమ విలువలను స్వీకరించడం ప్రారంభించడానికి దిగువ స్టేట్మెంట్ను ఉపయోగించండి.
dht.begin ();
తరువాత MCP2515 కింది ఆదేశాన్ని ఉపయోగించి రీసెట్ చేయబడుతోంది
mcp2515.reset ();
ఇప్పుడు MCP2515 గడియారంగా 500KBPS మరియు 8MHZ వేగాన్ని సెట్ చేసింది
mcp2515.setBitrate (CAN_500KBPS, MCP_8MHZ);
మరియు MCP2525 సాధారణ మోడ్లో సెట్ చేయబడింది
mcp2515.setNormalMode ();
శూన్య లూప్లో ():
కింది స్టేట్మెంట్ తేమ మరియు ఉష్ణోగ్రత విలువను పొందుతుంది మరియు పూర్ణాంక వేరియబుల్ h మరియు t లో నిల్వ చేస్తుంది.
int h = dht.readHumidity (); int t = dht.readTemperature ();
తరువాత CAN ID 0x036 (ఎంపిక ప్రకారం) మరియు DLC 8 గా ఇవ్వబడుతుంది మరియు మేము h మరియు t డేటాను డేటా మరియు డేటాకు ఇస్తాము మరియు అన్ని డేటాను 0 తో విశ్రాంతి తీసుకుంటాము.
canMsg.can_id = 0x036; canMsg.can_dlc = 8; canMsg.data = h; // canMsg.data = t లో తేమ విలువను నవీకరించండి ; // canMsg.data = 0x00 లో ఉష్ణోగ్రత విలువను నవీకరించండి ; // అన్నింటినీ 0 canMsg.data = 0x00 తో విశ్రాంతి తీసుకోండి; canMsg.data = 0x00; canMsg.data = 0x00; canMsg.data = 0x00; canMsg.data = 0x00;
అన్నింటికంటే, CAN BUS కు సందేశాన్ని పంపడానికి మేము ఈ క్రింది స్టేట్మెంట్ను ఉపయోగిస్తాము.
mcp2515.sendMessage (& canMsg);
కాబట్టి ఇప్పుడు ఉష్ణోగ్రత మరియు తేమ డేటా CAN బస్సుకు సందేశంగా పంపబడుతుంది.
రిసీవర్ సైడ్ కోడ్ వివరణ (Arduino UNO)
రిసీవర్ విభాగంలో, ఆర్డునో UNO MCP2515 మరియు 16x2 LCD డిస్ప్లేతో ఇంటర్ఫేస్ చేయబడింది. ఇక్కడ Arduino UNO CAN బస్సు నుండి ఉష్ణోగ్రత మరియు తేమను అందుకుంటుంది మరియు LCD లో అందుకున్న డేటాను ప్రదర్శిస్తుంది.
మొదట అవసరమైన గ్రంథాలయాలు చేర్చబడ్డాయి, SPI కమ్యూనికేషన్ను ఉపయోగించటానికి SPI లైబ్రరీ, CAN కమ్యూనికేషన్ను ఉపయోగించడానికి MCP2515 లైబ్రరీ మరియు Arduino తో 16x2 LCD ని ఉపయోగించడం కోసం LiquidCrsytal లైబ్రరీ .
# చేర్చండి
తరువాత Arduino UNO తో కనెక్ట్ అవ్వడానికి ఉపయోగించే LCD పిన్స్ నిర్వచించబడతాయి.
const int rs = 3, en = 4, d4 = 5, d5 = 6, d6 = 7, d7 = 8; లిక్విడ్ క్రిస్టల్ ఎల్సిడి (rs, en, d4, d5, d6, d7);
CAN సందేశ ఆకృతిని నిల్వ చేయడానికి ఒక struct డేటా రకం ప్రకటించబడింది.
struct can_frame canMsg;
SPI CS కనెక్ట్ చేయబడిన పిన్ నంబర్ను సెట్ చేయండి (అప్రమేయంగా 10)
MCP2515 mcp2515 (10);
శూన్య సెటప్లో ():
మొదట LCD 16x2 మోడ్లో సెట్ చేయబడింది మరియు స్వాగత సందేశం ప్రదర్శించబడుతుంది.
lcd.begin (16,2); lcd.setCursor (0,0); lcd.print ("CIRCUIT DIGEST"); lcd.setCursor (0,1); lcd.print ("CAN ARDUINO"); ఆలస్యం (3000); lcd.clear ();
కింది స్టేట్మెంట్ ఉపయోగించి SPI కమ్యూనికేషన్ను ప్రారంభించండి.
SPI.begin ();
తరువాత MCP2515 కింది ఆదేశాన్ని ఉపయోగించి రీసెట్ చేయబడుతోంది.
mcp2515.reset ();
ఇప్పుడు MCP2515 గడియారంగా 500KBPS మరియు 8MHZ వేగాన్ని సెట్ చేసింది.
mcp2515.setBitrate (CAN_500KBPS, MCP_8MHZ);
మరియు MCP2525 సాధారణ మోడ్లో సెట్ చేయబడింది.
mcp2515.setNormalMode ();
శూన్య లూప్ () లో తదుపరిది:
CAN బస్సు నుండి సందేశాన్ని స్వీకరించడానికి క్రింది ప్రకటన ఉపయోగించబడుతుంది. సందేశం వస్తే అది if కండిషన్లోకి వస్తుంది.
if (mcp2515.readMessage (& canMsg) == MCP2515:: ERROR_OK)
లో ఉంటే పరిస్థితి డేటా పొందింది మరియు C లో నిల్వ చేయబడుతుంది anMsg , తేమ విలువ మరియు డేటా ఉష్ణోగ్రత విలువ కలిగి ఉన్న డేటాను. రెండు విలువలు పూర్ణాంకం x మరియు y లో నిల్వ చేయబడతాయి.
int x = canMsg.data; int y = canMsg.data;
విలువలను స్వీకరించిన తరువాత, ఉష్ణోగ్రత మరియు తేమ విలువలు 16x2 LCD డిస్ప్లేలో కింది స్టేట్మెంట్ ఉపయోగించి ప్రదర్శించబడతాయి.
lcd.setCursor (0,0); lcd.print ("తేమ:"); lcd.print (x); lcd.setCursor (0,1); lcd.print ("టెంప్:"); lcd.print (y); ఆలస్యం (1000); lcd.clear ();
Arduino లో CAN కమ్యూనికేషన్ యొక్క పని
హార్డ్వేర్ సిద్ధమైన తర్వాత CAN ట్రాన్స్మిటర్ మరియు CAN రిసీవర్ కోసం ప్రోగ్రామ్ను అప్లోడ్ చేయండి (పూర్తి ప్రోగ్రామ్లు క్రింద ఇవ్వబడ్డాయి) సంబంధిత ఆర్డునో బోర్డులలో. శక్తితో ఉన్నప్పుడు మీరు DHT11 చదివిన ఉష్ణోగ్రత విలువను మరొక ఆర్డునోకు CAN కమ్యూనికేషన్ ద్వారా పంపించి, 2 వ ఆర్డునో యొక్క LCD లో ప్రదర్శించబడతారు, మీరు ఈ క్రింది చిత్రంలో చూడవచ్చు. ఎల్సిడిలో ప్రదర్శించబడే ఉష్ణోగ్రత వాస్తవ గది ఉష్ణోగ్రతకు దగ్గరగా ఉందో లేదో తనిఖీ చేయడానికి నా ఎసి రిమోట్ను కూడా ఉపయోగించాను.
పూర్తి లింక్ క్రింద లింక్ చేసిన వీడియోలో చూడవచ్చు. మీకు ఏవైనా ప్రశ్నలు ఉంటే వాటిని వ్యాఖ్య విభాగంలో ఉంచండి లేదా ఇతర సాంకేతిక ప్రశ్నల కోసం మా ఫోరమ్లను ఉపయోగించండి.