Komunikasi Serial Raspberry Pi 3B Menggunakan OS Linux OpenSUSE [Native Serial Port]

source: rs-online.com

Kenapa diberi judul Native Serial Port? Bisa ditebak karena tutorial kali ini kita akan memanfaatkan port serial asli dari yang di berikan oleh perangkat Raspberry Pi 3B. Tidak menggunakan USB-to-Serial, tidak menggunakan Bit Banging atau Software Serial, ini benar-benar asli yang ada pada pin 14 dan 15.

Tutorial kali ini bisa dikatakan belum tuntas 100% karena memang tergolong lumayan sulit. Namun kami juga punya alasan kenapa tutorial di artikel ini tidak tuntas, yang akan kami bahas di akhir artikel.

Pertama yang harus kalian ketahui adalah Pin yang tersedia di Raspberry Pi 3B beserta beberapa fungsi dari tiap Pin nya. Kalian bisa mengacu pada gambar di bawah ini:

Jika sudah kalian harus siapkan peralatan seperti Serial-to-USB atau TTL-to-USB, unit Raspberry Pi tentunya, dan kabel LAN. Untuk software kalian bisa siapkan salah satu, mau Hyperterminal, Putty, atau seperti yang kami gunakan MobaXterm dan software IDE Arduino yang kami gunakan untuk membaca data dari konsol serial. Kami asumsikan kalian sudah masuk ke remot konsol Raspberry Pi.

Instalasi Paket Aplikasi

Kalian install beberapa paket yang nantinya kalian butuhkan seperti nano, stty, minicom, picocom. Pilih salah satu, atau kalian install semua untuk jaga-jaga.

# zypper install nano stty minicom picocom -y

Untuk paket nano digunakan untuk membuka beberapa file. Kecuali jika kalian terbiasa dengan perintah vi ketika akan membuka file, kalian bisa abaikan instalasi paket nano.

Pemeriksaan Awal

Pertama yang harus kalian periksa adalah kernel driver khusus pada tty device. Gunakan perintah sebagai berikut:

# dmesg | grep tty

Maka muncul tampilannya kurang lebih seperti berikut:

Keterangan pada gambar di atas menunjukkan bahwa Pin serial atau Pin UART sedang difungsikan sebagai Serial Debug. Untuk membuktikannya kalian bisa periksa juga dengan menghubungkan alat USB-to-Serial ke Raspberry milik kalian dengan panduan seperti berikut:

Lakukan pemasangan kabel secara menyilang dari adaptor USB-to-Serial ke Pin UART GPIO. Kemudian satu kabel sisanya untuk jalur Ground (GND).

Rx  <======> Tx
Tx  <======> Rx
GND <======> GND

Hubungkan adaptor USB-to-Serial ke laptop/komputer kalian, buka software IDE Arduino, pilih port com yang sesuai, kemudian buka Serial Monitor. Pilih baudrate 115200. Kalian akan menjumpai tampilan konsol serial seperti ini:

Itu artinya Pin UART atau serial dari Raspberry Pi kalian bekerja dengan baik. Kalian tinggal lakukan konfigurasi agar Pin UART dapat kalian gunakan untuk komunikasi 2 arah.

Konfigurasi

Kembali ke terminal MobaXterm, ketikkan perintah ini:

# nano /boot/efi/extraconfig.txt

Muncul halaman kosong, kalian isikan seperti ini:

dtparam=spi=on
dtoverlay=disable-bt
core_freq=250
force_turbo=1

Lalu simpan dan tutup. Langkah selanjutnya adalah ketikkan perintah ini:

# nano /etc/default/grub

Cari bagian GRUB_CMDLINE_LINUX_DEFAULT lalu ubah isinya dari:

GRUB_CMDLINE_LINUX_DEFAULT="loglevel=3 splash=silent plymouth.enable=0 console=ttyS0, 115200n8"

Menjadi:

GRUB_CMDLINE_LINUX_DEFAULT="loglevel=0 splash=silent plymouth.enable=0 console=tty1"

Hati-hati dan perhatikan baik-baik. Untuk menghindari kesalahan penulisan, lakukan pencadangan dengan menekan Ctrl-K kemudian tekan Ctrl-U sebanyak dua kali di posisi baris yang kalian ubah. Ini bertujuan menulis ulang baris konfigurasi secara identik. Lakukan dengan persis seperti gambar di atas.

Sekarang kalian buka file konfigurasi printk dengan perintah berikut:

# nano /proc/sys/kernel/printk

Ubah isinya dari:

7    4    1    3

Menjadi

