1. Pengantar
Yang akan Anda bangun
Dalam codelab ini, kita akan mempelajari cara menggunakan TensorFlow Lite untuk Mikrokontroler guna menjalankan model deep learning di Arduino Nano 33 BLE. Mikrokontroler diubah menjadi "tongkat ajaib" digital oleh pengguna untuk mengayunkan dan mengucapkan berbagai mantra. Saat pengguna menggerakkan tongkat, data sensor multidimensi yang kompleks ini, yang tidak dapat dipahami oleh manusia, diteruskan sebagai input ke model, yang menghasilkan klasifikasi sederhana yang memberi tahu kita jika salah satu dari beberapa gerakan telah terjadi.

Machine Learning di Microcontroller
Machine learning dapat digunakan untuk membuat alat cerdas yang mempermudah hidup pengguna, seperti Asisten Google. Namun, sering kali pengalaman ini memerlukan banyak komputasi atau resource yang dapat mencakup server cloud atau desktop yang canggih. Namun, sekarang inferensi machine learning dapat dijalankan di hardware kecil berdaya rendah, seperti mikrokontroler.
Mikrokontroler sangat umum, murah, memerlukan sangat sedikit energi, dan sangat andal. Chip ini merupakan bagian dari semua jenis perangkat rumah tangga: mulai dari peralatan, mobil, hingga mainan. Faktanya, sekitar 30 miliar perangkat yang ditenagai mikrokontroler diproduksi setiap tahun.

Dengan menghadirkan machine learning ke mikrokontroler kecil, kita dapat meningkatkan kecerdasan miliaran perangkat yang kita gunakan dalam hidup kita, tanpa mengandalkan hardware mahal atau koneksi internet yang andal. Bayangkan peralatan pintar yang dapat beradaptasi dengan rutinitas harian Anda, sensor industri cerdas yang dapat memahami perbedaan antara masalah dan operasi normal, serta mainan ajaib yang dapat membantu anak-anak belajar dengan cara yang menyenangkan dan menarik.
TensorFlow Lite untuk Mikrokontroler (Software)

TensorFlow adalah framework machine learning open source Google untuk melatih dan menjalankan model. TensorFlow Lite adalah framework software, versi TensorFlow yang dioptimalkan, yang ditujukan untuk menjalankan model TensorFlow di perangkat kecil yang relatif berdaya rendah seperti ponsel.
TensorFlow Lite untuk Mikrokontroler adalah framework software, versi TensorFlow yang dioptimalkan, yang ditujukan untuk menjalankan model TensorFlow di hardware kecil berdaya rendah seperti mikrokontroler. Library ini mematuhi batasan yang diperlukan di lingkungan sematan ini, yaitu memiliki ukuran biner yang kecil, tidak memerlukan dukungan sistem operasi, library C atau C++ standar, atau alokasi memori dinamis, dll.
Arduino Nano 33 BLE (Hardware)

Arduino adalah platform open source populer yang digunakan untuk membangun project elektronik. Fitur ini terdiri dari:
- Papan sirkuit fisik yang dapat diprogram (sering kali berupa mikrokontroler) seperti Arduino Nano 33 BLE yang digunakan dalam codelab ini.
- Arduino IDE (Integrated Development Environment), software yang digunakan untuk menulis dan mengupload kode komputer ke board fisik.
Arduino Nano 33 BLE adalah platform berbasis mikrokontroler: komputer kecil pada satu papan sirkuit. Perangkat ini memiliki prosesor, memori, dan hardware I/O yang memungkinkannya mengirim dan menerima sinyal digital ke perangkat lain. Tidak seperti komputer, mikrokontroler tidak memiliki daya yang besar dan biasanya tidak menjalankan sistem operasi. Sebagai gantinya, mereka memiliki prosesor kecil, tidak banyak memori, dan program yang Anda tulis berjalan langsung di hardware. Namun, karena didesain sesederhana mungkin, mikrokontroler dapat menggunakan sangat sedikit energi.
Yang akan Anda lakukan
- Siapkan mikrokontroler Arduino Nano 33 BLE dan ubah menjadi "tongkat ajaib" digital
- Siapkan Arduino IDE dan instal library yang diperlukan
- Men-deploy program ke perangkat
- Lakukan berbagai mantra dengan mengayunkan tongkat ajaib dan lihat prediksi
Yang Anda butuhkan
- Laptop Linux, MacOS, atau Windows
- Arduino Nano BLE Sense 33 (tanpa header)
- Kabel Micro USB (Jika Anda menggunakan laptop USB-C, dapatkan kabel USB-C ke Micro USB)
- (opsional) Tongkat, panjang sekitar 30 cm
- (opsional) Selotip
2. Menyiapkan Mikrokontroler Arduino
Membuka kemasan Arduino
Keluarkan dari kotak dan tarik keluar dari busa kemasan. Baterai bersifat konduktif, dan dapat menyebabkan masalah jika tidak ditangani dengan benar.

Colokkan ke laptop Anda
- Colokkan kabel MicroUSB ke soket di chip.
- Colokkan ujung kabel lainnya ke soket USB di laptop Anda.
- LED kiri bawah pada Arduino (kiri atas pada gambar di bawah) akan menyala.

Pahami alur kerja

