PIR-bevægelsessensor med ESP32 ved hjælp af MicroPython og Thonny IDE

Pir Bevaegelsessensor Med Esp32 Ved Hjaelp Af Micropython Og Thonny Ide



ESP32 kan forbinde flere eksterne enheder til at styre og læse forskellige sensorer. PIR eller bevægelsessensor er et af de eksempler, vi kan forbinde med ESP32 for at detektere bevægelse i et bestemt område af PIR-sensorer ved hjælp af ESP32.

Før vi begynder at forbinde ESP32 med PIR-sensor, skal vi vide, hvordan interrupts fungerer, og hvordan man læser og håndterer dem i ESP32. Lad os diskutere arbejdet med PIR med ESP32 i detaljer.

Her er indholdet til denne artikel:







1: Hvad er afbrydelser



1.1: Afbryder pins i ESP32



2: Kald en afbrydelse i ESP32 – MicroPython





3: Grænseflade PIR-sensor med ESP32 – MicroPython

3.1: PIR-bevægelsessensor (HC-SR501)



3.2: Pinout HC-SR501

3.3: Kode

3.4: Output

1: Hvad er afbrydelser

De fleste af de begivenheder, der sker i ESP32-programmering, kører sekventielt, hvilket betyder linje for linje udførelse af kode. For at håndtere og kontrollere de hændelser, der ikke behøver at køre under sekventiel udførelse af kode an Afbryder er brugt.

For eksempel, hvis vi ønsker at udføre en bestemt opgave, når der opstår en speciel begivenhed, eller der gives et triggersignal til mikrocontrollerens digitale ben, bruger vi interrupt.

Med afbrydelse behøver vi ikke løbende at kontrollere den digitale tilstand af ESP32-indgangsstiften. Når der opstår en afbrydelse, stopper processoren hovedprogrammet, og en ny funktion kaldes, som er kendt som ISR ( Afbrydelse af servicerutine ). Dette ISR funktion håndterer afbrydelsen, der forårsages efter det, vender tilbage til hovedprogrammet og begynder at udføre det. Et af eksemplerne på ISR er PIR-bevægelsessensor, som genererer et afbrydelse, når bevægelse detekteres.

1.1: Afbryder pins i ESP32

En ekstern eller hardwareafbrydelse kan være forårsaget af ethvert hardwaremodul såsom berøringssensor eller trykknap. Berøringsafbrydelser sker, når en berøring detekteres på ESP32-benene, eller GPIO-afbrydelser kan også bruges, når der trykkes på en tast eller en trykknap.

I denne artikel vil vi udløse et afbrydelse, når bevægelsen detekteres ved hjælp af PIR-sensoren med ESP32.

Næsten alle GPIO-benene undtagen 6 SPI-integrerede stifter, som normalt kommer i 36 pin-versionen af ​​ESP32-kortet kan ikke bruges med det formål at afbryde opkald. Så for at modtage den eksterne afbrydelse er følgende stifter, man kan bruge i ESP32:

2: Kald en afbrydelse i ESP32 ved hjælp af MicroPython

For at programmere et ESP32-kort med PIR-sensor ved hjælp af MicroPython-kode. Vi skal definere en afbrydelsesfunktion. Følgende er nogle enkle trin, der hjælper med at definere en interrupt for ESP32-kort.

Trin 1: Initialiser afbrydelseshåndteringsfunktionen: Afbrydelseshåndteringsfunktionen bør defineres på en nem måde, så den kan udføres hurtigt og vende tilbage til hovedprogrammet så hurtigt som muligt. Dette kan gøres ved at definere en global variabel, så den kan tilgås overalt i koden, hvis den kaldes.

Her i tilfælde af PIR sensor vil vi bruge GPIO pin som en global variabel. Afbrydelsesfunktionen vil tage en pin som argument og beskrive den GPIO pin, som får afbrydelsesfunktionen til at forekomme.

def handle_interrupt ( pin ) :

Trin 2: Konfigurer GPIO pin til en afbrydelse: For at få værdien af ​​GPIO pin skal vi oprette et objekt, der vil tage input fra det ved hjælp af Pin.IN som det andet argument i vores pin-klasse. Vi kan omdøbe denne med en hvilken som helst anden.

pin = Pin ( 13 , Pin. I )

Trin 3: Tilslut interrupt til GPIO-pin til PIR-sensor ved hjælp af irq()-metoden:

Ved at bruge nedenstående kommando kan vi indstille afbrydelsen til en pin, vi definerede tidligere.

broen. irq ( udløser = Pin. IRQ_RISING , handler = handle_interrupt )

Det irq() metode bruges til at fastgøre afbrydelsen til stiften. irq() accepterer to forskellige argumenter:

  • Udløser
  • Handler

udløser: Dette argument forklarer udløsermåden. Følgende er tre tilstande:

  • Pin.IRQ_FALLING: Når en pin overgår fra HØJ til LAV, startes en afbrydelse.
  • Pin.IRQ_RISING: Ved stiftens overgang fra LAV til HØJ, startes en afbrydelse.
  • Pin.IRQ_FALLING|Pin.IRQ_RISING: Udløs afbrydelsen, når en pin ændrer sin tilstand. Enten går pinden til HØJ eller LAV.

handler: Denne funktion vil blive kaldt, når en afbrydelse udløses.

