- RDA5807M IC
- IC PT2258
- స్కీమాటిక్
- భాగాలు అవసరం
- మేము Google అసిస్టెంట్ నుండి డేటాను ఎలా పొందుతున్నాము?
- కమ్యూనికేషన్ కోసం అడాఫ్రూట్ ఖాతాను ఏర్పాటు చేస్తోంది
- FM రేడియో కోసం IFTTT బ్రోకర్ను ఏర్పాటు చేస్తోంది
- ఆర్డునో కోడ్ మరియు వివరణ
- Arduino ఉపయోగించి వాయిస్ కంట్రోల్డ్ FM రేడియోను పరీక్షిస్తోంది
- మరింత వృద్ధి
ఈ రోజుల్లో, మనలో చాలామంది మన స్మార్ట్ఫోన్లతో సంగీతం వినడానికి ఇష్టపడతారు. కొన్ని సంవత్సరాల క్రితం, ఇది అలా కాదు, ఆ సమయంలో, సంగీతం, పాడ్కాస్ట్లు, వార్తలు మరియు ఇతరులు వినడానికి FM రేడియోలు మొదటి ఎంపిక. ఈ రోజుల్లో సంగీతం, వార్తలు మరియు ఇతరుల కోసం ఎవరూ రేడియో వినరు, బామ్మ మరియు తాత మినహాయింపు.
కాబట్టి, FM రేడియో యొక్క పాత కీర్తిని కొంచెం పునరుద్ధరించడానికి, ఈ ప్రాజెక్ట్లో, నేను గూగుల్ అసిస్టెన్స్ మరియు ప్రముఖ RDA5870M సూపర్హీటరోడైన్ రిసీవర్ IC ని ఉపయోగించి వాయిస్-కంట్రోల్డ్ FM రేడియోను నిర్మించబోతున్నాను .
అలాగే, మా మునుపటి FM రేడియో సర్క్యూట్లను తనిఖీ చేయండి:
- ఆర్డునో బేస్డ్ ఎఫ్ఎమ్ రేడియో
- Arduino ఉపయోగించి స్మార్ట్ ఫోన్ కంట్రోల్డ్ FM రేడియో
- సాధారణ FM ట్రాన్స్మిటర్ సర్క్యూట్
- FM ట్రాన్స్మిటర్ సర్క్యూట్ ఎలా నిర్మించాలి
RDA5807M IC
RDA5807M అనేది చాలా ఆధునిక సింగిల్-చిప్ FM స్టీరియో రేడియో ట్యూనర్, ఇది పూర్తిగా ఇంటిగ్రేటెడ్ సింథసైజర్, IF సెలెక్టివిటీ, RDS / RBDS మరియు MPX డీకోడర్, ఇది 50MHz నుండి 115MHz ఫ్రీక్వెన్సీ పరిధికి మద్దతు ఇస్తుంది. ఇది చాలా చౌకైన సింగిల్-చిప్ ఎఫ్ఎమ్ రిసీవర్ ఐసి, ఇది క్రియాత్మకంగా పనిచేయడానికి చాలా తక్కువ బాహ్య భాగాలు అవసరం. ఈ ఐసి ఏదైనా మాస్టర్ పరికరంతో కమ్యూనికేట్ చేయడానికి I2C ఇంటర్ఫేస్ను ఉపయోగిస్తుంది, కాబట్టి ఈ లక్షణం పోర్టబుల్ పరికరాలకు చాలా అనుకూలంగా ఉంటుంది.
ఈ ఐసిలో అంతర్గత ఆడియో ప్రాసెసర్ ఉంది, ఇది దాని గొప్ప ఆడియో నాణ్యతకు బాధ్యత వహిస్తుంది.
కొన్ని ప్రాథమిక లక్షణాలు-
- ప్రపంచవ్యాప్త ఫ్రీక్వెన్సీ బ్యాండ్లకు మద్దతు
- RDS / RBDS కొరకు మద్దతు
- డిజిటల్ తక్కువ-ఐఎఫ్ ట్యూనర్
- పూర్తిగా ఇంటిగ్రేటెడ్ డిజిటల్ ఫ్రీక్వెన్సీ సింథసైజర్
- డిజిటల్ ఆటో లాభ నియంత్రణ (AGC)
- బాస్ బూస్ట్
- 32Ω రెసిస్టెన్స్ లోడింగ్కు నేరుగా మద్దతు ఇవ్వండి
- ఇంటిగ్రేటెడ్ LDO రెగ్యులేటర్ & మరిన్ని
RDA5807 ను ఉపయోగించి ఈ ప్రాజెక్ట్ Arduino ఆధారిత FM రేడియో ద్వారా వెళ్ళడం ద్వారా మీరు ఈ IC గురించి మరింత తెలుసుకోవచ్చు.
IC PT2258
PT2258 అనేది 6-ఛానల్ ఎలక్ట్రానిక్ వాల్యూమ్ కంట్రోలర్గా ఉపయోగించటానికి తయారు చేయబడిన IC , ఈ IC బహుళ-ఛానల్ ఆడియో-వీడియో అనువర్తనాల కోసం ప్రత్యేకంగా రూపొందించిన CMOS సాంకేతికతను ఉపయోగిస్తుంది.
ఈ ఐసి 1 డిబి / స్టెప్ వద్ద 0 నుండి -79 డిబి వరకు అటెన్యుయేషన్ పరిధితో ఐ 2 సి కంట్రోల్ ఇంటర్ఫేస్ను అందిస్తుంది మరియు ఇది 20-పిన్ డిఐపి లేదా ఎస్ఓపి ప్యాకేజీలో వస్తుంది.
కొన్ని ప్రాథమిక లక్షణాలలో ఇవి ఉన్నాయి-
- 6-ఇన్పుట్ మరియు అవుట్పుట్ ఛానెల్స్ (5.1 హోమ్ ఆడియో సిస్టమ్స్ కోసం)
- ఎంచుకోదగిన I2C చిరునామా (డైసీ-చైన్ అప్లికేషన్ కోసం)
- అధిక ఛానెల్ విభజన (తక్కువ శబ్దం అనువర్తనం కోసం)
- > 100dB యొక్క S / N నిష్పత్తి
- ఆపరేటింగ్ వోల్టేజ్ 5 నుండి 9 వి
PT2258 డిజిటల్ ఆడియో వాల్యూమ్ కంట్రోల్ ప్రాజెక్ట్లో ఈ ఐసి గురించి మేము ఇంతకుముందు వివరించాము. మీరు ఈ ఐసి గురించి మరింత తెలుసుకోవాలనుకుంటే మీరు ఆ ప్రాజెక్ట్ను తనిఖీ చేయవచ్చు.
స్కీమాటిక్
గూగుల్ అసిస్టెంట్ కంట్రోల్డ్ ఎఫ్ఎమ్ రేడియో కోసం సర్క్యూట్ రేఖాచిత్రం క్రింద ఇవ్వబడింది:
భాగాలు అవసరం
- నోడ్ఎంసియు మైక్రోకంట్రోలర్ - 1
- PT2258 డిజిటల్ వాల్యూమ్ కంట్రోలర్ - 1
- RDA5807 FM రేడియో మాడ్యూల్ - 1
- SPDT రిలే 6V - 1
- 1n4007 డయోడ్ - 1
- స్క్రూ టెర్మినల్ 5 ఎంఎంఎక్స్ 2 - 1
- 3.5 మిమీ హెడ్ఫోన్ జాక్ - 1
- లాజిక్ స్థాయి కన్వర్టర్ - 1
- 10 కె రెసిస్టర్, 5% - 4
- 150 కె రెసిస్టర్, 5% - 4
- 100 కె రెసిస్టర్, 5% - 2
- 10uF కెపాసిటర్ - 6
- 0.1uF కెపాసిటర్ - 1
- జంపర్ వైర్ - 10
మేము Google అసిస్టెంట్ నుండి డేటాను ఎలా పొందుతున్నాము?
పై చిత్రం మీకు Google అసిస్టెంట్ మరియు నోడ్ఎంసియు మధ్య కమ్యూనికేషన్ ప్రాసెస్ యొక్క ప్రాథమిక ఆలోచనను ఇస్తుంది.
MQTT తో IFTTT బ్రోకర్గా పనిచేస్తుందని అడాఫ్రూట్ IO సర్వర్లో డేటాను సవరించే అధికారం Google అసిస్టెంట్కు ఉంది.
సర్వర్ వైపు (అడాఫ్రూట్ IO) ఏదైనా డేటా మార్పు జరిగితే, అది నోడ్ఎంసియు వైపు ప్రతిబింబిస్తుంది. దీన్ని సాధించడానికి, మీరు క్రింద ఇచ్చిన సూచనలను పాటించాలి-
కమ్యూనికేషన్ కోసం అడాఫ్రూట్ ఖాతాను ఏర్పాటు చేస్తోంది
మొదట, ఒక అడాఫ్రూట్ IO ఖాతా చేయండి. మీ ఆధారాలతో Adafruit IO కి లాగిన్ అవ్వండి లేదా మీకు ఖాతా లేకపోతే సైన్ అప్ చేయండి. అలెక్సా నియంత్రిత LED, రాస్ప్బెర్రీ పై హోమ్ ఆటోమేషన్ మరియు అనేక ఇతర IoT ఆధారిత ప్రాజెక్టులను నిర్మించడానికి మేము ఇంతకుముందు Adafruit IO ని ఉపయోగించాము.
అడాఫ్రూట్ ఖాతాకు లాగిన్ అయిన తరువాత, డాష్బోర్డ్లపై క్లిక్ చేసి , ఆపై యాక్షన్> క్రియేట్ ఎ న్యూ డాష్బోర్డ్ పై క్లిక్ చేయండి .
తరువాత, మేము క్రొత్త పేరు & మా క్రొత్త డాష్బోర్డ్ యొక్క చిన్న వివరణను జోడించబోతున్నాము.
మీరు డాష్బోర్డ్ను సృష్టించిన తర్వాత, ఆర్డునో కోడ్లో అవసరమైన విధంగా మీరు మీ ఖాతా నుండి వినియోగదారు పేరు మరియు యాక్టివ్ కీని పొందాలి. KEY చిహ్నంపై క్లిక్ చేయడం ద్వారా మీరు దాన్ని పొందవచ్చు.
ఆ తరువాత, మూడు బ్లాక్స్ చేయండి; ఒక టోగుల్ బ్లాక్, ఒక గేజ్ బ్లాక్, ఒక టెక్స్ట్ బ్లాక్.
గూగుల్ సహాయం మరియు నోడ్ఎంసియు మధ్య కమ్యూనికేషన్ కోసం ఈ బ్లాక్స్ బాధ్యత వహిస్తున్నందున బ్లాక్స్ చాలా ముఖ్యమైనవి.
బ్లాక్ చేయడానికి, మీరు కుడి ఎగువ మూలలోని + గుర్తుపై క్లిక్ చేయాలి.
తరువాత, మేము బ్లాక్స్ తయారు చేయబోతున్నాము.
తరువాత, మీరు ప్రతి బ్లాక్ను సెటప్ చేయాలి, దాని కోసం, మీరు ఒక నిర్దిష్ట బ్లాక్పై టిక్ చేసి, తదుపరి దశ క్లిక్ చేయాలి .
ఈ ప్రాజెక్ట్ కోసం, టోగుల్ బటన్ మినహా ఏ సెట్టింగులను మార్చాల్సిన అవసరం లేదు.
టోగుల్ బటన్ టెక్స్ట్ లో పెద్ద అక్షరాలతో, మీరు ఒక చేయడానికి అవసరం చిన్న అక్షరం మరియు మార్పులు అప్డేట్.
అంతే, మీరు అడాఫ్రూట్ IO లో ఏర్పాటు చేయవలసిన అన్ని విషయాలు.
నా చివరి స్క్రీన్ ఇలా ఉంది-
FM రేడియో కోసం IFTTT బ్రోకర్ను ఏర్పాటు చేస్తోంది
ఎప్పటిలాగే, మీకు ఖాతా లేకపోతే సైన్ అప్ చేయండి లేదా మీకు ఇప్పటికే ఖాతా ఉంటే సైన్ ఇన్ చేయండి.
ఇప్పుడు, మీరు ఆప్లెట్ను సృష్టించాలి. దాని కోసం, క్రింది దశలను అనుసరించండి:
అప్లెట్ చేయడానికి, మీ మీద క్లిక్ ఖాతా చిహ్నం మరియు సృష్టించు క్లిక్ చేయండి.
సృష్టించు స్క్రీన్లో, ఉంటే + చిహ్నాన్ని క్లిక్ చేయండి.
ఆ తరువాత, మీరు మీ గూగుల్ ఖాతాకు ప్రాప్యతను అనుమతించాలి .
దాని కోసం, మీరు శోధన పట్టీలో గూగుల్ అసిస్టెంట్ కోసం శోధించి, గూగుల్ అసిస్టెంట్ చిహ్నంపై క్లిక్ చేయాలి.
తదుపరి స్క్రీన్లో, మేము ట్రిగ్గర్ను ఎంచుకోవాలి, గుర్తుంచుకోండి, మేము అడాఫ్రూట్ IO సర్వర్లో మూడు బ్లాక్లను చేసాము , ఆ మూడు బ్లాక్ల కోసం ట్రిగ్గర్లను తయారు చేయాలి .
మొదట, రేడియో స్టేషన్ బ్లాక్, దాని కోసం, టెక్స్ట్ పదార్ధంతో ఒక పదబంధాన్ని చెప్పండి .
తదుపరి స్క్రీన్లో, మీరు ఏమి చెప్పాలనుకుంటున్నారో & గూగుల్ అసిస్టెంట్ మీకు ఏమి ప్రత్యుత్తరం ఇవ్వాలి అని టైప్ చేయాలి.
అప్పుడు సృష్టించు ట్రిగ్గర్ బటన్ పై క్లిక్ చేయండి.
మీరు పూర్తి చేసిన తరువాత స్క్రీన్, ఈ వంటి ఏదో కనిపిస్తోంది ఉంటే భాగం, అది యొక్క సమయం తరువాత , భాగం క్లిక్ + తర్వాత సైన్ తరువాత .
మీకు క్రింది చిత్రం వంటి స్క్రీన్ ఇవ్వబడుతుంది, అడాఫ్రూట్ కోసం శోధించండి మరియు అడాఫ్రూట్ చిహ్నంపై క్లిక్ చేయండి.
తరువాత, మీ అడాఫ్రూట్ ఖాతాకు IFTTT తో అధికారం ఇవ్వండి, ఆపై కనెక్ట్ క్లిక్ చేయండి.
తరువాత, మీరు Adafruit IO కు డేటాను పంపండి క్లిక్ చేయాలి .
అప్పుడు మీరు అడాఫ్రూట్ ఖాతాలో ఇంతకుముందు సృష్టించిన ఫీడ్ల డ్రాప్డౌన్ మీకు అందించబడుతుంది .
ఏదైనా ఎంచుకోండి మరియు క్రియేట్ యాక్షన్ పై క్లిక్ చేయండి , మీరు ఈ మూడింటికీ దీన్ని చేయాలి.
మరియు దానితో, IFTTT ప్రక్రియ ముగింపును సూచిస్తుంది, నా చివరి ఆప్లెట్ స్క్రీన్ ఇలా కనిపిస్తుంది,
ఆర్డునో కోడ్ మరియు వివరణ
IC మరియు అడాఫ్రూట్ IO IFTTT మరియు WIFI ల మధ్య సమాచార మార్పిడిని నిర్వహించడానికి ఆర్డునో కోడ్ ఉంది. ఈ ఆర్డ్యునో నానో ఎఫ్ఎమ్ రేడియో కోసం పూర్తి కోడ్ ఈ ట్యుటోరియల్ చివరిలో ఇవ్వబడింది. కోడ్ కొంచెం పొడవుగా మరియు సంక్లిష్టంగా ఉంటుంది, ఇక్కడ మేము పూర్తి కోడ్ లైన్ను లైన్ ద్వారా వివరించాము.
మొదట, మేము అవసరమైన అన్ని లైబ్రరీలను చేర్చాలి, అవి:
# చేర్చండి
అప్పుడు, WI-FI కోసం SSID మరియు పాస్వర్డ్ను నిర్వచించండి, ఇది మీ రౌటర్ యొక్క SSID మరియు పాస్వర్డ్.
const char * ssid = "Android"; // మీ రౌటర్ యొక్క SSID const char * password = "12345678"; // మీ రూటర్ యొక్క పాస్వర్డ్
అప్పుడు మేము రెండు బూలియన్లను మరియు వేరియబుల్ను నిర్వచిస్తాము, ఐసి యొక్క కమ్యూనికేషన్ స్థితిని ఉంచడానికి బూలియన్లు ఉపయోగించబడతాయి మరియు వాల్యూమ్ స్థాయిని సెట్ చేయడానికి వాల్యూమ్ వేరియబుల్ ఉపయోగించబడుతుంది.
bool potStatus; // 1 MCU మరియు IC బూల్ రేడియోస్టాటస్ మధ్య కమ్యూనికేషన్ స్థాపించబడినప్పుడు; // 1 MCU మరియు IC int వాల్యూమ్ = 15 మధ్య కమ్యూనికేషన్ ఏర్పడినప్పుడు; // IC తో డిఫాల్ట్ వాల్యూమ్ స్థాయి మొదలవుతుంది
అప్పుడు, మేము యాంప్లిఫైయర్ను ఆన్ లేదా ఆఫ్ చేయడానికి రిలే_పిన్ అనే GPIO పిన్ను ఏర్పాటు చేసాము.
# రిలే_పిన్ D7 ని నిర్వచించండి // ఈ పిన్ రేడియోను ఆన్ మరియు ఆఫ్ చేయడానికి ఉపయోగించబడుతుంది
తరువాత, అడాఫ్రూట్ IO తో కమ్యూనికేట్ చేయడానికి అవసరమైన అన్ని నిర్వచనాలను మనం నిర్వచించాలి.
# AIO_SERVER "io.adafruit.com" ని నిర్వచించండి # AIO_SERVERPORT 1883 // SSL కోసం 8883 ని వాడండి
దిగువ నిర్వచనాలు FIX_BAND అనేది లైబ్రరీ ఉపయోగించే యాజమాన్య నిర్వచనం.
తదుపరి నిర్వచించిన స్టేట్మెంట్ మాడ్యూల్ యొక్క అంతర్గత వాల్యూమ్ను సెట్ చేస్తుంది.
# FIX_BAND RADIO_BAND_FM ని నిర్వచించండి // <ఈ స్కెచ్ ద్వారా బ్యాండ్ ట్యూన్ చేయబడుతుంది FM. # FIX_RADIO_VOLUME 6 ని నిర్వచించండి /// <మాడ్యూల్ యొక్క డిఫాల్ట్ వాల్యూమ్.
తరువాత, PT2258, RDA5807M మరియు WiFiClient కోసం అవసరమైన వస్తువులను తయారు చేయండి.
PT2258 డిజిటల్ పాట్; // PT2258 ఆబ్జెక్ట్ RDA5807M రేడియో; // RDA5807M ఆబ్జెక్ట్ వైఫై క్లయింట్ క్లయింట్; // వైఫై క్లయింట్ ఆబ్జెక్ట్
అప్పుడు వైఫై క్లయింట్ మరియు MQTT సర్వర్ మరియు లాగిన్ వివరాలను పాస్ చేయడం ద్వారా MQTT క్లయింట్ క్లాస్ను సెటప్ చేయండి.
Adafruit_MQTT_Client mqtt (& క్లయింట్, AIO_SERVER, AIO_SERVERPORT, AIO_USERNAME, AIO_KEY);
// వైఫై క్లయింట్ మరియు MQTT సర్వర్ మరియు లాగిన్ వివరాలలో ఉత్తీర్ణత ద్వారా MQTT క్లయింట్ తరగతిని సెటప్ చేయండి.
అప్పుడు మేము ఫీడ్కు సభ్యత్వాన్ని పొందాలి. అది మిమ్మల్ని ఏమి అడగవచ్చు?
అడాఫ్రూట్ సర్వర్లో కొన్ని విలువలు, కొన్ని పారామితులు మారితే, మార్పులు ఇక్కడ ప్రతిబింబిస్తాయి.
Adafruit_MQTT_Subscribe Radio_Station = Adafruit_MQTT_Subscribe (& mqtt, AIO_USERNAME "/ ఫీడ్లు / రేడియో_స్టేషన్"); // ఫీడ్కు సభ్యత్వాన్ని పొందటానికి ఉపయోగించే పద్ధతులు Adafruit_MQTT_Subscribe Toggle_FM = Adafruit_MQTT_Subscribe (& mqtt, AIO_USERNAME "/ ఫీడ్లు / టోగుల్_ఎఫ్ఎమ్"); // ఫీడ్ Adafruit_MQTT_Subscribe Volume = Adafruit_MQTT_Subscribe (& mqtt, AIO_USERNAME "/ ఫీడ్లు / వాల్యూమ్") కు సభ్యత్వాన్ని పొందటానికి ఉపయోగించే పద్ధతులు; // ఫీడ్కు సభ్యత్వాన్ని పొందటానికి ఉపయోగించే పద్ధతులు
MQTT_connect () ఫంక్షన్ కోసం ఫంక్షన్ ప్రోటోటైప్ క్రింద ఉంది.
MQTT_connect (); // MQTT కనెక్ట్ కోసం ఫంక్షన్ ప్రోటోటైప్
అప్పుడు మేము మా సెటప్ ప్రక్రియను ప్రారంభిస్తాము. మొదట, మేము ప్రారంభ పద్ధతితో UART కమ్యూనికేషన్ను ప్రారంభిస్తాము.
సీరియల్.బెగిన్ (9600); // UART ప్రారంభం Serial.println (); // అంతరం కోసం అదనపు పంక్తిని జతచేస్తుంది Serial.println (); // అంతరం కోసం అదనపు పంక్తిని జతచేస్తుంది తరువాత, వైఫైకి కనెక్ట్ అవ్వడానికి మేము అన్ని సాధారణ పనులను చేస్తాము **************** వైఫై కనెక్షన్కు అవసరమైన అన్ని సాధారణ విషయాలు *********************** / సీరియల్.ప్రింట్ ("దీనికి కనెక్ట్ అవుతోంది"); సీరియల్.ప్రింట్ల్న్ (ssid); WiFi.mode (WIFI_STA); WiFi.begin (ssid, password); అయితే (WiFi.status ()! = WL_CONNECTED) {ఆలస్యం (500); సీరియల్.ప్రింట్ ("."); } సీరియల్.ప్రింట్ల్న్ (""); సీరియల్.ప్రింట్ల్న్ ("వైఫై కనెక్ట్"); సీరియల్.ప్రింట్ల్న్ ("IP చిరునామా:"); సీరియల్.ప్రింట్ల్న్ (వైఫై.లోకాలిఐపి ()); / **************** వైఫై కనెక్షన్కు అవసరమైన అన్ని సాధారణ విషయాలు *********************** /
తరువాత, కాల్ Wire.begin () ఒక I2C కనెక్షన్ instantiate పద్ధతి & మేము కాల్ Wire.setClock () అది PT2258 IC యొక్క పూర్తి వేగం గా 100KHz I2C ఫ్రీక్వెన్సీ పరిష్కరించడానికి పద్ధతి.
వైర్.బెగిన్ (); // I2C ప్రారంభ శ్రేణిని ప్రారంభించండి Wire.setClock (100000); // I2C గడియారాన్ని 100KHz కు సెట్ చేస్తుంది
తరువాత, PT2258 మరియు RDA5807 IC రెండింటికీ init () పద్ధతిని పిలవండి మరియు తిరిగి నిర్వచించిన బూలియన్లలో తిరిగి వచ్చే స్థితిని పట్టుకోండి.
potStatus = DigitalPot.init (); రేడియోస్టాటస్ = రేడియో.ఇనిట్ ();
తరువాత, MCU IC తో కమ్యూనికేట్ చేయగలిగిందా లేదా అని తనిఖీ చేయండి. వేరే స్టేట్మెంట్స్ ఉంటే మేము దీన్ని రెండు చేస్తాము.
if (potStatus) {Serial.println ("PT2258 పరికరం కనుగొనబడింది!"); } else {Serial.println ("PT2258 ను ప్రారంభించడంలో విఫలమైంది"); } if (రేడియోస్టాటస్) {Serial.println ("RDA5807M పరికరం కనుగొనబడింది!"); } else {Serial.println ("RDA5807M ను ప్రారంభించడంలో విఫలమైంది"); }
తరువాత, MQTT లైబ్రరీ నుండి చందా పద్ధతిని కాల్ చేయండి. మా సభ్యత్వ ఫీడ్లలో ఏవైనా మార్పులు జరిగితే మాకు MQTT సర్వర్ ద్వారా తెలియజేయబడుతుంది.
mqtt.subscribe (& రేడియో_స్టేషన్); // రేడియో_స్టేషన్ ఫీడ్ కోసం MQTT సభ్యత్వాన్ని సెటప్ చేయండి mqtt.subscribe (& టోగుల్_ఎఫ్ఎమ్); టోగుల్_ఎఫ్ఎమ్ ఫీడ్ కోసం MQTT సభ్యత్వాన్ని సెటప్ చేయండి mqtt.subscribe (& వాల్యూమ్); వాల్యూమ్ ఫీడ్ కోసం MQTT సభ్యత్వాన్ని సెటప్ చేయండి
తరువాత, మేము రిలే పిన్ను అవుట్పుట్గా మరియు పిన్ స్థితిని LOW గా సెట్ చేసాము
పిన్మోడ్ (D7, OUTPUT); డిజిటల్ రైట్ (D7, LOW);
తరువాత, ముందుగా నిర్ణయించిన రేడియో వాల్యూమ్ను సెట్ చేయండి, ఈ పరామితి RDA5807 IC యొక్క అంతర్గత వాల్యూమ్ను సెట్ చేస్తుంది, ఇది మా సెటప్ ప్రాసెస్ ముగింపును సూచిస్తుంది.
radio.setVolume (FIX_RADIO_VOLUME); // తరువాత మేము రేడియో వాల్యూమ్ను సాధారణీకరించండి రేడియో.సెట్మోనో (తప్పుడు); // చిప్ మోనో అవుట్పుట్ రేడియో.సెట్మ్యూట్ (తప్పుడు) ఇవ్వడం మాకు ఇష్టం లేదు; // చిప్ ప్రారంభంలో మ్యూట్ అవ్వడం మాకు ఇష్టం లేదు
MQTT సర్వర్కు కనెక్షన్ను ఏర్పాటు చేసే MQTT_connect () ఫంక్షన్కు కాల్ చేయడం ద్వారా మేము లూప్ను ప్రారంభిస్తాము.
MQTT కనెక్ట్ ఫంక్షన్లో, MQTT సర్వర్కు కనెక్షన్ చేయడానికి మేము మూడుసార్లు ప్రయత్నిస్తాము.
ఇది విజయవంతమైతే, మనకు విజయ సందేశం వస్తుంది, లేకపోతే మనకు దోష సందేశం వస్తుంది.
శూన్యమైన MQTT_connect () {int8_t ret; // ప్రయత్నాలను నిల్వ చేయడానికి 8 బిట్ పూర్ణాంకం // ఇప్పటికే కనెక్ట్ అయి ఉంటే ఆపు. if (mqtt.connected ()) {తిరిగి; } సీరియల్.ప్రింట్ ("MQTT కి కనెక్ట్ అవుతోంది…"); uint8_t మళ్లీ ప్రయత్నిస్తుంది = 3; అయితే ((ret = mqtt.connect ())! Serial.println ("5 సెకన్లలో MQTT కనెక్షన్ను మళ్లీ ప్రయత్నిస్తోంది…"); mqtt.disconnect (); ఆలస్యం (5000); // వేచి 5 సెకన్లు మళ్లీ ప్రయత్నిస్తుంది--; if (retries == 0) {// ప్రాథమికంగా చనిపోయి, WDT నన్ను రీసెట్ చేసే వరకు వేచి ఉండండి (1); }} Serial.println ("MQTT కనెక్ట్ చేయబడింది!"); }
తరువాత, Adafruit_MQTT_Subscribe ఆబ్జెక్ట్కు పాయింటర్ను సృష్టించడం ద్వారా ప్రారంభించండి. ఏ చందా స్వీకరించబడిందో తెలుసుకోవడానికి మేము దీనిని ఉపయోగిస్తాము.
Adafruit_MQTT_ సబ్స్క్రయిబ్ * చందా;
తరువాత, మేము చందా సందేశం కోసం వేచి ఉన్నాము.
MQTT సర్వర్ నుండి వచ్చే ఏవైనా సందేశాల కోసం mqtt.readSubscription (timeInMilliseconds) ఒక నిర్దిష్ట సమయాన్ని వింటుంది.
సమయం ముగిసే ముందు దానికి సందేశం వస్తే, అది చందాకు పాయింటర్తో ప్రత్యుత్తరం ఇస్తుంది లేదా అది సమయం ముగిసి తిరిగి వస్తుంది. ఆ సందర్భంలో, ఇది 2 సెకన్ల వరకు వేచి ఉంటుంది.
అయితే ((చందా = mqtt.readSubscription (20000%))
ఒక సమయం ముగిసింది సంభవిస్తే, అయితే లూప్ పూరక విఫలమైతే. కాకపోతే, మేము ఏ చందాను పోల్చి చూస్తాము మరియు మనకు తెలిసిన చందాలను పొందుతాము.
ఈ కోడ్లో, మా మూడు సభ్యత్వ ఫీడ్ల కోసం మేము దీన్ని చేస్తాము.
if (subscription == & Toggle_FM) if (subscription == & Radio_Station) if (subscription == & Volume)
లూప్ విభాగంలో మీరు అర్థం చేసుకోవలసిన ప్రధాన మూడు పారామితులు ఇవి.
టోగుల్_ఎఫ్ఎమ్ ఫీడ్ను పర్యవేక్షించడానికి మరియు సెట్ చేయడానికి కోడ్ యొక్క ఈ విభాగం ఉపయోగించబడుతుంది.
if (చందా == & టోగుల్_ఎఫ్ఎమ్) // ఇది టోగుల్_ఎఫ్ఎమ్ ఫీడ్ {సీరియల్.ప్రింట్ (ఎఫ్ ("వచ్చింది:")) నుండి వచ్చిన సందేశం; సీరియల్.ప్రింట్ల్న్ ((చార్ *) టోగుల్_ఎఫ్ఎమ్.లాస్ట్రెడ్); // డీబగ్గింగ్ కోసం ఫీడ్ డేటాను ప్రింట్ చేస్తే (స్ట్రింగ్ ((చార్ *) టోగుల్_ఎఫ్ఎమ్. "సెవర్ {// నుండి వస్తోంది, కాని మనం చేసే ముందు దానిని స్ట్రింగ్గా మార్చాలి, ఇది కంపారిసిన్ సూపర్ ఈజీ డిజిటల్ రైట్ (D7, HIGH); // మనం తయారుచేస్తున్న సర్వర్ నుండి" ఆన్ "స్ట్రింగ్ వస్తే D7 పిన్ HIGH} if (స్ట్రింగ్ ((చార్ *) టోగుల్_ఎఫ్ఎమ్.లాస్ట్రెడ్) == స్ట్రింగ్ ("ఆఫ్")) // మళ్ళీ మనం స్ట్రింగ్ ఆఫ్ {డిజిటల్ రైట్ (D7, LOW) కోసం తనిఖీ చేస్తున్నాము; మేము D7 పిన్ను తక్కువ చేస్తున్న సర్వర్ నుండి "ఆఫ్" స్ట్రింగ్
కోడ్ యొక్క ఈ విభాగం రేడియో_స్టేషన్ ఫీడ్ను పర్యవేక్షించడానికి మరియు సెట్ చేయడానికి ఉపయోగించబడుతుంది.
if (చందా == & రేడియో_స్టేషన్) {సీరియల్.ప్రింట్ (F ("వచ్చింది:")); సీరియల్.ప్రింట్ల్న్ ((చార్ *) రేడియో_స్టేషన్.లాస్ట్రెడ్); if (స్ట్రింగ్ ((చార్ *) రేడియో_స్టేషన్.లాస్ట్రెడ్) == స్ట్రింగ్ ("బిగ్ ఎఫ్ఎమ్")) // వినండి మేము బిగ్ ఎఫ్ఎమ్ {radio.setBandFrequency (FIX_BAND, 9270) స్ట్రింగ్ కోసం తనిఖీ చేస్తున్నాము; // పైన పేర్కొన్న పరిస్థితి నిజమైతే మేము రాడోయి ఛానెల్ను 92.7MHz కు సెట్ చేస్తున్నాము} // పైన పేర్కొన్న ప్రోసెస్ క్రింద కొనసాగితే (స్ట్రింగ్ ((చార్ *) రేడియో_స్టేషన్.లాస్ట్రెడ్) == స్ట్రింగ్ ("రెడ్ ఎఫ్ఎమ్") { radio.setBandFrequency (FIX_BAND, 9350); } if (స్ట్రింగ్ ((చార్ *) రేడియో_స్టేషన్.లాస్ట్రెడ్) == స్ట్రింగ్ ("రేడియో మిర్చి")) {radio.setBandFrequency (FIX_BAND, 9830); }}
వాల్యూమ్ యొక్క ఫీడ్ను పర్యవేక్షించడానికి మరియు సెట్ చేయడానికి కోడ్ యొక్క ఈ విభాగం ఉపయోగించబడుతుంది.
if (subscription == & Volume) // // వినండి మేము స్ట్రింగ్ వాల్యూమ్ కోసం తనిఖీ చేస్తున్నాము మరియు ఇది స్ట్రింగ్ ఫార్మాట్లో ఒక పూర్ణాంక విలువ // PT2258 సహాయంతో వాల్యూమ్ను మార్చడానికి మేము దానిని తిరిగి పూర్ణాంకానికి మార్చాలి. IC సీరియల్.ప్రింట్ (F ("వచ్చింది:")); సీరియల్.ప్రింట్ల్న్ ((చార్ *) వాల్యూమ్.లాస్ట్రెడ్); వాల్యూమ్ = అటోయి ((చార్ *) వాల్యూమ్.లాస్ట్రెడ్); // మేము అక్షర పాయింటర్ను పూర్ణాంక వాల్యూమ్కు మార్చడానికి అటోయి () మెథోడ్ను ఉపయోగిస్తున్నాము = మ్యాప్ (వాల్యూమ్, 0,100,79,0); // మ్యాప్ (విలువ, నుండి, తక్కువ, నుండి, తక్కువ, వరకు) // pt2258 dB లోని పూర్ణాంక విలువలను మాత్రమే అర్థం చేసుకుంటుంది // మేము 0dB - 79dB విలువను 0% - 100% కు మ్యాప్ చేస్తున్నాము. DigitalPot.setChannelVolume (వాల్యూమ్, 0); // అన్నింటికీ మేము PT2258 IC DigitalPot.setChannelVolume (వాల్యూమ్, 1) యొక్క ఛానల్ 0 కోసం వాల్యూమ్ను సెట్ చేస్తున్నాము; // అన్నింటికీ మేము PT2258 IC of of యొక్క ఛానల్ 1 కోసం వాల్యూమ్ను సెట్ చేస్తున్నాము
Arduino ఉపయోగించి వాయిస్ కంట్రోల్డ్ FM రేడియోను పరీక్షిస్తోంది
సర్క్యూట్ పరీక్షించడానికి, కింది ఉపకరణం ఉపయోగించబడింది-
- 13-0-13 ట్యాప్ ఉన్న ట్రాన్స్ఫార్మర్
- రెండు 4Ω 20W స్పీకర్లు ఒక లోడ్.
- Google అసిస్టెంట్ ఉపయోగించడానికి ఫోన్.
మునుపటి వ్యాసంలో, TDA2050 IC తో సింపుల్ 2x32 వాట్ ఆడియో యాంప్లిఫైయర్ ఎలా తయారు చేయాలో నేను మీకు చూపించాను, నేను ఈ ప్రదర్శన కోసం కూడా ఉపయోగించబోతున్నాను.
నేను మెకానికల్ పొటెన్టోమీటర్ను అస్తవ్యస్తం చేశాను మరియు రెండు చిన్న జంపర్ కేబుల్లతో రెండు లీడ్లను తగ్గించాను. ఇప్పుడు, రెండు పుష్-బటన్ల సహాయంతో, నేను యాంప్లిఫైయర్ యొక్క వాల్యూమ్ను మార్చగలిగాను.
మరింత వృద్ధి
ఈ సర్క్యూట్కు ఇంకా చాలా మెరుగుదలలు చేయవచ్చు.
- వివిధ శబ్ద సమస్యలు ఉన్నాయి ఎందుకంటే నోడ్ఎంసియు పక్కన ఆడియో మూలం పనిచేస్తోంది, కాబట్టి శబ్దం రోగనిరోధక శక్తిని మెరుగుపరచడానికి మేము అదనపు షీల్డింగ్ను అమలు చేయాలి.
- మొత్తం సర్క్యూట్ను పిసిబికి నిర్మించడం వల్ల శబ్దం రోగనిరోధక శక్తి మెరుగుపడుతుంది.
- శబ్దాన్ని తొలగించడానికి ఈ ఐసికి అదనపు ఫిల్టర్లను జోడించవచ్చు.
మీరు ఈ కథనాన్ని ఇష్టపడ్డారని మరియు దాని నుండి క్రొత్తదాన్ని నేర్చుకున్నారని నేను ఆశిస్తున్నాను. మీకు ఏమైనా సందేహం ఉంటే, మీరు ఈ క్రింది వ్యాఖ్యలలో అడగవచ్చు లేదా వివరణాత్మక చర్చ కోసం మా ఫోరమ్లను ఉపయోగించవచ్చు.