Platform Govinda Rover menyediakan tiga macam perangkat lunak, mulai dari perangkat lunak untuk firmware pada mikrokontroler, software server, hingga antarmuka web moderen. Desain dari masing-masing komponen perangkat lunak selanjutnya akan dijelaskan lebih detail pada sub bab berikutnya.
Firmware Mikrokontroler
Firmware mikrokontroler berisi kode program yang fungsi utamanya adalah sebagai antarmuka (API) serta driver bagian mekanik robot, seperti dipaparkan pada Gambar 3.8. Alur program pada kode firmware secara umum merupakan sebuah switch-case yang akan memilah karakter string yang dikirim oleh single-board computer dan menjalankan fungsi sesuai dengan perintah yang dikirim. Hasil dari fungsi selanjutnya akan dikirim kembali berupa feedback/callback kepada single-board computer.
Untuk mempermudah penggunaan, firmware ditulis menggunakan bahasa Arduino dengan Arduino IDE sebagai basis pengerjaan kode program, hal ini akan sangat mempermudah orang awam yang tidak begitu mengerti mengenai cara memprogram mikrokontroler secara langsung.
[[{"fid":"580","view_mode":"wysiwyg","fields":{"format":"wysiwyg","field_file_image_alt_text[und][0][value]":"Gambar 3.8 Struktur Fungsi Pada Firmware Mikrokontroler","field_file_image_title_text[und][0][value]":"Gambar 3.8 Struktur Fungsi Pada Firmware Mikrokontroler"},"type":"media","link_text":null,"attributes":{"alt":"Gambar 3.8 Struktur Fungsi Pada Firmware Mikrokontroler","title":"Gambar 3.8 Struktur Fungsi Pada Firmware Mikrokontroler","height":"216","width":"400","class":"media-element file-wysiwyg"}}]]
Gambar 3.8 Struktur Fungsi Pada Firmware Mikrokontroler
Struktur firmware pada platform ini merupakan struktur umum yang dapat digunakan untuk robot dengan roda sebagai penggerak utama. Baik menggunakan roda empat wheel drive maupun berbasis tank track. Metode yang terdapat pada firmware telah mendukung fungsi untuk keperluan kontrol standar seperti pengaturan kecepatan motor atau PWM (Pulse Width Modulation) yang terintegrasi dengan driver motor berbasis H-Bridge, arah gerak robot dan kontrol motor servo untuk mengarahkan bagian modul kepala.
Pada dasarnya struktur dari firmware mikrokontroler terbagi menjadi dua. Pertama merupakan aktuator atau output berisikan fungsi-fungsi untuk mengontrol perangkat keras robot seperti arah gerak, kecepatan dan relai. Kedua adalah digital/analog sensor atau input, berisikan fungsi-fungsi untuk membaca berbagai macam sensor. Berikut merupakan penjelasan dari Gambar 3.8:
- PWM Control, fungsi untuk mengatur kecepatan robot menggunakan pulse width modulation.
- Movement Direction Control, fungsi untuk mengatur arah gerakan robot seperti maju, mundur, atau putar ke kiri dan kanan.
- Vision Direction Control, mengatur arah sudut motor servo vertikal dan horisontal untuk mengarahkan bagian kepala bergerak ke kanan, kiri, atas dan bawah.
- Relai/Switch, mengatur saklar-saklar atau switch yang mengontrol fungsi hemat daya, modul penerangan dan penunjuk.
- Digital/Analog sensors, berisi fungsi-fungsi khusus untuk membaca berbagai macam sensor analog maupun digital. Fungsi ini secara bawaah tidak akan diimplemtasikan, namun pengguna dapat menambahkan sendiri fungsi mereka sesuai dengan jenis sensor yang ingin dipasang pada robot.
- Serial Listener, fungsi untuk membaca data serial yang dikirim melalui USB serial dan meneruskannya kebagian Flow Manager untuk dipilah dan diteruskan ke fungsi yang bersangkutan.
Misc. Function, fungsi lain-lain untuk mendeteksi nomer port serial secara otomatis ketika modul dinyalakan, penghitung sudut dan lainnya.
Perangkat Lunak Server
Perangkat lunak server dibangun menggunakan Python 2.7. Raspberry Pi dengan sistem operasi resminya Debian Wheezy mendukung penuh penggunakan Python untuk pengembangan aplikasi yang membutuhkan akses ke perangkat keras Raspberry Pi, sehingga sangat memudahkan dalam perekayasaan software server yang memerlukan interaksi dengan perangkat keras yang terhubung ke sistem.
Web Framework yang digunakan pada software server menggunakan Tornado sebagai basisnya. Tornado mirip seperti “web.py” atau “webapp” milik Google, namun dengan kemampuan tambahan dan optimisasi untuk mendapatkan kelebihan dari server web non-blocking. Beberapa fitur berbeda yang ditawarkan Tornado mulai dari semua keperluan dasar untuk membangun aplikasi berbasis web, Tornado dilengkapi dengan dukungan built-in untuk aspek yang paling sulit dan membosankan dalam pengembangan aplikasi web seperti templates, signed cookies, user authentication, localization, aggressive static file caching, cross-site forgery protection, dan third party authentication seperti Facebook Connect.
[[{"fid":"581","view_mode":"wysiwyg","fields":{"format":"wysiwyg","field_file_image_alt_text[und][0][value]":"Gambar 3.9 Struktur Umum Modul Perangkat Lunak Server","field_file_image_title_text[und][0][value]":"Gambar 3.9 Struktur Umum Modul Perangkat Lunak Server"},"type":"media","link_text":null,"attributes":{"alt":"Gambar 3.9 Struktur Umum Modul Perangkat Lunak Server","title":"Gambar 3.9 Struktur Umum Modul Perangkat Lunak Server","height":"208","width":"400","class":"media-element file-wysiwyg"}}]]
Gambar 3.9 Struktur Umum Modul Perangkat Lunak Server
Selain itu, Tornado juga mendukung koneksi yang berbarengan dalam jumlah banyak. Tornado memungkinkan pengembang untuk dengan mudah membangun layanan real-time via long polling atau HTTP streaming. Seperti WebSocket yang tetap membuka koneksi dengan server. Dalam hal performa, Tornado cukup cepat jika dibandingkan dengan kebanyakan web framework berbasis Python. Gambar 3.9 memperlihatkan gambaran besar dari struktur perangat lunak server. Berikut penjelasan masing-masing modul pada perangkat lunak server:
- Client Listener, sebelum klien dapat menggunakan layanan yang disediakan server, klien melakukan otentikasi terlebih dahulu melalui layanan auth pada modul Client Listener dengan memberikan nama pengguna dan sandi. Jika proses otentikasi berhasil, klien akan mendapatkan balasan berupa string ID dalam format JSON yang dikirim melalui WSS (Secure WebSocket) maupun koneksi plain sesuai dengan konfigurasi SSL. Secara teknis, modul ini merupakan sekumpulan WebSocket handler pada Tornado Web Framework.
- Flow Manager, akan mengarahkan permintaan yang dikirim oleh klien yang akan maupun telah terotentikasi sesuai dengan jenis perintah kepada modul yang bersangkutan. Secara teknis, modul ini merupakan main process dari software server dinama main loop yang berisi process scheduling dan task/result queue antar process berada.
- Template & Preferences Server, tahap pertama ketika klien telah selesai memuat halaman template antarmuka (berupa halaman web) dan meminta otentikasi, metode otentikasi yang berada pada Flow Manager akan meminta data pengguna melalui modul ini untuk dapat memastikan apakah klien layak untuk diotentikasi, selesai melakukan otentikasi, Flow Manager akan kembali menghubungi modul ini untuk menyimpan data dan atribut klien yang baru saja terhubung. Secara teknis, modul ini adalah database (Dictionary List) file template dalam format lingkungan HTML dinamis (Tornado Web Template) dan file konfigurasi dari server dan pengguna.
- Networking Process, berisi sekumpulan routine yang memantau kondisi jaringan dan status dari link yang dibuat antara server dengan klien. Modul ini akan memantau keadaan sistem dan secara otomatis akan mengambil tindakan pengamanan apabila terjadi kegagalan fungsi jaringan pada sistem. Secara teknis, merupakan multiproses yang memantau koneksi jaringan, access point, konfigurasi, pengalamatan serta latency antara server dengan klien untuk mencegah robot bergerak bebas ketika koneksi hilang dan menabrak halangan.
- Camera & Stream Process, melalui modul ini klien dapat menerima layanan citra mulai dari stream MJPEG (Motion JPEG) langsung pada web browser hingga melakukan perekaman dan pengambilan gambar beresolusi tinggi. Modul ini menangani segala fungsi yang berhubungan dengan komponen kamera robot seperti kemampuan pengolahan citra untuk deteksi gerakan (motion detection) dan siaran umpan kamera ke antarmuka. Secara teknis merupakan multiproses yang menjalankan server MJPEG dan pustaka Picamera dan OpenCV untuk melakukan deteksi gerakan.
- OnBoard Peripheral Process, multiproses khusus yang melakukan pembacaan sensor dan modul pendukung yang terhubung ke GPIO (General-purpose Input Output) Raspberry Pi. Secara teknis, merupakan modul penyedia data sensor digital (ultrasonic pinger, suhu dan RTC (Real Time Clock)) dan kontrol catu daya utama untuk fungsi penghematan daya.
- Serial Communication Process, multiproses khusus yang menangani tugas-tugas yang berhubungan dengan komunikasi serial dengan modul mikrokontroler. Server akan mengirimkan perintah yang dikirim pengguna untuk mengendalikan mekanik robot melalui proses ini, juga untuk mendapatkan status/data dari kondisi modul mekanik seperti posisi sudut servo, PWM dan lainnya. Secara teknis merupakan implementasi multiproses yang menggunakan modul Python Serial untuk membaca dan menulis ke port USB serial. Flowchart modul software server secara global ditampilkan pada Gambar 3.10.
[[{"fid":"582","view_mode":"wysiwyg","fields":{"format":"wysiwyg","field_file_image_alt_text[und][0][value]":"Gambar 3.10 Flowchart Secara Global Modul Software Server","field_file_image_title_text[und][0][value]":"Gambar 3.10 Flowchart Secara Global Modul Software Server"},"type":"media","link_text":null,"attributes":{"alt":"Gambar 3.10 Flowchart Secara Global Modul Software Server","title":"Gambar 3.10 Flowchart Secara Global Modul Software Server","height":"400","width":"282","class":"media-element file-wysiwyg"}}]]
Gambar 3.10 Flowchart Secara Global Modul Software Server
Web Interface
Pada komputer dengan keyboard, kontrol robot dapat menggunakan keyboard sebagai shortcut perintah dan ikon-ikon yang dapat diklik untuk menjalankan fungsi. Sedangkan, untuk perangkat yang mendukung layar sentuh, akan dimanfaatkan fungsi layar sentuh yang tersedia pada HTML5.
[[{"fid":"583","view_mode":"wysiwyg","fields":{"format":"wysiwyg","field_file_image_alt_text[und][0][value]":"Gambar 3.11 Struktur Modul Web Interface","field_file_image_title_text[und][0][value]":"Gambar 3.11 Struktur Modul Web Interface"},"type":"media","link_text":null,"attributes":{"alt":"Gambar 3.11 Struktur Modul Web Interface","title":"Gambar 3.11 Struktur Modul Web Interface","height":"184","width":"400","class":"media-element file-wysiwyg"}}]]
Tornado Web Framework, merupakan server inti dari sistem kendali robot (Back-end). Setelah halaman antarmuka selesai dimuat oleh Web Browser (via Web Template), modul ini akan langsung menangani permintaan otentikasi berbasis token dari Web Browser (via WebSocket) sebelum pengguna dapat menggunakan robot. Server memiliki dua jenis handler, yaitu Web Template, dan WebSocket. Pada Gambar 3.11 dijelaskan bagaimana interaksi antara web browser dengan sistem, berikut adalah ulasan masing-masing komponen:
- Web Browser, ketika pertama kali pengguna membuka alamat antarmuka, Web Browser akan meminta halaman antarmuka ke Web Server. Web Server akan merespon dengan memberikan halaman web antarmuka dalam format HTML. Fungsi WebSocket pada HTML5 akan mulai bekerja untuk menghubungkan diri dengan server Tornado tepat setelah halaman antarmuka selesai dimuat. Disini protokol baru akan dibuat, tidak lagi menggunakan HTTP namun WebSocket.
- Web Template Handler, merupakan handler dari Tornado Web Framework yang khusus menangani permintaan halaman template maupun file statis lain dari klien. Merupakan Web Server biasa yang menyediakan halaman template dinamis dan file multimedia hasil perekaman untuk antarmuka sehingga tidak diperlukan lagi web server tambahan khusus hanya untuk menyediakan halaman template dan file.
WebSocket Handler, merupakan handler khusus berbasis WebSocket yang yang menangani komunikasi antara klien dengan server, mulai dari proses otentikasi hingga kontrol.
Komentar Terbaru