- 433MHz RF ట్రాన్స్మిటర్ మరియు రిసీవర్ మాడ్యూల్:
- ఎన్కోడర్ మరియు డీకోడర్ల అవసరం:
- అవసరమైన భాగాలు:
- సర్క్యూట్ రేఖాచిత్రం:
- కోడ్ వివరణ:
అందరికీ నమస్కారం, ఈ రోజు ఈ ప్రాజెక్ట్లో, మేము RF రిసీవర్ మరియు ట్రాన్స్మిటర్ మాడ్యూల్ను PIC మైక్రోకంట్రోలర్తో ఇంటర్ఫేస్ చేస్తాము మరియు రెండు వేర్వేరు పిక్ మైక్రోకంట్రోలర్ల మధ్య వైర్లెస్గా కమ్యూనికేట్ చేస్తాము.
ఈ ప్రాజెక్ట్లో మేము ఈ క్రింది పనులను చేస్తాము: -
- మేము ఉపయోగించే PIC16F877A ట్రాన్స్మిటర్ మరియు PIC18F4520 స్వీకర్త విభాగానికి.
- మేము కీప్యాడ్ మరియు ఎల్సిడిని పిఐసి మైక్రోకంట్రోలర్తో ఇంటర్ఫేస్ చేస్తాము.
- ట్రాన్స్మిటర్ వైపు, మేము PIC తో కీప్యాడ్ను ఇంటర్ఫేస్ చేస్తాము మరియు డేటాను ప్రసారం చేస్తాము. రిసీవర్ వైపు, మేము డేటాను వైర్లెస్గా స్వీకరిస్తాము మరియు ఎల్సిడిలో ఏ కీని నొక్కినట్లు చూపుతాము.
- మేము 4 బిట్ డేటాను ప్రసారం చేయడానికి ఎన్కోడర్ మరియు డీకోడర్ IC ని ఉపయోగిస్తాము.
- మార్కెట్లో లభించే చౌకైన RF TX-RX మాడ్యూల్ ఉపయోగించి రిసెప్షన్ ఫ్రీక్వెన్సీ 433Mhz అవుతుంది.
స్కీమాటిక్స్ మరియు కోడ్లలోకి వెళ్ళే ముందు, ఎన్కోడర్-డీకోడర్ IC లతో RF మాడ్యూల్ యొక్క పనితీరును అర్థం చేసుకుందాం. పిఐసి మైక్రోకంట్రోలర్తో ఎల్సిడి మరియు కీప్యాడ్ను ఎలా ఇంటర్ఫేస్ చేయాలో తెలుసుకోవడానికి క్రింద రెండు వ్యాసాల ద్వారా వెళ్ళండి:
- MPLABX మరియు XC8 ఉపయోగించి PIC మైక్రోకంట్రోలర్తో LCD ఇంటర్ఫేసింగ్
- పిఐసి మైక్రోకంట్రోలర్తో 4x4 మ్యాట్రిక్స్ కీప్యాడ్ ఇంటర్ఫేసింగ్
433MHz RF ట్రాన్స్మిటర్ మరియు రిసీవర్ మాడ్యూల్:
అవి మేము ప్రాజెక్ట్లో ఉపయోగిస్తున్న ట్రాన్స్మిటర్ మరియు రిసీవర్ మాడ్యూల్స్. ఇది 433 MHz కి అందుబాటులో ఉన్న చౌకైన మాడ్యూల్. ఈ గుణకాలు ఒక ఛానెల్లో సీరియల్ డేటాను అంగీకరిస్తాయి.
మాడ్యూల్స్ యొక్క స్పెసిఫికేషన్లను మనం చూస్తే, ట్రాన్స్మిటర్ 3.5-12V ఆపరేషన్ కోసం ఇన్పుట్ వోల్టేజ్ గా రేట్ చేయబడుతుంది మరియు ట్రాన్స్మిట్ దూరం 20-200 మీటర్లు. ఇది 433 MHz పౌన .పున్యంలో AM (ఆడియో మాడ్యులేషన్) ప్రోటోకాల్లో ప్రసారం చేస్తుంది. మేము 10mW శక్తితో 4KB / S వేగంతో డేటాను బదిలీ చేయవచ్చు.
ఎగువ చిత్రంలో ట్రాన్స్మిటర్ మాడ్యూల్ యొక్క పిన్-అవుట్ చూడవచ్చు. ఎడమ నుండి కుడికి పిన్స్ VCC, DATA మరియు GND. పై చిత్రంలో సూచించిన బిందువుపై మనం యాంటెన్నా మరియు టంకమును కూడా జోడించవచ్చు.
కోసం స్వీకర్త వివరణ, స్వీకర్త యొక్క రేటింగ్ ప్రస్తుత 5V DC మరియు 4MA నిశ్చల ఇన్పుట్ వంటి. స్వీకరించడం పౌనఃపున్యం 433.92 MHz ఒక తో -105DB సున్నితత్వం.
పై చిత్రంలో రిసీవర్ మాడ్యూల్ యొక్క పిన్-అవుట్ చూడవచ్చు. నాలుగు పిన్స్ ఎడమ నుండి కుడికి, విసిసి, డాటా, డాటా మరియు జిఎన్డి. ఆ మధ్య రెండు పిన్స్ అంతర్గతంగా అనుసంధానించబడి ఉన్నాయి. మేము ఏదైనా ఒకటి లేదా రెండింటినీ ఉపయోగించవచ్చు. కానీ శబ్దం కలపడం తగ్గించడానికి రెండింటినీ ఉపయోగించడం మంచి పద్ధతి.
అలాగే, డేటాషీట్లో ఒక విషయం ప్రస్తావించబడలేదు, మాడ్యూల్ మధ్యలో వేరియబుల్ ఇండక్టర్ లేదా POT ఫ్రీక్వెన్సీ క్రమాంకనం కోసం ఉపయోగించబడుతుంది. మేము ప్రసారం చేసిన డేటాను స్వీకరించలేకపోతే, ప్రసారం మరియు స్వీకరించే పౌన encies పున్యాలు సరిపోలని అవకాశాలు ఉన్నాయి. ఇది RF సర్క్యూట్ మరియు మేము ట్రాన్స్మిటర్ను పరిపూర్ణ ప్రసార ఫ్రీక్వెన్సీ పాయింట్ వద్ద ట్యూన్ చేయాలి. అలాగే, ట్రాన్స్మిటర్ మాదిరిగానే, ఈ మాడ్యూల్కు యాంటెన్నా పోర్ట్ కూడా ఉంది; మేము ఎక్కువ రిసెప్షన్ కోసం కాయిల్డ్ రూపంలో టంకము తీగ చేయవచ్చు.
ట్రాన్స్మిటర్ పరిధి ట్రాన్స్మిటర్కు సరఫరా చేయబడిన వోల్టేజ్ మరియు రెండు వైపులా యాంటెన్నాల పొడవు మీద ఆధారపడి ఉంటుంది. ఈ నిర్దిష్ట ప్రాజెక్ట్ కోసం మేము బాహ్య యాంటెన్నాను ఉపయోగించలేదు మరియు ట్రాన్స్మిటర్ వైపు 5V ని ఉపయోగించాము. మేము 5 మీటర్ల దూరంతో తనిఖీ చేసాము మరియు ఇది ఖచ్చితంగా పని చేసింది.
సుదూర దూర వైర్లెస్ కమ్యూనికేషన్ కోసం RF గుణకాలు చాలా ఉపయోగపడతాయి. ప్రాథమిక RF ట్రాన్స్మిటర్ మరియు రిసీవర్ సర్క్యూట్ ఇక్కడ చూపబడింది. మేము RF మాడ్యూల్ ఉపయోగించి చాలా ప్రాజెక్టులు చేసాము:
- RF నియంత్రిత గృహోపకరణాలు
- ఆర్డునో ఉపయోగించి బ్లూటూత్ కంట్రోల్డ్ టాయ్ కార్
- రాస్ప్బెర్రీ పై ఉపయోగించి RF రిమోట్ కంట్రోల్డ్ LED లు
ఎన్కోడర్ మరియు డీకోడర్ల అవసరం:
ఈ RF సెన్సార్లో కొన్ని లోపాలు ఉన్నాయి: -
- వన్ వే కమ్యూనికేషన్.
- ఒకే ఛానెల్ మాత్రమే
- చాలా శబ్దం జోక్యం.
ఈ లోపం కారణంగా మేము ఎన్కోడర్ మరియు డీకోడర్ IC లు, HT12D మరియు HT12E లను ఉపయోగించాము. D ఉన్నచో డికోడర్ స్వీకర్త వైపు ఉపయోగించబడుతుంది మరియు E ఉన్నచో ఎన్కోడర్ ట్రాన్స్మిటర్ వైపు ఉపయోగించబడుతుంది ఇది. ఈ ఐసిలు 4 ఛానెళ్లను అందిస్తాయి. ఎన్కోడింగ్ మరియు డీకోడింగ్ కారణంగా శబ్దం స్థాయి చాలా తక్కువగా ఉంటుంది.
పై చిత్రంలో, ఎడమ ఒకటి HT12D డీకోడర్ మరియు కుడివైపు HT12E, ఎన్కోడర్ ఒకటి. రెండు ఐసిలు ఒకేలా ఉంటాయి. ప్రత్యేక ఎన్కోడింగ్ కోసం A0 నుండి A7 వరకు ఉపయోగించబడుతుంది. ఆ పిన్లను నియంత్రించడానికి మరియు కాన్ఫిగరేషన్లను సెట్ చేయడానికి మేము మైక్రోకంట్రోలర్ పిన్లను ఉపయోగించవచ్చు. అదే కాన్ఫిగరేషన్లను మరొక వైపు సరిపోల్చాలి. రెండు కాన్ఫిగరేషన్లు ఖచ్చితమైనవి మరియు సరిపోలినట్లయితే, మేము డేటాను స్వీకరించగలము. ఈ 8 పిన్లను Gnd లేదా VCC కి కనెక్ట్ చేయవచ్చు లేదా తెరిచి ఉంచవచ్చు. ఎన్కోడర్లో మనం ఏ కాన్ఫిగరేషన్లు చేసినా, డీకోడర్లోని కనెక్షన్తో సరిపోలాలి. ఈ ప్రాజెక్ట్లో ఎన్కోడర్ మరియు డీకోడర్ రెండింటి కోసం ఆ 8 పిన్లను తెరిచి ఉంచాము. 9 మరియు 18 పిన్ వరుసగా VSS మరియు VDD. మేము VT పిన్ను ఉపయోగించవచ్చునోటిఫికేషన్ ప్రయోజనాల వలె HT12D. ఈ ప్రాజెక్ట్ కోసం మేము దీనిని ఉపయోగించలేదు. TE పిన్ బదిలీకి ఎనేబుల్ లేదా పిన్ డిసేబుల్ ఉంది.
ముఖ్యమైన భాగం OSC పిన్, ఇక్కడ మేము రెసిస్టర్లను కనెక్ట్ చేయాలి, ఎన్కోడర్ మరియు డీకోడర్కు డోలనాన్ని అందించడం. డీకోడర్ కంటే డీకోడర్కు ఎక్కువ డోలనం అవసరం. సాధారణంగా ఎన్కోడర్ రెసిస్టర్ విలువ 1 మెగ్ మరియు డీకోడర్ విలువ 33 కే. మేము మా ప్రాజెక్ట్ కోసం ఆ రెసిస్టర్లను ఉపయోగిస్తాము.
DOUT పిన్ న RF ట్రాన్స్మిటర్ డేటా పిన్ ఉంది HT12E మరియు దిన్ పిన్ HT12D RF మాడ్యూల్ డేటా పిన్ కనెక్ట్ ఉపయోగిస్తారు.
లో HT12E, AD8 వరకు AD11 మార్చబడుతుంది మరియు RF మాడ్యూల్ ద్వారా serially బదిలీ మరియు ఖచ్చితమైన రివర్స్ విషయం జరుగుతుంది తీసుకుంటున్న నాలుగు ఛానల్ ఇన్పుట్ HT12D, అందుకున్న మరియు డీకోడ్ సీరియల్ డేటా, మరియు మనం పొందుతాం 4 పిన్స్ D8 అంతటా 4 బిట్ సమాంతర అవుట్పుట్ D11 వరకు.
అవసరమైన భాగాలు:
- 2 - బ్రెడ్ బోర్డు
- 1 - ఎల్సిడి 16 ఎక్స్ 2
- 1 - కీప్యాడ్
- HT12D మరియు HT12E జత
- RX-TX RF మాడ్యూల్
- 1- 10 కె ప్రీసెట్
- 2 - 4.7 కె రెసిస్టర్
- 1- 1 ఎమ్ రెసిస్టర్
- 1- 33 కె రెసిస్టర్
- 2- 33 పిఎఫ్ సిరామిక్ కెపాసిటర్లు
- 1 - 20Mhz క్రిస్టల్
- బెర్గ్ స్టిక్స్
- కొన్ని సింగిల్ స్ట్రాండ్ వైర్లు.
- PIC16F877A MCU
- PIC18F4520 MCU
- ఫ్రీక్వెన్సీ కుండను నియంత్రించడానికి ఒక స్క్రూ డ్రైవర్, మానవ శరీరం నుండి ఇన్సులేట్ చేయాలి.
సర్క్యూట్ రేఖాచిత్రం:
ట్రాన్స్మిటర్ వైపు సర్క్యూట్ రేఖాచిత్రం (PIC16F877A):
ప్రసార ప్రయోజనం కోసం మేము PIC16F877A ను ఉపయోగించాము. Hex కీప్యాడ్ అంతటా కనెక్ట్ PORTB మరియు 4 ఛానల్స్ గత 4 బిట్స్ అంతటా కనెక్ట్ PORTD. 4x4 మ్యాట్రిక్స్ కీప్యాడ్ను కనెక్ట్ చేయడం గురించి ఇక్కడ మరింత తెలుసుకోండి.
ఈ క్రింది విధంగా పిన్ అవుట్ చేయండి-
1. AD11 = RD7
2. AD10 = RD6
3. AD9 = RD5
4. AD8 = RD4
రిసీవర్ సైడ్ కోసం సర్క్యూట్ రేఖాచిత్రం (PIC18F4520):
పై చిత్రంలో, రిసీవర్ సర్క్యూట్ చూపబడుతుంది. LCD అంతటా అనుసంధానించబడిన PORTB. మేము ఈ ప్రాజెక్ట్ కోసం PIC18F4520 యొక్క అంతర్గత ఓసిలేటర్ను ఉపయోగించాము. 4 ఛానల్స్ మేము ప్రసారిణి వలయం ముందు వలె అదే విధంగా కనెక్ట్. 16x2 LCD ని PIC మైక్రోకంట్రోలర్తో కనెక్ట్ చేయడం గురించి ఇక్కడ మరింత తెలుసుకోండి.
ఇది ట్రాన్స్మిటర్ వైపు -
మరియు ప్రత్యేక breadboard లో రిసీవర్ వైపు -
కోడ్ వివరణ:
కోడ్ యొక్క రెండు భాగాలు ఉన్నాయి, ఒకటి ట్రాన్స్మిటర్ కోసం మరియు ఒకటి రిసీవర్ కోసం. మీరు పూర్తి కోడ్ను ఇక్కడ నుండి డౌన్లోడ్ చేసుకోవచ్చు.
RF ట్రాన్స్మిటర్ కోసం PIC16F877A కోడ్:
ఎప్పటిలాగే, మేము పిక్ మైక్రోకంట్రోలర్లో కాన్ఫిగరేషన్ బిట్లను సెట్ చేయాలి, లైబ్రరీలు మరియు క్రిస్టల్ ఫ్రీక్వెన్సీతో సహా కొన్ని మాక్రోలను నిర్వచించాలి. ఎన్కోడర్ ఐసి యొక్క AD8-AD11 పోర్ట్ PORTD వద్ద RF_TX గా నిర్వచించబడింది. చివరిలో ఇచ్చిన పూర్తి కోడ్లోని వారందరికీ మీరు కోడ్ను తనిఖీ చేయవచ్చు.
మేము రెండు ఫంక్షన్లను ఉపయోగించాము, శూన్యమైన సిస్టమ్_ఇనిట్ (శూన్యమైనది) మరియు శూన్యమైన ఎన్కోడ్_ఆర్ఎఫ్_సెండర్ (చార్ డేటా).
System_init పిన్ ప్రారంభ మరియు కీబోర్డ్ initializations కోసం ఉపయోగిస్తారు. కీప్యాడ్ లైబ్రరీ నుండి కీబోర్డ్ ప్రారంభించడం అంటారు.
కీప్యాడ్ నౌకాశ్రయానికి నిర్వచించారు keypad.h. మేము TRISD = 0x00 ఉపయోగించి PORTD ని అవుట్పుట్గా చేసాము మరియు RF_TX పోర్ట్ను 0x00 గా డిఫాల్ట్ స్టేట్గా చేసాము.
void system_init (శూన్యమైనది) { TRISD = 0x00; RF_TX = 0x00; కీబోర్డ్_ఇనిటియలైజేషన్ (); }
Enode_rf_sender లో నొక్కిన బటన్ను బట్టి 4 పిన్ స్థితిని మార్చాము. (4x4) 16 వేర్వేరు బటన్ నొక్కినప్పుడు మేము 16 వేర్వేరు హెక్స్ విలువలు లేదా PORTD స్థితులను సృష్టించాము .void encode_rf_sender (char data) { if (data == '1') RF_TX = 0x10; if (డేటా == '2') RF_TX = 0x20; if (డేటా == '3') …………... …. ….
లో ప్రధాన ఫంక్షన్ మేము మొదటి కీబోర్డ్ బటన్ను ఉపయోగించి డేటా ఒత్తిడి అందుకుంటారు switch_press_scan () ఫంక్షన్ మరియు డేటాను నిల్వ కీ వేరియబుల్. ఆ తరువాత మేము ఎన్కోడ్_ఆర్ఎఫ్_సెండర్ () ఫంక్షన్ ఉపయోగించి డేటాను ఎన్కోడ్ చేసాము మరియు PORTD స్థితిని మార్చాము.
RF స్వీకర్త కోసం PIC18F4520 కోడ్:
ఎప్పటిలాగే, మేము మొదట PIC18f4520 లో కాన్ఫిగరేషన్ బిట్లను సెట్ చేసాము. PIC16F877A నుండి ఇది కొద్దిగా భిన్నంగా ఉంటుంది, మీరు జత చేసిన జిప్ ఫైల్లోని కోడ్ను తనిఖీ చేయవచ్చు.
మేము LCD హెడర్ ఫైల్ను చేర్చాము. # RF_RX PORTD పంక్తిని ఉపయోగించి PORTD అంతటా డీకోడర్ IC యొక్క D8-D11 పోర్ట్ కనెక్షన్ను నిర్వచించారు, ఎన్కోడర్ విభాగంలో ఉపయోగించినట్లుగా కనెక్షన్ సమానంగా ఉంటుంది. LCD పోర్ట్ డిక్లరేషన్ lcd.c ఫైల్లో కూడా జరుగుతుంది.
# చేర్చండి
మేము 18F4520 కోసం అంతర్గత ఓసిలేటర్ను ఉపయోగించే ముందు చెప్పినట్లుగా, మేము సిస్టమ్ _ init ఫంక్షన్ను ఉపయోగించాము, ఇక్కడ 8 MHz కోసం అంతర్గత ఓసిలేటర్ను సెట్ చేయడానికి 18F4520 యొక్క OSCON రిజిస్టర్ను కాన్ఫిగర్ చేసాము. మేము LCD పిన్స్ మరియు డీకోడర్ పిన్స్ రెండింటికీ TRIS బిట్ను సెట్ చేసాము. వంటి HT - 12D వద్ద అవుట్పుట్ అందిస్తుంది D8-D11 పోర్ట్సు, మేము కాన్ఫిగర్ చేయాలి PORTD అవుట్పుట్ స్వీకరించేందుకు ఇన్పుట్ వంటి.
void system_init (శూన్యమైనది) { OSCCON = 0b01111110; // 8Mhz,, intosc // OSCTUNE = 0b01001111; // PLL ఎనేబుల్, మాక్స్ ప్రీస్కాలర్ 8x4 = 32Mhz TRISB = 0x00; TRISD = 0xFF; // చివరి 4 బిట్ ఇన్పుట్ బిట్. }
మేము OSCON రిజిస్టర్ను 8 MHz వద్ద కాన్ఫిగర్ చేసాము, పోర్ట్ B ని అవుట్పుట్గా మరియు పోర్ట్ D ని ఇన్పుట్గా చేసాము.
మునుపటి ట్రాన్స్మిటర్ విభాగంలో ఉపయోగించిన ఖచ్చితమైన రివర్స్ లాజిక్ ఉపయోగించి క్రింద ఫంక్షన్ తయారు చేయబడింది. ఇక్కడ మేము పోర్ట్ D నుండి అదే హెక్స్ విలువను పొందుతాము మరియు ఆ హెక్స్ విలువ ద్వారా ట్రాన్స్మిటర్ విభాగంలో ఏ స్విచ్ నొక్కినట్లు మేము గుర్తించాము. మేము ప్రతి కీ ప్రెస్ను గుర్తించి, కరస్పాండెంట్ క్యారెక్టర్ను ఎల్సిడికి సమర్పించవచ్చు.
శూన్యమైన rf_analysis (సంతకం చేయని చార్ రిసీవ్డ్_బైట్) { if (recived_byte == 0x10) lcd_data ('1'); if (recived_byte == 0x20) lcd_data ('2'); if (recived_byte == 0x30) ……. ….. …… ………..
Lcd_data నుండి అని lcd.c ఫైలు.
లో ప్రధాన ఫంక్షన్ మేము మొదటి వ్యవస్థ మరియు LCD ప్రారంభించడం. మేము వేరియబుల్ బైట్ తీసుకున్నాము మరియు పోర్ట్ D నుండి పొందిన హెక్స్ విలువను నిల్వ చేసాము. అప్పుడు rf_analysis ఫంక్షన్ ద్వారా మనం అక్షరాన్ని LCD లో ప్రింట్ చేయవచ్చు.
void main (void) { సంతకం చేయని చార్ బైట్ = 0; system_init (); lcd_init (); (1) { lcd_com (0x80); lcd_puts ("సర్క్యూట్ డైజెస్ట్"); lcd_com (0xC0); బైట్ = RF_RX; rf_analysis (బైట్); lcd_com (0xC0); } తిరిగి; }
దీన్ని అమలు చేయడానికి ముందు, మేము సర్క్యూట్ను ట్యూన్ చేసాము. మొదట మేము కీప్యాడ్లోని ' డి ' బటన్ను నొక్కాము. కాబట్టి, 0xF0 నిరంతరం RF ట్రాన్స్మిటర్ ద్వారా ప్రసారం చేయబడుతోంది. LCD ' D ' అక్షరాన్ని చూపించే వరకు మేము రిసీవర్ సర్క్యూట్ను ట్యూన్ చేసాము. కొన్నిసార్లు మాడ్యూల్ తయారీదారు నుండి సరిగ్గా ట్యూన్ చేయబడుతుంది, కొన్నిసార్లు అది కాదు. ప్రతిదీ సరిగ్గా అనుసంధానించబడి ఉంటే మరియు LCD లో బటన్ నొక్కిన విలువను పొందలేకపోతే, RF రిసీవర్ ట్యూన్ చేయబడని అవకాశాలు ఉన్నాయి. మా శరీర ప్రేరణ కారణంగా తప్పు ట్యూనింగ్ అవకాశాలను తగ్గించడానికి మేము ఇన్సులేటెడ్ స్క్రూడ్రైవర్ను ఉపయోగించాము.
ఈ విధంగా మీరు RF మాడ్యూల్ను PIC మైక్రోకంట్రోలర్కు ఇంటర్ఫేస్ చేయవచ్చు మరియు RF సెన్సార్ను ఉపయోగించి వైర్లెస్గా రెండు PIC మైక్రోకంట్రోలర్ల మధ్య కమ్యూనికేట్ చేయవచ్చు.
మీరు ట్రాన్స్మిటర్ మరియు రిసీవర్ కోసం పూర్తి కోడ్ను ఇక్కడ నుండి డౌన్లోడ్ చేసుకోవచ్చు, దిగువ ప్రదర్శన వీడియోను కూడా తనిఖీ చేయండి.