Surveillez facilement l'environnement intérieur ~ ⑨ Obtenez la détection de mouvement (HC-SR501 / RCWL-0516) avec Java (GPIO / Pi4J) ~

J'ai écrit une fois sur un outil simple pour surveiller les informations environnementales générales dans un environnement intérieur (maison / bureau / usine) dans cet article. .. Je n'ai pas trouvé d'open source qui a été mis en place dans un outil de surveillance de ces informations environnementales, j'ai donc créé l'image conceptuelle suivante en privé. rainy_concept_jp.png Les informations obtenues de chaque capteur et équipement d'automatisation industrielle peuvent être utilisées comme suit.

Cet outil simple a été créé pour être complet avec un capteur et Raspberry Pi 3B ou 4B au minimum. Cette fois, j'ai essayé de rendre cet outil compatible avec les capteurs de détection de mouvement.

À propos du capteur de détection de mouvement

Les deux types de capteurs de détection de mouvement suivants ont été adoptés cette fois.

Bibliothèques Java (hc-sr501-driver, rcwl-0516-driver -0516-driver)) a été créé et publié sur Github. J'ai également écrit la procédure de configuration du système d'exploitation et du capteur. De plus, un outil simple de surveillance des informations environnementales intégrant ces bibliothèques est disponible sur Github here.

Un exemple de l'image d'utilisation de ces capteurs de détection de mouvement est le suivant. rainy_motion_detector_overview.png

--HC-SR501 est un type dit de "capteur humain" qui utilise des rayons infrarouges émis par la source de chaleur d'un objet. La distance de détection maximale est de 7 m. Puisqu'il utilise des rayons infrarouges, il ne peut pas être détecté s'il y a quelque chose qui le bloque. --RCWL-0516 est un type qui irradie des micro-ondes de 3,2 GHz et détecte le mouvement de l'objet à partir de la transition Doppler de l'onde réfléchie afin que le mouvement de l'objet puisse être détecté indépendamment de la présence ou de l'absence d'une source de chaleur. La distance de détection maximale est de 9 m. Par exemple, il réagit au mouvement des objets de l'autre côté du mur de la maison. Je pense que cette fonctionnalité peut être à la fois un avantage et un inconvénient selon l'application.

Compte tenu de ces caractéristiques, nous avons pris en charge deux types afin qu'ils puissent être utilisés correctement en fonction de l'application.

Utilisation de base de la bibliothèque Java

Puisqu'il s'agit de Qiita, je publierai quelques exemples d'utilisation du code.

-Comment utiliser hc-sr501-driver

L'exemple de code ci-dessous utilise GPIO12 pour recevoir le signal de détection de mouvement. Il implémente handle () qui est appelé lorsqu'un mouvement est détecté.

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));
    }
}

-Comment utiliser rcwl-0516-driver

L'exemple de code ci-dessous utilise GPIO18 pour recevoir le signal de détection de mouvement. Il implémente handle () qui est appelé lorsqu'un mouvement est détecté.

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));
    }
}

Les deux codes sont simples, n'est-ce pas? Il a été créé à l'aide de Pi4J, une bibliothèque Java permettant d'utiliser GPIO de Raspberry Pi.

finalement

L'outil simple envoie ces détections de mouvement sous forme d'événements dans MQTT au format JSON pour une facilité d'utilisation. Cela peut être utilisé comme déclencheur pour se connecter à un traitement ultérieur (comme allumer la caméra ou le microphone). C'est bien que ces capteurs de détection de mouvement soient disponibles pour quelques centaines de yens.

Enfin, l'outil simple est disponible sur Github here.

Une série d'articles

