Einfache Überwachung der Innenumgebung - ⑨ Erfassen Sie die Bewegungserkennung (HC-SR501 / RCWL-0516) mit Java (GPIO / Pi4J) -

Ich habe einmal in diesem Artikel über ein einfaches Tool zur Überwachung allgemeiner Umweltinformationen in Innenräumen (zu Hause / im Büro / in der Fabrik) geschrieben. .. Ich konnte keine Open Source finden, die in einem Tool zur Überwachung solcher Umweltinformationen zusammengestellt wurde, und habe daher das folgende Konzeptbild privat erstellt. rainy_concept_jp.png Informationen, die von jedem Sensor und jeder industriellen Automatisierungsausrüstung erhalten werden, können wie folgt verwendet werden.

Dieses einfache Tool wurde entwickelt, um mindestens einen Sensor und Raspberry Pi 3B oder 4B zu enthalten. Dieses Mal habe ich versucht, dieses Tool mit Bewegungserkennungssensoren kompatibel zu machen.

Informationen zum Bewegungserkennungssensor

Die folgenden zwei Arten von Bewegungserkennungssensoren wurden dieses Mal übernommen.

Java-Bibliotheken (hc-sr501-Treiber, rcwl-0516-Treiber -0516-driver)) wurde erstellt und auf Github veröffentlicht. Ich habe auch das Verfahren zum Einstellen des Betriebssystems und des Sensors geschrieben. Darüber hinaus steht unter Github hier ein einfaches Tool zur Überwachung von Umweltinformationen zur Verfügung, das diese Bibliotheken enthält.

Ein Beispiel für das Verwendungsbild dieser Bewegungserkennungssensoren ist wie folgt. rainy_motion_detector_overview.png

--HC-SR501 ist ein sogenannter "menschlicher Sensor", der Infrarotstrahlen verwendet, die von der Wärmequelle eines Objekts emittiert werden. Die maximale Erkennungsentfernung beträgt 7 m. Da es Infrarotstrahlen verwendet, kann es nicht erkannt werden, wenn etwas es blockiert. --RCWL-0516 ist ein Typ, der 3,2-GHz-Mikrowellen bestrahlt und die Bewegung des Objekts anhand des Doppler-Übergangs der reflektierten Welle erfasst, sodass die Bewegung des Objekts unabhängig von der Anwesenheit oder Abwesenheit einer Wärmequelle erfasst werden kann. Die maximale Erkennungsentfernung beträgt 9 m. Zum Beispiel reagiert es auf die Bewegung von Objekten auf der anderen Seite der Hauswand. Ich denke, diese Funktion kann je nach Anwendung sowohl ein Vorteil als auch ein Nachteil sein.

In Anbetracht dieser Eigenschaften haben wir zwei Typen unterstützt, damit sie je nach Anwendung ordnungsgemäß verwendet werden können.

Grundlegende Verwendung der Java-Bibliothek

Da es sich um Qiita handelt, werde ich einige Beispiele für die Verwendung des Codes veröffentlichen.

-Wie man [hc-sr501-Treiber] verwendet (https://github.com/s5uishida/hc-sr501-driver)

Der folgende Beispielcode verwendet GPIO12, um das Bewegungserkennungssignal zu empfangen. Es implementiert handle (), das aufgerufen wird, wenn eine Bewegung erkannt wird.

import com.pi4j.io.gpio.Pin;
import com.pi4j.io.gpio.RaspiPin

import io.github.s5uishida.iot.device.hcsr501.driver.HCSR501Driver;
import io.github.s5uishida.iot.device.hcsr501.driver.IHCSR501Handler;

public class MyHCSR501 {
    private static final Logger LOG = LoggerFactory.getLogger(MyHCSR501.class);
    
    public static void main(String[] args) {
        HCSR501Driver hcsr501 = HCSR501Driver.getInstance(RaspiPin.GPIO_12, new MyHCSR501Handler());
        hcsr501.open();

//      if (hcsr501 != null) {
//          hcsr501.close();
//      }
    }
}

class MyHCSR501Handler implements IHCSR501Handler {
    private static final Logger LOG = LoggerFactory.getLogger(MyHCSR501Handler.class);

    private static final String dateFormat = "yyyy-MM-dd HH:mm:ss.SSS";
    private static final SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);

    @Override
    public void handle(String pinName, boolean detect, Date date) {
        LOG.info("[{}] {} {}", pinName, detect, sdf.format(date));
    }
}

