[SOLVED] Arduino Serial problem on OpenWRT

Kali ini saya akan sharing lagi tentang troubleshooting Arduino dan openWRT. Jadi ceritanya saya bikin aplikasi wireless sederhana menggunakan module komunikasi nRF24L01. Tentunya saya memerlukan setidaknya 2 buah Arduino dan 2 buah nRF24L01. Arduino yang saya pakai adalah Arduino UNO dan Arduino NANO, dengan wiring ke module nRF24L01 nya sebagaimana sudah ditulis dan digambarkan di sini.

Komunikasi antar dua Arduino tersebut tidak ada masalah. Baud rate keduanya ada di 57600. Jadi ketika yang satu mengirim sinyal, maka yang lainnya akan menerima dan mengirimkan balik sinyal "OK". Selama sinyal balik "OK" tidak diterima si Arduino pengirim, maka Arduino tersebut akan mengirimkan terus. Nah, sampai sejauh ini aplikasinya sudah berjalan sempurna. 

 Namun ketika saya ingin bisa mengakses Arduino pengirim (server) secara wireless juga (internet atau bluetooth), tentu saya memerlukan perangkat tambahan. Pilihannya ada banyak, bisa menggunakan Ethernet shield, Wifi Shield, bluetooth shield, ataupun router biasa (dengan sedikit modifikasi firmware ke OpenWRT). Kalau pakai bluetooth, jangkauannya terbatas, oleh sebab itu lebih luas jika menggunakan akses internet. Dalam percobaan kali ini saya menggunakan router yang sudah dimodifikasi firmwarenya ke openWRT.

Arduino Nano sudah terhubung ke openWRT, sudah bisa terdeteksi sebagai /dev/ttyUSB0. Namun ketika aplikasinya di jalankan, server bisa mengirim pesan dan menerima sinyal "OK" dengan baik, namun anehnya si Arduinonya malah mengirim ulang pesan, seakan-akan belum menerima sinyal "OK". Ini bukan pertama kalinya saya menggunakan openWRT dengan komunikasi serial Arduino. Aplikasi-aplikasi sebelumnya tidak menemui masalah seperti ini. Dugaan saya adalah karena module nRF24L01 ini. Setelah searching di Google, banyak tulisan yang mengatakan bahwa baud rate di openWRT harus diubah dengan cara menuliskan :

# stty -F /dev/ttyUSB0 raw speed 57600

Namun cara tersebut tidak berhasil. Sampai akhirnya setelah membaca manual UNIX : http://unixhelp.ed.ac.uk/CGI/man-cgi?stty ada settingan Serial port di openWRT yang harus diubah. Berdasarkan percobaan, saya baru berhasil dengan mengetikkan :

# stty -F /dev/ttyUSB0 time 1 -hupcl inpck -icrnl -ixon -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke

Siapa tahu pengalaman ini bisa berguna bagi yang menemukan masalah serupa. Oia, untuk melihat settingan Serial port menggunakan stty dapat mengetikkan perintah berikut :

# stty -a -F /dev/ttyUSB0

Ganti /dev/ttyUSB0 dengan physical port yang terhubung. Kalau stty belum terinstall di openWRT, install dulu dengan mengetikkan :

# opkg update
# opkg install coreutils-stty

Happy coding!

Comments  

#1 Angga Wijaya 2015-03-05 21:23
itu ngirim data ke arduinonya pake perintah echo "DATA" > /dev/ttyUSB0 ya?
saya juga mengalami, itu karna setiap kali open koneksi maka arduino reset otomatis.
solusinya ya bikin script persistent, open koneksi pake cat /dev/ttyUSB0, trus loop echo.
tapi ada problem lagi setelah itu, setelah bbrp hari koneksi serial berjalan, tiba2 data dari arduino berhenti.

You have no rights to post comments