ON atau OFF

Melanjutkan cerita sebelumnya kali ini kontrol LED di Arduino kita kembangkan lagi yaitu kontrol ON/OFF melalui CLI di Node.js. Ada banyak cara sebenarnya untuk menghubungkan Arduino dengan platform ini, bisa memakai child process ataupun memakai pustaka seperti serialport, jhonny-five, dan masih banyak lagi.

Serial Port

Pustaka yang banyak dipakai kalo ingin memakai koneksi langsung port serial semisal /dev/ttyACM0 dengan platform Node.js adalah serialport.

Sebenarnya penggunaan pustaka ini sangat mudah tapi belum mendukung Node.js 4.x.x pada saat artikel ini ditulis. Pada artikel ini digunakan Node.js versi 0.10.20

Untuk mengirimkan kontrol LED ke Arduino, kode sederhana Node.js bisa seperti berikut

var SerialPort = require(‘serialport’).SerialPort;
var SerialPort = require(‘serialport’).SerialPort;
var serialPort = new SerialPort(‘/dev/ttyACM0’, {
baudRate: 57600,
dataBits: 8,
parity: ‘none’,
stopBits: 1
});
var status = process.argv[2];
 setTimeout(function(){
serialPort.write(status);
}, 3000);

serialPort.on(‘error’, function (err) {
console.error(“error”, err);
});
});

Source Code

Data dikirimkan ke Arduino melalui proses serialPort.write() pada saat koneksi ke port serial dalam kondisi open, kalau pada kode diatas kondisi ini bisa di deteksi memakai serialPort.on(“open”, callback).

Lalu data apa yang dikirimkan ke Arduino? untuk projek ini data yang dikirimkan adalah string ON untuk menghidupkan lampu atau OFF untuk mematikan lampu.

Perlu diperhatikan sekali lagi yaitu setting nilai Baud Rate harus sama dengan setting pada Arduino, pada artikel ini di setting pada 57600 agar rekonstruksi data bisa sesuai dengan aslinya. LED masih di Pin 13 seperti pada artikel sebelumnya.

https://github.com/jsiot/arduino-led-cli/blob/master/aio/aio.ino

Pada sisi Arduino string yang diterima dari port serial di bandingkan dengan string ON atau OFF.

ledStatus.equalsIgnoreCase(“ON”)

Jika kontrol selain string ON atau OFF maka Arduino akan mengeluarkan string “z”. Perlu diingat bahwa masukan kontrol case-insensitive sehingga masukan string On, ON, on, oN bisa digunakan demikian juga dengan string OFF.

Menghidupkan LED

$ node app.js ON

Mematikan LED

$ node app.js off

Troubleshooting

Jika terjadi masalah seperti LED hanya menyala sebentar lalu mati, usahakan koneksi port serial harus tetap terbuka sehingga state dari Lampu LED bisa terjaga pada kondisi yang telah di set. Caranya adalah buka dua window terminal dan ketik perintah ON atau OFF pada window pertama dan kontrol ON/OFF di window lainnya.

Sampai saat ini penulis belum mengetahui apa sebab pasti dari behaviour ini.

Selamat Mencoba!

One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.