-Wie man [rcwl-0516-Treiber] verwendet (https://github.com/s5uishida/rcwl-0516-driver)

Der folgende Beispielcode verwendet GPIO18, um das Bewegungserkennungssignal zu empfangen. Es implementiert handle (), das aufgerufen wird, wenn eine Bewegung erkannt wird.

import com.pi4j.io.gpio.Pin;
import com.pi4j.io.gpio.RaspiPin

import io.github.s5uishida.iot.device.rcwl0516.driver.RCWL0516Driver;
import io.github.s5uishida.iot.device.rcwl0516.driver.IRCWL0516Handler;

public class MyRCWL0516 {
    private static final Logger LOG = LoggerFactory.getLogger(MyRCWL0516.class);
    
    public static void main(String[] args) {
        RCWL0516Driver rcwl0516 = RCWL0516Driver.getInstance(RaspiPin.GPIO_18, new MyRCWL0516Handler());
        rcwl0516.open();

//      if (rcwl0516 != null) {
//          rcwl0516.close();
//      }
    }
}

class MyRCWL0516Handler implements IRCWL0516Handler {
    private static final Logger LOG = LoggerFactory.getLogger(MyRCWL0516Handler.class);

    private static final String dateFormat = "yyyy-MM-dd HH:mm:ss.SSS";
    private static final SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);

    @Override
    public void handle(String pinName, boolean detect, Date date) {
        LOG.info("[{}] {} {}", pinName, detect, sdf.format(date));
    }
}

Beide Codes sind einfach, nicht wahr? Es wurde mit Pi4J erstellt, einer Java-Bibliothek zur Verwendung von GPIO von Raspberry Pi.

Schließlich

Das einfache Tool sendet diese Bewegungserkennungen zur Vereinfachung der Verwendung als Ereignisse in MQTT im JSON-Format. Dies kann als Auslöser verwendet werden, um eine Verbindung zu einer nachfolgenden Verarbeitung herzustellen (z. B. Einschalten der Kamera oder des Mikrofons). Es ist gut, dass diese Bewegungserkennungssensoren für einige hundert Yen erhältlich sind.

Schließlich ist das einfache Tool auf [Github hier] verfügbar (https://github.com/s5uishida/rainy).

Eine Reihe von Artikeln

Diese Reihe besteht aus folgenden Artikeln:

  1. Motivation und Konzept
  2. Bluetooth LE-Werbesignal mit Java abfangen (Bluetooth LE / bluez-dbus) Der zugehörige Github ist hier.
  3. Temperatur / Luftfeuchtigkeit / Beleuchtungsstärke usw. vom TI SensorTag CC2650 mit Java (Bluetooth LE / bluez-dbus) abrufen Der zugehörige Github ist hier.
  4. CO2-Konzentration von MH-Z19B mit Java abrufen (serielle Kommunikation / jSerialComm) Der zugehörige Github ist hier.
  5. PM2.5-Konzentration von PPD42NS in Java (GPIO / Pi4J) abrufen Der zugehörige Github ist hier.
  6. Abrufen von Betriebsinformationen zu industriellen Automatisierungsgeräten in Java (OPC-UA / Eclipse Milo) Der verwandte Github ist hier.
  7. In einem einfachen Tool sammeln Der verwandte Github ist hier.
  8. Postscript
  9. ** Bewegungserkennung (HC-SR501 / RCWL-0516) mit Java (GPIO / Pi4J) (diesmal) ** Verwandte Github ist hier (HC-SR501) und hier (RCWL-0516) -0516-Treiber).
  10. Temperatur / Luftfeuchtigkeit / Druck von BME280 (Ersatz) in Java (I2C / Pi4J) abrufen Der zugehörige Github ist hier.
  11. Beleuchtung von BH1750FVI (Ersatz) in Java (I2C / Pi4J) Der zugehörige Github ist hier.