Cette série comprend les articles suivants:

  1. Motivation et concept
  2. Capturez le signal publicitaire Bluetooth LE avec Java (Bluetooth LE / bluez-dbus) Le Github associé est ici.
  3. Obtenir la température / l'humidité / l'éclairement etc. à partir du TI SensorTag CC2650 avec Java (Bluetooth LE / bluez-dbus) Le Github associé est ici.
  4. Obtenir la concentration de CO2 du MH-Z19B avec Java (communication série / jSerialComm) Le Github associé est ici.
  5. Obtenir la concentration de PM2,5 à partir de PPD42NS en Java (GPIO / Pi4J) Le Github associé est ici.
  6. Obtention d'informations opérationnelles sur les équipements d'automatisation industrielle en Java (OPC-UA / Eclipse Milo) Le Github associé est ici.
  7. Collectez dans un outil simple Le Github associé est ici.
  8. Postscript
  9. ** Obtenez la détection de mouvement (HC-SR501 / RCWL-0516) avec Java (GPIO / Pi4J) (cette fois) ** Github associé est ici (HC-SR501) et ici (RCWL-0516) -0516-pilote).
  10. Obtenir température / humidité / pression à partir du BME280 (substitut) en Java (I2C / Pi4J) Le Github associé est ici.
  11. Obtention de l'éclairage à partir du BH1750FVI (substitut) en Java (I2C / Pi4J) Le Github associé est ici.

Recommended Posts

Surveillez facilement l'environnement intérieur ~ ⑨ Obtenez la détection de mouvement (HC-SR501 / RCWL-0516) avec Java (GPIO / Pi4J) ~
Surveillez facilement l'environnement intérieur-⑤ Obtenez la concentration de PM2,5 à partir du PPD42NS avec Java (GPIO / Pi4J) -
Surveillez facilement l'environnement intérieur-⑪ Obtenez l'éclairement avec Java à partir de BH1750FVI (substitut) - (I2C / Pi4J) -
Surveillez facilement l'environnement intérieur - ⑦ Résumez dans un outil simple -
Surveillez facilement l'environnement intérieur ~ ⑧ Postscript ~
Surveillez facilement l'environnement intérieur - (1) Motivation et concept -
Surveillez facilement l'environnement intérieur - ⑩ Obtenez température / humidité / pression à partir du BME280 (substitut) avec Java (I2C / Pi4J) -
Surveillez facilement l'environnement intérieur-② Capturez le signal publicitaire Bluetooth LE avec Java (Bluetooth LE / bluez-dbus) -
[Java] Récupère le fichier dans le fichier jar quel que soit l'environnement
Surveillez facilement l'environnement intérieur ~ ④ Obtenez la concentration de CO2 du MH-Z19B avec Java (communication série / jSerialComm) ~
Obtenez le résultat de POST en Java
Comment obtenir la date avec Java
Obtenez l'URL de la destination de la redirection HTTP en Java
J'obtiens Mysql2 :: Error :: ConnectionError dans l'environnement de production
Source utilisée pour obtenir l'URL de la source de redirection en Java
Surveillez facilement l'environnement intérieur-② Capturez le signal publicitaire Bluetooth LE avec Java (Bluetooth LE / bluez-dbus) -
Surveillez facilement l'environnement intérieur-⑪ Obtenez l'éclairement avec Java à partir de BH1750FVI (substitut) - (I2C / Pi4J) -
Surveillez facilement l'environnement intérieur - ⑩ Obtenez température / humidité / pression à partir du BME280 (substitut) avec Java (I2C / Pi4J) -
Surveillez facilement l'environnement intérieur-⑤ Obtenez la concentration de PM2,5 à partir du PPD42NS avec Java (GPIO / Pi4J) -
Surveillez facilement l'environnement intérieur ~ ④ Obtenez la concentration de CO2 du MH-Z19B avec Java (communication série / jSerialComm) ~
Surveillez facilement l'environnement intérieur ~ ⑨ Obtenez la détection de mouvement (HC-SR501 / RCWL-0516) avec Java (GPIO / Pi4J) ~
Surveillez facilement l'environnement intérieur ~ ⑧ Postscript ~
Surveillez facilement l'environnement intérieur - (1) Motivation et concept -
Lire la température / l'humidité avec Java de Raspberry Pi 3 & DHT11
Surveillez facilement l'environnement intérieur - ⑦ Résumez dans un outil simple -