0    4    1    3

Simpan dan tutup. Langkah konfigurasi terakhir adalah buka file bootloader dengan perintah:

# nano /etc/sysconfig/bootloader

File konfigurasi ini isinya sedikit sehingga kami pikir sangat mudah. Ubah dua kalimat pertama dari:

DEFAULT_APPEND="loglevel=3 splash=silent plymouth.enable=0 console=ttyS0,115200n8 root=UUID=85572066-cb62-4808-9473-0de6de118a8a rw "

FAILSAFE_APPEND="loglevel=3 splash=silent plymouth.enable=0 console=ttyS0,115200n8 root=UUID=85572066-cb62-4808-9473-0de6de118a8a rw  ide=nodma apm=off noresume edd=off nomodeset 3 "

Menjadi:

DEFAULT_APPEND="loglevel=0 splash=silent plymouth.enable=0 console=tty1 root=UUID=85572066-cb62-4808-9473-0de6de118a8a rw "

FAILSAFE_APPEND="loglevel=0 splash=silent plymouth.enable=0 console=tty1 root=UUID=85572066-cb62-4808-9473-0de6de118a8a rw  ide=nodma apm=off noresume edd=off nomodeset 3 "

Lakukan hal yang sama yaitu membuat cadangan baris konfigurasi seperti yang tertera pada gambar. Atau sebenarnya kalian bisa lakukan dengan cara menyalin file konfigurasi asli dan mengubah nama filenya sesuka kalian, kemudian file konfigurasi yang asli kalian utak-atik. Itu jauh lebih aman.

Lanjut, sekarang kita akan coba cek status kernel driver serial console dengan mengetikkan perintah:

# dmesg | grep tty

Pastikan tampilan yang keluar seperti ini:

Sudah terlihat dengan jelas bukan perbedaannya? 

Baik, sekarang kita buka aplikasi Picocom dengan cara berikut

# picocom --baud 115200 /dev/ttyAMA0

Kemudian buka juga Arduino IDE dan buka bagian Serial Monitor. Sesuaikan Port dan Baudrate yang digunakan. Maka kalian akan mendapati tampilan seperti ini:

Kalian bisa mengetikkan sembarang teks dari dan ke terminal konsol atau Arduino IDE. Jika tidak ada kendala maka seluruh data teks yang kalian ketikkan akan muncul di kedua sistem itu. Selesai. Pin serial pada Raspberry Pi 3B dengan OS OpenSUSE dapat kalian gunakan sesuai kehendak kalian.

Sekian artikel ini kami buat, apabila ada pertanyaan atau hal yang belum dimengerti silahkan tinggalkan komentar di bawah. Atau kalian bisa hubungi kami lewat email yang sudah kami sediakan. Selamat mencoba.




Belum 100% . . . ?

Ya benar! Jika kalian teliti kembali, pada langkah tepat sebelum Konfigurasi, maka tujuan sebenarnya dari langkah itu adalah menghilangkan seluruh isi dari konsol U-Boot. Alasan perlunya dihilangkan adalah agar tidak mengganggu proses transmisi data antara Raspberry Pi dengan perangkat serial lainnya. Dari seluruh langkah di atas, kita hanya berhasil mematikan beberapa parameter saya pada serial konsol U-Boot.

Konsol serial U-Boot tidak akan pernah bisa hilang kecuali dengan dua cara. Pertama dengan mematikan sistem autoboot, namun cara ini kami pandang cukup berisiko. Kedua adalah dengan melakukan Compile ulang file U-Boot. Cara itu kami pandang aman, namun bisa fatal jika terjadi kesalahan compiling. Maka dengan terpaksa kami membiarkan sebagian pesan dari U-Boot tampil.

Sebenarnya dengan adanya konsol tersebut kita bisa melakukan debrick atau debuging apabila terjadi brick atau stuck pada Raspberry Pi kalian. Itu sangat membantu dengan melakukan serial debugging. Nah, untuk bagaimana cara menghilangkan keseluruhan pesan dari U-Boot tadi, akan kami tulis di artikel berikutnya.

Referensi U-Boot:
https://developer.toradex.com/knowledge-base/how-to-disable-enable-debug-messages-in-linux
https://stackoverflow.com/questions/22143253/why-doesnt-u-boot-disable-the-console-output/22351129#22351129
https://stackoverflow.com/questions/34356844/how-to-disable-serial-consolenon-kernel-in-u-boot
https://billwaa.wordpress.com/2014/10/13/beaglebone-black-enable-all-uart-ports-at-boot/


Posting Komentar

0 Komentar