Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

Java ME 8 + Raspberry Pi + Sensor =IoT World (Bagian 1)

Pelajari cara menghubungkan sensor ke Raspberry Pi dan mengontrolnya dengan Java.

Diterbitkan September 2014

Rilis terbaru Java ME 8 menyertakan API canggih untuk mengontrol perangkat seperti LED, relai, LCD, sensor, motor, dan sakelar.

Artikel ini adalah yang pertama dalam seri tiga bagian tentang cara menghubungkan sensor elektronik ke Raspberry Pi Model B menggunakan input/output tujuan umum (GPIO), bus sirkuit terpadu (I2C), bus antarmuka periferal serial (SPI) , atau antarmuka penerima/pemancar asinkron universal (UART).

Dengan menggunakan Java ME 8 untuk mengontrol perangkat dengan berbagai jenis antarmuka dan menghubungkan perangkat ke Raspberry Pi, kita dapat menciptakan dunia Internet of Things (IoT).

Artikel ini berfokus pada penggunaan GPIO dan menunjukkan contoh bagaimana mengembangkan kelas di Java ME 8 yang dapat

Catatan :Contoh kode lengkap untuk proyek NetBeans IDE 8.0 ini dapat diunduh di sini.

API I/O Perangkat

Spesifikasi Device I/O API mendefinisikan API I/O perangkat periferal generik untuk aplikasi Java yang berjalan pada perangkat kecil yang disematkan. Ini mendefinisikan API untuk beberapa perangkat periferal yang paling umum, termasuk yang berikut:

Sirkuit yang Akan Kami Buat

Perangkat GPIO dapat digunakan sebagai input digital atau output digital, dapat dinonaktifkan atau diaktifkan, dan dapat digunakan untuk menggerakkan jalur "interupsi". Namun, pertimbangan yang sangat penting adalah bahwa semua pin Raspberry Pi GPIO beroperasi pada 3,3 V. Oleh karena itu, sangat penting untuk memeriksa spesifikasi teknis perangkat yang ingin Anda sambungkan untuk menentukan apakah mereka menggunakan 3,3 V atau 5 V. Dalam beberapa kasus , Anda perlu menggunakan konverter level logika seperti ini.

Menghubungkan Detektor Api

Sensor api DFR0076 dari DFRobot dapat digunakan untuk mendeteksi api atau panjang gelombang cahaya lainnya antara sekitar 760 nm dan 1100 nm. Kami dapat menghubungkannya ke 3,3 V atau 5 V, dan jangkauan deteksi sekitar 20 cm (4,8 V) hingga 100 cm (1 V). Saat api terdeteksi, pin sinyal akan ditarik.

Mari hubungkan sensor api ke pin 3,3 V, Gnd, dan GPIO 22 Raspberry Pi, seperti yang ditunjukkan pada Gambar 3, dan buat kelas Java ME 8 untuk kontrol sensor pendeteksi api.

Pertama, buat kelas DFR0076Device yang menggunakan Device Access API, dan mendefinisikan variabel pin yang mendukung antarmuka ke GPIO, seperti yang ditunjukkan pada Daftar 1.

