Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Sensores Java ME 8 + Raspberry Pi + =Mundo IoT (Parte 1)

Aprenda a conectar sensores a la Raspberry Pi y controlarlos con Java.

Publicado en septiembre de 2014

La última versión de Java ME 8 incluye una potente API para controlar dispositivos como LED, relés, LCD, sensores, motores e interruptores.

Este artículo es el primero de una serie de tres partes sobre cómo conectar sensores electrónicos a la Raspberry Pi Modelo B utilizando entrada / salida de propósito general (GPIO), bus de circuito integrado (I2C), bus de interfaz periférica en serie (SPI) o interfaces de receptor / transmisor asincrónico universal (UART).

Al usar Java ME 8 para controlar dispositivos con diferentes tipos de interfaces y conectar los dispositivos a una Raspberry Pi, podemos crear un mundo de Internet de las cosas (IoT).

Este artículo se centra en el uso de GPIO y muestra ejemplos de cómo desarrollar clases en Java ME 8 que pueden

Nota :El código de ejemplo completo para este proyecto NetBeans IDE 8.0 se puede descargar aquí.

API de E / S del dispositivo

La especificación de API de E / S de dispositivo define una API de E / S de dispositivo periférico genérico para aplicaciones Java que se ejecutan en pequeños dispositivos integrados. Define API para algunos de los dispositivos periféricos más comunes, incluidos los siguientes:

Circuitos que crearemos

Un dispositivo GPIO se puede utilizar como entrada digital o salida digital, se puede desactivar o activar, y se puede utilizar para controlar líneas de "interrupción". Sin embargo, una consideración muy importante es que todos los pines GPIO de Raspberry Pi operan a 3.3 V. Por lo tanto, es muy importante verificar las especificaciones técnicas de los dispositivos que desea conectar para determinar si están usando 3.3 V o 5 V. En algunos casos , necesitará utilizar un convertidor de nivel lógico como este.

Conexión del detector de llamas

El sensor de llama DFR0076 de DFRobot se puede utilizar para detectar fuego u otras longitudes de onda de luz entre aproximadamente 760 nm y 1100 nm. Podemos conectarlo a 3,3 V o 5 V, y el rango de detección es de aproximadamente 20 cm (4,8 V) a 100 cm (1 V). Cuando se detecta fuego, levanta el pin de señal.

Conectemos el sensor de llama a los pines 3.3 V, Gnd y GPIO 22 de la Raspberry Pi, como se muestra en la Figura 3, y creemos una clase Java ME 8 para el control del sensor del detector de llama.

