工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

Java ME 8でRaspberry Pi上のIoTを構築: パート1 - GPIOセンサー統合

Java ME 8を使用してRaspberry Pi上のセンサーを接続・制御する方法を発見し、強力なIoT機能を解き放ちます。

2014年9月公開

Java ME 8の最新リリースは、LED、リレー、LCD、センサー、モーター、スイッチの制御を簡素化する堅牢なDevice I/O APIを導入しました。

この記事は、GPIO、I²C、SPI、UARTインターフェースを通じてRaspberry Pi Model Bと電子センサーを統合する3部構成シリーズの始まりです。

これらのインターフェースを通じてデバイスを駆動するJava ME 8を活用することで、完全に機能するIoTエコシステムを構築できます。

この号ではGPIOに焦点を当て、以下のセンサー用のすぐに使用できるJava ME 8クラスを提供します:

注: すべてのソースファイルを含む完全なNetBeans IDE 8.0プロジェクトはこちらからダウンロードできます。

Device I/O APIの概要

Device I/O API仕様は、組み込みプラットフォーム上のJavaアプリケーション向けの汎用ペリフェラルI/Oインターフェースを定義します。以下の一般的なデバイスをカバーします:

重要な回路考慮事項

すべてのRaspberry Pi GPIOピンは3.3Vで動作します。センサーを接続する前に、その電圧要件を確認してください。デバイスが5Vを期待する場合、ロジックレベルコンバーター(例: BSS138 MOSFETベースのシフター)を使用して信号を安全に変換してください。

炎検知器の接続

DFR0076炎センサーは、約760nm〜1100nmの波長の光を検知し、検知範囲は20〜100cmです。炎が存在すると、その信号ピンがハイになります。

図3に示すように、センサーをPiの3.3V、GND、GPIO 22に配線し、それを制御するJava ME 8クラスを作成します。

リスト1 - DFR0076Deviceクラス

public class DFR0076Device {
    private GPIOPin pin = null; // 炎センサー制御用ピン
}

リスト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));
}

リスト3 - リスナー登録

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

リスト4 - リソースクリーンアップ

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

リスト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センサーを統合します。センサーの3ピンはGND、VCC(3-5V)、デジタル出力です。

PIRの感度と遅延をポテンショメーターで調整し、ジャンパーを「L」(単発トリガー)または「H」(繰り返しトリガー)に設定します。

PIRを5V、GND、GPIO 24に配線し、専用のHCSR501DeviceクラスでMIDletを拡張します。

リスト6 - HCSR501Deviceクラス

public class HCSR501Device {
    private GPIOPin pin = null;
}

リスト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); // センサー安定化待機
}

リスト8 - 動きリスナー登録

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

リスト9 - クリーンアップ

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

TestSensors MIDletを拡張して動きイベントを処理:

リスト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!!!");
        }
    }
}

詳細については、完全シリーズを参照: Java ME 8 + Raspberry Pi + Sensors = IoT World (Part 1)。

製造プロセス

  1. Raspberry Piマルチチャネルデータロガー構築 – パート1:要件 & アーキテクチャ
  2. 初心者向けIoTチュートリアル:Raspberry Piから温度データをストリーミング
  3. Raspberry Piで単一GPIOピンを使ってアナログセンサーを測定
  4. ネイティブADCなしでRaspberry Pi上のアナログセンサーを測定
  5. DS18B20ワンワイヤーデジタル温度計をRaspberry Piに接続 - ステップバイステップガイド
  6. Java ME 8でRaspberry Pi上のIoTを構築: パート1 - GPIOセンサー統合
  7. Raspberry Piでリニアホールセンサーを読み取り: JavaガイドとADC0832の知見
  8. Raspberry Piセンサーをマスター: 電子工学と通信プロトコルの実践ガイド
  9. Raspberry Piダッシュボードで家庭の温度を監視する
  10. MCP3008 ADCでRaspberry Piにアナログセンサーを読み取る
  11. Java Hello World:最初のプログラム