మేము PIR సెన్సార్తో ESP32ని ఇంటర్ఫేస్ చేయడం ప్రారంభించే ముందు, అంతరాయాలు ఎలా పని చేస్తాయి మరియు వాటిని ESP32లో ఎలా చదవాలి మరియు ఎలా నిర్వహించాలి అనే విషయాలను మనం తప్పక తెలుసుకోవాలి. PIR యొక్క పనిని ESP32తో వివరంగా చర్చిద్దాం.
ఈ కథనం యొక్క కంటెంట్ ఇక్కడ ఉంది:
1.1: ESP32లో పిన్లను అంతరాయం కలిగిస్తుంది
2: ESP32 - మైక్రోపైథాన్లో అంతరాయాన్ని కాల్ చేస్తోంది
3: ESP32తో ఇంటర్ఫేసింగ్ PIR సెన్సార్ – మైక్రోపైథాన్
3.1: PIR మోషన్ సెన్సార్ (HC-SR501)
1: అంతరాయాలు అంటే ఏమిటి
ESP32 ప్రోగ్రామింగ్లో జరిగే చాలా ఈవెంట్లు వరుసగా రన్ అవుతాయి అంటే లైన్ బై లైన్ ఎగ్జిక్యూషన్ కోడ్. కోడ్ యొక్క సీక్వెన్షియల్ ఎగ్జిక్యూషన్ సమయంలో అమలు చేయాల్సిన అవసరం లేని ఈవెంట్లను నిర్వహించడానికి మరియు నియంత్రించడానికి అంతరాయాలు ఉపయోగిస్తారు.
ఉదాహరణకు, ఏదైనా ప్రత్యేక సంఘటన జరిగినప్పుడు మనం నిర్దిష్ట పనిని అమలు చేయాలనుకుంటే లేదా మేము అంతరాయాన్ని ఉపయోగించే మైక్రోకంట్రోలర్ యొక్క డిజిటల్ పిన్లకు ట్రిగ్గర్ సిగ్నల్ ఇవ్వబడుతుంది.
అంతరాయంతో మేము ESP32 ఇన్పుట్ పిన్ యొక్క డిజిటల్ స్థితిని నిరంతరం తనిఖీ చేయవలసిన అవసరం లేదు. అంతరాయం సంభవించినప్పుడు, ప్రాసెసర్ ప్రధాన ప్రోగ్రామ్ను నిలిపివేస్తుంది మరియు కొత్త ఫంక్షన్ను ISR అని పిలుస్తారు ( సేవా దినచర్యకు అంతరాయం కలిగించండి ) ఈ ISR ఫంక్షన్ ప్రధాన ప్రోగ్రామ్కు తిరిగి వచ్చిన తర్వాత ఏర్పడిన అంతరాయాన్ని నిర్వహిస్తుంది మరియు దానిని అమలు చేయడం ప్రారంభించండి. ISR యొక్క ఉదాహరణలలో ఒకటి PIR మోషన్ సెన్సార్, ఇది చలనాన్ని గుర్తించిన తర్వాత అంతరాయాన్ని సృష్టిస్తుంది.
1.1: ESP32లో పిన్లను అంతరాయం కలిగిస్తుంది
టచ్ సెన్సార్ లేదా పుష్ బటన్ వంటి ఏదైనా హార్డ్వేర్ మాడ్యూల్ వల్ల బాహ్య లేదా హార్డ్వేర్ అంతరాయం ఏర్పడవచ్చు. ESP32 పిన్స్లో టచ్ గుర్తించబడినప్పుడు టచ్ అంతరాయాలు సంభవిస్తాయి లేదా కీ లేదా పుష్ బటన్ నొక్కినప్పుడు GPIO అంతరాయాన్ని కూడా ఉపయోగించవచ్చు.
ఈ కథనంలో ESP32తో PIR సెన్సార్ని ఉపయోగించి చలనం గుర్తించబడినప్పుడు మేము అంతరాయాన్ని ప్రేరేపిస్తాము.
సాధారణంగా వచ్చే 6 SPI ఇంటిగ్రేటెడ్ పిన్లు మినహా దాదాపు అన్ని GPIO పిన్లు 36 ESP32 బోర్డు యొక్క పిన్ వెర్షన్ అంతరాయం కాలింగ్ ప్రయోజనం కోసం ఉపయోగించబడదు. కాబట్టి, బాహ్య అంతరాయాన్ని స్వీకరించడానికి క్రింది పిన్లు ESP32లో ఉపయోగించవచ్చు:
2: మైక్రోపైథాన్ని ఉపయోగించి ESP32లో అంతరాయాన్ని కాల్ చేస్తోంది
మైక్రోపైథాన్ కోడ్ని ఉపయోగించి PIR సెన్సార్తో ESP32 బోర్డ్ను ప్రోగ్రామ్ చేయడానికి. మేము అంతరాయ ఫంక్షన్ను నిర్వచించాలి. ESP32 బోర్డు కోసం అంతరాయాన్ని నిర్వచించడంలో సహాయపడే కొన్ని సాధారణ దశలు క్రిందివి.
దశ 1: అంతరాయ నిర్వహణ ఫంక్షన్ని ప్రారంభించండి: అంతరాయ హ్యాండ్లింగ్ ఫంక్షన్ని సులభమైన మార్గంలో నిర్వచించాలి, తద్వారా అది వేగంగా అమలు చేయబడుతుంది మరియు వీలైనంత త్వరగా ప్రధాన ప్రోగ్రామ్కి తిరిగి వస్తుంది. గ్లోబల్ వేరియబుల్ని నిర్వచించడం ద్వారా ఇది చేయవచ్చు, కనుక కాల్ చేస్తే కోడ్ లోపల ఎక్కడైనా యాక్సెస్ చేయవచ్చు.
ఇక్కడ PIR సెన్సార్ విషయంలో మేము GPIO పిన్ని a గా ఉపయోగిస్తాము ప్రపంచ వేరియబుల్. అంతరాయ ఫంక్షన్ ఒక పిన్ను ఆర్గ్యుమెంట్గా తీసుకుంటుంది మరియు అంతరాయ ఫంక్షన్కు కారణమయ్యే GPIO పిన్ను వివరిస్తుంది.
def handle_interrupt ( పిన్ ) :దశ 2: అంతరాయం కోసం GPIO పిన్ని సెటప్ చేయండి: GPIO పిన్ యొక్క విలువను పొందడానికి మనం దాని నుండి ఇన్పుట్ తీసుకునే వస్తువును సృష్టించాలి పిన్.IN మా పిన్ క్లాస్లో రెండవ వాదనగా. మేము దీని పేరును వేరే వాటితో మార్చవచ్చు.
పిన్ = పిన్ చేయండి ( 13 , పిన్ చేయండి. IN )దశ 3: irq() పద్ధతిని ఉపయోగించి PIR సెన్సార్ కోసం GPIO పిన్కి అంతరాయాన్ని అటాచ్ చేయండి:
దిగువ ఆదేశాన్ని ఉపయోగించి, అంతరాయాన్ని మనం ముందుగా నిర్వచించిన పిన్కి సెట్ చేయవచ్చు.
వంతెన. irq ( ట్రిగ్గర్ = పిన్ చేయండి. IRQ_RISING , హ్యాండ్లర్ = హ్యాండిల్_ఇంటరప్ట్ )ది irq() పిన్కు అంతరాయాన్ని జోడించడానికి పద్ధతి ఉపయోగించబడుతుంది. irq() రెండు వేర్వేరు వాదనలను అంగీకరిస్తుంది:
- ట్రిగ్గర్
- హ్యాండ్లర్
ట్రిగ్గర్: ఈ వాదన ట్రిగ్గర్ మోడ్ను వివరిస్తుంది. క్రింది మూడు రీతులు ఉన్నాయి:
- పిన్.IRQ_FALLING: పిన్ హై నుండి తక్కువకు మారినప్పుడు, అంతరాయం ప్రారంభమవుతుంది.
- పిన్.IRQ_RISING: పిన్ LOW నుండి HIGHకి మారినప్పుడు, అంతరాయం ప్రారంభమవుతుంది.
- Pin.IRQ_FALLING|Pin.IRQ_RISING: పిన్ దాని స్థితిని మార్చినప్పుడల్లా అంతరాయాన్ని ట్రిగ్గర్ చేయండి. పిన్ ఎక్కువ లేదా తక్కువకు వెళుతుంది.
హ్యాండ్లర్: అంతరాయాన్ని ప్రేరేపించిన తర్వాత ఈ ఫంక్షన్ పిలువబడుతుంది.
3: ESP32తో ఇంటర్ఫేసింగ్ PIR సెన్సార్
ఇప్పుడు మేము మైక్రోపైథాన్ని ఉపయోగించి ESP32తో అంతరాయ భావనలను కవర్ చేసాము, ఇప్పుడు మేము PIR సెన్సార్ను ESP32తో ఇంటర్ఫేస్ చేస్తాము. ఇక్కడ మేము ఉపయోగిస్తాము పిన్.IRQ_RISING PIR సెన్సార్ కోసం MicroPython కోడ్లో మోడ్, ఎందుకంటే PIR సెన్సార్ కొంత కదలికను గుర్తించిన ప్రతిసారీ LEDని ట్రిగ్గర్ చేయాలనుకుంటున్నాము. ఈ LED నిర్ణీత సమయం వరకు ఆన్లో ఉంటుంది, ఆపై అది ఆఫ్ అవుతుంది.
కింది భాగాలు అవసరం:
- ESP32 అభివృద్ధి బోర్డు
- PIR మోషన్ సెన్సార్ (HC-SR501)
- 220 ఓం రెసిస్టర్
- జంపర్ వైర్లు
- బ్రెడ్బోర్డ్
- LED
స్కీమాటిక్ ESP32తో PIR సెన్సార్ కోసం:
PIR సెన్సార్తో ESP32 యొక్క పిన్ కాన్ఫిగరేషన్:
3.1: PIR మోషన్ సెన్సార్ (HC-SR501)
PIR అనేది సంక్షిప్త రూపం నిష్క్రియ పరారుణ సెన్సార్లు . రెండు పైరోఎలెక్ట్రిక్ సెన్సార్లు కలిసి ఉపయోగించబడతాయి, ఇవి దాని పరిసరాల చుట్టూ ఉన్న వేడి మొత్తాన్ని గుర్తిస్తాయి. ఈ రెండు పైరోఎలెక్ట్రిక్ సెన్సార్లు ఒకదాని తర్వాత ఒకటి ఉంటాయి మరియు ఒక వస్తువు వాటి పరిధిలోకి వచ్చినప్పుడు ఉష్ణ శక్తిలో మార్పు లేదా ఈ రెండు సెన్సార్ల మధ్య సిగ్నల్ వ్యత్యాసం PIR సెన్సార్ అవుట్పుట్ తక్కువగా ఉంటుంది. ఒకసారి PIR అవుట్ పిన్ తక్కువగా ఉంటే, మేము అమలు చేయడానికి నిర్దిష్ట సూచనను సెట్ చేయవచ్చు (LED బ్లింక్).
PIR సెన్సార్ యొక్క లక్షణాలు క్రింది విధంగా ఉన్నాయి:
- ప్రాజెక్ట్ యొక్క స్థానాన్ని (సెన్సింగ్ మౌస్ లేదా లీఫ్ మూవ్మెంట్ వంటివి) బట్టి సెన్సిటివిటీని సెట్ చేయవచ్చు.
- PIR సెన్సార్ ఒక వస్తువును ఎంతకాలం గుర్తించాలో సెట్ చేయవచ్చు
- గృహ భద్రతా అలారాలు మరియు ఇతర ఉష్ణ ఆధారిత కదలిక గుర్తింపు అప్లికేషన్లలో విస్తృతంగా ఉపయోగించబడుతుంది.
3.2: పిన్అవుట్ HC-SR501
PIR HC-SR501 మూడు పిన్లతో వస్తుంది. వాటిలో రెండు Vcc మరియు GND కోసం పవర్ పిన్లు మరియు ఒకటి ట్రిగ్గర్ సిగ్నల్ కోసం అవుట్పుట్ పిన్.
PIR సెన్సార్ పిన్ల వివరణ క్రింది విధంగా ఉంది:
పిన్ చేయండి | పేరు | వివరణ |
1 | Vcc | సెన్సార్ కోసం ఇన్పుట్ పిన్ ESP32 Vin పిన్కి కనెక్ట్ చేయండి |
రెండు | బయటకు | సెన్సార్ అవుట్పుట్ |
3 | GND | సెన్సార్ GND |
ఇప్పుడు ESP32ని ప్రోగ్రామ్ చేయడానికి, ఇచ్చిన కోడ్ను Thonny IDE ఎడిటర్ లేదా ఏదైనా ఇతర MicroPython IDEలో వ్రాసి ESP32కి అప్లోడ్ చేయండి.
యంత్రం దిగుమతి పిన్ నుండినుండి సమయం నిద్ర దిగుమతి
చలనం = తప్పు
def handle_interrupt ( పిన్ ) :
ప్రపంచ చలనం
చలనం = నిజమే
ప్రపంచ అంతరాయ_పిన్
అంతరాయ_పిన్ = పిన్
దారితీసింది = పిన్ చేయండి ( 4 , పిన్ చేయండి. బయటకు )
వంతెన = పిన్ చేయండి ( 13 , పిన్ చేయండి. IN )
వంతెన. irq ( ట్రిగ్గర్ = పిన్ చేయండి. IRQ_RISING , హ్యాండ్లర్ = హ్యాండిల్_ఇంటరప్ట్ )
అయితే నిజమే :
ఉంటే చలనం :
ముద్రణ ( 'మోషన్ డిటెక్టెడ్' )
దారితీసింది. విలువ ( 1 )
నిద్ర ( 5 )
దారితీసింది. విలువ ( 0 )
ముద్రణ ( 'మోషన్ ఆగిపోయింది' )
చలనం = తప్పు
మొదట, మేము దిగుమతి చేసుకున్నాము పిన్ యంత్రం మాడ్యూల్ నుండి తరగతి మరియు నిద్ర ఆలస్యం జోడించడానికి పద్ధతి. తదుపరి పేరుతో వేరియబుల్ సృష్టించబడుతుంది చలనం. ఈ వేరియబుల్ చలనం గుర్తించబడిందా లేదా అనేది గుర్తిస్తుంది.
అప్పుడు మేము ఒక ఫంక్షన్ సృష్టించాము హ్యాండిల్_ఇంటరప్ట్. PIR సెన్సార్ చలనాన్ని గుర్తించిన ప్రతిసారీ, ఈ ఫంక్షన్ సక్రియం చేయబడుతుంది. ఇది ఇన్పుట్ పారామీటర్గా పిన్ను తీసుకుంటుంది మరియు అంతరాయానికి కారణమయ్యే పిన్ను సూచిస్తుంది.
PIR చలనాన్ని గుర్తించిన ప్రతిసారీ సాధారణ మాటలలో, హ్యాండిల్_ఇంటరప్ట్ మోషన్ వేరియబుల్ను ఒప్పుకు సెట్ చేస్తుంది మరియు అంతరాయాన్ని కలిగించే పిన్ను నిల్వ చేస్తుంది. ఒక్క విషయం గుర్తుంచుకోవాలి ఎల్లప్పుడూ ప్రకటిస్తూ ఉంటుంది చలనం గ్లోబల్ గా వేరియబుల్ ఎందుకంటే ఇది కోడ్ అంతటా అవసరం.
ముందుకు వెళుతున్నప్పుడు మేము రెండు పిన్ ఆబ్జెక్ట్లను సృష్టించాము, ఒకటి LED పిన్లను నిల్వ చేయడానికి మరియు రెండవది GPIO పిన్ 13 వద్ద PIR సెన్సార్ అవుట్పుట్ను తీసుకుంటుంది. ఇంకా మేము ట్రిగ్గర్ పిన్ను డిక్లేర్ చేసాము రైజింగ్ మోడ్.
లో లూప్ కోడ్లో భాగం, ఇది మోషన్ వేరియబుల్ యొక్క విలువను తనిఖీ చేస్తుంది, అది నిజమైతే LED ESP32 యొక్క పిన్ 4 వద్ద కనెక్ట్ చేయబడినప్పుడు ఆన్ చేయబడుతుంది. చలనం ఆగిపోయినట్లయితే LED 5 సెకన్ల తర్వాత ఆఫ్ అవుతుంది.
3.4: అవుట్పుట్
అవుట్పుట్ విభాగంలో ఆబ్జెక్ట్ PIR సెన్సార్ పరిధికి మించి ఉందని మనం చూడవచ్చు LED తిరిగింది ఆఫ్ .
ఇప్పుడు PIR సెన్సార్ LED ద్వారా గుర్తించబడిన చలనం మారుతుంది పై కోసం 5 సెక ఆ తర్వాత చలనం కనుగొనబడకపోతే అది అలాగే ఉంటుంది ఆఫ్ తదుపరి ట్రిగ్గర్ స్వీకరించే వరకు.
కింది అవుట్పుట్ ద్వారా చూపబడింది షెల్/టెర్మినల్ Thonny IDE లో.
ముగింపు
ESP32తో కూడిన PIR సెన్సార్ వివిధ విషయాల కదలికను గుర్తించడంలో సహాయపడుతుంది. ESP32తో MicroPythonలో అంతరాయ ఫంక్షన్ని ఉపయోగించి మనం కొన్ని నిర్దిష్ట GPIO పిన్ వద్ద ప్రతిస్పందనను ట్రిగ్గర్ చేయవచ్చు. మార్పు గుర్తించబడినప్పుడు అంతరాయ ఫంక్షన్ ట్రిగ్గర్ చేయబడుతుంది మరియు LED ఆన్ అవుతుంది.