PIR-bevegelsessensor med ESP32 som bruker MicroPython og Thonny IDE

Pir Bevegelsessensor Med Esp32 Som Bruker Micropython Og Thonny Ide



ESP32 kan koble til flere eksterne enheter for å kontrollere og lese forskjellige sensorer. PIR eller bevegelsessensor er et av eksemplene vi kan koble til ESP32 for å oppdage bevegelse i et visst utvalg av PIR-sensorer ved hjelp av ESP32.

Før vi begynner å koble ESP32 med PIR-sensor, må vi vite hvordan avbrudd fungerer og hvordan vi leser og håndterer dem i ESP32. La oss diskutere hvordan PIR fungerer med ESP32 i detalj.

Her er innholdet i denne artikkelen:







1: Hva er avbrudd



1.1: Avbryter pins i ESP32



2: Ringe et avbrudd i ESP32 – MicroPython





3: Interfacing PIR-sensor med ESP32 – MicroPython

3.1: PIR-bevegelsessensor (HC-SR501)



3.2: Pinout HC-SR501

3.3: Kode

3.4: Utgang

1: Hva er avbrudd

De fleste hendelsene som skjer i ESP32-programmering kjører sekvensielt, noe som betyr linje for linje kjøring av kode. For å håndtere og kontrollere hendelsene som ikke trenger å kjøre under sekvensiell kjøring av kode an Avbryter er brukt.

For eksempel, hvis vi ønsker å utføre en bestemt oppgave når en spesiell hendelse inntreffer, eller et triggersignal blir gitt til digitale pinner på mikrokontrolleren, bruker vi avbrudd.

Med avbrudd trenger vi ikke kontinuerlig sjekke den digitale tilstanden til ESP32-inngangspinnen. Når et avbrudd oppstår stopper prosessoren hovedprogrammet, og en ny funksjon kalles som er kjent som ISR ( Avbryt servicerutine ). Dette ISR funksjonen håndterer avbruddet som oppstår etter at du går tilbake til hovedprogrammet og begynner å kjøre det. Et av eksemplene på ISR er PIR-bevegelsessensor som genererer et avbrudd når bevegelse oppdages.

1.1: Avbryter pins i ESP32

Et eksternt avbrudd eller maskinvareavbrudd kan være forårsaket av hvilken som helst maskinvaremodul som berøringssensor eller trykknapp. Berøringsavbrudd skjer når en berøring oppdages på ESP32-pinner eller GPIO-avbrudd kan også brukes når en tast eller trykknapp trykkes.

I denne artikkelen vil vi utløse et avbrudd når bevegelsen oppdages ved hjelp av PIR-sensoren med ESP32.

Nesten alle GPIO pinnene bortsett fra 6 SPI integrerte pinner som vanligvis kommer i 36 pin-versjonen av ESP32-kortet kan ikke brukes for å avbryte anrop. Så, for å motta det eksterne avbruddet, er følgende pinner man kan bruke i ESP32:

2: Ringe et avbrudd i ESP32 ved hjelp av MicroPython

For å programmere et ESP32-kort med PIR-sensor ved hjelp av MicroPython-kode. Vi må definere en avbruddsfunksjon. Følgende er noen enkle trinn som hjelper deg med å definere et avbrudd for ESP32-kortet.

Trinn 1: Initialiser funksjonen for avbruddshåndtering: Avbruddshåndteringsfunksjonen bør defineres på en enkel måte slik at den kan kjøres raskt og gå tilbake til hovedprogrammet så raskt som mulig. Dette kan gjøres ved å definere en global variabel slik at den kan nås hvor som helst i koden hvis den kalles.

Her vil vi bruke GPIO pin som en PIR-sensor global variabel. Avbruddsfunksjonen vil ta en pinne som argument og beskrive GPIO-pinnen som gjør at avbruddsfunksjonen oppstår.

def handle_interrupt ( pin ) :

Trinn 2: Konfigurer GPIO-pinnen for et avbrudd: For å få verdien av GPIO-pinne må vi lage et objekt som vil ta innspill fra det ved å bruke Pin.IN som det andre argumentet i pin-klassen vår. Vi kan omdøpe denne til en hvilken som helst annen.

pin = Pin ( 1. 3 , Pin. I )

Trinn 3: Fest avbrudd til GPIO-pinne for PIR-sensor ved hjelp av irq()-metoden:

Ved å bruke kommandoen nedenfor kan vi sette avbruddet til en pinne vi definerte tidligere.

broen. irq ( avtrekker = Pin. IRQ_RISING , handler = handle_avbrudd )

De irq() metoden brukes til å feste avbruddet til pinnen. irq() godtar to forskjellige argumenter:

  • Avtrekker
  • Handler

avtrekker: Dette argumentet forklarer utløsermodusen. Følgende er tre moduser:

  • Pin.IRQ_FALLING: Når en pinne går over fra HØYT til LAV, startes et avbrudd.
  • Pin.IRQ_RISING: Ved pinnens overgang fra LAV til HØY, startes et avbrudd.
  • Pin.IRQ_FALLING|Pin.IRQ_RISING: Utløs avbruddet hver gang en pinne endrer tilstand. Enten pinnen går til HØY eller LAV.

handler: Denne funksjonen vil bli kalt når et avbrudd utløses.