Seperti yang ditunjukkan dalam diagram di atas, juru bahasa TFLite di Arduino secara berkala menjalankan inferensi pada model. Model menggunakan data akselerometer yang diproses sebagai input dan menghasilkan prediksi yang menunjukkan gestur yang kemungkinan besar terjadi. Selanjutnya, output yang diinginkan akan dicetak dan LED yang tepat akan menyala.
3. Menyiapkan Arduino IDE
1. Download Arduino IDE
Untuk men-deploy program ke Mikrokontroler Arduino, kita menggunakan Arduino IDE.
Setelah mendownloadnya, instal dan buka Arduino IDE dengan mengklik aplikasi yang ikonnya terlihat seperti ini: 
Halaman landing awal akan terbuka sebagai berikut:

2. Menyiapkan Pengelola Board
- Dari menu Arduino, pilih
Tools -> Board: "Arduino .." —> Boards Manager - Telusuri
"Arduino Nano 33 BLE", lalu instalArduino nRF528x Boards (Mbed OS). Hal ini akan memastikan bahwa Mikrokontroler Arduino Nano 33 BLE didukung oleh Arduino IDE.
- Dari menu Arduino, pilih
Tools -> Board: "Arduino .." -> "Arduino Nano 33 BLE"

- Terakhir, verifikasi bahwa board yang Anda pilih adalah "Arduino Nano 33 BLE" di kanan bawah IDE.

3. Menyiapkan Port
Dari menu Arduino, pilih Tools -> Port: "/.../" -> /dev/... (Arduino Nano 33 BLE). Anda akan melihat sesuatu yang mirip dengan ini:

4. Periksa Koneksi Board
Dari menu Arduino, pilih Tools -> Get Board Info. Anda akan melihat sesuatu yang mirip dengan ini:

4. Menginstal Library
1. TensorFlow Arduino Library
Library ini berisi semua contoh TensorFlow Lite untuk Microcontroller, yang mencakup kode sumber tongkat ajaib yang diperlukan untuk codelab ini.
- Dari menu Arduino, pilih
Sketch -> Include Library -> Add .ZIP Library... - Tambahkan Library TensorFlow Arduino
.zipyang Anda download.
2. LSM9DS1 Arduino Library
Library ini memungkinkan Anda membaca nilai akselerometer, magnetometer, dan giroskop dari IMU LSM9DS1 di Arduino Nano 33 BLE Sense.
- Dari menu Arduino, pilih
Sketch -> Include -> Manage Libraries... - Telusuri dan Instal
"Arduino_LSM9DS1".
5. Memuat dan Membangun contoh
1. Muat contoh
Dari menu Arduino, pilih File -> Examples -> Arduino_TensorFlowLite -> magic_wand untuk memuat kode contoh.

Tindakan ini akan memuat kode sumber tongkat ajaib.

2. Buat contoh
Klik tombol Upload di jendela sketsa.

Setelah beberapa menit, Anda akan melihat teks merah yang menunjukkan bahwa flashing telah selesai. Selama proses upload, LED kanan akan berkedip, lalu mati di akhir proses.

6. Demo
Tongkat ajaib saat ini dapat mendeteksi 3 gestur seperti yang ditunjukkan di bawah: 
- Sayap (Wing): Mulai dari pojok kiri atas dan telusuri huruf "W" dengan cermat selama dua detik.
- Cincin: Mulai dalam posisi tegak, gerakkan tongkat membentuk lingkaran searah jarum jam selama satu detik.
- Lereng: Mulai dengan memegang tongkat menghadap ke atas, dengan LED menghadap ke arah Anda. Gerakkan tongkat ke bawah dengan kemiringan ke kiri, lalu secara horizontal ke kanan selama satu detik.
Gambar berikut menunjukkan dua gestur. Pertama, Slope, lalu Wing (gunakan ini sebagai referensi untuk demo Anda).

Untuk menjalankan demo, ikuti petunjuk di bawah ini:
- Dengan USB yang dicolokkan, pilih
Tools -> Serial Monitordari menu Arduino. Awalnya, layar kosong akan terbuka tanpa output.

- Pindahkan mikrokontroler Arduino untuk menelusuri setiap bentuk di atas dengan cermat dan lihat apakah monitor serial mendeteksi gestur tersebut.

- Dari output di monitor serial, kita melihat bahwa tongkat ajaib memang mendeteksi semua bentuk. Anda juga akan melihat bahwa LED kanan menyala.
7. Langkah Berikutnya
Selamat, Anda telah berhasil membuat "tongkat ajaib" pengenal gestur pertama Anda di mikrokontroler Arduino.
Kami harap Anda menikmati pengantar singkat tentang pengembangan dengan TensorFlow Lite untuk Microcontroller ini. Ide deep learning pada mikrokontroler adalah hal baru dan menarik, dan kami mendorong Anda untuk bereksperimen.
Dokumen referensi
- Latih model Anda sendiri, setelah Anda memiliki pengalaman bekerja dengan program dasar.
- Pelajari lebih lanjut TensorFlow Lite untuk Mikrokontroler ( Situs, GitHub).
- Coba contoh lain dan coba jalankan di Arduino, jika didukung.
- Coba codelab lainnya: AI di mikrokontroler dengan TensorFlow Lite dan SparkFun Edge
- Lihat buku O'Reilly TinyML: Machine Learning with TensorFlow on Arduino and Ultra-Low Power Micro-Controllers, yang memperkenalkan machine learning di perangkat kecil dan membahas beberapa project menarik. Codelab ini didasarkan pada Bab 11 buku ini.

Terima kasih, dan selamat membangun!