- ప్రారంభించే ముందు గుర్తుంచుకోవలసిన విషయాలు
- భాగాలు అవసరం
- సర్క్యూట్ రేఖాచిత్రం
- ఇమెయిల్ పంపడం కోసం SMTP2GO సర్వర్ను ఏర్పాటు చేస్తోంది
- ప్రోగ్రామింగ్ AVR మైక్రోకంట్రోలర్ Atmega16 మరియు ESP8266
- ఇమెయిల్ పంపడం కోసం ATmega16 ప్రోగ్రామింగ్
- ప్రోగ్రామింగ్ ESP8266 NodeMCU
Atmega16 తక్కువ ఖర్చుతో 8 బిట్ మైక్రోకంట్రోలర్ మరియు దాని మునుపటి మైక్రోకంట్రోలర్ల వెర్షన్ కంటే ఎక్కువ సంఖ్యలో GPIO లతో వస్తుంది. ఇది UART, USART, SPI మరియు I2C వంటి సాధారణంగా ఉపయోగించే కమ్యూనికేషన్ ప్రోటోకాల్లను కలిగి ఉంది. రోబోటిక్స్, ఆటోమొబైల్ మరియు ఆటోమేషన్ పరిశ్రమలలో విస్తృత సమాజ మద్దతు మరియు సరళత కారణంగా ఇది విస్తృత అనువర్తనాలను కలిగి ఉంది.
IoT వంటి డొమైన్లో దాని అప్లికేషన్ ప్రాంతాలను పరిమితం చేసే Wi-Fi మరియు బ్లూటూత్ వంటి వైర్లెస్ కమ్యూనికేషన్ ప్రోటోకాల్లలో Atmega16 మద్దతు ఇవ్వదు. ఈ పరిమితిని అధిగమించడానికి వైర్లెస్ ప్రోటోకాల్లను కలిగి ఉన్న ఇతర కంట్రోలర్లను ఇంటర్ఫేస్ చేయవచ్చు. విస్తృతంగా ఉపయోగించే ESP8266 వంటి వైర్లెస్ ప్రోటోకాల్లకు మద్దతిచ్చే కంట్రోలర్ల సంఖ్య,
ఈ రోజు మనం ఇంటర్నెట్ ద్వారా వైర్లెస్గా కమ్యూనికేట్ చేయడానికి Atmega16 ని ESP8266 NodeMCU తో ఇంటర్ఫేస్ చేస్తాము. ESP8266 NodeMCU కమ్యూనిటీ మద్దతు మరియు సులభంగా లభించే లైబ్రరీలతో వైఫై మాడ్యూల్ను విస్తృతంగా ఉపయోగిస్తున్నారు. అలాగే ESP8266 NodeMCU Arduino IDE తో సులభంగా ప్రోగ్రామ్ చేయగలదు. ESP8266 ను ఏదైనా మైక్రోకంట్రోలర్తో ఇంటర్ఫేస్ చేయవచ్చు:
ఈ ట్యుటోరియల్లో, ESP8266 NodeMCU మాడ్యూల్ మరియు Atmega16 ఉపయోగించి ఇమెయిల్ పంపబడుతుంది. సూచనలు Atmega16 చే ఇవ్వబడతాయి మరియు ESP8266 సూచనలను స్వీకరించినప్పుడు, అది ఎంచుకున్న ఇమెయిల్ గ్రహీతకు ఒక ఇమెయిల్ పంపుతుంది. ATmega16 మరియు ESP8266 NodeMCU UART సీరియల్ కమ్యూనికేషన్ ద్వారా కమ్యూనికేట్ చేస్తుంది. ఏ కమ్యూనికేషన్ ప్రోటోకాల్ను SPme, I2C లేదా UART వంటి ATmega16 మరియు ESP8266 NodeMCU ఇంటర్ఫేస్ చేయడానికి ఉపయోగించవచ్చు.
ప్రారంభించే ముందు గుర్తుంచుకోవలసిన విషయాలు
ఈ ప్రాజెక్ట్లో ఉపయోగించిన Atmega16 మైక్రోకంట్రోలర్ 5V లాజిక్ స్థాయిలో పనిచేస్తుందని గమనించండి, అయితే ESP8266 NodeMCU 3.3V లాజిక్ స్థాయిలో పనిచేస్తుంది. మైక్రోకంట్రోలర్ల యొక్క తర్కం స్థాయిలు భిన్నంగా ఉంటాయి, ఇవి Atmega16 మరియు ESP8266 NodeMCU ల మధ్య కొంత దుర్వినియోగానికి కారణమవుతాయి లేదా సరైన లాజిక్ స్థాయిని నిర్వహించకపోతే డేటా నష్టం కూడా ఉంటుంది.
అయితే మైక్రోకంట్రోలర్ రెండింటి యొక్క డేటాషీట్ల ద్వారా వెళ్ళిన తరువాత, ESP8266 నోడ్ఎంసియు యొక్క అన్ని పిన్స్ వోల్టేజ్ స్థాయి నుండి 6 వి వరకు తట్టుకోగలవు కాబట్టి మేము ఎటువంటి లాజిక్ లెవల్ షిఫ్టింగ్ లేకుండా ఇంటర్ఫేస్ చేయగలమని కనుగొన్నాము. కాబట్టి 5 వి లాజిక్ స్థాయితో ముందుకు సాగడం మంచిది. అలాగే, 2V పైన ఉన్న వోల్టేజ్ స్థాయిని లాజిక్ స్థాయి '1' గా మరియు ESP8266 నోడ్ఎంసియు 3.3 V పై నడుస్తుందని Atmega16 యొక్క డేటాషీట్ స్పష్టంగా పేర్కొంది, అంటే ESP8266 NodeMCU 3.3V ని ప్రసారం చేస్తుంటే Atmega16 దానిని లాజిక్ స్థాయి '1' గా తీసుకోవచ్చు. కాబట్టి లాజిక్ లెవల్ షిఫ్టింగ్ ఉపయోగించకుండా కమ్యూనికేషన్ సాధ్యమవుతుంది. మీరు 5 నుండి 3.3V వరకు లాజిక్ స్థాయి షిఫ్టర్ను ఉపయోగించడానికి ఉచితం.
అన్ని ESP8266 సంబంధిత ప్రాజెక్టులను ఇక్కడ తనిఖీ చేయండి.
భాగాలు అవసరం
- ESP8266 నోడ్ఎంసియు మాడ్యూల్
- Atmega16 మైక్రోకంట్రోలర్ IC
- 16Mhz క్రిస్టల్ ఓసిలేటర్
- రెండు 100 ఎన్ఎఫ్ కెపాసిటర్లు
- రెండు 22 పిఎఫ్ కెపాసిటర్లు
- నొక్కుడు మీట
- జంపర్ వైర్లు
- బ్రెడ్బోర్డ్
- USBASP v2.0
- లెడ్ (ఏదైనా రంగు)
సర్క్యూట్ రేఖాచిత్రం
ఇమెయిల్ పంపడం కోసం SMTP2GO సర్వర్ను ఏర్పాటు చేస్తోంది
ప్రోగ్రామింగ్ ప్రారంభించడానికి ముందు మాకు ESP8266 ద్వారా మెయిల్ పంపడానికి SMTP సర్వర్ అవసరం. ఆన్లైన్లో ఎస్ఎమ్టిపి సర్వర్లు పుష్కలంగా అందుబాటులో ఉన్నాయి. ఇక్కడ, smtp2go.com SMTP సర్వర్గా ఉపయోగించబడుతుంది.
కాబట్టి కోడ్ రాయడానికి ముందు, SMTP యూజర్ నేమ్ మరియు పాస్వర్డ్ అవసరం. ఈ రెండు ఆధారాలను పొందడానికి విజయవంతంగా ఇమెయిల్లను పంపడం కోసం SMTP సర్వర్ను సెటప్ చేసే క్రింది దశలను అనుసరించండి.
దశ 1: - ఉచిత ఖాతాతో నమోదు చేసుకోవడానికి “SMTP2GO Free ప్రయత్నించండి” పై క్లిక్ చేయండి.
దశ 2: - ఒక విండో పాపప్ అవుతుంది, ఇక్కడ మీరు పేరు, ఇమెయిల్ ఐడి మరియు పాస్వర్డ్ వంటి కొన్ని ఆధారాలను నమోదు చేయాలి.
దశ 3: - సైన్ అప్ చేసిన తర్వాత, మీరు ఎంటర్ చేసిన ఇమెయిల్లో సక్రియం అభ్యర్థనను అందుకుంటారు. ఇమెయిల్లోని ధృవీకరించు లింక్ నుండి మీ ఖాతాను సక్రియం చేసి, ఆపై మీ ఇమెయిల్ ఐడి మరియు పాస్వర్డ్ ఉపయోగించి లాగిన్ అవ్వండి.
దశ 4: - మీరు లాగిన్ అయిన తర్వాత, మీ SMTP వినియోగదారు పేరు మరియు SMTP పాస్వర్డ్ మీకు లభిస్తుంది. మరింత ఉపయోగం కోసం వీటిని మీ నోట్ప్యాడ్కు గుర్తుంచుకోండి లేదా కాపీ చేయండి. దీని తరువాత 'ముగింపు' పై క్లిక్ చేయండి.
దశ 5: - ఇప్పుడు ఎడమ యాక్సెస్ బార్లో, “సెట్టింగులు” పై క్లిక్ చేసి, ఆపై “యూజర్స్” పై క్లిక్ చేయండి. ఇక్కడ, మీరు SMTP సర్వర్ మరియు PORT నంబర్కు సంబంధించిన సమాచారాన్ని చూడవచ్చు. ఇది సాధారణంగా క్రింది విధంగా ఉంటుంది:
ఎన్కోడ్ వినియోగదారు పేరు మరియు పాస్వర్డ్
ఇప్పుడు మనం ASCII అక్షర సమితితో బేస్ 64 ఎన్కోడ్ చేసిన ఆకృతిలో వినియోగదారు పేరు మరియు పాస్వర్డ్ను మార్చాలి. ఇమెయిల్ మరియు పాస్వర్డ్ను బేస్ 64 ఎన్కోడ్ చేసిన ఫార్మాట్లో మార్చడానికి BASE64ENCODE (https://www.base64encode.org/) అనే వెబ్సైట్ను ఉపయోగించండి. మరింత ఉపయోగం కోసం ఎన్కోడ్ చేసిన వినియోగదారు పేరు మరియు పాస్వర్డ్ను కాపీ చేయండి:
ఈ దశలను పూర్తి చేసిన తరువాత ESP8266 NodeMCU మరియు Atmega16 IC యొక్క ప్రోగ్రామింగ్ కోసం ముందుకు సాగండి.
ప్రోగ్రామింగ్ AVR మైక్రోకంట్రోలర్ Atmega16 మరియు ESP8266
ప్రోగ్రామింగ్లో రెండు ప్రోగ్రామ్లు ఉంటాయి, ఒకటి అట్మెగా 16 సూచనల పంపినవారిగా పనిచేయడానికి మరియు రెండవది సూచనల స్వీకర్తగా పనిచేయడానికి ESP8266 నోడ్ఎంసియుకి. రెండు ప్రోగ్రామ్లు ఈ ట్యుటోరియల్ చివరిలో ఇవ్వబడ్డాయి. Arduino IDE ESP8266 ను కాల్చడానికి మరియు USBasp ప్రోగ్రామర్ మరియు Atmega16 ను కాల్చడానికి Atmel Studio ఉపయోగించబడుతుంది.
ఒక పుష్ బటన్ మరియు LED లు Atmega16 తో ఇంటర్ఫేస్ చేయబడ్డాయి, తద్వారా మేము పుష్ బటన్ను నొక్కినప్పుడు Atmega16 NodeMCU కు సూచనలను పంపుతుంది మరియు NodeMCU తదనుగుణంగా ఇమెయిల్ పంపుతుంది. డేటా ట్రాన్స్మిషన్ యొక్క స్థితిని LED చూపిస్తుంది. కాబట్టి ప్రోగ్రామింగ్ Atmega16 మరియు ESP8266 NodeMCU ను ప్రారంభిద్దాం.
ఇమెయిల్ పంపడం కోసం ATmega16 ప్రోగ్రామింగ్
ఆపరేటింగ్ ఫ్రీక్వెన్సీని నిర్వచించడం మరియు అవసరమైన అన్ని లైబ్రరీలతో సహా ప్రారంభించండి. ఉపయోగించిన లైబ్రరీ అట్మెల్ స్టూడియో ప్యాకేజీతో వస్తుంది.
# F_CPU 16000000UL ని నిర్వచించండి # చేర్చండి # చేర్చండి
దీని తరువాత, ESP8266 తో కమ్యూనికేట్ చేయడానికి బాడ్ రేటును నిర్వచించాలి. బాడ్ రేటు కంట్రోలర్లు అంటే Atmega16 మరియు NodeMCU రెండింటికీ సమానంగా ఉండాలని గమనించండి. ఈ ట్యుటోరియల్లో, బౌడ్రేట్ 9600.
# BAUD_PRESCALE ని నిర్వచించండి ((( F_CPU / (USART_BAUDRATE * 16UL))) - 1)
బాడ్ రేట్ విలువలను లోడ్ చేయడానికి UBRRL మరియు UBRRH అనే రెండు రిజిస్టర్లు ఉపయోగించబడతాయి. తక్కువ 8-బిట్స్ బాడ్ రేటు UBRRL లో లోడ్ అవుతుంది మరియు ఎగువ 8-బిట్స్ బాడ్ రేటు UBRRH లో లోడ్ అవుతుంది. సరళత కోసం, UART ప్రారంభించడం యొక్క ఫంక్షన్ చేయండి, ఇక్కడ బాడ్ రేటు విలువ ద్వారా ఇవ్వబడుతుంది. UART ప్రారంభ ఫంక్షన్లో ఇవి ఉంటాయి:
- రిజిస్టర్ UCSRB లో ట్రాన్స్మిషన్ మరియు రిసెప్షన్ బిట్లను అమర్చుట.
- రిజిస్టర్ UCSRC లో 8-బిట్ అక్షరాల పరిమాణాలను ఎంచుకోవడం.
- UBRRL మరియు UBRRH రిజిస్టర్లో బాడ్ రేటు యొక్క దిగువ మరియు ఎగువ బిట్లను లోడ్ చేస్తోంది.
UART_init (దీర్ఘ USART_BAUDRATE) { UCSRB - = (1 << RXEN) - (1 << TXEN); UCSRC - = (1 << URSEL) - (1 << UCSZ0) - (1 << UCSZ1); UBRRL = BAUD_PRESCALE; UBRRH = (BAUD_PRESCALE >> 8); }
తదుపరి దశ అక్షరాలను ప్రసారం చేయడానికి ఫంక్షన్ను ఏర్పాటు చేస్తుంది. ఈ దశలో ఖాళీ బఫర్ పూర్తయ్యే వరకు వేచి ఉండి, ఆపై చార్ విలువను UDR రిజిస్టర్కు లోడ్ చేస్తుంది. చార్ ఫంక్షన్లో మాత్రమే పాస్ చేయబడుతుంది.
UART_TxChar (చార్ సి) { అయితే (! (UCSRA & (1 <
అక్షరాలను బదిలీ చేయడానికి బదులుగా, క్రింద ఉన్న తీగలను పంపడానికి ఒక ఫంక్షన్ చేయండి.
శూన్యమైన UART_sendString (char * str) { సంతకం చేయని చార్ s = 0; (str! = 0) { UART_TxChar (str); s ++; } }
లో main () ఫంక్షన్, కాల్ UART_init () ప్రసార ప్రారంభించడానికి. మరియు ఎలా NodeMCU పరీక్ష స్ట్రింగ్ పంపడం ద్వారా echo పరీక్ష చేయండి.
UART_init (9600); UART_sendString ("TEST");
LED మరియు పుష్ బటన్ కోసం GPIO పిన్ను కాన్ఫిగర్ చేయడం ప్రారంభించండి.
DDRA - = (1 << 0); DDRA & = ~ (1 << 1); పోర్టా - = (1 << 1);
పుష్ బటన్ నొక్కినట్లయితే, LED ని ఆన్ చేసి ఉంచండి మరియు పుష్ బటన్ నొక్కినట్లయితే “SEND” ఆదేశాన్ని నోడ్ఎంసియుకు ప్రసారం చేయడం ప్రారంభించండి మరియు LED ఆపివేయబడుతుంది.
if (bit_is_clear (PINA, 1)) { PORTA - = (1 << 0); _delay_ms (20); } else { PORTA & = ~ (1 << 0); _delay_ms (50); UART_sendString ("SEND"); _delay_ms (1200); }
ప్రోగ్రామింగ్ ESP8266 NodeMCU
ప్రోగ్రామింగ్ NodeMCU లో Atmega16 నుండి కమాండ్ యొక్క రిసెప్షన్ మరియు ఒక SMTP సర్వర్ ఉపయోగించి ఇమెయిల్ పంపడం ఉన్నాయి.
మొదట, WIFI లైబ్రరీని చేర్చండి, ఎందుకంటే ఇంటర్నెట్ ఇమెయిల్ పంపడానికి ఉపయోగించబడుతుంది. విజయవంతమైన కనెక్షన్ కోసం మీ WIFI ssid మరియు పాస్వర్డ్ను నిర్వచించండి. SMTP సర్వర్ను కూడా నిర్వచించండి.
# చేర్చండి
లో సెటప్ () ఫంక్షన్, సెట్ వైఫై మరియు ప్రదర్శన IP చిరునామా 9600 గా Atmega16 బాడ్ రేటు లాగానే కనెక్ట్ బాడ్ రేటు.
సీరియల్.బెగిన్ (9600); సీరియల్.ప్రింట్ ("దీనికి కనెక్ట్ చేస్తోంది:"); సీరియల్.ప్రింట్ల్న్ (ssid); WiFi.begin (ssid, password); అయితే (WiFi.status ()! = WL_CONNECTED) { ఆలస్యం (500); సీరియల్.ప్రింట్ ("."); }
లో లూప్ () ఫంక్షన్, స్వీకరించడం Rx పిన్ వద్ద బైట్లు చదవండి మరియు స్ట్రింగ్ రూపం అది మారుస్తాయి.
if (Serial.available ()> 0) { అయితే (Serial.available ()> 0 && index1 <6) { ఆలస్యం (100); inChar = సీరియల్.రెడ్ (); inData = inChar; సూచిక 1 ++; inData = '\ 0'; } variable.toUpperCase (); (బైట్ i = 0; i <6; i ++) { variable.concat (స్ట్రింగ్ (inData)); } సీరియల్.ప్రింట్ ("వేరియబుల్ ="); సీరియల్.ప్రింట్ల్న్ (వేరియబుల్); సీరియల్.ప్రింట్ ("ఇండటా = ="); సీరియల్.ప్రింట్ల్న్ (ఇన్డేటా); ఆలస్యం (20); } స్ట్రింగ్ స్ట్రింగ్ = స్ట్రింగ్ (వేరియబుల్);
స్వీకరించే ఆదేశం సరిపోలితే, పంపిన ఇమెయిల్ () ఫంక్షన్కు కాల్ చేయడం ద్వారా గ్రహీతకు ఇమెయిల్ పంపండి.
if (స్ట్రింగ్ == "SEND") { sendEmail (); సీరియల్.ప్రింట్ ("మెయిల్ దీనికి పంపబడింది:"); సీరియల్.ప్రింట్ల్న్ ("గ్రహీత"); సీరియల్.ప్రింట్ల్న్ (""); }
SMTP సర్వర్ను సెటప్ చేయడం చాలా ముఖ్యం మరియు దీన్ని చేయకుండా, ఇమెయిల్లు పంపబడవు. కమ్యూనికేషన్ చేసేటప్పుడు, రెండు కంట్రోలర్లకు సమానమైన బాడ్ రేట్ను సెట్ చేయండి.
సో ఈ ESP8266 IOT ప్రసారాలకు దీన్ని ప్రారంభించాలి AVR మైక్రోకంట్రోలర్ అంతర్ముఖం చేయవచ్చు ఎలా ఉంది. క్రింద ఇచ్చిన వర్కింగ్ వీడియోను కూడా తనిఖీ చేయండి.