Bemerkung

Hallo, willkommen in der SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasten-Community auf Facebook! Tauchen Sie tiefer in Raspberry Pi, Arduino und ESP32 mit anderen Enthusiasten ein.

Warum beitreten?

  • Expertenunterstützung: Lösen Sie nach dem Kauf auftretende Probleme und technische Herausforderungen mit Hilfe unserer Community und unseres Teams.

  • Lernen & Teilen: Tauschen Sie Tipps und Tutorials aus, um Ihre Fähigkeiten zu verbessern.

  • Exklusive Vorschauen: Erhalten Sie frühzeitigen Zugang zu neuen Produktankündigungen und Vorschauen.

  • Spezielle Rabatte: Genießen Sie exklusive Rabatte auf unsere neuesten Produkte.

  • Festliche Aktionen und Gewinnspiele: Nehmen Sie an Gewinnspielen und festlichen Aktionen teil.

👉 Bereit, mit uns zu entdecken und zu kreieren? Klicken Sie auf [hier] und treten Sie noch heute bei!

2.2.4 PIR

Einführung

In diesem Projekt werden wir ein Gerät mit einem passiven Infrarot-Bewegungssensor (PIR) bauen. Wenn sich jemand der LED nähert, wird sie automatisch eingeschaltet. Andernfalls wird das Licht ausgeschaltet. Dieser Infrarot-Bewegungssensor kann die von Menschen und Tieren abgegebene Infrarotstrahlung erkennen.

Komponenten

../_images/list_2.2.4_pir2.png

Schaltplan

../_images/image3271.png

Experimentelle Vorgehensweise

Schritt 1: Bauen Sie die Schaltung auf.

../_images/image2141.png

Schritt 2: Gehen Sie zum Ordner des Codes.

cd ~/davinci-kit-for-raspberry-pi/nodejs/

Schritt 3: Führen Sie den Code aus.

sudo node pir.js

Nachdem der Code ausgeführt wurde, erkennt der PIR die Umgebung und lässt die RGB-LED gelb leuchten, wenn er jemanden in der Nähe erkennt. Es gibt zwei Potentiometer auf dem PIR-Modul: eines zur Einstellung der Empfindlichkeit und das andere zur Einstellung der Erkennungsentfernung. Um das PIR-Modul optimal zu nutzen, müssen Sie diese beiden Potentiometer anpassen.

Code

const Gpio = require('pigpio').Gpio;

const pirPin = new Gpio(17, {
    mode: Gpio.INPUT,
    pullUpDown: Gpio.PUD_DOWN,
    edge: Gpio.EITHER_EDGE
})    // der PIR ist mit Pin 17 verbunden

const redPin = new Gpio(18, { mode: Gpio.OUTPUT, })
const greenPin = new Gpio(27, { mode: Gpio.OUTPUT, })
const bluePin = new Gpio(22, { mode: Gpio.OUTPUT, })
//'Rot':18, 'Grün':27, 'Blau':22

var p_R, p_G, p_B

// Setze alle LEDs als PWM-Kanäle und die Frequenz auf 2 kHz
p_R = redPin.pwmFrequency(2000)
p_G = greenPin.pwmFrequency(2000)
p_B = bluePin.pwmFrequency(2000)

// Initialisiere alle LEDs mit dem Wert 0
p_R.pwmWrite(0)
p_G.pwmWrite(0)
p_B.pwmWrite(0)

// Definiere eine MAP-Funktion zum Zuordnen von Werten, z.B. von 0~255 auf 0~100
function MAP(x, in_min, in_max, out_min, out_max) {
    return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min
}

// Definiere eine Funktion zur Farbauswahl
function setColor(color) {
    // konfiguriert die Helligkeit der drei LEDs mit dem übergebenen Farbwert.
    // Unterteile die Farben aus der Variable 'color'
    R_val = (color & 0xFF0000) >> 16
    G_val = (color & 0x00FF00) >> 8
    B_val = (color & 0x0000FF) >> 0
    // Ordne die Farbwerte von 0~255 auf 0~100 zu
    R_val = MAP(R_val, 0, 255, 0, 100)
    G_val = MAP(G_val, 0, 255, 0, 100)
    B_val = MAP(B_val, 0, 255, 0, 100)

    // Weise den zugeordneten Tastverhältniswert dem entsprechenden PWM-Kanal zu, um die Helligkeit zu ändern.
    p_R.pwmWrite(R_val)
    p_G.pwmWrite(G_val)
    p_B.pwmWrite(B_val)
    //print ("color_msg: R_val = %s, G_val = %s, B_val = %s"%(R_val, G_val, B_val))
}

pirPin.on('interrupt', (level) => {
    if (level) {
        setColor(0xFFFF00)
    }else{
        setColor(0x0000FF)
    }
});

process.on('SIGINT', function () {
    p_R.pwmWrite(0)
    p_G.pwmWrite(0)
    p_B.pwmWrite(0)
    process.exit();
})

Code Erklärung

Der Code für dieses Beispiel ist eine Kombination aus 2.1.1 Schalter und 1.1.2 RGB-LED, daher sind keine weiteren Details erforderlich.

Phänomenbild

../_images/image2151.jpeg