Edge Impulse menarik untuk dipelajari, karena gratis dan menawarkan bantuan untuk mempermudah pengembangan dan penerapan machine learning di perangkat Edge (perangkat tepi jaringan, seperti ESP32-CAM). Berikut ini beberapa hal yang bisa dibuat dengan Edge Impulse:
- Pendeteksi Objek Jarak Jauh dengan Edge Impulse, ESP32-CAM & Adafruit IO.
- Penyortir Objek dengan Edge Impulse, ESP32-CAM & Adafruit IO.
Berikut ini uraian masing-masing:
========================================================================================
Pendeteksi Objek Jarak Jauh dengan Edge Impulse, ESP32-CAM & Adafruit IO
Berikut ini langkah-langkahnya:
1. Siapkan beberapa objek benda dan sebuah ESP32-CAM.
2. Lakukan pengambilan gambar objek dengan ESP32-CAM, kumpulkan minimal 20 gambar untuk setiap objek benda. Di samping gambar objek, pastikan juga mengambil gambar Background, untuk memudahkan identifikasi ketika tidak ada objek (ambil minimal 5 gambar). Untuk pengambilan gambar objek dan background ini, silahkan menggunakan program CameraWebServer, yang ada di Examples, di kategori ESP32, di Camera. Lebih jelasnya, ikuti langkah-langkah pada gambar berikut ini:
2. Lakukan pengambilan gambar objek dengan ESP32-CAM, kumpulkan minimal 20 gambar untuk setiap objek benda. Di samping gambar objek, pastikan juga mengambil gambar Background, untuk memudahkan identifikasi ketika tidak ada objek (ambil minimal 5 gambar). Untuk pengambilan gambar objek dan background ini, silahkan menggunakan program CameraWebServer, yang ada di Examples, di kategori ESP32, di Camera. Lebih jelasnya, ikuti langkah-langkah pada gambar berikut ini:
Gambar 1. Atur Board di pilihan AI Thinker ESP32-CAM
Catatan: apabila pilihan Board AI Thinker ESP32-CAM tidak muncul, maka lakukan instalasi board dengan mengikuti langkah-langkah di artikel ini: https://randomnerdtutorials.com/installing-the-esp32-board-in-arduino-ide-windows-instructions/
Gambar 2. Setelah Board AI Thinker ESP32-CAM dapat dipilih, berikutnya buka Examples, pilih ESP32, pilih Camera, pilih CameraWebServer
Gambar 3. Beri tanda Comment pada #define CAMERA_MODEL_ESP_EYE dan hilangkan tanda Comment pada #define CAMERA_MODEL_AI_THINKER
Gambar 4. Isi nama dan password Wi-Fi yang digunakan
Gambar 5. Pastikan memilih Port COM yang benar (lihat di Device Manager), kemudian upload program CameraWebServer tersebut ke ESP32-CAM
Gambar 6. Setelah upload berhasil, buka Serial Monitor, tunggu hingga muncul alamat IP yang digunakan ESP32-CAM
Gambar 7. Buka alamat IP tersebut dengan mengetikkannya di browser, setelah terbuka, tekan tombol Start Stream, yang ada di bagian bawah
Gambar 8. Muncul tangkapan gambar ESP-32 CAM, arahkan ke objek yang akan diidentifikasi, tekan tombol Save hingga 20 kali untuk menyimpannya (pastikan objek tersebut diubah-ubah posisinya agar Edge Impulse bisa menghasilkan pengenalan pola yang lebih bervariasi)
Gambar 9. Setelah terkumpul 20 gambar, pindahkan gambar-gambar tersebut ke dalam sebuah folder dengan memberi nama folder sesuai nama objek tersebut (contoh di sini folder snoopy)
Gambar 10. Lanjutkan untuk objek yang berikutnya (dalam contoh di sini: olaf), ambil gambar sebanyak 20 gambar (lebih banyak lebih baik)
Gambar 11. Setelah terkumpul 20 gambar, pindahkan gambar-gambar tersebut ke dalam sebuah folder dengan memberi nama folder sesuai nama objek tersebut (contoh di sini folder olaf)
Gambar 12. Lanjutkan untuk objek yang berikutnya (dalam contoh di sini: kura-kura ninja), ambil gambar sebanyak 20 gambar (lebih banyak lebih baik)
Gambar 13. Setelah terkumpul 20 gambar, pindahkan gambar-gambar tersebut ke dalam sebuah folder dengan memberi nama sesuai nama objek tersebut (folder kura-kura ninja)
Gambar 14. Lanjutkan untuk objek yang berikutnya (dalam contoh di sini: bajak laut), ambil gambar sebanyak 20 gambar (lebih banyak lebih baik)
Gambar 15. Setelah terkumpul 20 gambar, pindahkan gambar-gambar tersebut ke dalam sebuah folder dengan memberi nama folder sesuai nama objek tersebut (folder bajak laut)
Gambar 16. Terakhir, ambil gambar background (tanpa ada objek benda), sebanyak minimal 10 gambar, kemudian pindahkan ke folder dengan nama Background)
Gambar 17. Terlihat ada 4 buah folder dengan nama objek (dalam contoh di sini: snoopy, olaf, kura-kura ninja dan bajak laut) dan sebuah folder Background
3 Setelah pengumpulan objek gambar berhasil dilakukan, langkah berikutnya adalah penerapan machine learning dengan Edge Impulse untuk deteksi objek, yang nantinya, kode program yang dihasilkan, bisa ditanamkan ke ESP32-CAM. Untuk itu buka Edge Impulse, dan lakukan langkah-langkah seusai gambar berikut ini:
Gambar 18. Buka edgeimpulse.com, klik Login
Gambar 19. Isi Username dan Password, apabila belum mempunyai akun, klik Sign Up
Gambar 20. Klik Create new project
Gambar 21. Beri nama project, klik tombol Create new project
Gambar 22. Di halaman Dashboard (Project Info), klik tombol Add existing data
Gambar 23. Pilih Upload data
Gambar 24. Di jendela Upload data, pilih Select a folder, kemudian klik Choose Files
Gambar 25. Arahkan pencarian folder pada folder tempat gambar, kemudian klik tombol Upload
Gambar 26. Muncul pertanyaan apakah membangun projek deteksi objek, pilih Yes
Gambar 27. Terlihat file gambar pada folder snoopy berhasil diupload
Gambar 28. Lanjutkan upload file gambar yang lainnya, hingga semua gambar yang diambil dengan ESP32-CAM berhasil diupload
Gambar 29. Setelah semua gambar berhasil di-upload, langkah berikutnya, klik Labeling queue, kemudian gerakkan mouse mengelilingi objek hingga muncul kotak batas objek
Gambar 30. Isi label sesuai nama objek, kemudian tekan tombol Set label, dilanjutkan Save labels
Gambar 31. Ulangi langkah di atas sehingga semua objek mendapat label, kecuali untuk gambar Background, silahkan tidak diberi label. Untuk mengubah label, klik pada tulisan label di atas kotak batas, dan ganti dengan label yang benar, dalam contoh di sini, nama label diubah menjadi olaf
Gambar 32. Label diubah sesuai nama objeknya, dalam contoh di sini: label diisi kura-kura ninja
Gambar 33. Label diubah sesuai nama objeknya, dalam contoh di sini: label diisi bajak laut
Gambar 34. Setelah semua gambar diberi label (kecuali gambar background, silahkan tidak usah diberi label), langkah berikutnya adalah klik menu Create impulse, klik Add a processing block
Gambar 35. Di jendela Add a processing block, klik Add pada blok Image
Gambar 36. Berikutnya klik Add a learning block
Gambar 37. Di jendela Add a learning block, klik Add pada blok Object Detection (Images)
Gambar 38. Klik tombol Save Impulse, perhatikan ada 4 objek di Output features
Gambar 39. Berikutnya klik pada menu Image, klik Save parameters
Gambar 40. Berikutnya klik Generate features untuk membangkitkan model 4 buah objek
Gambar 41. Maka akan muncul peta fitur keempat objek, yang dibedakan berdasarkan warna, dari peta ini, semakin jauh posisi keempat fitur terpisah, semakin baik model yang dibangkitkan
Gambar 42. Klik pada menu Objek Detection, klik Target Device, pilih Espressif ESP-EYE (ESP32 240MHz), klik Set Target Device
Gambar 43. Setelah Target berisi Espressif ESP-EYE (ESP32 240MHz), berikutnya klik tombol Start training
Gambar 44. Tunggu hingga training selesai, apabila skor training mendekati 100%, berarti pembelajaran deteksi objek berhasil, namun apabila skor training kurang dari 70%, maka pembelajaran sebaiknya diulang.
Catatan: Skor training Edge Impulse ini dapat ditingkatkan dengan menambah data gambar. Semakin banyak data gambar, semakin meningkat skor trainingnya.
Gambar 45. Setelah memperoleh skor training baik (mendekati 100%), berikutnya klik pada Deployment, pilih opsi Arduino library
Gambar 46. Berikutnya klik Build, tunggu hingga muncul kotak informasi "Built Arduino Library" dengan tanda centang
Gambar 47. Buka File Explorer, perhatikan di folder Download, terdapat file library (*.zip) hasil machine learning Edge Impulse untuk ditanamkan ke ESP32-CAM
4. Setelah Edge Impulse menghasilkan kode program untuk deteksi objek, langkah berikutnya adalah menyiapkan Dashboard untuk menampilkan gambar objek dan label hasil deteksi objek. Agar bisa dipantau dari jarak jauh, dalam contoh di sini digunakan Adafruit IO. Untuk menampung data gambar dan label, digunakan 2 buah feed, yang diberi nama camera dan label. Kemudian untuk menampilkan nilai kedua feed tersebut, digunakan Dashboard yang berisi blok Image dan blok Text. Blok Image akan menampilkan nilai dari feed camera, sedangkan blok Text akan menampilkan nilai dari feed label. Gambar-gambar berikut ini menunjukkan langkah-langkah pembuatannya:
Gambar 48. Buka Adafruit IO, klik Sign In. Apabila sudah memiliki akun, isi email atau username dan password, apabila belum memiliki akun, klik Create an Adafruit Account
Gambar 49. Isi nama, email, username dan password, kemudian klik Create Account
Gambar 50. Akun Adafruit sudah berhasil dibuat
Gambar 51. Setelah akun berhasil dibuat, berikutnya buat feed. Klik IO, klik Feeds, klik New Feed
Gambar 52. Di jendela Create a new Feed, isi Name = camera, klik Create
Gambar 53. Muncul nama camera di daftar Feed, klik 2 kali untuk membuka halamannya
Gambar 54. Karena feed camera menampung data gambar yang berukuran lebih besar dari 1KB, maka buat Feed History dari ON menjadi OFF
Gambar 56. Setelah feed camera dan feed label berhasil dibuat, langkah berikutnya buat Dashboard dengan meng-klik Dashboards, pilih New Dashboard
Gambar 57. Di jendela Create a new Dashboard, beri nama Dashboard, kemudian klik Save
Gambar 58. Klik Dashboard Settings, pilih Create New Block
Gambar 59. Di jendela Create a New Block, pilih blok Image (bergambar kamera)
Gambar 60. Muncul jendela Connect a Feed, pilih feed camera, klik Next Step
Gambar 64. Berikutnya tambahkan blok Text, dengan meng-klik Create a New Block, pilih Text
Gambar 65. Muncul jendela Connect a Feed, pilih label
Gambar 66. Agar label terlihat jelas, buat ukuran Font Size = Big
Gambar 67. Agar Dashboard terlihat jelas, buat Dark Mode dari ON menjadi OFF
5. Setelah feed dan Dashboard untuk menampilkan gambar objek dan hasil deteksinya berhasil dibuat, langkah berikutnya adalah memprogram ESP32-CAM dengan library yang dibangkitkan Edge Impulse, yang diberi tambahan instruksi untuk mengirimkan data ke Adafruit IO. Berikut ini langkah-langkahnya:
5.1. Buka Arduino IoT Cloud di cloud.arduino.cc (di sini digunakan Arduino Editor Online untuk meng-upload kode program yang dibangkitkan oleh Edge Impulse, karena dari pengalaman penulis, upload dengan software Arduino IDE di komputer secara offline selalu muncul error).
Gambar 68. Buka Arduino IoT Cloud di cloud.arduino.cc
5.2. Isi email atau username dan password apabila sudah memiliki akun. Apabila belum memiliki akun, buat akun dengan meng-klik Create your account.
Gambar 69. Isi email atau username dan password, klik Sign In
5.3. Di halaman Home, klik Create New, pilih Sketch.
Gambar 70. Di halaman awal, pilih Create New, pilih Sketch
5.4. Di halaman Sketch, muncul pilihan Device, pilih AI Thinker ESP32-CAM
Catatan: Apabila pilihan Device ini tidak muncul, ada kemungkinan masalah koneksi dengan Port COM di komputer. Untuk itu pastikan ESP32-CAM telah dihubungkan ke Port USB Komputer. Kemudian pastikan Arduino Create Agent telah terinstal. Arduino Create Agent ini berfungsi untuk menghubungkan Arduino Editor Online dengan Port COM di komputer. Apabila Arduino Create Agent belum terinstal, ikuti langkah-langkah instalasi di sini: https://support.arduino.cc/hc/en-us/articles/360014869820-Install-the-Arduino-Create-Agent
5.5. Buka menu Library dengan meng-klik icon bergambar buku di pojok kiri. Kemudian tekan tombol upload file library (panah ke atas), dan arahkan ke file library yang dihasilkan oleh Edge Impulse. Klik Open, tunggu beberapa saat, apabila berhasil di-upload akan muncul pesan "Library uploaded successfully".
Gambar 72. Klik Library, klik Upload, arahkan ke file *.zip dari Edge Impulse, klik Open
Gambar 73. Ternyata format library tidak sesuai
Catatan: Untuk mengatasi masalah format library yang tidak sesuai ini, berikut ini solusinya:
- Ekstrak file *.zip Edge Impulse, akan ada 2 folder dan sebuah file library (lihat Gambar 74).
- Klik kanan pada file library, pilih Open with, pilih Notepad (lihat Gambar 75).
- Di halaman Notepad, tambahkan tulisan includes= diikuti nama library diakhiri titik dan huruf h (lihat Gambar 76).
- Setelah itu, pada folder yang telah ter-ekstrak, klik kanan, pilih Add to archive, pilih Zip (lihat Gambar 77).
- Ulangi lagi meng-upload library di Arduino Editor Online, dengan file library yang barus saja dibuat ini, maka seharusnya library tersebut akan dapat diupload (lihat Gambar 78).
Gambar 74. Ekstraks file library yang dihasilkan Edge Impulse
Gambar 75. Buka file library dengan Open with Notepad
Gambar 76. Tambahkan tulisan includes= diikuti nama library dan diakhiri titik dan huruf h
Gambar 77. Setelah itu, Compress lagi folder hasil ekstraks sebelumnya, pilih format Zip
Gambar 78. Terlihat sekarang library hasil Edge Impulse telah dapat di-upload, yang ditempatkan di bagian Custom, di Library
5.6. Setelah library dari Edge Impulse berhasil di-upload, langkah berikutnya adalah menggunakan Example program dari library Edge Impulse tersebut. Untuk mempermudah rekan-rekan, berhubung ada penambahan program untuk dikirimkan ke Adafruit IO, maka silahkan rekan-rekan bisa menggunakan program ini. Silahkan dicopy, dan ditempelkan di Arduino Editor Online. Jangan lupa mengganti nama dan password Wi-Fi yang digunakan, serta kode AIO username dan AIO Key Adafruit IO, yang dapat diperoleh dengan menekan tombol kunci dalam lingkaran kuning, di halaman Adafruit IO.
Berikut ini kode programnya:
5.7 Instruksi pada baris pertama silahkan diganti dengan nama library yang benar dari Edge Impulse. Caranya yang paling mudah adalah dengan menempatkan kursor di baris pertama, kemudian tekan tombol Include yang ada di library Edge Impulse, seperti ditunjukkan gambar berikut ini.
5.8. Setelah kode program disesuaikan dengan nama library yang benar, nama dan password Wi-Fi serta username dan password AIO Key, maka langkah berikutnya adalah Upload program ke ESP32-CAM. Namun sebelum meng-upload, berhubung library Adafruit_MQTT.h memiliki default ukuran buffer hanya 512, yang tidak memadai untuk memuat gambar, maka lakukan modifikasi nilai MAXBUFFERSIZE dari 512 menjadi 36000. Untuk itu di menu Library, di kolom pencarian, ketik adafruit_mqtt. Pada library Adafruit_MQTT yang muncul, klik pada 3 buah titik vertikal, pilih Modify.
5.9. Setelah MAXBUFFERSIZE diubah dari 512 menjadi 36000, langkah berikutnya tekan tombol Upload (tanda panah ke kanan), tunggu hingga muncul tulisan Done Uploading.
Gambar 83. Upload program ke ESP32-CAM, tunggu hingga muncul Done Uploading

