PIR -Bewegungssensor mit eSptop 10 unter Verwendung von Mikropython und Thonny IDE

PIR -Bewegungssensor mit eSptop 10 unter Verwendung von Mikropython und Thonny IDE
ESP32 kann mehrere externe Geräte mit der Steuerung und dem Lesen verschiedener Sensoren anstellen. PIR oder Bewegungssensor ist eines der Beispiele, die wir mit ESP32 abbauen können, um die Bewegung in einem bestimmten Bereich von PIR -Sensor mit ESP32 zu erkennen.

Bevor wir mit dem PIR -Sensor mit der Schnittstelle von ESP32 beginnen. Lassen Sie uns die Arbeit von PIR mit ESP32 im Detail diskutieren.

Hier ist der Inhalt für diesen Artikel:

1: Was sind Interrupts

1.1: Unterbricht Stifte in ESP32

2: Rufen Sie einen Interrupt in ESP32 - Micropython an

3: Schnittstellenpir -Sensor mit ESP32 - Mikropython

3.1: PIR-Bewegungssensor (HC-SR501)

3.2: Pinout HC-SR501

3.3: Code

3.4: Ausgabe

1: Was sind Interrupts

Die meisten Ereignisse, die in ESP32 -Programmierungen nacheinander stattfinden. Um die Ereignisse zu behandeln und zu steuern, die während der sequentiellen Ausführung von Code A nicht ausgeführt werden müssen Interrupts werden verwendet.

Wenn wir beispielsweise eine bestimmte Aufgabe ausführen möchten, wenn ein spezielles Ereignis auftritt oder ein Triggersignal an digitale Stifte des Mikrocontrollers verabreicht wird, verwenden wir Interrupt.