Primero, cree una clase DFR0076Device que usa la API de acceso al dispositivo y define una variable pin que admite la interfaz de GPIO, como se muestra en el Listado 1.

 public class DFR0076Device {private GPIOPin pin =null; // Defina el pin para el control del sensor de llama 

Listado 1. Clase para el control del sensor del detector de llama

A continuación, cree un constructor de clase que inicialice y active el pin GPIO 22 usando el DeviceManager API y GPIOPinConfig class (ver Listado 2) para establecer las siguientes condiciones:

 public DFR0076Device (int pinGPIO) {... pin =(GPIOPin) DeviceManager.open (new GPIOPinConfig (0, pinGPIO, GPIOPinConfig.DIR_INPUT_ONLY, GPIOPinConfig.MODE_INPUT_PULL_UP, GPIING_GEDER_GED.TRIS)  

Listado 2. Estableciendo las condiciones iniciales

Ahora, cree un método que reciba una clase de escucha definida que admita eventos de detección de llamas, como se muestra en el Listado 3.

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

Listado 3. Método que admite eventos de detección de llamas

También es importante que cierre el pin cuando haya terminado, y también asegúrese de liberar el detector de pin, como se muestra en el Listado 4.

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

Listado 4. Cerrar el pin y liberar al oyente

Ahora, cree un MIDlet principal que invoque nuestro código y defina una clase de escucha para procesar eventos de detección de llamas, como se muestra en el Listado 5.

 clase pública TestSensors extiende MIDlet {DFR0076Device flame; privado estático final int FLAME_DETECTOR_PIN =22; public void startApp () {// Inicializar el sensor de llama flame =new DFR0076Device (FLAME_DETECTOR_PIN); flame.setListener (nuevo FlameSensor ()); } public void destroyApp (booleano incondicional) {flame.close (); } private static int waitnext =1; class FlameSensor implementa PinListener {public void valueChanged (evento PinEvent) {if (event.getValue () &&--waitnext ==0) {System.out.println ("ADVERTENCIA Llama detectada !!!"); esperar siguiente =10; }}}} 

Listado 5. Creación de un MIDlet para invocar nuestro código

Conexión del detector de movimiento

Ahora agreguemos la funcionalidad de detector de movimiento a nuestros TestSensors MIDlet. Para hacer eso, necesitamos un sensor de movimiento como el HC-SR501 que se muestra en la Figura 2.

Los sensores PIR le permiten detectar el movimiento. Todo emite una pequeña cantidad de radiación infrarroja, y cuanto más caliente está algo, más radiación emite. Los sensores PIR pueden detectar un cambio en los niveles de IR que se produce dentro de su zona de detección (por ejemplo, cuando un humano entra en una habitación) y, por lo tanto, detectan el movimiento.

El sensor PIR que usaremos tiene tres pines:tierra, salida digital y entrada de 3 a 5 V CC. En reposo, cuando no se detecta movimiento, la señal de salida digital permanecerá baja. Sin embargo, cuando se detecta movimiento, la señal de salida digital emitirá un pulso alto (3,3 V). Está bien conectar el pin de salida digital directamente a la Raspberry Pi.

Para realizar pruebas, el sensor PIR tiene un puente (consulte la Figura 4).

  • Al colocar el puente en la posición "L" se crea un disparador único (no repetible). Cuando el puente está en esta posición, la detección se habilita después de que ocurre un evento de detección, lo que permite la detección de movimiento continuo. La salida aún se mantiene baja durante 3 segundos después de que ya no se detecta movimiento.
  • Al colocar el puente en la posición "H" se crea un disparador repetible. Cuando el puente se establece en la posición "H" (predeterminada), la detección se desactiva después de que ocurre un evento de detección (es decir, una vez que la salida es alta).

Puede realizar los siguientes ajustes:

  • Ajustar el potenciómetro de sensibilidad en el sentido de las agujas del reloj aumenta la distancia de detección a unos 7 metros; ajustarlo en sentido antihorario disminuye la distancia de detección a unos 3 metros.
  • Ajustar el potenciómetro de retardo de tiempo en el sentido de las agujas del reloj alarga el retardo de inducción a 300 segundos; ajustarlo en sentido antihorario acorta el retardo de inducción a 5 segundos.

Conectemos el sensor PIR a los pines Raspberry Pi 5 V, Gnd y GPIO de 24, como se muestra en la Figura 3, y creemos un HCSR501Device de clase Java ME 8 para controlarlo usando la API de acceso al dispositivo, como se muestra en el Listado 6.

 public class HCSR501Device {private GPIOPin pin =null; 

Listado 6. HCSR501Device clase

Luego, cree un constructor de clase que inicialice y active el pin GPIO 24 usando el DeviceManager API y GPIOPinConfig class (ver Listado 7) para establecer las siguientes condiciones:

  • Nombre del dispositivo:0
  • Número de pin:GPIO 24 (especificado a través de pinGPIO )
  • Dirección:solo entrada
  • Modo:desplegable
  • Activador:borde ascendente
  • Valor inicial:falso
  • Espere tres segundos antes de inicializar el PIR
 public HCSR501Device (int pinGPIO) {... pin =(GPIOPin) DeviceManager.open (new GPIOPinConfig (0, pinGPIO, GPIOPinConfig.DIR_INPUT_ONLY, GPIOPinConfig.MODE_INPUT_PULL_DOWN, GPIING_GERGE_Config); I2CUtils.I2Cdelay (3000); // espera 3 segundos ...} 

Listado 7. Estableciendo las condiciones iniciales

Ahora, cree un método que reciba una clase de escucha definida que admita eventos de detección de movimiento, como se muestra en el Listado 8.

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

Listado 8. Método que admite eventos de detección de movimiento

También es importante que cierre el pin cuando haya terminado, y también asegúrese de liberar el detector de pin como se muestra en el Listado 9.

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

Listado 9. Cerrar el pin y liberar al oyente

Extendamos nuestra clase MIDlet para admitir el sensor PIR y su oyente, como se muestra en el Listado 10.

 // Definir el objeto del dispositivo HCSR501 HCSR501Device pir; private static final int MOTION_DETECTOR_PIN =24; @Overridepublic void startApp () {... // Inicializar el sensor PIR pir =new HCSR501Device (MOTION_DETECTOR_PIN); pir.setListener (new PirSensor ()); ...} @Overridepublic void destroyApp (boolean incondicional) {... pir.close (); ...} // Verifique el sensor PIR para detección de movimiento clase PirSensor implementa PinListener {@Override public void valueChanged (evento PinEvent) {if (event.getValue ()) {System.out.println ("ADVERTENCIA ¡Movimiento detectado!"); }}} 

Listado 10. Ampliación de la clase MIDlet para admitir el sensor PIR y su oyente

Para obtener más detalles:Java ME 8 + Raspberry Pi + Sensors =IoT World (Parte 1)


Proceso de manufactura

  1. Programa Java Hola Mundo
  2. Registrador de datos profesional multicanal en Raspberry Pi - Parte 1
  3. Proyecto IoT 101:Temperatura de transmisión desde su Raspberry Pi
  4. Lectura de sensores analógicos con un pin GPIO
  5. Sensores analógicos sin entradas analógicas en la Raspberry Pi
  6. Sensor de termómetro digital de 1 cable Raspberry Pi (DS18B20)
  7. Sensores Java ME 8 + Raspberry Pi + =Mundo IoT (Parte 1)
  8. Sensor de pasillo digital Raspberry Pi en JAVA
  9. Sensores Raspberry Pi
  10. Controle la temperatura de su hogar usando su Raspberry Pi
  11. Sensores analógicos en Raspberry Pi con un MCP3008