Pemrograman Raspberry Pi (2) Input / Output dengan Java dan Pi4J
GPIO Input • Dalam Pi4J terdapat beberapa method yang dapat kita gunakan untuk melakukan pembacaan dan pengelolaan input dari “dunia luar” pada GPIO • Untuk dapat digunakan sebagai masukan, maka GPIO pin harus ditentukan nilai reference-nya • Jika tidak di set, maka GPIO pin akan mengalami “float” • Pada Raspberry PI, sudah terdapat resistor “pull up dan pull down” internal yang dapat dikonfigurasi dengan menggunakan Pi4J
GPIO Input • PULL UP • Resistor pull up berarti kita menghubungkan input IC supaya secara default mendapat logic satu, ketika mendapat trigger maka akan berubah menjadi logic nol • Cocok digunakan untuk aplikasi dengan kondisi default switch (saat tidak ditekan) bernilai high
GPIO Input • PULL DOWN • Resitor pull down berarti kita menghubungkan input IC supaya secara default mendapat logic nol, ketika mendapat trigger maka akan berubah menjadi logic satu • Cocok digunakan untuk aplikasi dengan kondisi default switch (saat tidak ditekan) bernilai low
Praktikum 1 Dasar Pemrograman GPIO pada Raspberry Pi dengan Menggunakan Java dan Pi4j
Praktikum 1 • Membaca input dari tombol/switch dan hasilnya akan menjadi sinyal output untuk merubah kondisi LED
Praktikum 1 • Membaca input dari tombol/switch dan hasilnya akan menjadi sinyal output untuk merubah kondisi LED
Praktikum 1 • Alat dan Bahan • Laptop / PC yang sudah terinstall Java Development Environment (ex. Netbeans dan JDK 8 + Pi4J) • Remote Connection Tools (ex. Putty) • Raspberry Pi board • Power supply 5V • Kabel LAN • Project board / bread board • LED • Kabel jumper untuk pin • Resistor ± 220 Ω • Switch
Langkah 1 Mempersiapkan rangkaian yang akan diprogram Rangkaian yang lain masih sama dengan rangkaian praktikum dasar ouput (LED)
Langkah 1 Mempersiapkan rangkaian yang akan diprogram Rangkaian yang lain masih sama dengan rangkaian praktikum dasar ouput (LED)
Langkah 2 Membuat project baru untuk melakukan pemrograman 1. Membuat projek Java baru 2. Tambahkan library Pi4J 3. Dan saatnya, it’s ngoding time ^^
{ //void main start
System.out.println("Praktikum Penggunaan Tombol"); final GpioController gpio = GpioFactory.getInstance(); final GpioPinDigitalInput myButton = gpio.provisionDigitalInputPin(RaspiPin.GPIO_02, PinPullResistance.PULL_DOWN); System.out.println(" Sistem siap ");
GpioPinDigitalOutput myLed[] = { gpio.provisionDigitalOutputPin(RaspiPin.GPIO_01, "LED #1", PinState.LOW)}; myButton.addTrigger(new GpioSetStateTrigger(PinState.HIGH, myLed[0], PinState.HIGH)); myButton.addTrigger(new GpioSetStateTrigger(PinState.LOW, myLed[0], PinState.LOW));
myButton.addTrigger(new GpioCallbackTrigger(new Callable
() { public Void call() throws Exception { System.out.println(" --> ada penekanan tombol"); return null; } })); while (true) {
Thread.sleep(500); } //void main end
}
Praktikum 2 Dasar Pemrograman GPIO pada Raspberry Pi dengan Menggunakan Java dan Pi4j
Praktikum 2 • Membaca input dari sensor dan hasilnya akan menjadi sinyal output untuk merubah kondisi LED
Praktikum 2 • Alat dan Bahan • Laptop / PC yang sudah terinstall Java Development Environment (ex. Netbeans dan JDK 8 + Pi4J) • Remote Connection Tools (ex. Putty) • Raspberry Pi board • Power supply 5V • Kabel LAN • Project board / bread board • LED • Kabel jumper untuk pin • Resistor ± 220 Ω • Sensor
Langkah 1 Mempersiapkan sensor yang akan dipakai • Pada dasarnya banyak sekali jenis sensor yang ada di pasaran • Masing-masing memiliki fungsi, sifat dan cara kalibrasi yang berbeda-beda • Dalam pemrograman embedded system dengan menggunakan Java dan Pi4J cara pembacaan sensor memiliki cara yang bermacam-macam • Listener method (normal) • JNI (Java Native Interface) • Multi Platform Sensor API
Langkah 1 Mempersiapkan sensor yang akan dipakai • Dalam praktikum ini, sebagai contoh akan digunakan sensor Passive Infrared Sensor / PIR (Infrared Movement Sensor)
Passive Infrared Sensor (PIR)
Langkah 2 Mempersiapkan rangkaian yang akan diprogram
Rangkaian yang lain masih sama dengan rangkaian praktikum dasar ouput (LED)
Langkah 2 Mempersiapkan rangkaian yang akan diprogram Rangkaian yang lain masih sama dengan rangkaian praktikum dasar ouput (LED)
Langkah 3 Membuat project baru untuk melakukan pemrograman 1. Membuat projek Java baru 2. Tambahkan library Pi4J 3. Dan saatnya, it’s ngoding time ^^
{ //void main start
System.out.println("Percobaan Sensor Gerakan"); //input controller final GpioController gpioSensor = GpioFactory.getInstance(); final GpioPinDigitalInput sensor = gpioSensor.provisionDigitalInputPin(RaspiPin.GPIO_04, PinPullResistance.PULL_DOWN); //output controller final GpioController gpioLED = GpioFactory.getInstance(); final GpioPinDigitalOutput led = gpioLED.provisionDigitalOutputPin(RaspiPin.GPIO_01, "LED", PinState.HIGH); led.low();
// sensor event listener sensor.addListener(new GpioPinListenerDigital() { @Override public void handleGpioPinDigitalStateChangeEvent(GpioPinDigitalStateCh angeEvent event){ if (event.getState().isHigh()) { Date dt = new Date(); System.out.println("Ada Gerakan di "+ dt.toString()); led.toggle();} if (event.getState().isLow()) { Date dt = new Date(); System.out.println("Aman bro "+ dt.toString()); led.toggle();}}}); try { for (;;) { Thread.sleep(100);} } catch (final Exception e) { System.out.println(e.getMessage());} } //void main end
Pengembangan : Alarm Pendeteksi Gerakan Sederhana LED
PIR Sensor
Buzzer
Pengembangan : Alarm Pendeteksi Gerakan Sederhana
https://www.youtube.com/watch?v=34TbdAKfmGg
Terimakasih