Mit Unterbrechung müssen wir den digitalen Zustand des ESP32 -Eingangs Pin nicht kontinuierlich überprüfen. Wenn ein Interrupt auftritt, hält der Prozessor das Hauptprogramm an, und eine neue Funktion wird als ISR bezeichnet (isr (genanntService Routine unterbrechen). Das Isr Die Funktion übernimmt den nach dieser Rückkehr zurück zum Hauptprogramm verursachten Interrupt und beginnt mit der Ausführung. Eines der Beispiele für ISR ist der PIR -Bewegungssensor, der einen Interrupt erzeugt, sobald die Bewegung erkannt wird.

1.1: Unterbricht Stifte in ESP32

Ein externer oder Hardware -Unterbrech. Berührungsstörungen treten auf, wenn eine Berührung bei ESP32 -Stiften erkannt wird oder GPIO -Interrupt auch verwendet werden kann, wenn eine Taste oder ein Druckknopf gedrückt wird.

In diesem Artikel werden wir einen Interrupt auslösen, wenn die Bewegung mit dem PIR -Sensor mit ESP32 erkannt wird.

Fast alle GPIO -Stifte außer 6 SPI -integrierten Stiften, die normalerweise in die kommen 36 PIN -Version des ESP32 -Boards kann nicht zum Zweck der Interrupt -Anrufe verwendet werden. Um den externen Interrupt zu erhalten, sind die Stifte, die man in ESP32 verwenden kann:

2: Aufrufen eines Interrupts in ESP32 mit Micropython

So programmieren Sie ein ESP32 -Board mit PIR. Wir müssen eine Interrupt -Funktion definieren. Im Folgenden finden Sie einige einfache Schritte, die bei der Definition eines Interrupts für das ESP32 -Board helfen.

Schritt 1: Initialisieren Sie die Interrupt -Handhabungsfunktion: Die Interrupt -Handhabungsfunktion sollte auf einfache Weise definiert werden, damit sie schnell ausgeführt und so schnell wie möglich zum Hauptprogramm zurückkehren kann. Dies kann durch Definieren einer globalen Variablen erfolgen, damit sie überall im Code überall im Code zugegriffen werden kann.

Hier im PIR -Sensor werden wir einen GPIO -PIN als verwenden global Variable. Die Interrupt -Funktion nimmt einen Pin als Argument an und beschreibt den GPIO -Pin, der dazu führt, dass die Interrupt -Funktion auftritt.

Def handle_interrupt (PIN):

Schritt 2: Richten Sie den GPIO -Pin für einen Interrupt ein: Um den Wert des GPIO -PIN zu erhalten Stift.IN als zweites Argument in unserer PIN -Klasse. Wir können dies mit jedem anderen umbenennen.

Pin = Pin (13, Pin.IN)

Schritt 3: Interrupt an den GPIO -Pin für den PIR -Sensor mit der IRQ () -Methode anbringen:

Mit dem folgenden Befehl können wir den Interrupt auf einen PIN einstellen, den wir zuvor definiert haben.

Pir.IRQ (Trigger = Pin.Irq_rising, Handler = Handle_interrupt)

Der IRQ () Die Methode wird verwendet, um den Interrupt an den Pin anzubringen. IRQ () Akzeptiert zwei verschiedene Argumente:

  • Abzug
  • Handler

Abzug: Dieses Argument erklärt die Art des Auslösers. Im Folgenden finden Sie drei Modi:

  • Stift.Irq_falling: Wenn ein PIN von hoch zu niedrig übergeht, wird ein Interrupt gestartet.
  • Stift.Irq_rising: Beim Übergang des Pin von niedrig zu hoch wird ein Interrupt gestartet.
  • Stift.Irq_falling | pin.Irq_rising: Lösen Sie den Interrupt aus, wenn ein Pin seinen Zustand ändert. Entweder Pin geht zu hoch oder niedrig.

Handler: Diese Funktion wird aufgerufen, sobald ein Interrupt ausgelöst wird.

3: Schnittstellenpir -Sensor mit ESP32

Wie jetzt haben wir die Konzepte von Interrupt mit ESP32 unter Verwendung von Micropython behandelt, jetzt werden wir den PIR -Sensor mit ESP32 interfegen. Hier werden wir verwenden Stift.Irq_rising Modus im Micropython -Code für PIR -Sensor, da wir jedes Mal, wenn der PIR -Sensor eine Bewegung erkennt, eine LED auslösen möchten. Diese LED bleibt für eine festgelegte Zeit eingeschaltet, dann schaltet sie sich aus.

Die folgenden Komponenten sind erforderlich:

  • ESP32 Development Board
  • PIR-Bewegungssensor (HC-SR501)
  • 220 Ohm Widerstand
  • Jumperdrähte
  • Brotbrett
  • LED

Schematisch Für PIR -Sensor mit ESP32:

Die Pin -Konfiguration von ESP32 mit PIR -Sensor ist:

3.1: PIR-Bewegungssensor (HC-SR501)

PIR ist ein Akronym für Passive Infrarotsensoren. Zwei zusammen verwendete pyroelektrische Sensoren, die die Wärmemenge um die Umgebung erkennen. Beide pyroelektrischen Sensoren liegen nacheinander und wenn ein Objekt in seinen Bereich eintritt. Sobald Pir Out Pin niedrig ist, können wir einen bestimmten Anweisungen zum Ausführen festlegen (LED Blink).

Im Folgenden finden Sie die Eigenschaften des PIR -Sensors:

  • Die Empfindlichkeit kann je nach Standort des Projekts festgelegt werden (z. B. Maus- oder Blattbewegung)
  • PIR -Sensor kann so eingestellt werden, wie lange er ein Objekt erkennt
  • In den Sicherheitsalarmen und anderen thermischen Bewegungserkennungsanwendungen häufig verwendet.

3.2: Pinout HC-SR501

PIR HC-SR501 verfügt über drei Stifte. Zwei von ihnen sind Leistungsstifte für VCC und GND und einer ist der Ausgangsstift für das Triggersignal.

Im Folgenden finden Sie die Beschreibung der PIR -Sensorstifte:

Stift Name Beschreibung
1 VCC Eingabestift für Sensor Verbinden Sie mit ESP32 Vin Pin
2 AUS Sensorausgang
3 GND Sensor GND

3.3: Code

Um ESP32 zu programmieren, schreiben Sie den angegebenen Code in Thonny IDE Editor oder einer anderen Micropython -IDE und laden Sie ihn auf ESP32 hoch.

vom Maschinenimportstift
Zum Zeitpunkt des Imports
Bewegung = falsch
Def handle_interrupt (PIN):
Globale Bewegung
Bewegung = wahr
Global Interrupt_pin
interrupt_pin = pin
LED = PIN (4, PIN.AUS)
PIR = PIN (13, PIN.IN)
Pir.IRQ (Trigger = Pin.Irq_rising, Handler = Handle_interrupt)
während wahr:
Wenn Bewegung:
print ('Bewegung erkannt')
LED.Wert (1)
Schlaf (5)
LED.Wert (0)
print ('Bewegung gestoppt')
Bewegung = falsch

Zuerst haben wir das importiert Stift Klasse aus dem Maschinenmodul und schlafen Methode zum Hinzufügen von Verzögerungen. Als nächstes wird eine Variable mit dem Namen erstellt Bewegung. Diese Variable erkennt, ob eine Bewegung erkannt wird oder nicht.

Dann haben wir eine Funktion erstellt Handle_interrupt. Jedes Mal, wenn der PIR -Sensor Bewegung erkennt, wird diese Funktion aktiviert. Es nimmt einen Pin als Eingabeparameter und zeigt den Stift an, der den Interrupt auftritt.

In einfachen Worten jedes Mal, wenn PIR Bewegung erkennt, Handle_interrupt Stellen Sie die Bewegungsvariable auf wahr und speichern Sie den Pin, der den Interrupt auftritt. Eine Sache, an die man sich erinnern sollte erklärt immer das Bewegung variabel als global, weil es im gesamten Code benötigt wird.

Vorwärts. Ferner haben wir den Trigger -Stift erklären STEIGEND Modus.

Im Schleife Ein Teil des Codes wird nach dem Wert der Bewegungsvariablen prüfen, sobald er zu echt wird. LED wird an Pin 4 von ESP32 eingeschaltet. Wenn sich die Bewegung gestoppt hat, wird die LED nach 5 Sekunden ausgeschaltet.

3.4: Ausgabe

Im Ausgangsabschnitt können wir sehen, dass das Objekt außerhalb des PIR -Sensors außerhalb des Bereichs liegt, also der LED Wird gedreht AUS.

Jetzt dreht sich die von der PIR -Sensor -LED erkannte Bewegung AN für 5 Sek Danach, wenn kein Antrag erkannt wird, bleibt dies bestehen AUS Bis der nächste Auslöser empfangen wird.

Die folgende Ausgabe wird durch die gezeigt Schale/Klemme In Thonny IDE.

Abschluss

Ein PIR -Sensor mit ESP32 kann dazu beitragen, die Bewegung verschiedener Dinge zu erkennen. Verwenden der Interrupt -Funktion in Micropython mit ESP32 können wir eine Antwort an einem bestimmten GPIO -Pin auslösen. Wenn Änderungen erkannt werden, wird die Interrupt -Funktion ausgelöst und eine LED wird eingeschaltet.