Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Construindo IoT com Java ME 8 no Raspberry Pi: Parte 1 – Integração de Sensores GPIO

Descubra como conectar e controlar sensores em um Raspberry Pi usando Java ME 8, desbloqueando poderosas capacidades IoT.

Publicado em setembro de 2014

A versão mais recente do Java ME 8 introduz uma robusta API Device I/O que simplifica o controle de LEDs, relés, LCDs, sensores, motores e interruptores.

Este artigo inicia uma série de três partes sobre integração de sensores eletrônicos com o Raspberry Pi Model B via GPIO, I²C, SPI ou interfaces UART.

Ao aproveitar o Java ME 8 para acionar dispositivos através dessas interfaces, você pode construir um ecossistema IoT totalmente funcional.

Nesta parte, focamos em GPIO e fornecemos classes Java ME 8 prontas para uso para:

Nota: O projeto completo NetBeans IDE 8.0, incluindo todos os arquivos fonte, pode ser baixado aqui.

Visão Geral da API Device I/O

A especificação da API Device I/O define uma interface genérica de I/O periférico para aplicações Java em plataformas embarcadas. Ela cobre dispositivos comuns como:

Considerações Principais do Circuito

Todos os pinos GPIO do Raspberry Pi operam a 3.3 V. Antes de conectar um sensor, verifique seus requisitos de tensão. Se um dispositivo espera 5 V, use um conversor de nível lógico (ex: shifter baseado em MOSFET BSS138) para traduzir sinais com segurança.

Conectando o Detector de Chama

O sensor de chama DFR0076 detecta comprimentos de onda de luz entre ~760 nm e 1100 nm, com alcance de detecção de 20–100 cm. Quando chama está presente, seu pino de sinal puxa para alto.

Conecte o sensor ao 3.3 V, GND e GPIO 22 do Pi conforme ilustrado na Figura 3, então crie uma classe Java ME 8 para controlá-lo.

Listagem 1 – Classe DFR0076Device

public class DFR0076Device {
    private GPIOPin pin = null; // Pino para controle do sensor de chama
}

Listagem 2 – Inicializando o pino 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));
}

Listagem 3 – Registro de listener

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

Listagem 4 – Limpeza de recursos

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

Listagem 5 – MIDlet que usa o sensor de chama

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("AVISO Chama detectada!!!");
                waitNext = 10;
            }
        }
    }
}

Conectando o Detector de Movimento

Integre o sensor PIR HC-SR501, que produz um pulso de 3.3 V quando movimento é detectado. Os três pinos do sensor são GND, VCC (3–5 V) e saída digital.

Ajuste a sensibilidade e atraso do PIR via seus potenciômetros, e defina o jumper para "L" para gatilhos únicos ou "H" para gatilhos repetíveis.

Conecte o PIR a 5 V, GND e GPIO 24, então estenda o MIDlet com uma classe dedicada HCSR501Device.

Listagem 6 – Classe HCSR501Device

public class HCSR501Device {
    private GPIOPin pin = null;
}

Listagem 7 – Inicialização do pino com atraso de 3 segundos

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); // Aguarda estabilização do sensor
}

Listagem 8 – Registrando listener de movimento

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

Listagem 9 – Limpeza

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

Estenda o MIDlet TestSensors para lidar com eventos de movimento:

Listagem 10 – MIDlet com suporte PIR

// Inicializa sensor 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("AVISO Movimento detectado!!!");
        }
    }
}

Para um mergulho mais profundo, leia a série completa: Java ME 8 + Raspberry Pi + Sensores = IoT World (Parte 1).

Processo de manufatura

  1. Java Hello World: Seu Primeiro Programa
  2. Construindo um Registrador de Dados Multicanal com Raspberry Pi – Parte 1: Requisitos e Arquitetura
  3. Tutorial IoT Iniciante: Streaming de Dados de Temperatura de um Raspberry Pi
  4. Medindo Sensores Analógicos no Raspberry Pi com um Único Pino GPIO
  5. Meça Sensores Analógicos no Raspberry Pi sem ADC Nativo
  6. Como Conectar um Termômetro Digital DS18B20 One-Wire ao Raspberry Pi – Guia Passo a Passo
  7. Construindo IoT com Java ME 8 no Raspberry Pi: Parte 1 – Integração de Sensores GPIO
  8. Leitura de Sensor Hall Linear com Raspberry Pi: Guia Java e Insights ADC0832
  9. Dominando Sensores no Raspberry Pi: Guia Prático de Eletrônica e Protocolos de Comunicação
  10. Monitore a Temperatura da Sua Casa com Dashboard no Raspberry Pi