పరికరం ఆపివేయబడకుండా ఎక్కువసేపు నిరంతరం నడుస్తున్న విద్యుత్ వినియోగం క్లిష్టమైన సమస్య. కాబట్టి ఈ సమస్యను అధిగమించడానికి దాదాపు ప్రతి నియంత్రిక స్లీప్ మోడ్తో వస్తుంది, ఇది సరైన విద్యుత్ వినియోగం కోసం ఎలక్ట్రానిక్ గాడ్జెట్లను రూపొందించడానికి డెవలపర్లకు సహాయపడుతుంది. స్లీప్ మోడ్ ఉపయోగించని మాడ్యూల్ను ఆపివేయడం ద్వారా పరికరాన్ని విద్యుత్ పొదుపు మోడ్లో ఉంచుతుంది.
ఇంతకుముందు పవర్ సేవింగ్ కోసం ESP8266 లో డీప్-స్లీప్ మోడ్ను వివరించాము. ఈ రోజు మనం ఆర్డునో స్లీప్ మోడ్స్ గురించి తెలుసుకుంటాము మరియు అమ్మీటర్ ఉపయోగించి విద్యుత్ వినియోగాన్ని ప్రదర్శిస్తాము. ఆర్డునో స్లీప్ మోడ్ను ఆర్డునో పవర్ సేవ్ మోడ్ లేదా ఆర్డునో స్టాండ్బై మోడ్ అని కూడా పిలుస్తారు.
ఆర్డునో స్లీప్ మోడ్లు
స్లీప్ మోడ్లు మైక్రోకంట్రోలర్లో ఉపయోగించని మాడ్యూళ్ళను ఆపడానికి లేదా ఆపివేయడానికి వినియోగదారుని అనుమతిస్తాయి, ఇది విద్యుత్ వినియోగాన్ని గణనీయంగా తగ్గిస్తుంది. Arduino UNO, Arduino Nano మరియు Pro-mini ATmega328P తో వస్తుంది మరియు ఇది బ్రౌన్-అవుట్ డిటెక్టర్ (BOD) ను కలిగి ఉంది, ఇది స్లీప్ మోడ్ సమయంలో సరఫరా వోల్టేజ్ను పర్యవేక్షిస్తుంది.
ATmega328P లో ఆరు స్లీప్ మోడ్లు ఉన్నాయి:
స్లీప్ మోడ్లోకి ప్రవేశించడానికి మేము స్లీప్ మోడ్ కంట్రోల్ రిజిస్టర్ (SMCR.SE) లో స్లీప్ బిట్ను ప్రారంభించాలి. అప్పుడు స్లీప్ మోడ్ సెలెక్ట్ బిట్స్ ఐడిల్, ఎడిసి శబ్దం తగ్గింపు, పవర్-డౌన్, పవర్-సేవ్, స్టాండ్బై మరియు బాహ్య స్టాండ్బై మధ్య స్లీప్ మోడ్ను ఎంచుకుంటాయి.
అంతర్గత లేదా బాహ్య Arduino అంతరాయాలు లేదా రీసెట్ స్లీప్ మోడ్ నుండి Arduino ని మేల్కొల్పుతుంది.
నిష్క్రియ మోడ్
ఐడిల్ స్లీప్ మోడ్లోకి ప్రవేశించడానికి, కంట్రోలర్ '000' యొక్క SM బిట్లను వ్రాయండి. ఈ మోడ్ CPU ని ఆపివేస్తుంది కాని SPI, 2-వైర్ సీరియల్ ఇంటర్ఫేస్, USART, వాచ్డాగ్, కౌంటర్లు, అనలాగ్ కంపారిటర్ పనిచేయడానికి అనుమతిస్తుంది. నిష్క్రియ మోడ్ ప్రాథమికంగా CLK CPU మరియు CLK FLASH ని ఆపివేస్తుంది. బాహ్య లేదా అంతర్గత అంతరాయాన్ని ఉపయోగించడం ద్వారా ఎప్పుడైనా ఆర్డునోను మేల్కొలపవచ్చు.
నిష్క్రియ స్లీప్ మోడ్ కోసం ఆర్డునో కోడ్:
LowPower.idle (SLEEP_8S, ADC_OFF, TIMER2_OFF, TIMER1_OFF, TIMER0_OFF, SPI_OFF, USART0_OFF, TWI_OFF);
ఆర్డునోలో వివిధ తక్కువ శక్తి మోడ్లను సెట్ చేయడానికి లైబ్రరీ ఉంది. కాబట్టి మొదట ఇచ్చిన లింక్ నుండి లైబ్రరీని డౌన్లోడ్ చేసి, ఇన్స్టాల్ చేయండి మరియు ఆర్డునోను ఐడిల్ స్లీప్ మోడ్లో ఉంచడానికి పై కోడ్ను ఉపయోగించండి. పై కోడ్ను ఉపయోగించడం ద్వారా, ఆర్డునో ఎనిమిది సెకన్ల నిద్రలోకి వెళ్లి స్వయంచాలకంగా మేల్కొంటుంది. ఐడిల్ మోడ్ అన్ని టైమర్లను ఆపివేస్తుందని మీరు కోడ్లో చూడగలిగినట్లుగా, SPI, USART మరియు TWI (2-వైర్ ఇంటర్ఫేస్).
ADC శబ్దం తగ్గింపు మోడ్
ఈ స్లీప్ మోడ్ను ఉపయోగించడానికి SM బిట్ను '001' కు వ్రాయండి. మోడ్ CPU ని ఆపివేస్తుంది, అయితే ADC, బాహ్య అంతరాయం, USART, 2-వైర్ సీరియల్ ఇంటర్ఫేస్, వాచ్డాగ్ మరియు కౌంటర్లు పనిచేయడానికి అనుమతిస్తాయి. ADC శబ్దం తగ్గింపు మోడ్ ప్రాథమికంగా CLK CPU, CLK I / O మరియు CLK FLASH ని ఆపివేస్తుంది. మేము ఈ క్రింది పద్ధతుల ద్వారా ADC శబ్దం తగ్గింపు మోడ్ నుండి నియంత్రికను మేల్కొలపవచ్చు:
- బాహ్య రీసెట్
- వాచ్డాగ్ సిస్టమ్ రీసెట్
- వాచ్డాగ్ అంతరాయం
- బ్రౌన్-అవుట్ రీసెట్
- 2-వైర్ సీరియల్ ఇంటర్ఫేస్ చిరునామా సరిపోలిక
- INT లో బాహ్య స్థాయి అంతరాయం
- పిన్ మార్పు అంతరాయం
- టైమర్ / కౌంటర్ అంతరాయం
- SPM / EEPROM రెడీ ఇంటరప్ట్
పవర్-డౌన్ మోడ్
పవర్-డౌన్ మోడ్ ఉత్పత్తి చేసిన అన్ని గడియారాలను ఆపివేస్తుంది మరియు అసమకాలిక మాడ్యూళ్ల ఆపరేషన్ను మాత్రమే అనుమతిస్తుంది. SM బిట్లను '010' కు వ్రాయడం ద్వారా దీన్ని ప్రారంభించవచ్చు. ఈ మోడ్లో, బాహ్య ఓసిలేటర్ ఆఫ్ అవుతుంది, కానీ 2-వైర్ సీరియల్ ఇంటర్ఫేస్, వాచ్డాగ్ మరియు బాహ్య అంతరాయం పనిచేయడం కొనసాగుతుంది. దిగువ పద్ధతిలో ఒకటి మాత్రమే దీన్ని నిలిపివేయవచ్చు:
- బాహ్య రీసెట్
- వాచ్డాగ్ సిస్టమ్ రీసెట్
- వాచ్డాగ్ అంతరాయం
- బ్రౌన్-అవుట్ రీసెట్
- 2-వైర్ సీరియల్ ఇంటర్ఫేస్ చిరునామా సరిపోలిక
- INT లో బాహ్య స్థాయి అంతరాయం
- పిన్ మార్పు అంతరాయం
పవర్-డౌన్ ఆవర్తన మోడ్ కోసం ఆర్డునో కోడ్:
లోపవర్.పవర్డౌన్ (SLEEP_8S, ADC_OFF, BOD_OFF);
పవర్-డౌన్ మోడ్ను ఆన్ చేయడానికి కోడ్ ఉపయోగించబడుతుంది. పై కోడ్ను ఉపయోగించడం ద్వారా, ఆర్డునో ఎనిమిది సెకన్ల నిద్రలోకి వెళ్లి స్వయంచాలకంగా మేల్కొంటుంది.
మేము పవర్-డౌన్ మోడ్ను అంతరాయంతో కూడా ఉపయోగించవచ్చు, ఇక్కడ ఆర్డునో నిద్రలోకి వెళుతుంది కాని బాహ్య లేదా అంతర్గత అంతరాయం అందించినప్పుడు మాత్రమే మేల్కొంటుంది.
పవర్-డౌన్ ఇంటరప్ట్ మోడ్ కోసం ఆర్డునో కోడ్:
void loop () { // తక్కువ అంతరాయాన్ని ప్రేరేపించడానికి మేల్కొలుపు పిన్ను అనుమతించండి. అటాచ్ఇంటరప్ట్ (0, వేక్అప్, తక్కువ); లోపవర్.పవర్డౌన్ (SLEEP_FOREVER, ADC_OFF, BOD_OFF); // మేల్కొలుపు పిన్లో బాహ్య పిన్ అంతరాయాన్ని నిలిపివేయండి. detachInterrupt (0); // ఇక్కడ ఏదైనా చేయండి }
విద్యుత్తుని ఆదా చేయు విదము
పవర్-సేవ్ మోడ్లోకి ప్రవేశించడానికి మనం SM పిన్ను '011' కు వ్రాయాలి. ఈ స్లీప్ మోడ్ పవర్-డౌన్ మోడ్ను పోలి ఉంటుంది, ఒక మినహాయింపుతో మాత్రమే అంటే టైమర్ / కౌంటర్ ప్రారంభించబడితే, అది నిద్ర సమయంలో కూడా నడుస్తున్న స్థితిలో ఉంటుంది. టైమర్ ఓవర్ఫ్లో ఉపయోగించి పరికరాన్ని మేల్కొలపవచ్చు.
మీరు సమయం / కౌంటర్ ఉపయోగించకపోతే, పవర్-సేవ్ మోడ్కు బదులుగా పవర్-డౌన్ మోడ్ను ఉపయోగించమని సిఫార్సు చేయబడింది.
స్టాండ్బై మోడ్
స్టాండ్బై మోడ్ పవర్-డౌన్ మోడ్కు సమానంగా ఉంటుంది, వాటి మధ్య ఉన్న తేడా ఏమిటంటే ఈ మోడ్లో బాహ్య ఓసిలేటర్ నడుస్తూ ఉంటుంది. ఈ మోడ్ను ప్రారంభించడానికి SM పిన్ను '110' కు వ్రాయండి.
విస్తరించిన స్టాండ్బై మోడ్
ఈ మోడ్ పవర్-సేవ్ మోడ్కు సమానంగా ఉంటుంది, ఓసిలేటర్ నడుస్తూనే ఉంటుంది. మేము SM పిన్ను '111' కు వ్రాసేటప్పుడు పరికరం విస్తరించిన స్టాండ్బై మోడ్లోకి ప్రవేశిస్తుంది. పొడిగించిన స్టాండ్బై మోడ్ నుండి మేల్కొలపడానికి పరికరం ఆరు గడియార చక్రాలను తీసుకుంటుంది.
సర్క్యూట్ రేఖాచిత్రం ప్రకారం సర్క్యూట్ను కనెక్ట్ చేసిన తరువాత, ఈ ప్రాజెక్ట్ యొక్క అవసరాలు క్రింద ఉన్నాయి. Arduino IDE ని ఉపయోగించి స్లీప్ మోడ్ కోడ్ను Arduino లోకి అప్లోడ్ చేయండి. Arduino నిష్క్రియ స్లీప్ మోడ్లోకి ప్రవేశిస్తుంది. అప్పుడు USB అమ్మీటర్లో ప్రస్తుత వినియోగాన్ని తనిఖీ చేయండి. లేకపోతే, మీరు దాని కోసం బిగింపు మీటర్ను కూడా ఉపయోగించవచ్చు.
భాగాలు అవసరం
- ఆర్డునో UNO
- DHT11 ఉష్ణోగ్రత మరియు తేమ సెన్సార్
- USB అమ్మీటర్
- బ్రెడ్బోర్డ్
- వైర్లను కనెక్ట్ చేస్తోంది
Arduino తో DHT11 ఉపయోగించడం గురించి మరింత తెలుసుకోవడానికి, లింక్ను అనుసరించండి. స్లీప్ మోడ్లో ఆర్డునో వినియోగించే వోల్టేజ్ను కొలవడానికి ఇక్కడ మేము యుఎస్బి అమ్మీటర్ను ఉపయోగిస్తున్నాము.
USB అమ్మీటర్
USB అమ్మీటర్ అనేది ఏదైనా USB పోర్ట్ నుండి వోల్టేజ్ మరియు కరెంట్ను కొలవడానికి ఉపయోగించే ప్లగ్ మరియు ప్లే పరికరం. డాంగిల్ USB విద్యుత్ సరఫరా (కంప్యూటర్ USB పోర్ట్) మరియు USB పరికరం (Arduino) మధ్య ప్లగ్ చేస్తుంది. ఈ పరికరం పవర్ పిన్తో 0.05ohm రెసిస్టర్ను కలిగి ఉంది, దీని ద్వారా ఇది ప్రస్తుత డ్రా చేసిన విలువను కొలుస్తుంది. పరికరం నాలుగు ఏడు సెగ్మెంట్ డిస్ప్లేతో వస్తుంది, ఇది జతచేయబడిన పరికరం వినియోగించే ప్రస్తుత మరియు వోల్టేజ్ విలువలను తక్షణమే ప్రదర్శిస్తుంది. ఈ విలువలు ప్రతి మూడు సెకన్ల వ్యవధిలో తిరుగుతాయి.
స్పెసిఫికేషన్:
- ఆపరేటింగ్ వోల్టేజ్ పరిధి: 3.5 వి నుండి 7 వి
- ప్రస్తుత ప్రస్తుత రేటింగ్: 3A
- కాంపాక్ట్ పరిమాణం, తీసుకువెళ్ళడం సులభం
- బాహ్య సరఫరా అవసరం లేదు
అప్లికేషన్:
- USB పరికరాలను పరీక్షిస్తోంది
- లోడ్ స్థాయిలను తనిఖీ చేస్తోంది
- బ్యాటరీ ఛార్జర్లను డీబగ్గింగ్ చేస్తోంది
- కర్మాగారాలు, ఎలక్ట్రానిక్స్ ఉత్పత్తులు మరియు వ్యక్తిగత ఉపయోగం
సర్క్యూట్ రేఖాచిత్రం
Arduino డీప్ స్లీప్ మోడ్లను ప్రదర్శించడానికి పై సెటప్లో, Arduino USB ammeter లోకి ప్లగ్ చేయబడింది. అప్పుడు USB అమ్మీటర్ ల్యాప్టాప్ యొక్క USB పోర్టులో ప్లగ్ చేయబడుతుంది. DHT11 సెన్సార్ యొక్క డేటా పిన్ Arduino యొక్క D2 పిన్కు జోడించబడింది.
కోడ్ వివరణ
వీడియోతో ప్రాజెక్ట్ కోసం పూర్తి కోడ్ చివరిలో ఇవ్వబడుతుంది.
DHT11 సెన్సార్ మరియు లైబ్రరీ చేర్చి కోడ్ ప్రారంభ LowPower లైబ్రరీ. తక్కువ శక్తి లైబ్రరీని డౌన్లోడ్ చేయడానికి లింక్ను అనుసరించండి. అప్పుడు మేము DHT11 యొక్క డేటా పిన్ అనుసంధానించబడిన DHT వస్తువును సృష్టించిన Arduino పిన్ సంఖ్యను నిర్వచించాము.
# చేర్చండి
లో గర్జన సెటప్ ఫంక్షన్, మేము ఉపయోగించి సీరియల్ కమ్యూనికేషన్ ప్రారంభించారు serial.begin (9600), ఇక్కడ 9600 బాడ్ రేటు ఉంది. మేము స్లీప్ మోడ్ కోసం సూచికగా ఆర్డునో యొక్క అంతర్నిర్మిత LED ని ఉపయోగిస్తున్నాము. కాబట్టి, మేము పిన్ను అవుట్పుట్గా సెట్ చేసాము మరియు డిజిటల్ రైట్ తక్కువ.
శూన్య సెటప్ () { Serial.begin (9600); పిన్మోడ్ (LED_BUILTIN, OUTPUT); డిజిటల్ రైట్ (LED_BUILTIN, LOW); }
లో గర్జన లూప్ ఫంక్షన్, మేము సెన్సార్ నుండి అంతర్నిర్మిత LED HIGH దానిస్థానంలో ఉష్ణోగ్రత మరియు తేమ డేటా చేస్తున్నాము. ఇక్కడ, DHT.read11 (); కమాండ్ సెన్సార్ నుండి డేటాను చదువుతోంది. డేటాను లెక్కించిన తర్వాత, విలువలను ఏదైనా వేరియబుల్లో సేవ్ చేయడం ద్వారా దాన్ని తనిఖీ చేయవచ్చు. ఇక్కడ, మేము రెండు ఫ్లోట్ రకం వేరియబుల్స్ 't' మరియు 'h' తీసుకున్నాము . అందువల్ల, ఉష్ణోగ్రత మరియు తేమ డేటా సీరియల్ మానిటర్లో సీరియల్గా ముద్రించబడుతుంది.
void loop () { Serial.println ("DHT11 నుండి డేటాను పొందండి"); ఆలస్యం (1000); డిజిటల్ రైట్ (LED_BUILTIN, HIGH); int readData = DHT.read11 (డేటాపిన్); // DHT11 ఫ్లోట్ t = DHT.temperature; ఫ్లోట్ h = DHT.humidity; సీరియల్.ప్రింట్ ("ఉష్ణోగ్రత ="); సీరియల్.ప్రింట్ (టి); సీరియల్.ప్రింట్ ("సి -"); సీరియల్.ప్రింట్ ("తేమ ="); సీరియల్.ప్రింట్ (h); సీరియల్.ప్రింట్ల్న్ ("%"); ఆలస్యం (2000);
స్లీప్ మోడ్ను ప్రారంభించే ముందు మనం "ఆర్డునో: - నేను ఒక ఎన్ఎపి కోసం వెళుతున్నాను" అని ముద్రించి, ఎల్ఇడి లో నిర్మించాము. ఆ తరువాత కోడ్లో క్రింద పేర్కొన్న ఆదేశాన్ని ఉపయోగించి Arduino స్లీప్ మోడ్ ప్రారంభించబడుతుంది.
దిగువ కోడ్ Arduino యొక్క నిష్క్రియ ఆవర్తన స్లీప్ మోడ్ను ప్రారంభిస్తుంది మరియు ఎనిమిది సెకన్ల నిద్రను ఇస్తుంది. ఇది ADC, టైమర్స్, SPI, USART, 2-వైర్ ఇంటర్ఫేస్ను OFF కండిషన్గా మారుస్తుంది.
అప్పుడు అది స్వయంచాలకంగా 8 సెకన్ల తర్వాత నిద్ర నుండి ఆర్డునోను మేల్కొలిపి “ఆర్డునో: - హే ఐ ఇప్పుడే మేల్కొన్నాను” అని ముద్రించండి .
Serial.println ("Arduino: - నేను ఒక ఎన్ఎపి కోసం వెళుతున్నాను"); ఆలస్యం (1000); డిజిటల్ రైట్ (LED_BUILTIN, LOW); LowPower.idle (SLEEP_8S, ADC_OFF, TIMER2_OFF, TIMER1_OFF, TIMER0_OFF, SPI_OFF, USART0_OFF, TWI_OFF); Serial.println ("Arduino: - హే ఐ జస్ట్ మేల్కొన్నాను"); సీరియల్.ప్రింట్ల్న్ (""); ఆలస్యం (2000); }
కాబట్టి ఈ కోడ్ను ఉపయోగించడం ద్వారా ఆర్డునో ఒక నిమిషంలో 24 సెకన్లు మాత్రమే మేల్కొంటుంది మరియు మిగిలిన 36 సెకన్ల పాటు స్లీప్ మోడ్లో ఉంటుంది, ఇది ఆర్డునో వాతావరణ కేంద్రం వినియోగించే శక్తిని గణనీయంగా తగ్గిస్తుంది.
అందువల్ల, మేము స్లీప్ మోడ్తో ఆర్డునోను ఉపయోగిస్తే, మేము పరికర రన్టైమ్ను రెట్టింపు చేయవచ్చు.