3: Interfacing PIR-sensor med ESP32

Ettersom vi nå har dekket begrepene avbrudd med ESP32 ved bruk av MicroPython, vil vi nå koble PIR-sensoren til ESP32. Her skal vi bruke Pin.IRQ_RISING modus i MicroPython-kode for PIR-sensor fordi vi ønsker å utløse en LED hver gang PIR-sensoren oppdager bevegelse. Denne LED-en vil forbli PÅ i en bestemt tid og deretter slås den AV.

Følgende komponenter vil være nødvendig:

  • ESP32 utviklingskort
  • PIR bevegelsessensor (HC-SR501)
  • 220 Ohm motstand
  • Jumper ledninger
  • Brødbrett
  • LED

Skjematisk for PIR-sensor med ESP32:

Pin-konfigurasjon av ESP32 med PIR-sensor er:

  Tabellbeskrivelse genereres automatisk

3.1: PIR-bevegelsessensor (HC-SR501)

PIR er et akronym for Passive infrarøde sensorer . To pyroelektriske sensorer brukt sammen som vil oppdage mengden varme rundt omgivelsene. Begge disse pyroelektriske sensorene ligger etter hverandre, og når et objekt kommer innenfor deres rekkevidde, vil en endring i varmeenergi eller signalforskjellen mellom begge disse sensorene føre til at PIR-sensorens utgang er LAV. Når PIR ut-pinnen blir LAV, kan vi angi en spesifikk instruksjon som skal utføres (LED-blink).

  Diagrambeskrivelse genereres automatisk

Følgende er egenskapene til PIR-sensoren:

  • Følsomhet kan stilles inn avhengig av plasseringen av prosjektet (som sensing av mus eller bladbevegelse)
  • PIR-sensor kan stilles inn for hvor lenge den oppdager et objekt
  • Mye brukt i hjemmesikkerhetsalarmer og andre termiskbaserte bevegelsesdeteksjonsapplikasjoner.

3.2: Pinout HC-SR501

PIR HC-SR501 kommer med tre pinner. To av dem er strømpinner for Vcc og GND og en er utgangspinnen for triggersignalet.

Følgende er beskrivelsen av PIR-sensorpinner:

Pin Navn Beskrivelse
1 Vcc Inngangspinne for sensor Koble til ESP32 Vin Pin
to UTE Sensorutgang
3 GND Sensor GND

3.3: Kode

Nå for å programmere ESP32, skriv den gitte koden i Thonny IDE-editor eller en annen MicroPython IDE og last den opp til ESP32.

fra maskinimport Pin
fra tid importere søvn
bevegelse = Falsk
def handle_interrupt ( pin ) :
global bevegelse
bevegelse = ekte
global interrupt_pin
interrupt_pin = pin
ledet = Pin ( 4 , Pin. UTE )
broen = Pin ( 1. 3 , Pin. I )
broen. irq ( avtrekker = Pin. IRQ_RISING , handler = handle_avbrudd )
samtidig som ekte :
hvis bevegelse :
skrive ut ( 'BEVEGELSE DETEKTERT' )
ledet. verdi ( 1 )
sove ( 5 )
ledet. verdi ( 0 )
skrive ut ( 'BEVEGELSE STOPPT' )
bevegelse = Falsk

Først importerte vi pin klasse fra maskinmodulen og sove metode for å legge til forsinkelse. Deretter opprettes en variabel med navn bevegelse. Denne variabelen vil oppdage om en bevegelse oppdages eller ikke.

Så laget vi en funksjon handle_avbrudd. Hver gang PIR-sensoren oppdager bevegelse, vil denne funksjonen aktiveres. Den tar en pinne som en inngangsparameter og indikerer pinnen som forårsaker avbruddet.

Med enkle ord hver gang PIR oppdager bevegelse, handle_avbrudd vil sette bevegelsesvariabelen til sann og lagre pinnen som forårsaker avbruddet. En ting å huske erklærer alltid bevegelse variabel som global fordi den er nødvendig gjennom hele koden.

Fremover opprettet vi to pin-objekter, en for å lagre LED-pinner og den andre vil ta PIR-sensorutgang på GPIO pin 13. Videre erklærte vi triggerpinnen i STIGENDE modus.

I Løkke en del av koden, vil den se etter verdien av bevegelsesvariabelen når den blir sann LED vil slå på koblet til pin 4 på ESP32. Hvis bevegelsesstoppet LED vil slå seg AV etter 5 sek.

3.4: Utgang

I utgangsdelen kan vi se at objektet er utenfor rekkevidden til PIR-sensoren, så LED er snudd AV .

Nå vil bevegelsen som oppdages av PIR-sensor-LED-en snu til 5 sek etter det, hvis ingen bevegelse oppdages, vil den forbli AV til neste trigger mottas.

Følgende utgang vises av skall/terminal i Thonny IDE.

  Grafisk brukergrensesnitt, tekst, applikasjon Beskrivelse automatisk generert

Konklusjon

En PIR-sensor med ESP32 kan bidra til å oppdage bevegelse av forskjellige ting. Ved å bruke avbruddsfunksjonen i MicroPython med ESP32 kan vi utløse et svar på en bestemt GPIO-pin. Når endring oppdages, vil avbruddsfunksjonen utløses og en LED vil slå seg PÅ.