Di jaman Artificial Intelligence (AI) dan Internert of Things (IOT), ada beberapa perusahaan yang berusaha menggabungkan keduanya menjadi AIOT (Artificial Intelligence of Things). Salah satunya adalah Sipeed dari China. Perusahaan ini mengembangkan teknologinya berdasarkan instruction set RISC-V (baca: Risk Five) yang sifatnya terbuka. Jika saat ini Intel dan ARM masih menguasai dunia, di masa depan ada kemungkinan RISC-V yang akan jaya.
Sipeed sudah membuat cukup banyak produk, baik chip SOC dengan neural accelerator maupun board-board pendukungnya. Salah satu produk mereka adalah MAIX GO. MAIX GO ini memakai SOC Kendryte K210 dengan instruction set RISC-V 64 Bit dan memiliki accelerator untuk Fast Fourier Transform dan CNN (Convolutional Neural Network). Dengan adanya accelerator tersebut, SOC ini sangat cocok untuk memproses gambar dan suara. Menurut dokumentasinya, jika ukuran model kita kecil (<5.9 Mb fixed point 8-16 bit) maka pemrosesan image real time bisa dilakukan (~30 fps).
Saya memesan board MAIX GO ini ketika ada kampanye Indiegogo bulan November tahun lalu. Paket yang saya ambil seharga 45 USD dengan ongkir 5 USD ke Thailand dengan isi sebagai berikut:
- 1 x MAIX GO (termasuk batere)
- 1 x M12 OV2640 Camera
- 1 x 2.8 inch QVGA LCD
- 1 x MAIX GO simple case
- 1 x MAIX R6+1 Microphone Array
- 1 x MAIX Binocular Camera
Bendanya sebenarnya sudah saya terima sejak akhir Januari dan sudah langsung saya susun, tapi karena beberapa kesulitan awal, baru saya teruskan lagi ngopreknya sekarang. Isi paket utama MAIX GO lengkap: termasuk juga batere (biasanya sulit mengirimkan ini) dan juga obeng kecil serta kabel USB ke USB-C.
Sekarang benda ini sudah tersedia umum dan bisa dibeli di seeed studio atau Aliexpress (tapi lebih mahal). Harga MAIX GO tanpa Microphone Array dan Binocular Camera adalah 40.9 USD. Microphone Array bisa dibeli terpisah seharga 11.9 USD dan Binocular Camera bisa dibeli seharga 13.9 USD. Jadi harga total paket yang sama dengan yang saya pilih waktu crowdfunding adalah: 66.7 USD (belum termasuk ongkir).
Masalah pertama dengan hardware ini adalah pada interface serialnya. Benda ini dikenali sebagai serial port, tapi koneksinya tidak stabil (kadang bisa kadang nggak). Ternyata setelah membaca dan mengikuti diskusi telegram, masalahnya adalah pada chip STM32 yang dipakai sebagai interface serial, dan bagian ini perlu diupdate.
The problem is that OS X doesn’t let non-kernel drivers capture HID devices except through the HID APIs (for security reasons – helping prevent keyloggers etc). The CMSIS-DAP python server supplied by mbed libusb which implements it’s own HID layer and accesses the underlying USB stack at a lower level than HID – which Windows and Linux allow, but OS X does not.
Diskusi telegram
The solution is update the firmware of cmsis-dap for maixgo to openec, and then OSX could recognize it.
You need a stlink, and use https://github.com/pavelrevak/pystlink/blob/master/README.md to flash the openec firmware. The openec firmware download URL is: https://github.com/rgwan/open-ec/releases, download and program the firmware flash-zero.bin, re-connect the USB cable of maix-go, and OSX will show new serial port. Use homebrew, install lsusb, and use lsusb command to check whether it work
Masalah pertama untuk mengupdate: saya perlu membongkar lagi board yang sudah saya susun susah payah mengikuti instruksi Instruksi di youtube. Perlu mengikuti Youtube karena tidak ada instruksinya di dalam paket yang disertakan ataupun di websitenya. Tidak mudah juga menebak bagaimana menyusunnya karena tidak jelas juga orientasi LCD-nya harus dicolok ke arah mana (tidak ada labelnya).
Masalah berikutnya: saya harus mencari ST-LINK yang saya miliki. Karena sedang ada kesibukan lain, saya mengurungkan niat dan hampir melupakan board ini. Kemarin teman saya ada yang menanyakan apakah saya sudah mencoba board ini dan baru ingat lagi untuk mencoba. Akhirnya saya mulai membongkar lagi board ini malam ini.
Saya tidak tahu apakah board baru sudah memakai firmware yang baru atau masih harus diupdate manual. Jika masih perlu update manual, maka jangan lupa beli hardware ST-LINK-nya juga. Harga ST-LINK cukup murah dan terpakai juga untuk development STM8 dan STM32, jadi saran saya sih beli saja satu. Sebagai catatan: harga ST-LINK di Aliexpress lebih murah.
Setelah dibongkar ternyata posisi lubang pin untuk memprogram ulang STM32 sulit dijangkau. Tadinya mau saya solder pin header sementara lalu dilepas lagi, tapi ternyata spacing pin headernya juga tidak standar (standar di sini maksud saya seperti Arduino/Raspberry Pi). Tepatnya lagi: beberapa pin header di board ini standar 2.54mm, sebagian lagi tidak. Akhirnya saya memakai kabel dupont yang sudah ada headernya dan ditahan dengan tangan.
Kemudian ada masalah lain: sistem power board ini semuanya terhubung. Jika board ini dimatikan dan saya colok ST-LINK ke pin programming standard (3.3V, GND, DIO dan CLK) maka board ini akan berusaha menyala dan tidak berhasil karena dayanya tidak cukup. Jadi untuk memprogramnya benda ini perlu sambil diberi power via USB juga.
Setelah beberapa kali mencoba akhirnya berhasil juga mengupdate STM32-nya. Untungnya ini hanya perlu dilakukan sekali, jadi saya pastikan booting masih bisa dilakukan, dan setelah itu saya susun lagi boardnya.
Setelah berhasil mengupdate, saya berusaha memflash chip utama dengan Flasher versi Windows. Hasilnya: gagal. Padahal software Windows ini disarankan dan dilink dari website utamanya.
Akhirnya flashing berhasil dilakukan dengan skrip Python kflash.py. Saya mencoba Maixpy versi terbaru. Ini merupakan firmware Python untuk MAIX yang menurut saya sangat mudah digunakan.
Setelah sampai di prompt Python, semua berjalan cukup lancar. Saya mencoba-coba berbagai skrip contoh yang ada di:
https://github.com/sipeed/MaixPy_scripts
dan hampir semuanya berjalan lancar. Jangan lupa untuk deteksi wajah, ada data yang perlu diflash terpisah (sesuai komentar skripnya). Kualitas kamera yang diberikan biasa saja.
Board MAIX Go ini memiliki ESP8285 untuk koneksi WIFI, tapi saya baru mencoba scan access point. Saya belum mencoba seberapa bagus streaming kamera ke WIFI. Perlu dicatat bahwa tidak semua board seri MAIX memiliki WIFI (misalnya MAIX Bit tidak memiliki chip WIFI).
Selain dengan Python, benda ini juga bisa diprogram dengan menggunakan C/C++ tapi inipun belum saya coba. Sejauh ini Python sudah cukup untuk banyak eksperimen. Pemrograman C/C++ bisa dilakukan dari command line ataupun menggunakan IDE Arduino (ada dokumentasi Maixduino di website sipeed tapi isinya masih sangat minim).
Sayangnya dua benda ekstra yaitu Microphone Array dan Binocular Camera belum sempat saya test. Melepas ulang modul kamera dari boardnya cukup sulit (ada beberapa baut yang perlu dilepas) sedangkan hanya ada 1 konektor kamera. Konektor mic array ada di dalam board dan sulit dihubungkan juga. Selain itu saat ini saya belum kepikiran proyek khusus yang memakai benda tersebut.
Ada satu lagi komplain mengenai benda ini yaitu mengenai speakernya. Ada bunyi statik yang selalu ada setiap waktu, dan kadang lebih parah ketika dicolok ke USB. Ternyata ini katanya normal dan jika tidak ingin suara ini, kita harus melepas kabelnya dengan solder. Ini satu-satunya bagian yang memakai kabel dan tidak memakai pin header.
Penutup
Di atas kertas kemampuan K210 sangat bagus, bahkan untuk hal-hal di luar AI dan harganya juga murah. Ada versi board dengan SOC yang sama (K210) MAIX Bit dengan kamera dan LCD hanya 20.9 USD (atau boardnya saja 12.9 USD). Tapi ada banyak hal juga yang agak menghambat chip ini:
- Instruction set RISC-V belum terlalu dikenal, supportnya belum matang seperti ARM/Intel
- Chip ini bersaing dengan berbagai SOC ARM yang sekarang juga mulai menyertakan accelerator untuk AI (walau harganya tak semurah K210)
- Guide berbahasa inggris masih jarang (kebanyakan berbahasa mandarin)
Saat ini menurut saya MAIX masih belum cukup matang untuk Anda yang ingin “langsung jalan”. Namun demikian group Sipeed sangat aktif, github mereka juga masih sangat aktif, jadi sepertinya masa depan benda ini (dan produk sejenis dari Sipeed) cukup cerah.