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

Java ME 8 + Raspberry Pi +センサー=IoT World(パート1)

センサーをRaspberryPiに接続し、Javaで制御する方法を学びます。

2014年9月公開

Java ME 8の最新リリースには、LED、リレー、LCD、センサー、モーター、スイッチなどのデバイスを制御するための強力なAPIが含まれています。

この記事は、汎用入出力(GPIO)、集積回路間バス(I2C)、シリアルペリフェラルインターフェイスバス(SPI)を使用して電子センサーをRaspberryPiモデルBに接続する方法に関する3部構成のシリーズの最初の記事です。 、またはユニバーサル非同期レシーバ/トランスミッタ(UART)インターフェイス。

Java ME 8を使用して、さまざまなタイプのインターフェイスを備えたデバイスを制御し、デバイスをRaspberry Piに接続することで、モノのインターネット(IoT)の世界を作成できます。

この記事では、GPIOの使用に焦点を当て、Java ME8で可能なクラスを開発する方法の例を示します

:このNetBeans IDE8.0プロジェクトの完全なサンプルコードはここからダウンロードできます。

デバイスI / O API

デバイスI / O API仕様は、小さな組み込みデバイスで実行されるJavaアプリケーション用の汎用周辺機器I / OAPIを定義します。以下を含む、最も一般的な周辺機器のAPIを定義します。

作成する回路

GPIOデバイスは、デジタル入力またはデジタル出力のいずれかとして使用でき、無効または有効にでき、「割り込み」ラインを駆動するために使用できます。ただし、非常に重要な考慮事項は、すべてのRaspberry PiGPIOピンが3.3Vで動作することです。したがって、接続するデバイスの技術仕様をチェックして、3.3Vと5Vのどちらを使用しているかを判断することが非常に重要です。 、このようなロジックレベルコンバータを使用する必要があります。

火炎検出器の接続

DFRobotのDFR0076火炎センサーを使用して、約760 nm〜1100nmの火災またはその他の波長の光を検出できます。 3.3Vまたは5Vに接続でき、検出範囲は約20cm(4.8V)〜100cm(1V)です。火災が検出されると、信号ピンが引き上げられます。

図3に示すように、火炎センサーをRaspberryPiの3.3V、Gnd、およびGPIO 22ピンに接続し、火炎検出器センサー制御用のJava ME8クラスを作成しましょう。

まず、クラス DFR0076Device を作成します デバイスアクセスAPIを使用し、変数 pin を定義します リスト1に示すように、GPIOへのインターフェースをサポートします。

 public class DFR0076Device {private GPIOPin pin =null; //火炎センサー制御用のピンを定義します

リスト1.火炎検出器センサー制御のクラス

次に、 DeviceManager を使用してGPIO22ピンを初期化およびアクティブ化するクラスコンストラクターを作成します APIと GPIOPinConfig クラス(リスト2を参照)を使用して、次の条件を確立します。

 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)); ...} 

リスト2.初期条件の確立

次に、リスト3に示すように、火炎検出イベントをサポートする定義済みのリスナークラスを受け取るメソッドを作成します。

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

リスト3.火炎検出イベントをサポートする方法

リスト4に示すように、完了したらピンを閉じ、ピンリスナーを解放することも重要です。

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

リスト4.ピンを閉じてリスナーを解放する

次に、リスト5に示すように、コードを呼び出し、火炎検出イベントを処理するためのリスナークラスを定義するメインMIDletを作成します。

 public class TestSensors extends MIDlet {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;クラスFlameSensorはPinListenerを実装します{publicvoid valueChanged(PinEvent event){if(event.getValue()&&--waitnext ==0){System.out.println( "WARNING Flamedetected !!!"); waitnext =10; }}}} 

リスト5.コードを呼び出すためのMIDletの作成

モーションディテクターの接続

それでは、モーション検出機能を TestSensors に追加しましょう。 MIDlet。そのためには、図2に示すHC-SR501などのモーションセンサーが必要です。

PIRセンサーを使用すると、動きを感知できます。すべてが少量の赤外線を放射し、何かが高温になるほど、より多くの放射を放射します。 PIRセンサーは、検出ゾーン内で発生するIRレベルの変化を検出できるため(たとえば、人間が部屋に入ったとき)、動きを感知できます。

使用するPIRセンサーには、アース、デジタル出力、3〜5 Vdc入力の3つのピンがあります。アイドル状態では、動きが検出されない場合、デジタル出力信号はローのままになります。ただし、モーションが検出されると、デジタル出力信号はパルスハイ(3.3 V)になります。デジタル出力ピンをRaspberryPiに直接接続しても問題ありません。

テスト用に、PIRセンサーにはジャンパーがあります(図4を参照)。

次の調整を行うことができます:

図3に示すように、PIRセンサーをRaspberry Pi 5 V、Gnd、およびGPIO 24ピンに接続し、Java ME8クラス HCSR501Device を作成しましょう。 リスト6に示すように、Device AccessAPIを使用して制御します。

 public class HCSR501Device {private GPIOPin pin =null; 

リスト6. HCSR501Device クラス

次に、 DeviceManager を使用してGPIO24ピンを初期化およびアクティブ化するクラスコンストラクターを作成します。 APIと GPIOPinConfig クラス(リスト7を参照)を使用して、次の条件を確立します。

 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); // 3秒待ちます...} 

リスト7.初期条件の確立

次に、リスト8に示すように、モーション検出イベントをサポートする定義済みのリスナークラスを受け取るメソッドを作成します。

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

リスト8.モーション検出イベントをサポートする方法

完了したらピンを閉じることも重要です。また、リスト9に示すように、ピンリスナーを解放することも重要です。

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

リスト9.ピンを閉じてリスナーを解放する

リスト10に示すように、MIDletクラスを拡張してPIRセンサーとそのリスナーをサポートしましょう。

 // HCSR501デバイスオブジェクトの定義HCSR501Devicepir; private static final int MOTION_DETECTOR_PIN =24; @Overridepublic void startApp(){... // PIRセンサーの初期化pir =new HCSR501Device(MOTION_DETECTOR_PIN); pir.setListener(new PirSensor()); ...} @Overridepublic void destroyApp(boolean unconditional){... pir.close(); ...} //モーション検出クラスのPIRセンサーを確認するPirSensorはPinListenerを実装します{@Override public void valueChanged(PinEvent event){if(event.getValue()){System.out.println( "警告モーションが検出されました!!!"); }}} 

リスト10.PIRセンサーとそのリスナーをサポートするためにMIDletクラスを拡張する

詳細:Java ME 8 + Raspberry Pi +センサー=IoT World(パート1)


製造プロセス

  1. Java Hello World プログラム
  2. Raspberry Piのマルチチャネルプロフェッショナルデータロガー–パート1
  3. IoT 101プロジェクト:RaspberryPiからのストリーム温度
  4. 1つのGPIOピンでアナログセンサーを読み取る
  5. RaspberryPiにアナログ入力のないアナログセンサー
  6. Raspberry Pi 1-Wireデジタル温度計センサー(DS18B20)
  7. Java ME 8 + Raspberry Pi +センサー=IoT World(パート1)
  8. JAVAのRaspberryPiデジタルホールセンサー
  9. RaspberryPiセンサー
  10. RaspberryPiを使用して自宅の温度を監視します
  11. MCP3008を使用したRaspberryPiのアナログセンサー