산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

자바 ME 8로 라즈베리 파이 IoT 구축: 1부 – GPIO 센서 연동

개요

자바 ME 8로 라즈베리 파이에서 센서를 연결하고 제어해 강력한 IoT 기능을 구현하는 방법을 알아봅니다.

2014년 9월 발행

자바 ME 8 최신 릴리스는 LED, 릴레이, LCD, 센서, 모터, 스위치 제어를 단순화하는 견고한 Device I/O API를 도입했습니다.

이 문서는 라즈베리 파이 모델 B를 GPIO, I²C, SPI, UART 인터페이스로 전자 센서와 통합하는 3부작 시리즈의 시작입니다.

이 인터페이스로 자바 ME 8을 활용해 장치를 구동하면 완전한 기능을 갖춘 IoT 생태계를 구축할 수 있습니다.

이번 편에서는 GPIO에 초점을 맞춰 다음을 위한 즉시 사용 가능한 자바 ME 8 클래스를 제공합니다:

참고: 전체 소스 파일을 포함한 NetBeans IDE 8.0 프로젝트는 여기에서 다운로드 가능합니다.

Device I/O API 개요

Device I/O API 사양은 임베디드 플랫폼에서 자바 애플리케이션을 위한 범용 주변장치 I/O 인터페이스를 정의합니다. 다음과 같은 일반적인 장치를 다룹니다:

주요 회로 고려사항

모든 라즈베리 파이 GPIO 핀은 3.3V에서 동작합니다. 센서 연결 전 전압 요구사항을 확인하세요. 장치가 5V를 기대하면 로직 레벨 컨버터(예: BSS138 MOSFET 기반 시프터)를 사용해 신호를 안전하게 변환하세요.

화염 감지기 연결

DFR0076 화염 센서는 ~760nm~1100nm 파장의 빛을 감지하며 감지 범위는 20~100cm입니다. 화염이 있으면 신호 핀이 HIGH로 풀업됩니다.

도면 3과 같이 센서를 파이의 3.3V, GND, GPIO 22에 배선한 후 제어용 자바 ME 8 클래스를 생성합니다.

Listing 1 – DFR0076Device 클래스

public class DFR0076Device {
    private GPIOPin pin = null; // 화염 센서 제어용 핀
}

Listing 2 – 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 – 리스너 등록

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

Listing 4 – 리소스 정리

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

Listing 5 – 화염 센서 사용하는 MIDlet

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("WARNING Flame detected!!!");
                waitNext = 10;
            }
        }
    }
}

모션 감지기 연결

모션 감지 시 3.3V 펄스를 출력하는 HC-SR501 PIR 센서를 통합합니다. 센서의 세 핀은 GND, VCC(3~5V), 디지털 출력입니다.

PIR의 감도와 지연을 포텐셔미터로 조정하고, 점퍼를 'L'(단일 트리거) 또는 'H'(반복 트리거)로 설정합니다.

PIR을 5V, GND, GPIO 24에 배선한 후 전용 HCSR501Device 클래스로 MIDlet을 확장합니다.

Listing 6 – HCSR501Device 클래스

public class HCSR501Device {
    private GPIOPin pin = null;
}

Listing 7 – 3초 지연 포함한 핀 초기화

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); // 센서 안정화 대기
}

Listing 8 – 모션 리스너 등록

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

Listing 9 – 정리

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

TestSensors MIDlet을 확장해 모션 이벤트 처리:

Listing 10 – PIR 지원 MIDlet

// 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("WARNING Motion detected!!!");
        }
    }
}

더 깊은 내용은 전체 시리즈 참조: 자바 ME 8 + 라즈베리 파이 + 센서 = IoT 월드 (1부)

제조공정

  1. Java Hello World: 첫 프로그램 작성하기
  2. 라즈베리 파이 멀티채널 데이터 로거 구축 – 1부: 요구사항 & 아키텍처
  3. 초보자 IoT 튜토리얼: 라즈베리 파이에서 온도 데이터 스트리밍하기
  4. 단일 GPIO 핀으로 라즈베리 파이에서 아날로그 센서 측정하기
  5. 내장 ADC 없는 라즈베리 파이에서 아날로그 센서 측정하기
  6. DS18B20 원와이어 디지털 온도계를 라즈베리 파이에 연결하기 – 단계별 가이드
  7. 자바 ME 8로 라즈베리 파이 IoT 구축: 1부 – GPIO 센서 연동
  8. 라즈베리 파이로 리니어 홀 센서 읽기: 자바 가이드 & ADC0832 통찰
  9. 라즈베리 파이 센서 마스터하기: 전자공학과 통신 프로토콜 실전 가이드
  10. 라즈베리 파이 대시보드로 집 온도 모니터링하기