3: Grænseflade PIR-sensor med ESP32

Da vi nu har dækket begreberne afbrydelse med ESP32 ved hjælp af MicroPython, vil vi nu forbinde PIR-sensoren med ESP32. Her skal vi bruge Pin.IRQ_RISING tilstand i MicroPython-kode til PIR-sensor, fordi vi ønsker at udløse en LED hver gang PIR-sensoren registrerer en bevægelse. Denne LED forbliver tændt i et bestemt tidsrum, hvorefter den slukker.

Følgende komponenter vil være påkrævet:

  • ESP32 udviklingstavle
  • PIR bevægelsessensor (HC-SR501)
  • 220 Ohm modstand
  • Jumper ledninger
  • Brødbræt
  • LED

Skematisk til PIR-sensor med ESP32:

Pin-konfiguration af ESP32 med PIR-sensor er:

  Tabelbeskrivelse genereres automatisk

3.1: PIR-bevægelsessensor (HC-SR501)

PIR er et akronym for Passive infrarøde sensorer . To pyroelektriske sensorer brugt sammen, der vil registrere mængden af ​​varme omkring omgivelserne. Begge disse pyroelektriske sensorer ligger efter hinanden, og når en genstand kommer inden for deres rækkevidde, får en ændring i varmeenergien eller signalforskellen mellem begge disse sensorer, at PIR-sensorens output er LAVT. Når først PIR ud-pinden bliver LAV, kan vi indstille en specifik instruktion til at udføre (LED-blink).

  Diagram Beskrivelse genereres automatisk

Følgende er karakteristika for PIR-sensor:

  • Følsomhed kan indstilles afhængigt af projektets placering (såsom registrering af mus eller bladbevægelse)
  • PIR-sensoren kan indstilles til, hvor længe den detekterer et objekt
  • Udbredt i hjemmesikkerhedsalarmer og andre termisk baserede bevægelsesdetekteringsapplikationer.

3.2: Pinout HC-SR501

PIR HC-SR501 leveres med tre ben. To af dem er strømben til Vcc og GND, og ​​den ene er udgangsbenet til triggersignalet.

Følgende er beskrivelsen af ​​PIR-sensorstifter:

Pin Navn Beskrivelse
1 Vcc Indgangspin for sensor Tilslut til ESP32 Vin Pin
to UD Sensor udgang
3 GND Sensor GND

3.3: Kode

For nu at programmere ESP32 skal du skrive den givne kode i Thonny IDE editor eller en hvilken som helst anden MicroPython IDE og uploade den til ESP32.

fra maskinimport Pin
fra tid importere søvn
bevægelse = Falsk
def handle_interrupt ( pin ) :
global bevægelse
bevægelse = Rigtigt
global interrupt_pin
interrupt_pin = pin
led = Pin ( 4 , Pin. UD )
broen = Pin ( 13 , Pin. I )
broen. irq ( udløser = Pin. IRQ_RISING , handler = handle_interrupt )
mens Rigtigt :
hvis bevægelse :
Print ( 'BEVÆGELSE OPTAGET' )
led. værdi ( 1 )
søvn ( 5 )
led. værdi ( 0 )
Print ( 'BEVÆGELSE STOPPT' )
bevægelse = Falsk

Først importerede vi pin klasse fra maskinmodulet og søvn metode til at tilføje forsinkelse. Dernæst oprettes en variabel med navn bevægelse. Denne variabel vil detektere, om en bevægelse detekteres eller ej.

Så lavede vi en funktion handle_interrupt. Hver gang PIR-sensoren registrerer bevægelse, aktiveres denne funktion. Den tager en pin som inputparameter og angiver den pin, der forårsager afbrydelsen.

Med enkle ord hver gang PIR registrerer bevægelse, handle_interrupt vil indstille bevægelsesvariablen til sand og gemme stiften, som får afbrydelsen til at ske. En ting at huske erklærer altid bevægelse variabel som global, fordi den er nødvendig i hele koden.

Fremadrettet skabte vi to stiftobjekter, en til at gemme LED-stifter og den anden vil tage PIR-sensoroutput på GPIO-ben 13. Yderligere erklærede vi triggerstiften i STIGENDE mode.

I sløjfe en del af koden, vil den tjekke for værdien af ​​bevægelsesvariablen, når den bliver sand, LED vil tænde tilsluttet på ben 4 på ESP32. Hvis bevægelsesstoppet LED slukker efter 5 sek.

3.4: Output

I outputsektionen kan vi se, at objektet er uden for rækkevidde af PIR-sensoren, så den LED er vendt AF .

Nu vil den bevægelse, der registreres af PIR-sensorens LED, vende til 5 sek derefter, hvis der ikke registreres nogen bevægelse, forbliver den AF indtil næste trigger modtages.

Følgende output vises af skal/terminal i Thonny IDE.

  Grafisk brugergrænseflade, tekst, applikation Beskrivelse genereret automatisk

Konklusion

En PIR-sensor med ESP32 kan hjælpe med at registrere bevægelse af forskellige ting. Ved at bruge afbrydelsesfunktionen i MicroPython med ESP32 kan vi udløse et svar på en bestemt GPIO-pin. Når ændringen registreres, vil afbrydelsesfunktionen blive udløst, og en LED vil tænde.