Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Construire l'IoT avec Java ME 8 sur Raspberry Pi : Partie 1 – Intégration capteurs GPIO

Découvrez comment connecter et contrôler des capteurs sur un Raspberry Pi en utilisant Java ME 8, débloquant de puissantes capacités IoT.

Publié en septembre 2014

La dernière version de Java ME 8 introduit une API Device I/O robuste qui simplifie le contrôle de LEDs, relais, LCD, capteurs, moteurs et interrupteurs.

Cet article démarre une série en trois parties sur l'intégration de capteurs électroniques avec le Raspberry Pi Modèle B via les interfaces GPIO, I²C, SPI ou UART.

En exploitant Java ME 8 pour piloter des dispositifs via ces interfaces, vous pouvez construire un écosystème IoT entièrement fonctionnel.

Dans cet épisode, nous nous concentrons sur GPIO et fournissons des classes Java ME 8 prêtes à l'emploi pour :

Note : Le projet complet NetBeans IDE 8.0, incluant tous les fichiers sources, peut être téléchargé ici.

Vue d'ensemble de l'API Device I/O

La spécification de l'API Device I/O définit une interface générique d'E/S périphérique pour les applications Java sur plates-formes embarquées. Elle couvre les dispositifs courants tels que :

Considérations importantes sur le circuit

Toutes les broches GPIO du Raspberry Pi fonctionnent à 3,3 V. Avant de connecter un capteur, vérifiez ses exigences de tension. Si un dispositif attend 5 V, utilisez un convertisseur de niveau logique (par exemple, un décalage basé sur MOSFET BSS138) pour traduire les signaux en toute sécurité.

Connexion du détecteur de flamme

Le capteur de flamme DFR0076 détecte les longueurs d'onde lumineuses entre ~760 nm et 1100 nm, avec une portée de détection de 20–100 cm. Lorsque la flamme est présente, sa broche de signal passe à l'état haut.

Câblez le capteur sur le 3,3 V, GND et GPIO 22 du Pi comme illustré dans la Figure 3, puis créez une classe Java ME 8 pour le contrôler.

Listing 1 – Classe DFR0076Device

public class DFR0076Device {
    private GPIOPin pin = null; // Broche pour le contrôle du capteur de flamme
}

Listing 2 – Initialisation de la broche GPIO

public DFR0076Device(int pinGPIO) {
    pin = (GPIOPin) DeviceManager.open(new GPIOPinConfig(
        0, pinGPIO, GPIOPinConfig.DIR_INPUT_ONLY,
        GPIOPinConfig.MODE_INPUT_PULL_UP,
        GPIOPinConfig.TRIGGER_RISING_EDGE, false));
}

Listing 3 – Enregistrement de l'écouteur

public void setListener(PinListener flameListener) {
    if (pin != null) {
        pin.setInputListener(flameListener);
    }
}

Listing 4 – Nettoyage des ressources

public void close() {
    if (pin != null) {
        pin.setInputListener(null);
        pin.close();
    }
}

Listing 5 – MIDlet utilisant le capteur de flamme

public class TestSensors extends MIDlet {
    private DFR0076Device flame;
    private static final int FLAME_DETECTOR_PIN = 22;

    public void startApp() {
        flame = new DFR0076Device(FLAME_DETECTOR_PIN);
        flame.setListener(new FlameSensor());
    }

    public void destroyApp(boolean unconditional) {
        flame.close();
    }

    private static int waitNext = 1;

    private class FlameSensor implements PinListener {
        public void valueChanged(PinEvent event) {
            if (event.getValue() && --waitNext == 0) {
                System.out.println("ATTENTION Flamme détectée !!!");
                waitNext = 10;
            }
        }
    }
}

Connexion du détecteur de mouvement

Intégrez le capteur PIR HC‑SR501, qui émet une impulsion 3,3 V lorsque le mouvement est détecté. Les trois broches du capteur sont GND, VCC (3–5 V) et sortie numérique.

Ajustez la sensibilité et le délai du PIR via ses potentiomètres, et réglez le cavalier sur « L » pour des déclenchements uniques ou « H » pour des déclenchements répétés.

Câblez le PIR sur 5 V, GND et GPIO 24, puis étendez le MIDlet avec une classe HCSR501Device dédiée.

Listing 6 – Classe HCSR501Device

public class HCSR501Device {
    private GPIOPin pin = null;
}

Listing 7 – Initialisation de la broche avec délai de 3 secondes

public HCSR501Device(int pinGPIO) {
    pin = (GPIOPin) DeviceManager.open(new GPIOPinConfig(
        0, pinGPIO, GPIOPinConfig.DIR_INPUT_ONLY,
        GPIOPinConfig.MODE_INPUT_PULL_DOWN,
        GPIOPinConfig.TRIGGER_RISING_EDGE, false));
    I2CUtils.I2Cdelay(3000); // Attendre la stabilisation du capteur
}

Listing 8 – Enregistrement d'un écouteur de mouvement

public void setListener(PinListener pirListener) {
    if (pin != null) {
        pin.setInputListener(pirListener);
    }
}

Listing 9 – Nettoyage

public void close() {
    if (pin != null) {
        pin.setInputListener(null);
        pin.close();
    }
}

Étendez le MIDlet TestSensors pour gérer les événements de mouvement :

Listing 10 – MIDlet avec support PIR

// Initialiser le capteur PIR
private HCSR501Device pir;
private static final int MOTION_DETECTOR_PIN = 24;

@Override
public void startApp() {
    pir = new HCSR501Device(MOTION_DETECTOR_PIN);
    pir.setListener(new PirSensor());
}

@Override
public void destroyApp(boolean unconditional) {
    pir.close();
}

private class PirSensor implements PinListener {
    public void valueChanged(PinEvent event) {
        if (event.getValue()) {
            System.out.println("ATTENTION Mouvement détecté !!!");
        }
    }
}

Pour une analyse plus approfondie, lisez la série complète : Java ME 8 + Raspberry Pi + Capteurs = Monde IoT (Partie 1).

Processus de fabrication

  1. Java Hello World : Votre premier programme
  2. Construction d'un enregistreur de données multicanal avec Raspberry Pi – Partie 1 : Exigences et architecture
  3. Tutoriel IoT débutant : Diffusion de données de température depuis un Raspberry Pi
  4. Mesurer des capteurs analogiques sur Raspberry Pi avec une seule broche GPIO
  5. Mesurer des capteurs analogiques sur Raspberry Pi sans ADC natif
  6. Comment connecter un thermomètre numérique DS18B20 One-Wire à un Raspberry Pi – Guide étape par étape
  7. Construire l'IoT avec Java ME 8 sur Raspberry Pi : Partie 1 – Intégration capteurs GPIO
  8. Lecture d'un capteur Hall linéaire avec Raspberry Pi : Guide Java et insights ADC0832
  9. Maîtriser les capteurs Raspberry Pi : Guide pratique d'électronique et protocoles de communication