DFR0076Device kelas publik { private GPIOPin pin =null; //Tentukan pin untuk kontrol sensor api

Cantuman 1. Kelas untuk kontrol sensor pendeteksi api

Selanjutnya, buat konstruktor kelas yang menginisialisasi dan mengaktifkan pin GPIO 22 menggunakan DeviceManager API dan GPIOPinConfig class (lihat Daftar 2) untuk menetapkan kondisi berikut:

public DFR0076Device(int pinGPIO) { ... pin =(GPIOPin) DeviceManager.open(new GPIOPinConfig( 0, pinGPIO,GPIOPinConfig.DIR_INPUT_ONLY,GPIOPinConfig.MODE_INPUT_PULL_UP, GPIOPinConfig.TRIGEGER_RISING_ED_...}<, false) /pra> 

Cantuman 2. Menetapkan kondisi awal

Sekarang, buat metode yang menerima kelas pendengar yang ditentukan yang mendukung peristiwa deteksi nyala api, seperti yang ditunjukkan pada Daftar 3.

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

Daftar 3. Metode yang mendukung peristiwa deteksi api

Anda juga harus menutup pin setelah selesai, dan juga memastikan Anda membebaskan pendengar pin, seperti yang ditunjukkan pada Daftar 4.

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

Listing 4. Menutup pin dan membebaskan pendengar

Sekarang, buat MIDlet utama yang memanggil kode kita dan mendefinisikan kelas pendengar untuk memproses peristiwa pendeteksian nyala api, seperti yang ditunjukkan pada Daftar 5.

TestSensors kelas publik memperluas MIDlet { DFR0076Device flame; private static final int FLAME_DETECTOR_PIN =22; public void startApp() { //Inisialisasi Flame Sensor flame =new DFR0076Device(FLAME_DETECTOR_PIN); flame.setListener(FlameSensor baru()); } public void destroyApp(boolean tanpa syarat) { flame.close(); } private static int waitnext =1; class FlameSensor mengimplementasikan PinListener { public void valueChanged(PinEvent event) { if (event.getValue() &&--waitnext ==0) { System.out.println("PERINGATAN Api terdeteksi!!!"); tunggu selanjutnya =10; } } }}

Daftar 5. Membuat MIDlet untuk menjalankan kode kita

Menghubungkan Detektor Gerakan

Sekarang mari tambahkan fungsionalitas pendeteksi gerakan ke TestSensors our MIDlet. Untuk melakukan itu, kita memerlukan sensor gerak seperti HC-SR501 yang ditunjukkan pada Gambar 2.

Sensor PIR memungkinkan Anda merasakan gerakan. Semuanya memancarkan sejumlah kecil radiasi infra merah, dan semakin panas sesuatu, semakin banyak radiasi yang dipancarkannya. Sensor PIR mampu mendeteksi perubahan tingkat IR yang terjadi dalam zona deteksinya (misalnya, saat manusia memasuki ruangan) dan, karenanya, merasakan gerakan.

Sensor PIR yang akan kita gunakan memiliki tiga pin:ground, digital out, dan 3-5 Vdc in. Saat idle, ketika tidak ada gerakan yang terdeteksi, sinyal digital out akan tetap rendah. Namun, ketika gerakan terdeteksi, sinyal keluar digital akan berdenyut tinggi (3,3 V). Tidak apa-apa untuk menghubungkan pin keluaran digital langsung ke Raspberry Pi.

Untuk pengujian, sensor PIR memiliki jumper (lihat Gambar 4).

  • Menyetel jumper ke posisi "L" akan membuat satu pemicu (tidak dapat diulang). Saat jumper berada di posisi ini, penginderaan diaktifkan setelah peristiwa rasa terjadi, yang memungkinkan deteksi gerakan terus menerus. Outputnya masih terkunci rendah selama 3 detik setelah gerakan tidak lagi terdeteksi.
  • Menyetel jumper ke posisi "H" akan membuat pemicu berulang. Saat jumper diatur ke posisi “H” (default), penginderaan dinonaktifkan setelah peristiwa sense terjadi (yaitu, setelah output tinggi).

Anda dapat melakukan penyesuaian berikut:

  • Menyesuaikan potensiometer sensitivitas searah jarum jam meningkatkan jarak penginderaan menjadi sekitar 7 meter; menyesuaikannya berlawanan arah jarum jam mengurangi jarak penginderaan menjadi sekitar 3 meter.
  • Menyesuaikan potensiometer waktu tunda searah jarum jam akan memperpanjang penundaan induksi hingga 300 detik; menyesuaikannya berlawanan arah jarum jam mempersingkat penundaan induksi menjadi 5 detik.

Mari kita hubungkan sensor PIR ke pin Raspberry Pi 5 V, Gnd, dan GPIO 24, seperti yang ditunjukkan pada Gambar 3, dan buat class Java ME 8HCSR501Device untuk mengontrolnya menggunakan Device Access API, seperti yang ditunjukkan pada Listing 6.

public class HCSR501Device { private GPIOPin pin =null;

Cantuman 6. HCSR501Perangkat kelas

Kemudian, buat konstruktor kelas yang menginisialisasi dan mengaktifkan pin GPIO 24 menggunakan DeviceManager API dan GPIOPinConfig class (lihat Daftar 7) untuk menetapkan kondisi berikut:

  • Nama perangkat:0
  • Nomor pin:GPIO 24 (ditentukan melalui pinGPIO )
  • Arah:masukan saja
  • Mode:tarik-turun
  • Pemicu:peningkatan
  • Nilai awal:salah
  • Tunggu tiga detik sebelum menginisialisasi PIR
public HCSR501Device(int pinGPIO) { ... pin =(GPIOPin) DeviceManager.open(new GPIOPinConfig( 0, pinGPIO, GPIOPinConfig.DIR_INPUT_ONLY, GPIOPinConfig.MODE_INPUT_PULL_DOWN, GPIOPinConfig.TRIGGER_RISING)); I2CUtils.I2Cdelay(3000); //tunggu 3 detik...}

Cantuman 7. Menetapkan kondisi awal

Sekarang, buat metode yang menerima kelas pendengar yang ditentukan yang mendukung kejadian deteksi gerakan, seperti yang ditunjukkan pada Daftar 8.

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

Cantuman 8. Metode yang mendukung peristiwa deteksi gerakan

Anda juga harus menutup pin setelah selesai, dan juga memastikan Anda membebaskan pendengar pin seperti yang ditunjukkan pada Daftar 9.

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

Listing 9. Menutup pin dan membebaskan pendengar

Mari kita perluas kelas MIDlet kita untuk mendukung sensor PIR dan pendengarnya, seperti yang ditunjukkan pada Daftar 10.

//Define HCSR501 Device objectHCSR501Device pir;private static final int MOTION_DETECTOR_PIN =24;@Overridepublic void startApp() {... //Inisialisasi sensor PIR pir =new HCSR501Device(MOTION_DETECTOR_PIN); pir.setListener(new PirSensor());... }@Overridepublic void destroyApp(boolean endless) {... pir.close();...}//Periksa Sensor PIR untuk kelas deteksi gerakan PirSensor mengimplementasikan PinListener { @Override public void valueChanged(PinEvent event) { if (event.getValue()) { System.out.println("PERINGATAN Gerak terdeteksi!!!"); } }}

Daftar 10. Memperluas kelas MIDlet untuk mendukung sensor PIR dan pendengarnya

Untuk detail selengkapnya: Java ME 8 + Raspberry Pi + Sensor =IoT World (Bagian 1)


Proses manufaktur

  1. Program Halo Dunia Java
  2. Pencatat Data Profesional Multisaluran di Raspberry Pi – Bagian 1
  3. Proyek IoT 101:Aliran Suhu dari Raspberry Pi
  4. Membaca Sensor Analog Dengan Satu Pin GPIO
  5. Sensor Analog tanpa Input Analog pada Raspberry Pi
  6. Raspberry Pi 1- Sensor Termometer Digital Kawat (DS18B20)
  7. Java ME 8 + Raspberry Pi + Sensor =IoT World (Bagian 1)
  8. Raspberry Pi digital Hall sensor in JAVA
  9. Sensor Raspberry Pi
  10. Pantau suhu rumah Anda menggunakan Raspberry Pi