6. Setelah program berhasil di-upload ke ESP32-CAM, lakukan pemeriksaan dengan membuka Serial Monitor. Tunggu hingga muncul tulisan "MQTT Connected!". Apabila tulisan tersebut tidak muncul, lepas kabel USB dari ESP32-CAM ke komputer, setelah itu hubungkan kembali, kemudian tekan tombol Reset ESP32-CAM, maka seharusnya di Serial Monitor akan muncul tulisan seperti gambar berikut ini. Apabila masih belum muncul tulisan, lepas dan hubungkan kabel serta reset berulang kali.

Gambar 84. Setelah program berhasil di-upload ke ESP32-CAM, dan koneksi ke MQTT Adafruit IO berhasil (MQTT Connected!), akan muncul hasil deteksi objek di Serial Monitor
Video pembuatan Deteksi Objek dan Monitoring Jarak Jauh dengan ESP32-CAM, Edge Impulse dan Adafruit IO
========================================================================================
Penyortir Objek dengan Edge Impulse, ESP32-CAM & Adafruit IO
Berikut ini langkah-langkahnya:
1. Siapkan beberapa objek benda dan sebuah ESP32-CAM, dalam contoh di sini digunakan 4 buah koin 100, 200, 500 dan 1000 rupiah.
2. Sama seperti di bagian pertama, pendeteksian objek, lakukan pengambilan gambar objek dengan ESP32-CAM, kumpulkan minimal 20 gambar untuk setiap objek benda. Di samping gambar objek, pastikan juga mengambil gambar Background, untuk memudahkan identifikasi ketika tidak ada objek (ambil minimal 5 gambar). Untuk pengambilan gambar objek dan background ini, silahkan menggunakan program CameraWebServer, yang ada di Examples, di kategori ESP32, di Camera. Gunakan ukuran resolusi 240x240 pixel.
2. Sama seperti di bagian pertama, pendeteksian objek, lakukan pengambilan gambar objek dengan ESP32-CAM, kumpulkan minimal 20 gambar untuk setiap objek benda. Di samping gambar objek, pastikan juga mengambil gambar Background, untuk memudahkan identifikasi ketika tidak ada objek (ambil minimal 5 gambar). Untuk pengambilan gambar objek dan background ini, silahkan menggunakan program CameraWebServer, yang ada di Examples, di kategori ESP32, di Camera. Gunakan ukuran resolusi 240x240 pixel.
3. Sama seperti di bagian pertama, setelah pengumpulan objek gambar berhasil dilakukan, langkah berikutnya adalah penerapan machine learning dengan Edge Impulse untuk deteksi objek, yang nantinya, kode program yang dihasilkan, bisa ditanamkan ke ESP32-CAM. Pastikan untuk memberi label yang sesuai pada setiap objek, dalam contoh di sini dilabeli dengan c100, c200, c500 dan c1000.
4. Sama seperti di bagian pertama, setelah Edge Impulse menghasilkan kode program untuk deteksi objek, langkah berikutnya adalah menyiapkan Dashboard di Adafruit IO untuk menampilkan gambar objek dan label hasil deteksi objek. Berikutnya, tambahkan 2 buah feed lagi, beri nama servo dan pwm. Feed servo digunakan untuk merepresentasikan feed label dalam bentuk angka 1 sampai 4, sedangkan feed pwm digunakan untuk mengatur intensitas cahaya LED ESP32-CAM.
5. Setelah feed dan Dashboard untuk menampilkan gambar objek dan hasil deteksinya berhasil dibuat, langkah berikutnya adalah memprogram ESP32-CAM dengan library yang dibangkitkan Edge Impulse, yang diberi tambahan instruksi untuk mengirimkan data ke Adafruit IO. Berikut ini kode programnya:
6. Setelah program berhasil di-upload ke ESP32-CAM, lakukan pemeriksaan dengan membuka Serial Monitor. Tunggu hingga muncul tulisan "MQTT Connected!". Setelah tulisan tersebut muncul, seharusnya Dashboard Adafruit IO menampilkan tangkapan gambar ESP32-CAM. Tempatkan sebuah koin di depan ESP32-CAM dan perhatikan apakah label di Dashboard Adafruit IO menampilkan nilai yang sesuai dengan coin tersebut. Apabila antara gambar dan label sudah benar, buka rangkaian Wokwi ini: https://wokwi.com/projects/402417694549066753, dan perhatikan setiap kali ada coin yang terdeteksi, servo yang sesuai dengan nilai coin tersebut akan berputar 180°. Ketika tidak ada coin yang terdeteksi, servo tersebut kembali ke posisi awal (0°).
Untuk lebih jelasnya, silahkan melihat video berikut ini:
Video pembuatan penyortir koin menggunakan ESP32-CAM, Edge Impulse dan Adafruit IO
.
No comments:
Post a Comment