Pengalaman Belajar IoT dari pakai Microcontroller sampai dengan SBC Jetson Nano

Karena pengen lebih dari sekedar lampu kedap-kedip menghantarkan saya mengenal Edge AI

ยท

4 min read

Pengalaman Belajar IoT dari pakai Microcontroller sampai dengan SBC Jetson Nano

Apa masalah utama ketika belajar koding? bosan haha. Saya bosan karena belajar koding terus-terusan tapi seperti nggak ngehasilin apa-apa karena semua projectnya abstrak. Gimana kalo tiba-tiba semua komputer di dunia ini hilang? haha. Akhirnya terpikirkan untuk mencoba bermain bikin project IoT karena saya bisa mengaplikasikan ilmu koding yang saya pelajari disini.

Awalnya saya membeli devboard Arduino Leonardo dan NodeMCU ESP8266 beserta beberapa komponen elektronik untuk istilahnya "Hello World" ke dunia elektronik dan embedded programming.

Sebuah pengalaman yang mencemaskan karena saya belajar tanpa bekal ilmu elektronika sama sekali, jadi cukup was-was ketika menghubungkan komponen/modul yang memerlukan suplai daya ekstra ๐Ÿ˜‚

Mainan Pertama!

Nah setelah cukup puas bikin lampu kedap-kedip dan beberapa hari belajar dan mencari guide di situs seperti Instructables dan Hackster.io, akhirnya saya bisa membuat mainan IoT pertama saya, RC Car! ๐Ÿ˜†

Saya membuat project ini dengan sedikit twist, kalo tutorial di internet ngasih tau cara mengontrol RC Car ini adalah kalo enggak dengan board lain (buat kontrol gesture) yang terkoneksi via Bluetooth atau dengan kontroler RC beneran, maka saya mengontrolnya menggunakan sensor Accelerometer dari smartphone yang terkoneksi via Wi-Fi, gimana caranya agar kontrolnya responsif? saya menggunakan protokol WebSocket. Temen-temen bisa melihat hasilnya di video ini:

Project Stale dan Inspirasi Baru

Abis project tadi selesai? saya tinggalkan beberapa minggu haha. Nggak lama setelah itu saya nggak sengaja nemu anime RoboMaster. Basically ceritanya adalah tentang anak SMA yang suka main drone dan ikut ekstrakurikuler robotik. Setelah selesai menontonnya saya baru tau kalo anime ini adalah adaptasi dari sebuah turnamen di China dengan nama yang sama yaitu RoboMaster.

Turnamen aslinya sendiri bukan hanya tentang drone, tapi juga robot. Bagian terkeren menurut saya adalah turnamen dikemas layaknya e-sport (imo, lebih seru ini daripada game AR haha), dan tiap tim harus punya robot autonomous. Yep autonomous! robot ini harus bisa bertarung sendiri tanpa dikontrol manusia! Kamu bisa lihat videonya The Verge dibawah:

Dalam video itu disebutkan tentang kecerdasan buatan, spesifiknya Computer Vision. Kita memberi kecerdasan pada komputer untuk mengenali lingkungan sekitar dari citra kamera. Pengaplikasian pada turnamen tersebut berarti untuk mengenali mana robot musuh dan mana robot teman. Keren banget kan?!

Saya masih tersenyum sendiri menebak-nebak gimana caranya ngasih kecerdasan buatan ke komputer sekecil itu? apalagi disebutkan kecerdasan itu dibuat sendiri sama mahasiswanya (pesertanya). "AI" nya di hosting di cloud? nggak praktikal menurut saya, delay nya nggak bisa diterima buat pertandingan realtime. Apakah mungkin di hosting di server lokal yang ada di satu jaringan? hmm bisa jadi.

AI on the Edge

Fast forward ke 2021, saya ketemu dengan videonya Zack Freedman yang mencoba menjalankan Neural Network di sebuah microcontroller untuk menuliskan huruf melalui pengenalan gestur tangan.

Dan wew, saya belum pernah kepikiran kalo microcontroller dengan processing power yang sangat terbatas bisa melakukan hal itu. Karena yaa saya selama ini taunya kalo mau ngejalanin program apapun yang berbau AI pasti butuh processing power yang lumayan. Di titik ini saya jadi kepikiran kemungkinan besar memang RoboMaster ngejalanin AI nya di device itu sendiri.

Nah dari video itulah saya jadi ketrigger (positif tentunya haha) buat pengen nyobain juga. Tapi saya ada beberapa pertimbangan:

  • Saya cuma ada ESP8266, itupun sekarang ada di kost (saya di rumah, karena ya kuliah online)
  • Saya masih buta akan Machine Learning, jadi boro-boro optimasi ekstrim sampai bisa jalan di microcontroller.
  • Setup environment yang tricky. Saya pernah mencoba menjalankan pre-trained model dari sebuah paper tapi selalu terkendala saat instalasi dependensi.

Beberapa saat kemudian saya terpikirkan sebuah SBC yang dulunya pernah saya dengar dan pengen punya buat diulik, tapi belum ada uang haha. Dan SBC itu adalah NVIDIA Jetson Nano!

Jetson Nano, dan platform Jetson pada umumnya menyediakan semua hal yang kita butuhkan untuk menjalankan program AI di device tersebut (AI on the Edge). Itu termasuk OS, tools, dan segala library yang umumnya dipakai saat membuat project Machine Learning.

Nah saya langsung jatuh hati dengan Jetson Nano karena basically Jetson ini seperti platform Raspberry Pi tapi buat Machine Learning gitu. Yang artinya dari segi komunitas, Jetson ini memang go-to platformnya para hobbyist dan mereka yang pengen menjalankan AI on the Edge. Selain itu NVIDIA sendiri juga menyediakan resource berupa Deep Learning Institute (DLI), dimana disana ada free course dan juga sertifikasi untuk kita mempelajari ML/DL dan patform Jetson itu sendiri.

Screenshot 2021-03-04 083900 (2).png Hello world nya langsung project image classification ๐Ÿ˜† Dan yes, itu adalah project bawaan yang langsung disediakan oleh NVIDIA. Semua proses training serta inference nya dilakukan langsung di Jetson Nano. Hello world yang sangat satisfying!

Di sini saya menggunakan kamera smartphone yang menjalankan aplikasi DroidCam, temen-temen bisa melihat cara setupnya disini. DroidCam ini saya gunakan sementara, nantinya saya akan ganti ke modul kamera CSI yang memanfaatkan GPU Acceleration-nya Jetson Nano agar tidak mencekik penggunaan CPU nya haha.

Selanjutnya apa?

Banyak hal yang saya kepikiran! saya akan coba posting project yang saya buat di blog ini dan semoga project ini bisa saya angkat sebagai judul skripsi saya haha.

Terimakasih sudah membaca! ๐Ÿ˜€