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é. 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.
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.
--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.
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.
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.
Cette série comprend les articles suivants:
Recommended Posts