Recommended Posts

Einfache Überwachung der Innenumgebung - ⑨ Erfassen Sie die Bewegungserkennung (HC-SR501 / RCWL-0516) mit Java (GPIO / Pi4J) -
Einfache Überwachung des Innenraumklimas - ⑤ Erhalten Sie die PM2.5-Konzentration von PPD42NS mit Java (GPIO / Pi4J) -
Überwachen Sie einfach das Raumklima. ⑪ Erhalten Sie die Beleuchtungsstärke mit Java von BH1750FVI (Ersatz) - (I2C / Pi4J) -
Einfache Überwachung des Raumklimas - ⑦ Mit einem einfachen Tool zusammenfassen -
Überwachen Sie einfach das Raumklima ~ ⑧ Postscript ~
Überwachen Sie einfach das Raumklima. (1) Motivation und Konzept.
Einfache Überwachung des Innenraumklimas - ⑩ Beziehen Sie Temperatur / Luftfeuchtigkeit / Druck von BME280 (Ersatz) mit Java (I2C / Pi4J) -
Einfache Überwachung der Innenumgebung - ② Erfassen Sie das Bluetooth LE-Werbesignal mit Java (Bluetooth LE / bluez-dbus) -
[Java] Holen Sie sich die Datei unabhängig von der Umgebung in das JAR
Einfache Überwachung des Innenraumklimas ~ ④ Erhalten Sie die CO2-Konzentration von MH-Z19B mit Java (serielle Kommunikation / jSerialComm) ~
Holen Sie sich das Ergebnis von POST in Java
So erhalten Sie das Datum mit Java
Rufen Sie die URL des HTTP-Umleitungsziels in Java ab
Ich erhalte Mysql2 :: Error :: ConnectionError in der Produktionsumgebung
Quelle zum Abrufen der Umleitungsquell-URL in Java
Einfache Überwachung der Innenumgebung - ② Erfassen Sie das Bluetooth LE-Werbesignal mit Java (Bluetooth LE / bluez-dbus) -
Überwachen Sie einfach das Raumklima. ⑪ Erhalten Sie die Beleuchtungsstärke mit Java von BH1750FVI (Ersatz) - (I2C / Pi4J) -
Einfache Überwachung des Innenraumklimas - ⑩ Beziehen Sie Temperatur / Luftfeuchtigkeit / Druck von BME280 (Ersatz) mit Java (I2C / Pi4J) -
Einfache Überwachung des Innenraumklimas - ⑤ Erhalten Sie die PM2.5-Konzentration von PPD42NS mit Java (GPIO / Pi4J) -
Einfache Überwachung des Innenraumklimas ~ ④ Erhalten Sie die CO2-Konzentration von MH-Z19B mit Java (serielle Kommunikation / jSerialComm) ~
Einfache Überwachung der Innenumgebung - ⑨ Erfassen Sie die Bewegungserkennung (HC-SR501 / RCWL-0516) mit Java (GPIO / Pi4J) -
Überwachen Sie einfach das Raumklima ~ ⑧ Postscript ~
Überwachen Sie einfach das Raumklima. (1) Motivation und Konzept.
Lesen Sie Temperatur / Luftfeuchtigkeit von Raspberry Pi 3 & DHT11 mit Java ab
Einfache Überwachung des Raumklimas - ⑦ Mit einem einfachen Tool zusammenfassen -