- FM రేడియో జనరల్ వర్కింగ్
- భాగాలు అవసరం
- RDA5807 స్వీకర్త
- ఆడియో యాంప్లిఫైయర్
- ఆర్డునో ఎఫ్ఎమ్ రిసీవర్ సర్క్యూట్ రేఖాచిత్రం
- Arduino FM రేడియో కోడ్ వివరణ
- Arduino FM రేడియో యొక్క పని
ఈ రోజు దాదాపు ప్రతి ఒక్కరూ సంగీతం, వార్తలు, పాడ్కాస్ట్లు మొదలైనవి వినడానికి తమ మొబైల్ ఫోన్లను ఉపయోగిస్తున్నారు. అయితే చాలా కాలం క్రితం మనమందరం తాజా వార్తలు మరియు పాటలను పొందడానికి స్థానిక ఎఫ్ఎమ్ రేడియోలను బట్టి ఉన్నాము, నెమ్మదిగా ఈ రేడియోలు జనాదరణను కోల్పోతున్నాయి కాని అత్యవసర పరిస్థితుల్లో డౌన్, రేడియోలు వినియోగదారులకు సమాచారాన్ని ప్రసారం చేయడానికి ఒక ముఖ్యమైన పాత్రను పోషిస్తాయి. రేడియో సిగ్నల్స్ ఎల్లప్పుడూ గాలిలో ఉంటాయి (ఇవి స్టేషన్ల ద్వారా ప్రసారం చేయబడతాయి), మరియు మనకు కావలసిందల్లా ఆ రేడియో సిగ్నల్లను పట్టుకుని వాటిని ఆడియో సిగ్నల్లకు బదిలీ చేయడానికి ఎఫ్ఎం రిసీవర్ సర్క్యూట్ మాత్రమే. మా మునుపటి ట్యుటోరియల్లో, మేము క్రింద జాబితా చేయబడిన మరికొన్ని FM ట్రాన్స్మిటర్లు మరియు రిసీవర్లను కూడా నిర్మించాము.
- రాస్ప్బెర్రీ పై ఎఫ్ఎమ్ ట్రాన్స్మిటర్
- రాస్ప్బెర్రీ పై FM రిసీవర్ రేడియో
- FM ట్రాన్స్మిటర్ సర్క్యూట్
- ఇండక్టర్ లేకుండా FM ట్రాన్స్మిటర్ సర్క్యూట్
ఈ ట్యుటోరియల్లో మేము ఆర్డునో ఎఫ్ఎమ్ రిసీవర్ను నిర్మించబోతున్నాము మరియు దానిని మా ప్రాజెక్ట్ ఆర్సెనల్కు జోడించాము. మేము ఆర్డినోతో RDA5807 FM రిసీవర్ IC ని ఉపయోగిస్తాము మరియు దానిని ప్రోగ్రామ్ చేస్తాము, ఏదైనా FM రేడియో స్టేషన్ను ప్లే చేయండి, ఇది వినియోగదారుడు పొటెన్షియోమీటర్తో ట్యూన్ చేయవచ్చు. మా ఆర్డునో ఎఫ్ఎమ్ రేడియో యొక్క అవుట్పుట్ వాల్యూమ్ను నియంత్రించడానికి సర్క్యూట్తో పాటు ఆడియో యాంప్లిఫైయర్ను కూడా ఉపయోగిస్తాము, ఆసక్తికరంగా అనిపిస్తుందా? కాబట్టి, ప్రారంభిద్దాం.
FM రేడియో జనరల్ వర్కింగ్
రేడియో స్టేషన్లు ఎలక్ట్రికల్ సిగ్నల్స్ ను రేడియో సిగ్నల్స్ గా మారుస్తాయి మరియు యాంటెన్నా ద్వారా ప్రసారం చేయడానికి ముందు ఈ సిగ్నల్స్ మాడ్యులేట్ చేయాలి. AM మరియు FM అనే సిగ్నల్ను మాడ్యులేట్ చేసే రెండు పద్ధతులు ఉన్నాయి. పేరు సూచించినట్లుగా, సిగ్నల్ ప్రసారం చేయడానికి ముందు ఆమ్ప్లిట్యూడ్ మాడ్యులేషన్ (AM) మాడ్యులేట్ చేస్తుంది, అయితే, ఫ్రీక్వెన్సీ మాడ్యులేషన్ (FM) లో, యాంటెన్నా ద్వారా ప్రసారం చేయడానికి ముందు సిగ్నల్ యొక్క ఫ్రీక్వెన్సీ మాడ్యులేట్ చేయబడుతుంది. రేడియో స్టేషన్లలో, వారు సిగ్నల్ను మాడ్యులేట్ చేయడానికి ఫ్రీక్వెన్సీ మాడ్యులేషన్ను ఉపయోగిస్తారు మరియు తరువాత డేటాను ప్రసారం చేస్తారు. ఇప్పుడు, మనం నిర్మించాల్సినది కొన్ని పౌన encies పున్యాలకు ట్యూన్ చేయగల రిసీవర్, మరియు ఆ సంకేతాలను స్వీకరించడం మరియు తరువాత ఈ విద్యుత్ సంకేతాలను ఆడియో సిగ్నల్గా మార్చడం. మేము ఉపయోగించబోతున్నాముఈ ప్రాజెక్ట్లోని RDA5807 FM రిసీవర్ మాడ్యూల్, ఇది మా సర్క్యూట్ను సులభతరం చేస్తుంది.
భాగాలు అవసరం
- ఆర్డునో నానో
- RDA5807 రిసీవర్
- ఆడియో యాంప్లిఫైయర్
- వైర్లను కనెక్ట్ చేస్తోంది
- పాట్ - 100 కె
- పెర్ఫ్ బోర్డు
RDA5807 స్వీకర్త
RDA5807 అనేది సింగిల్-చిప్ FM స్టీరియో రేడియో ట్యూనర్ మాడ్యూల్, ఇది పూర్తిగా ఇంటిగ్రేటెడ్ సింథసైజర్తో ఉంటుంది. మాడ్యూల్ ప్రపంచవ్యాప్త ఫ్రీక్వెన్సీ బ్యాండ్ 50 - 115MHz, వాల్యూమ్ కంట్రోల్ మరియు మ్యూట్, ప్రోగ్రామబుల్ డి-ప్రాముఖ్యత (50/75us), సిగ్నల్ బలం సూచిక మరియు SNR, 32.768KHz క్రిస్టల్ ఓసిలేటర్, డిజిటల్ ఆటో గెయిన్ కంట్రోల్ మొదలైన వాటికి మద్దతు ఇస్తుంది. RDA5807M ట్యూనర్ యొక్క బ్లాక్ రేఖాచిత్రం.
ఇది డిజిటల్ తక్కువ- IF నిర్మాణాన్ని కలిగి ఉంది మరియు తక్కువ శబ్దం యాంప్లిఫైయర్ (LNA) ను అనుసంధానిస్తుంది, ఇది FM ప్రసార బ్యాండ్ (50 నుండి 115 MHz), ప్రోగ్రామబుల్ లాభ నియంత్రణ (PGA), అధిక-రిజల్యూషన్ అనలాగ్-టు-డిజిటల్ కన్వర్టర్ మరియు అధిక విశ్వసనీయత డిజిటల్-టు-అనలాగ్ కన్వర్టర్లు (DAC లు). పరిమితి ఓవర్లోడింగ్ను నిరోధిస్తుంది మరియు ప్రక్కనే ఉన్న ఛానెల్లచే సృష్టించబడిన ఇంటర్మోడ్యులేషన్ ఉత్పత్తుల సంఖ్యను పరిమితం చేస్తుంది. PGA మిక్సర్ అవుట్పుట్ సిగ్నల్ను విస్తరిస్తుంది మరియు తరువాత ADC లతో డిజిటైజ్ చేయబడుతుంది. DSP కోర్ ఛానల్ ఎంపిక, FM డీమోడ్యులేషన్, స్టీరియో MPX డీకోడర్ మరియు అవుట్పుట్ ఆడియో సిగ్నల్ను నిర్వహిస్తుంది. RDA5807 pinout IC కోసం రేఖాచిత్రం క్రింద ఇవ్వబడింది.
మాడ్యూల్ 1.8 - 3.3 వి విద్యుత్ సరఫరాపై పనిచేస్తుంది. ఎంచుకున్న విశ్రాంతి మరియు నియంత్రణ ఇంటర్ఫేస్కు వచ్చినప్పుడు, VIO పవర్ అప్ అయినప్పుడు మాడ్యూల్ రీసెట్ అవుతుంది మరియు 02H చిరునామాలో 0 నుండి 1 వరకు బిట్ 1 యొక్క ట్రిగ్గర్ ద్వారా మృదువైన రీసెట్కు మద్దతు ఇస్తుంది. MCU తో కమ్యూనికేట్ చేయడానికి మాడ్యూల్ I2C కమ్యూనికేషన్ను ఉపయోగిస్తుంది మరియు ఇంటర్ఫేస్ ప్రారంభ స్థితి, కమాండ్ బైట్ మరియు డేటా బైట్లతో ప్రారంభమవుతుంది. RDA5807 లో 13 16-బిట్ రిజిస్టర్లు ఉన్నాయి, ప్రతి ఒక్కటి ఒక నిర్దిష్ట పనితీరును నిర్వహిస్తాయి. రిజిస్టర్ చిరునామాలు 00H తో ప్రారంభమవుతాయి, ఇది చిప్ ID కి కేటాయించబడింది మరియు 0FH తో ముగుస్తుంది. మొత్తం 13 రిజిస్టర్లలో, కొన్ని బిట్స్ రిజర్వు చేయబడ్డాయి, మరికొన్ని R / W. ప్రతి రిజిస్టర్ వారికి కేటాయించిన బిట్లను బట్టి వేర్వేరు వాల్యూమ్, ఛానెల్లను మార్చడం వంటి పనులను చేస్తుంది.
పిన్స్ మూసివేయబడినందున మాడ్యూల్ను సర్క్యూట్కు కనెక్ట్ చేసేటప్పుడు దాన్ని నేరుగా ఉపయోగించలేము. కాబట్టి, నేను ఒక పెర్ఫ్ బోర్డ్ మరియు కొన్ని మగ పిన్లను ఉపయోగించాను మరియు మాడ్యూల్ యొక్క ప్రతి పిన్ను ప్రతి మగ పిన్కు కింది పిక్చర్లో చూపిన విధంగా కరిగించాను.
ఆడియో యాంప్లిఫైయర్
ఆడియో యాంప్లిఫైయర్ ఒక ఎలక్ట్రానిక్ పరికరం, ఇది తక్కువ-శక్తి ఎలక్ట్రానిక్ ఆడియో సిగ్నల్లను లౌడ్స్పీకర్లు లేదా హెడ్ఫోన్లను నడపడానికి తగినంత ఎత్తులో ఉన్న స్థాయికి విస్తరిస్తుంది. మేము LM386 ను ఉపయోగించి సరళమైన ఆడియో యాంప్లిఫైయర్ను నిర్మించాము, దాని కోసం సర్క్యూట్ క్రింద చూపబడింది మరియు మీరు ఈ సర్క్యూట్ గురించి మరింత తెలుసుకోవడానికి లింక్ను కూడా తనిఖీ చేయవచ్చు, ఇతర ఆడియో యాంప్లిఫైయర్ సర్క్యూట్లను కూడా తనిఖీ చేయవచ్చు.
ఆర్డునో ఎఫ్ఎమ్ రిసీవర్ సర్క్యూట్ రేఖాచిత్రం
FM బ్యాండ్ను ట్యూన్ చేయడానికి మరియు ఆడియో యాంప్లిఫైయర్ యొక్క వాల్యూమ్ను నియంత్రించడానికి మేము రెండు పొటెన్షియోమీటర్లను ఉపయోగించాము. వాల్యూమ్ను మార్చడానికి మీరు కుండను మార్చవచ్చు, ఇది LM386 యొక్క 1 మరియు 8 వ పిన్ల మధ్య అనుసంధానించబడి ఉంటుంది లేదా LM386 యొక్క పిన్ 3 వద్ద అనుసంధానించబడిన కుండ. దిగువ చిత్రం Arduino FM రేడియో కోసం పూర్తి సర్క్యూట్ రేఖాచిత్రాన్ని చూపిస్తుంది.
నేను యాంప్లిఫైయర్లో చిన్న మార్పులు చేసాను. యాంప్లిఫైయర్లో రెండు పొటెన్షియోమీటర్లను ఉపయోగించటానికి బదులుగా, నేను ఒకదాన్ని మాత్రమే ఉపయోగించాను. నేను రెసిస్టర్తో, లాభం మార్చడానికి ఉపయోగించే కుండను పరస్పరం మార్చుకున్నాను. కాబట్టి ఇప్పుడు మా ప్రాజెక్ట్ ట్యూన్ చేయడానికి రెండు పొటెన్షియోమీటర్లను కలిగి ఉంది మరియు వాల్యూమ్ మార్చడానికి ఒకటి. ఛానెల్ను ట్యూన్ చేయడానికి ఉపయోగించే పొటెన్టోమీటర్, ఆర్డునో నానోతో అనుసంధానించబడి ఉంది. కుండ యొక్క సెంటర్ పిన్ ఆర్డునో నానో యొక్క A0 పిన్తో అనుసంధానించబడి ఉంది, మరియు మిగిలిన రెండు పిన్లలో 5V కి అనుసంధానించబడి ఉంటుంది మరియు మరొకటి GND కి అనుసంధానించబడి ఉంటుంది. రేడియో యొక్క పరిమాణాన్ని నియంత్రించడానికి మరొక కుండ ఉపయోగించబడుతుంది మరియు పై అత్తిలో చూపిన విధంగా అనుసంధానించబడి ఉంది.
ఆర్డునో యొక్క పిన్ A4 మరియు A5 RDA5807M యొక్క SDA మరియు SCL పిన్తో అనుసంధానించబడి ఉన్నాయి. రిసీవర్ మాడ్యూల్ 3.3V లో మాత్రమే పనిచేస్తుందని గుర్తుంచుకోండి. కాబట్టి, నానో యొక్క 3v3 పిన్ను రిసీవర్ మాడ్యూల్ యొక్క VCC పిన్తో కనెక్ట్ చేయండి. కనెక్షన్లు చేసిన తర్వాత నా సెటప్ ఇలా ఉంది
Arduino FM రేడియో కోడ్ వివరణ
కోడ్ రిసీవర్ మాడ్యూల్ను ప్రారంభిస్తుంది మరియు ప్రీసెట్ ఫ్రీక్వెన్సీతో ఛానెల్ను సెట్ చేస్తుంది. A0 పిన్ వద్ద నానో చదివిన విలువ మారినప్పుడు (కుండను మార్చడం ద్వారా) ఫ్రీక్వెన్సీ మారుతుంది, ఇది ఛానెల్ను మారుస్తుంది. పూర్తి కోడ్ పేజీ చివరిలో ఇవ్వబడుతుంది.
RDA5807 తో కమ్యూనికేట్ చేయడానికి అవసరమైన వైర్ లైబ్రరీని జోడించడం ద్వారా మేము మా ప్రోగ్రామ్ను ప్రారంభిస్తాము. అప్పుడు, వేరియబుల్ “ఛానల్” లో మనం ఛానల్ విలువను సెట్ చేస్తాము. రేడియో ప్రారంభమైనప్పుడల్లా అది స్వయంచాలకంగా ఈ ఛానెల్కు ట్యూన్ అవుతుంది.
# చేర్చండి
తరువాత, మా ప్రారంభ కాన్ఫిగరేషన్ను సెట్ చేయడానికి మా RDA5807 IC లోని ప్రతి రిజిస్టర్కు బైట్లను లోడ్ చేస్తాము. ఈ సమయంలో, మేము రిసీవర్ను రీసెట్ చేస్తున్నాము.
uint8_t boot_config = {/ * రిజిస్టర్ 0x02 * / 0b11000001, 0b00000011, / * రిజిస్టర్ 0x03 * / 0b00000000, 0b00000000, / * రిజిస్టర్ 0x04 * / 0b00001010, 0b00000000, / * రిజిస్టర్ 0x05 * / 0b1001000 0b00000000, 0b00000000, / * రిజిస్టర్ 0x07 * / 0b01000010, 0b00000010,};
మేము పరికరాన్ని రీసెట్ చేసిన తర్వాత, మేము పరికరాన్ని ట్యూన్ చేయవచ్చు. ఛానెల్ను ట్యూన్ చేయడానికి మేము మొదటి 4 బైట్లను మాత్రమే ప్రోగ్రామ్ చేయాలి. కోడ్ యొక్క ఈ భాగం ఛానెల్ను కావలసిన ఫ్రీక్వెన్సీకి మారుస్తుంది. మొదట I2C లో, మేము ప్రసారాన్ని ప్రారంభిస్తాము, డేటాను వ్రాస్తాము లేదా చదువుతాము మరియు తరువాత ప్రసారాన్ని ముగించాము. ఈ రిసీవర్ ఐసిలో, డేటాషీట్ I2C ఇంటర్ఫేస్లో స్థిర ప్రారంభ రిజిస్టర్ అంటే 0x02h, మరియు రీడ్ ఆపరేషన్ కోసం 0x0Ah ఉందని డేటాషీట్ స్పష్టంగా చెప్పినందున మేము చిరునామాను పేర్కొనవలసిన అవసరం లేదు.
uint8_t tune_config = {/ * రిజిస్టర్ 0x02 * / 0b11000000, 0b00000001, / * రిజిస్టర్ 0x03 * / (ఛానల్ >> 2), ((ఛానల్ & 0 బి 11) << 6) - 0b00010000};
సెటప్లో, మేము బూట్ కాన్ఫిగరేషన్ను (రీసెట్) ప్రారంభించి, ఆపై RDA5807M కు ట్యూనింగ్ కాన్ఫిగరేషన్ బైట్లను వ్రాయడం ద్వారా ఛానెల్కు ట్యూన్ చేస్తాము.
శూన్య సెటప్ () {Serial.begin (9600); పిన్మోడ్ (A0, INPUT); / * RDA5807M FM ట్యూనర్కు కనెక్ట్ చేయండి: * / Wire.begin (); వైర్.బెగిన్ ట్రాన్స్మిషన్ (RDA5807M_ADDRESS); వైర్.రైట్ (బూట్_కాన్ఫిగ్, BOOT_CONFIG_LEN); వైర్.ఎండ్ ట్రాన్స్మిషన్ (); వైర్.బెగిన్ ట్రాన్స్మిషన్ (RDA5807M_ADDRESS); వైర్.రైట్ (ట్యూన్_కాన్ఫిగ్, TUNE_CONFIG_LEN); వైర్.ఎండ్ ట్రాన్స్మిషన్ (); }
ఫ్రీక్వెన్సీకి ట్యూనింగ్ కోసం కుండను ఉపయోగించినప్పుడు, నేను సమస్యను ఎదుర్కొన్నాను. A0 పిన్ చదివిన విలువలు స్థిరంగా ఉండవు. కావలసిన విలువతో శబ్దం క్లబ్బెడ్ ఉంది. నేను A0, మరియు GND ల మధ్య అనుసంధానించబడిన 0.1uF సిరామిక్ కెపాసిటర్ను ఉపయోగించాను, శబ్దం కనిష్టీకరించబడినప్పటికీ, అది కావలసిన స్థాయికి లేదు. కాబట్టి, నేను కోడ్లో కొన్ని మార్పులు చేయాల్సి వచ్చింది. మొదట, శబ్దం ద్వారా ప్రభావితమైన రీడింగులను నేను గుర్తించాను. శబ్దం యొక్క గరిష్ట విలువ 10 అని నేను కనుగొన్నాను. కాబట్టి నేను ప్రోగ్రామ్ను ఈ విధంగా వ్రాసాను, క్రొత్త విలువ మరియు అదే పిన్ యొక్క పాత విలువ మధ్య వ్యత్యాసం 10 కన్నా ఎక్కువ ఉంటే మాత్రమే అది క్రొత్త విలువను పరిశీలిస్తుంది. ఆపై కావలసిన ఛానెల్కు ట్యూన్ చేస్తుంది.
void loop () {int channel1 = 187, సగటు = 0, newA; స్టాటిక్ Int oldA = 0; పూర్ణాంక ఫలితం = 0; newA = అనలాగ్ రీడ్ (A0); if ((newA - oldA)> 10 - (oldA - newA)> 10) {Serial.println (newA); if (newA! = oldA) {channel = channel1 + (newA / 10); myChangeChannel (ఛానల్); oldA = newA; }}} // లూప్ ముగింపు
ఈ ఫంక్షన్ ట్యూన్_కాన్ఫిగ్ శ్రేణి యొక్క బైట్లను సెట్ చేయడానికి ఉపయోగించబడుతుంది మరియు తరువాత I2C ప్రోటోకాల్ ఉపయోగించి డేటాను RDA5807M IC కి ప్రసారం చేస్తుంది.
void myChangeChannel (int channel) else / * వేరే ఏమీ ఇవ్వకపోతే శూన్యమైనది int * / tune_config = (ఛానల్ >> 2); tune_config = ((ఛానల్ & 0 బి 11) << 6) - 0 బి 100010000; వైర్.బెగిన్ (); వైర్.బెగిన్ ట్రాన్స్మిషన్ (RDA5807M_ADDRESS); వైర్.రైట్ (ట్యూన్_కాన్ఫిగ్, TUNE_CONFIG_LEN); వైర్.ఎండ్ ట్రాన్స్మిషన్ (); }
Arduino FM రేడియో యొక్క పని
మాడ్యూల్ శక్తినిచ్చేటప్పుడు, మా కోడ్ RDA5807-M IC ని రీసెట్ చేస్తుంది మరియు దానిని కావలసిన యూజర్ యొక్క ఛానెల్కు సెట్ చేస్తుంది (గమనిక: ఈ ఫ్రీక్వెన్సీని బేస్ ఫ్రీక్వెన్సీగా తీసుకుంటారు, దానిపై ఫ్రీక్వెన్సీ పెరుగుతుంది). పొటెన్షియోమీటర్ను మార్చడం ద్వారా (A0 కి కనెక్ట్ చేయబడింది), ఆర్డునో నానో చదివిన విలువలు మారుతాయి. క్రొత్త మరియు పాత విలువ మధ్య వ్యత్యాసం 10 కంటే ఎక్కువగా ఉంటే, మా కోడ్ ఈ క్రొత్త విలువను పరిశీలిస్తుంది. పాత విలువ నుండి క్రొత్త విలువలో మార్పును బట్టి ఛానెల్ మార్చబడుతుంది. వాల్యూమ్ను పెంచడం లేదా తగ్గించడం పొటెన్షియోమీటర్పై ఆధారపడి ఉంటుంది, ఇది పిన్ 3 మరియు జిఎన్డి మధ్య అనుసంధానించబడి ఉంటుంది.
నిర్మాణం మరియు కోడింగ్ ముగింపులో, మీరు మీ స్వంత FM రేడియోను కలిగి ఉంటారు. FM రేడియో యొక్క పూర్తి పనిని ఈ పేజీ దిగువన లింక్ చేసిన వీడియోలో చూడవచ్చు. మీరు ప్రాజెక్ట్ను ఆస్వాదించారని మరియు ఉపయోగకరమైనదాన్ని నేర్చుకున్నారని ఆశిస్తున్నాము. ఈ ప్రాజెక్ట్ పని చేయడంలో మీకు ఏవైనా ప్రశ్నలు ఉంటే, మీరు వాటిని వ్యాఖ్య విభాగంలో ఉంచవచ్చు లేదా ఇతర సాంకేతిక సహాయం కోసం మా ఫోరమ్లను ఉపయోగించవచ్చు.