Spectrino: Solusi Sentuh Bebas TinyML & IoT dengan Arduino Nano & ESP8266
Komponen dan Perlengkapan
- Arduino Nano 33 BLE Sense — 1
- Espressif ESP8266 ESP-01 — 1
- Arducam Mini 2MP plus — 1
- Tampilan MAX7219 — 1
- Buzzer — 1
- Micro-servo SG90 — 2
- Charger Micro-Lipo Adafruit — 1
- Baterai Lithium Ion Polymer Adafruit — 1
- Arduino MKR WiFi 1010 — 1
- LED RGB Diffused Common Cathode — 1
- Sensor Ultrasonik HC-SR04 — 1
Alat dan Mesin yang Diperlukan
- Kit Kawat Jumper 10 Pc., 5 cm Panjang
Aplikasi dan Layanan Online
- Arduino Web Editor
- ThingSpeak API
- Edge Impulse Studio
- TensorFlow
Tentang Proyek Ini
Ringkasan
Pandemi telah memperkenalkan keterbatasan pada interaksi sosial: jarak. Mempertimbangkan faktor risiko ini, negara-negara di seluruh dunia telah berada dalam tingkat karantina yang bervariasi, dan banyak pusat perbelanjaan telah harus tutup karena penurunan jumlah konsumen yang signifikan. Hal ini telah mengakibatkan tingkat pengangguran yang sangat, sangat tinggi di kalangan karyawan pusat perbelanjaan, serta tantangan ekonomi yang serupa bagi pemilik bisnis.
Ini telah menyebabkan tingkat kehilangan pekerjaan berpendapatan rendah (kurang dari $40.000 pendapatan tahunan) pada 2 Juli 2020 di AS akibat COVID-19. Akomodasi dan Layanan Makanan, serta Perdagangan Eceran dan Hibur secara kolektif mencakup sekitar 4.000.000 dari pekerjaan yang diestimasi hilang.
Tantangan ekonomi yang dihadapi berbagai industri, di mana Makanan, Konsumen, dan Perdagangan Eceran muncul di 6 industri teratas dengan jumlah karyawan yang dipecat paling banyak (mencapai estimasi 20.000+ pekerja). Asumsi “Internasional” untuk mencakup semua area non-AS yang dipertimbangkan dalam penelitian ini, total jumlah pengangguran global mencapai estimasi 103.000+ pekerja.
Komplikasi
Mempertimbangkan data yang diberikan, tim telah menentukan tantangan utama adalah ada ketidakpastian risiko, terkait kepadatan populasi di berbagai toko, untuk pusat perbelanjaan yang masih buka. Selain itu, meskipun penggunaan masker wajah dan menghindari sentuhan wajib di banyak tempat, masih ada pelanggaran. Hal ini membuatnya lebih sulit bagi petugas pusat perbelanjaan dan pemilik bisnis, yang tidak mampu bekerja dari jarak jauh, untuk menavigasi workspace normal baru ini dengan aman. Ini menimbulkan pertanyaan: bagaimana kita dapat menjamin dengan tingkat kepastian yang layak bahwa, pada titik waktu mana pun, toko tertentu di pusat perbelanjaan aman untuk dimasuk?
Kita semua sekarang melawan pandemi COVID-19 yang meluas. Dan juga, sekarang kita berada dalam situasi di mana kita harus menyesuaikan diri dengan kondisi yang meluas dengan lebih banyak langkah keselamatan. Sementara kehidupan kembali ke normal dengan lebih banyak langkah keselamatan untuk menghindari infeksi virus, menambahkan keselamatan di tempat umum dan area ramai juga meluas di kota. Tapi ada banyak situasi di mana kita harus melanggar langkah keselamatan dan berinteraksi dengan elemen yang tidak aman untuk memenuhi yang membutuhkan. Di sini, proyek ini menangani pencegahan penyebaran COVID-19 melalui interaksi sentuhan atau sentuhan.
Solusi yang Dikembangkan dalam Membuat Prototyp Ini
- Sistem Intercom Pintar menggunakan TinyML yang diimplementasikan pada Arduino33 BLE Sense: Solusi sentuh bebas menggunakan Visusi Komputer dan model TinyML untuk mendeteksi orang di luar pintu dan memicu bel tanpa orang menyentuh bel.
- Sistem Pemantauan Suhu menggunakan IoT dan sistem peringatan: Di tengah pandemi, keselamatan telah menjadi aspek penting. Sistem Pemantauan Suhu menggunakan dasbor IoT ThingSpeak dan mendeteksi orang saat masuk serta mengukur suhu mereka. Suhu ini ditampilkan ke dasbor IoT untuk tren dan analisis data yang tepat waktu. Saat terdeteksi suhu abnormal, peringatan dihasilkan sehingga orang memeriksa lagi.
- Sistem Lift Sentuh Bebas menggunakan model Speech Recognition TinyML pada Arduino BLE 33 sense: Kita menggunakan lift untuk naik atau turun di gedung beberapa kali sehari, dan saya selalu takut menyentuh switch yang terkontaminasi yang telah disentuh orang lain yang bepergian. Oleh karena itu, model pengenalan suara ini akan mengidentifikasi ketika seseorang ingin naik atau turun dan akan melakukan tindakan yang sama.
- Sistem Deteksi Masker berdasarkan TinyML dan sistem pemantauan IoT: Metode ini akan menggunakan model visusi komputer yang diimplementasikan pada Arduino BLE 33 sense untuk mendeteksi apakah seseorang telah memakai masker atau tidak dan data ini dikirim ke dasbor IoT untuk pemantauan dan menerapkan pembatasan saat waktu yang tidak aman.
- Sistem Pemantauan dan Pembuatan Antrian Pintar di supermarket atau pusat perbelanjaan menggunakan TinyML, IoT, dan visusi komputer: Model ini akan mendeteksi orang yang berdiri di luar supermarket dan mengizinkan masuknya 50 orang sekaligus di supermarket. Ini akan menunggu 15 menit lagi untuk membiarkan orang di dalam menyelesaikan belanja dan mengizinkan sekelompok 50 orang lagi ke pusat perbelanjaan. Ini akan dilakukan menggunakan visusi komputer dan TinyML yang diimplementasikan pada Arduino 33 BLE sense. Data ini kemudian akan diproyeksikan ke dasbor IoT tempat data real-time dapat dilacak.
- Sistem Pemantauan Orang di Gang di Pusat Perbelanjaan dan Sistem Sanitasi berdasarkan Kontaminasi: Solensi ini Menggunakan algoritma deteksi orang yang diterapkan di area di Pusat Perbelanjaan atau supermarket dan jika kontaminasi orang di area telah melewati ambang, itu secara otomatis menyandarkan area dengan cahaya UV. Periode dan waktu sanitasi diproyeksikan pada dasbor IoT untuk staf supermarket untuk analisis.
Pengaturan (Persyaratan Proyek)
Hardware yang Diperlukan:
1) Arduino33 BLE sense
Arduino Nano 33 BLE Sense adalah evolusi dari Arduino Nano tradisional, tetapi dengan prosesor yang jauh lebih kuat, nRF52840 dari Nordic Semiconductors, CPU ARM® Cortex™-M4 32-bit yang berjalan pada 64 MHz. Ini akan memungkinkan Anda membuat program yang lebih besar daripada dengan Arduino Uno (memori program 1MB, 32 kali lebih besar), dan dengan banyak lebih banyak variabel (RAM 128 kali lebih besar). Prosesor utama termasuk fitur luar biasa lainnya seperti Bluetooth® pairing via NFC dan mode konsumsi daya ultra rendah.
Kecerdasan Buatan Terpadu
Fitur utama papan ini, selain pilihan sensor yang mengesankan, adalah kemampuan untuk menjalankan aplikasi Edge Computing (AI) padanya menggunakan TinyML. Anda dapat membuat model pembelajaran mesin menggunakan TensorFlow™ Lite dan mengunggahnya ke papan Anda menggunakan Arduino IDE.
2) ESP8266 ESP-01
ESP8266 ESP-01 adalah modul Wi-Fi yang memungkinkan mikrokontroler mengakses jaringan Wi-Fi. Modul ini adalah SOC (System On a Chip) yang terkontain yang tidak perlu mikrokontroler untuk memanipulasi input dan output seperti yang Anda lakukan biasanya dengan Arduino, misalnya, karena ESP-01 bertindak sebagai komputer kecil. Bergantung pada versi ESP8266, mungkin untuk memiliki hingga 9 GPIO (General Purpose Input Output). Jadi, kita dapat memberi mikrokontroler akses internet seperti yang dilakukan shield Wi-Fi untuk Arduino, atau kita dapat dengan mudah memprogram ESP8266 untuk tidak hanya memiliki akses ke jaringan Wi-Fi, tetapi juga bertindak sebagai mikrokontroler. Ini membuat ESP8266 sangat serbaguna.
3) Arducam Mini 2MP plus
ArduCAM-2MP-Plus adalah versi yang dioptimalkan dari ArduCAM shield Rev.C, dan adalah kamera SPI 2MP high definition, yang mengurangi kompleksitas antarmuka kontrol kamera. Ini mengintegrasikan sensor citra CMOS 2MP OV2640, dan menyediakan ukuran mini, serta antarmuka perangkat keras yang mudah digunakan dan library kode open source.
4) Arduino MKR WiFi 1010:
Arduino MKR WiFi 1010 adalah titik masuk termudah untuk desain aplikasi IoT dasar dan pico-jaringan. Bahkan Anda sedang mencari membangun jaringan sensor yang terhubung ke router kantor atau rumah Anda, atau jika Anda ingin membuat perangkat BLE yang mengirim data ke ponsel, MKR WiFi 1010 adalah solusi satu pintu untuk banyak skenario aplikasi IoT dasar.
Prosesor utama papan ini adalah Arm® Cortex®-M0 32-bit SAMD21 dengan konsumsi daya rendah, seperti papan lain dalam keluarga Arduino MKR. Konektivitas WiFi dan Bluetooth® dilakukan dengan modul dari u-blox, NINA-W10, chipset konsumsi daya rendah yang beroperasi pada rentang 2,4GHz. Di atasnya, komunikasi aman dijamin melalui chip kripto Microchip® ECC508. Selain itu, Anda dapat menemukan pengisi baterai, dan LED RGB yang dapat diarahkan di papan.
Alat Lunak:
1) Arduino Web Editor
Arduino Create adalah platform online terpadu yang memungkinkan Makers dan Pengembang Profesional untuk menulis kode, mengakses konten, mengonfigurasi papan, dan berbagi proyek. Pergi dari ide ke proyek IoT selesai lebih cepat dari sebelumnya. Dengan Arduino Create Anda dapat menggunakan IDE online, menghubungkan banyak perangkat dengan Arduino IoT Cloud, menjelajahi koleksi proyek di Arduino Project Hub, dan terhubung secara jarak jauh ke papan Anda dengan Arduino Device Manager. Sebagai tambahan Anda dapat berbagi ciptaan Anda, bersama dengan panduan langkah demi langkah, skematika, referensi, dan menerima umpan balik dari orang lain.
2) Edge Impulse Studio:
Tren untuk menjalankan ML pada mikrokontroler terkadang disebut Embedded ML atau Tiny ML. TinyML memiliki potensi untuk menciptakan perangkat kecil yang dapat membuat keputusan cerdas tanpa perlu mengirim data ke cloud — bagus dari segi efisiensi dan privasi. Bahkan model pembelajaran mendalam yang kuat (berdasarkan jaringan saraf buatan) kini mencapai mikrokontroler. Sepanjang tahun terakhir, kemajuan besar telah dilakukan dalam membuat model pembelajaran mendalam lebih kecil, lebih cepat, dan dapat dijalankan pada perangkat keras tertanam melalui proyek seperti TensorFlow Lite for Microcontrollers, uTensor dan Arm’s CMSIS-NN; tetapi membangun kumpulan data berkualitas, mengekstrak fitur yang tepat, melatih dan menerapkan model ini masih bisa rumit.
Menggunakan Edge Impulse Anda sekarang dapat dengan cepat mengumpulkan data sensor dunia nyata, melatih model ML pada data ini di cloud, dan kemudian menerapkan model kembali ke perangkat Arduino Anda. Dari sana Anda dapat mengintegrasikan model ke sketsa Arduino Anda dengan satu panggilan fungsi. Sensor Anda menjadi jauh lebih cerdas, mampu memahami peristiwa kompleks di dunia nyata. Contoh bawaan memungkinkan Anda mengumpulkan data dari accelerometer dan mikrofon, tetapi mudah untuk mengintegrasikan sensor lain dengan beberapa baris kode.
3) ThingSpeak:
ThingSpeak™ adalah layanan analitik IoT yang memungkinkan Anda mengagregasi, memvisualisasikan, dan menganalisis aliran data langsung di cloud. ThingSpeak menyediakan visualisasi instan dari data yang diposting oleh perangkat Anda ke ThingSpeak. Dengan kemampuan untuk mengeksekusi kode MATLAB® di ThingSpeak, Anda dapat melakukan analisis online dan memproses data saat tiba. ThingSpeak sering digunakan untuk prototyping dan sistem konsep bukti IoT yang memerlukan analitik.
Anda dapat mengirim data dari perangkat apa pun yang terhubung internet langsung ke ThingSpeak menggunakan Rest API atau MQTT. Selain itu, integrasi cloud-ke-cloud dengan The Things Network, Senet, gateway Libelium Meshlium, dan Particle.io memungkinkan data sensor mencapai ThingSpeak melalui LoRaWAN® dan koneksi seluler 4G/3G.
Memulai dengan Implementasi:
Proyek 1: Sistem Lift Sentuh Bebas menggunakan model Speech Recognition TinyML pada Arduino BLE 33 Sense
Saat bepergian, kita menggunakan lift beberapa kali sehari! Switch yang sering digunakan terkontaminasi oleh semua orang yang telah menyentuh lift sebelumnya. Jadi, saya memutuskan untuk menciptakan solusi sentuh bebas untuk lift yang menggunakan perintah suara dan tanpa penggunaan IoT atau jaringan Wi-Fi, itu bekerja sama dan melakukan tindakan. Solusi sistem lift sentuh bebas telah diterapkan yang menggunakan kontrol gerakan atau sensor ultrasonik untuk melakukan operasi tetapi masalah yang dihadapi pada sensor ini adalah mereka perlu diaktifkan dari jarak dekat dan oleh karena itu risiko sentuhan meningkat. Juga, sensor ini sangat sensitif dan diaktifkan bahkan jika objek kecil datang di jalan dan mengaktifkannya. Sesuai dengan itu, saya mencoba untuk menciptakan solusi yang lebih akurat menggunakan deteksi suara pada Arduino 33 BLE sense. Model ini menerima dua perintah, baik "up" atau "down" dan sesuai mengirim data ke servo untuk menekan tombol yang sesuai pada switch. Ide mengirim data ke servo untuk mengaktifkan switch adalah karena sebagian besar masyarakat memiliki sistem switch dan tampilan yang telah dibuat sebelumnya dan oleh karena itu tidak mengganggu sistem yang sudah ada, ini dibuat untuk menambahkan sistem perangkat keras eksternal untuk mengontrol fungsi.
Logika inti yang digunakan untuk melakukan fungsi ini adalah:
Melatih Model untuk menafsirkan perintah "up" dan "down" di Edge Impulse Studio
a) Mengumpulkan Data Mentah dengan Kumpulan Data Pelatihan dan Pengujian. Di sini, saya telah mengumpulkan data 1:30 menit dengan durasi masing-masing data "up" dan "down" selama 2 detik.
b) Membuat Impulse berdasarkan Parameter yang Diperlukan: Saya telah menetapkan ukuran peningkatan jendela menjadi 300ms dan pelatihan berdasarkan Jaringan Saraf Keras yang didedikasikan untuk data mikrofon dan accelerometer.
c) Konversi Data Mentah menjadi Data yang Diproses. Tepat di bawah Data Mentah, kita dapat melihat fitur data mentah dan data yang diproses terlihat sebagai hasil DSP berdasarkan koefisien cepstral.
d) Melatih Data Masukan untuk Menghasilkan Fitur yang Diproses. Saya telah merekam data dengan frekuensi rendah dan tinggi berdasarkan data yang sama untuk melatih impulse lebih baik dan membuat pengenalan suara yang akurat melatihnya berdasarkan semua jenis suara. Di sini, kita mendapatkan keluaran Fitur dalam kurva "S" dengan diferensiasi sentral pada sumbu x, y dan z.
e) Akhirnya, Mendesain Arsitektur Jaringan Saraf di Edge Impulse Neural Network Classifier dan melatih Jaringan.
Di sini, Arsitektur Jaringan Saraf yang dirancang untuk input data adalah sebagai berikut:
- Input layer
- Reshape Layer
- 1D convo pool layer(30 neuron, 5 kernel)
- 1D convo pool layer(10 neuron, 5 kernel)
- Flatten layer
Model berperforma cukup baik dengan Akurasi Rata-rata 91,2% dan kerugian 0,29. Model dilatih selama 100 siklus pelatihan(epoch). Matriks kebingungan terlihat cukup jelas dan akurat dengan sebagian besar data sisa cocok dengan kelas yang diberi label masing-masing.
Setelah model dilatih, saya menguji model dengan Data Uji dan data langsung dan model mendapatkan akurasi 75% berdasarkan 20 detik data uji
Akhirnya, setelah model dilatih dan mendapatkan akurasi yang layak dengan logika, saya menerapkan model sebagai Library Arduino dan menerapkannya pada Arduino 33 BLE sense.
Setelah Skrip siap, saya mulai mengeditnya di Arduino Web Editor untuk kemudahan kustomisasi dan keluaran skrip akhir yang dapat diterapkan pada Arduino 33 BLE Sense adalah sebagai berikut:
Anda dapat melihat file main.ino di platform Arduino Web Editor di sini:
Main-script.ino - Arduino Web Editor
Main-script.ino - Github
Menerapkan ke Arduino 33 BLE Sense
Saat ini, satu-satunya papan Arduino dengan mikrofon bawaan adalah Arduino Nano 33 BLE Sense, jadi itulah yang akan kita gunakan untuk bagian ini. Jika Anda menggunakan papan Arduino yang berbeda dan melampirkan mikrofon Anda sendiri, Anda perlu mengimplementasikan
Saat ini, satu-satunya papan Arduino dengan mikrofon bawaan adalah Arduino Nano 33 BLE Sense, jadi itulah yang akan kita gunakan untuk bagian ini.
Arduino Nano 33 BLE Sense juga memiliki LED bawaan, yang digunakan untuk menunjukkan bahwa kata telah dikenali dan juga mengontrol servo untuk melakukan fungsi
Ini adalah cuplikan kode fitur mikro dalam model
Logika bekerja sebagai berikut untuk respons terhadap Perintah:
// Jika kita mendengar perintah, nyalakan LED yang sesuai dan nyalakan servo yang sesuai
if (found_command[0] == 'up') {
last_command_time = current_time;
digitalWrite(LEDG, LOW); // Hijau untuk up, menyala LED dengan perintah LOW
servo_7.write(0); // Memutar servo ke 0derajat untuk menekan tombol lift ketika mengatakan "up"
delay(100);
digitalWrite(LEDG, HIGH); // Mematikan LED setelah memflash perintah
servo_7.write(180); // servo kembali ke posisi aslinya yaitu 180derajat
}
// Jika kita mendengar perintah, nyalakan LED yang sesuai dan nyalakan servo yang sesuai
if (found_command[0] == 'down') {
last_command_time = current_time;
digitalWrite(LEDG, LOW); // Hijau untuk up, menyala LED dengan perintah LOW
servo_7.write(0); // Memutar servo ke 0derajat untuk menekan tombol lift ketika mengatakan "down"
delay(100);
digitalWrite(LEDG, HIGH); // Mematikan LED setelah memflash perintah
servo_7.write(180); // servo kembali ke posisi aslinya yaitu 180derajat
}
Respons perintah kedua sama seperti di atas tetapi memutar servo ketika perintah "down" didengar.
Setelah melatih data, kita mendapatkan keluaran dataset tflite yang telah dilatih sebagai berikut:
Di sini, kita menggunakan mikrofon bawaan pada Arduino Nano 33 BLE Sense dan model menggunakan rata-rata ~24-28Kb dari 256kb memori flash pada papan Arduino Nano. Model ini relatif ringan dibandingkan model pengenalan citra dan dapat memproses informasi dengan tingkat yang jauh lebih tinggi.
Logika dalam model pengenalan suara adalah sebagai berikut:
Data DitangkapMenangkap Sampel Audio dari MikrofonMengonversi data audio mentah menjadi spektrogramTflite Interpreter Menjalankan ModelMenggunakan keluaran inferensi untuk memutuskan apakah perintah didengarJika perintah down didengar, servo bergerak menekan tombol down pada panel kontrol lift.Jika perintah up didengar, servo bergerak menekan tombol naik pada panel kontrol lift.
Di atas adalah data dalam library model yang telah dilatih. Fungsi utama termasuk dalam file Tensorflow.
Diagram Rangkaian untuk proyek:
Arduino Nano 33 BLE Sense menggunakan mikrofon bawaan untuk mengumpulkan data mentah. Karena Inferensi pada Arduino memakan waktu, saya telah menambahkan penundaan 100 milidetik untuk memproses data dengan akurat. Oleh karena itu antara dua sampel perekaman, LED biru bawaan berkedip menunjukkan respons untuk didengar/katakan antara dua flash LED.
Ini adalah simulasi Arduino 33 BLE Sense yang menunjukkan berkedipnya LED antara dua interval input Mikrofon yang berhasil
Berdasarkan input perintah, servo berputar sesuai
Sekarang ada alternatif lain untuk sistem otomatisasi lift sentuh bebas seperti menggunakan sensor ultrasonik atau sensor gerakan tetapi keduanya memiliki kelemahan masing-masing oleh karena itu saya memutuskan untuk membuat sistem otomatisasi lift yang dikontrol suara
Kelemahan yang dihadapi di Sensor Ultrasonik: Sensor Ultrasonik sangat sensitif terhadap gerakan. Jika objek yang bergerak di jalan masuk ke rentang Sensor Ultrasonik, sensor ini akan teraktifkan. Sensor Ultrasonik juga tidak cukup akurat, terkadang ini memproses informasi yang salah.
Kelemahan di Sensor yang dikontrol Gerakan: Sensor ini lebih akurat daripada Sensor Ultrasonik tetapi mereka perlu diaktifkan dari jarak dekat. Ini meningkatkan risiko sentuhan antara tangan dan panel lift.
Namun panel lift yang dikontrol suara lebih akurat dari kedua solusi di atas dan dapat diaktifkan dari jarak yang lebih jauh daripada ultrasonik dan sensor gerakan.
Proyek 2: Sistem Intercom Pintar menggunakan pengenalan wajah dan TinyML:
CDC memperbarui situsnya dan mengeluarkan berita mengatakan bahwa kontak tidak langsung dari permukaan yang terkontaminasi dengan koronavirus baru—dikenal sebagai transmisi fomit—adalah cara potensial untuk terinfeksi koronavirus baru.
Penelitian menemukan koronavirus baru dapat bertahan hingga tiga hari pada permukaan plastik dan logam dan pada kardus selama 24 jam. Namun, ada banyak hal yang perlu terjadi agar seseorang terinfeksi Covid-19 dari menyentuh permukaan yang terkontaminasi.
Pertama, seseorang harus datang dalam kontak dengan cukup virus untuk sebenarnya menyebabkan infeksi. Misalnya, untuk terinfeksi virus influenza, jutaan salinan virus perlu mencapai wajah seseorang dari permukaan, tetapi hanya beberapa ribu salinan yang dibutuhkan ketika virus langsung masuk ke paru-paru, New York Times melaporkan.
Jika seseorang kebetulan menyentuh permukaan dengan jejak virus yang besar, mereka harus mengambil cukup virus dan kemudian menyentuh mata, hidung, atau mulut—mengapa para ahli kesehatan publik mengatakan sangat penting untuk tidak sering menyentuh permukaan dan menjauhi objek yang terkontaminasi atau objek yang sering disentuh.
Virus COVID-19 menyebar di seluruh Dunia. Bahkan ketika akhirnya mereda, orang akan telah mengembangkan sensitivitas tentang menyentuh hal-hal di umum. Karena sebagian besar intercom diradi untuk memerlukan penekanan tombol untuk melakukan panggilan, saya memutuskan bahwa solusi intercom sentuh bebas diperlukan yang tidak memerlukan orang untuk menyentuh apa pun.
Gambar di atas menunjukkan sistem intercom berbasis pengenalan wajah yang diimplementasikan.
Untuk mengatasi masalah sistem berbasis sentuhan, perlu mengurangi tempat kontak dan sentuhan. Dalam sistem intercom tradisional, mereka terdiri dari sistem berbasis switch, saat ditekan akan memicu bel. Untuk merevitalisasi sistem berbasis sentuhan yang meningkatkan risiko kontaminasi permukaan, saya memutuskan untuk membangun sistem pengenalan wajah sentuh bebas yang diterapkan pada Arduino 33 BLE Sense, berdasarkan tinyML dan Tensorflow Lite.
Dalam sistem intercom pintar ini, saya telah menggunakan algoritma deteksi orang yang diterapkan pada Arduino 33 BLE Sense yang mengidentifikasi orang dan sesuai, memicu bel dengan tampilan LED Matrix yang membaca "Person".
Menuju Implementasi Sistem Intercom Pintar:
Berikut adalah Perangkat Lunak yang digunakan dalam mendesain model ini:
- TensorFlow lite
- Arduino Web Editor
Dalam model deteksi orang ini, saya telah menggunakan model Deteksi Orang Pra-terlatih TensorFlow yang tepat untuk proyek ini. Model pra-terlatih ini terdiri dari tiga kelas di mana kelas ketiga adalah dengan himpunan data yang tidak ditentukan:
"unused",
"person",
"notperson"
Dalam model kita kita memiliki Arducam Mini 2mp plus untuk melakukan intake citra dan data citra ini dengan tingkat fps yang layak dikirim ke Arduino Nano 33 BLE Sense untuk pemrosesan dan klasifikasi. Karena Mikrokontroler mampu menyediakan 256kb RAM, kita mengubah ukuran citra setiap citra menjadi standar 96*96 untuk pemrosesan dan klasifikasi. Jaringan Tensorflow Lite Arduino terdiri dari kerangka pembelajaran mendalam sebagai:
- Depthwise Conv_2D
- Conv_2D
- AVERAGE Pool_2D
- Flatten layer
Kerangka pembelajaran mendalam ini digunakan untuk melatih model Deteksi Orang.
Fungsi berikut adalah fungsi paling penting yang didefinisikan saat memproses output pada Mikrokontroler melalui Arduino_detetction_responder.cpp
// Process the inference results.
uint8_t person_score = output->data.uint8[kPersonIndex];
uint8_t no_person_score = output->data.uint8[kNotAPersonIndex];
RespondToDetection(error_reporter, person_score, no_person_score);
Dalam fungsi berikut yang didefinisikan, person_score dan no_person_score telah didefinisikan pada tingkat klasifikasi data.
Logika bekerja dengan cara berikut:
├── Sistem Intercom Otonom
├── Arducam Mini 2mp plus
│ ├── Data visual dikirim ke Arduino
├── Arduino 33 BLE Sense
│ ├── jika person-score > no_person_score
│ │ ├── Aktifkan buzzer
│ │ ├── Tampilkan "Person" pada LED Matrix
│ │ └── ...Ulangi loop
Mematuhi logika di atas, Arducam Mini 2mp plus terus-menerus mengambil data visual dan mengirim data ini ke Arduino 33 BLE Sense untuk memproses dan mengklasifikasikan data yang dikumpulkan. Setelah data mentah dikonversi menjadi data yang diproses, itu kemudian diklasifikasikan sesuai dengan data yang dilatih. Jika orang terdeteksi, Arduino mengirim sinyal ke buzzer untuk mengaktifkan dan MAX7219 untuk menampilkan "person". Dengan cara ini, logika sistem bekerja.
Proyek 3: Otomasi Pengukuran Suhu Orang Berbasis IoT Otonom:
Sensor suhu untuk Arduino adalah elemen dasar ketika kita ingin mengukur suhu suatu proses atau tubuh manusia.
Sensor suhu dengan Arduino harus dalam kontak atau dekat untuk menerima dan mengukur tingkat panas. Itulah cara termometer bekerja.
Perangkat ini sangat banyak digunakan untuk mengukur suhu tubuh orang sakit, karena suhu adalah salah satu faktor pertama yang berubah dalam tubuh manusia, ketika ada kejanggalan atau penyakit.
Salah satu penyakit yang mengubah suhu tubuh manusia adalah COVID 19. Oleh karena itu, kami menyajikan gejala utama:
- Batuk
- Kelelahan
- Kesulitan bernapas (Kasus parah)
- Demam
Demam adalah gejala yang ciri utamanya adalah peningkatan suhu tubuh. Dalam penyakit ini, kita perlu terus memantau gejala ini.
Pasar eceran telah dipukul dengan dampak besar akibat pandemi. Setelah pusat perbelanjaan dan supermarket telah kembali buka, perlu untuk memastikan keselamatan semua pelanggan yang telah memasuki lokasi. Untuk tujuan ini, teknik pemeriksaan suhu manual telah disiapkan. Ini meningkatkan tenaga kerja dan juga risiko kontak antara orang yang memeriksa suhu dan orang yang suhunya diperiksa. Ini ditunjukkan sebagai berikut:
Gambar ini menunjukkan kontak dekat atau jarak sosial yang lebih sedikit yang dipertahankan antara dua orang.
Ada kelemahan kedua yang dihadapi dalam sistem pemeriksaan suhu manual:
Untuk suhu yang telah diperiksa, data perekaman ini tidak disimpan atau tidak disinkronkan dengan perangkat eksternal untuk memantau suhu yang diukur.
Mengpertimbangkan semua kekurangan ini, saya telah datang dengan solusi IoT berbasis Arduino yang diterapkan pada Arduino MKR WiFi 1010. Suhu diukur menggunakan modul suhu Adafruit AMG8833. Setiap kali orang terdeteksi di gerbang, sensor ultrasonik, mengirim informasi ke Arduino MKR WiFi 1010 untuk memberikan perintah ke modul AMG 8833 untuk mengambil data suhu. Modul menangkap data dengan akurat dan data diproyeksikan pada dasbor IoT secara real-time. Jika pembacaan suhu abnormal seseorang terdeteksi, alarm dihidupkan sehingga petugas keamanan dan staf pusat perbelanjaan dapat segera menyelidiki masalah. Data yang dikumpulkan masing-masing diberi stempel waktu dan dapat dilihat pada dasbor ThingSpeak grafik perekaman suhu vs Waktu untuk setiap data.
Demikian pula, dapat juga ditelusuri pada hari-hari dan rentang waktu mana, supermarket atau pusat perbelanjaan menunjukkan pembacaan suhu abnormal dan langkah keamanan lebih lanjut dapat diterapkan sesuai.
Gambar di bawah ini menunjukkan di mana setup dapat disematkan (Area tempat setup dapat dipasang)
Di gerbang pemeriksaan masuk, Sensor Ultrasonik HC-SR04 dapat dipasang yang mendeteksi masuknya orang dan mengirim perintah ke Arduino MKR WiFi 1010 jika orang terdeteksi dalam rentang 20cm. Mikrokontroler Arduino meneruskan perintah yang sama ke modul suhu AMG 8833 untuk membaca suhu orang. Proses lengkap ini memakan waktu dari Sensor Ultrasonik mendeteksi orang, hingga mengirim perintah ke modul suhu untuk mendeteksi suhu. Oleh karena itu, untuk mensinkronkan dengan penundaan, modul suhu dipasang sedikit jauh dari sensor ultrasonik.
Setiap kali orang masuk, gerbang dibuka (Di sini, dalam prototyp, kami menggunakan servo untuk berfungsi sebagai gerbang, tetapi dalam implementasi proyek lebih lanjut, servo akan diganti dengan motor gerbang berat dan dikontrol melalui driver motor, di mana Arduino akan mengirim perintah). Pembacaan suhu orang diambil dan pembacaan ini dikirim ke dasbor IoT ThingSpeak secara real-time melalui Arduino WiFi 1010. Untuk ini, koneksi Wi-Fi aktif diperlukan di lokasi pusat perbelanjaan yang biasanya tersedia dalam sebagian besar kasus. Menurut Penelitian, suhu tubuh orang dengan demam sekitar 38.1C yang sama dengan 104F. Oleh karena itu, jika Modul Suhu mendeteksi suhu di atas ambang ini, servo berputar 180Derajat dan Buzzer menyala untuk memperingatkan orang tentang Orang. Demikian pula, petugas keamanan dan staf pusat perbelanjaan lainnya dapat sampai ke area tepat waktu untuk mengontrol situasi ketika kasus seperti ini terjadi.
Logika bekerja dengan cara berikut:
├── Deteksi Suhu Orang
├── Sensor Ultrasonik HC-Sr04
│ ├── Deteksi Orang
│ │ ├── If( Jarak Orang = 20) ,kirim perintah
├── Arduino MKR WiFi 1010
│ ├── jika Sensor Ultrasonik Mengirim perintah;
│ │ ├── Buka gerbang - Servo(0)
│ │ ├── Aktifkan AMG8833 untuk mengambil pembacaan
│ │ ├── Kirim Pembacaan ke Dasbor ThingSpeak
│ │ | ├── Jika Suhu > 38.1C
│ │ │ | ├── Tutup gerbang - servo(180)
│ │ │ │ ├── Aktifkan Buzzer
│ │ └── ...Ulangi loop
Dengan cara ini, Logika lengkap Fungsi Pemantau Suhu bekerja.
Diagram Rangkaian untuk Model Suhu adalah sebagai berikut:
Ini adalah Firmware dan setup lengkap yang digunakan dalam proyek
Simulasi ini menunjukkan tipe data yang ditangkap oleh Kamera Termal AMG 8833 dan data ini dikirim ke Arduino MKR WiFi 1010 untuk mentransfer perintah
Simulasi ini menunjukkan jarak yang ditangkap oleh Sensor Ultrasonik dan perintah ini dikirim ke Arduino MKR WiFi untuk mengaktifkan sensor termal AMG 8833
Alih-alih sistem pembukaan pintu berbasis servo, saya akan mengimplementasikan sistem perintah menggunakan driver motor untuk mengotomatisasi sistem pembukaan geser pintu sebagai berikut:
Mengatur Dasbor IoT:
Menggunakan Penyiapan Dasbor ThingSpeak:
ThingSpeak™ adalah layanan analitik IoT yang memungkinkan Anda mengagregasi, memvisualisasikan, dan menganalisis aliran data langsung di cloud. ThingSpeak menyediakan visualisasi instan dari data yang diposting oleh perangkat Anda ke ThingSpeak. Dengan kemampuan untuk mengeksekusi kode MATLAB® di ThingSpeak, Anda dapat melakukan analisis online dan memproses data saat tiba. ThingSpeak sering digunakan untuk prototyping dan sistem konsep bukti IoT yang memerlukan analitik.
Karena ThingSpeak mudah diatur dan digunakan, saya memilih untuk menggunakan dasbor itu. Antarmuka ini memungkinkan pengguna untuk berbagi dasbor dengan departemen keamanan atau staf di pusat perbelanjaan sehingga mereka dapat terus memantau orang yang mengunjungi pusat perbelanjaan, dan demikian pula mengenakan pembatasan pada waktu-waktu tertentu ketika mereka merasa risiko suhu lebih tinggi.
Gambar di atas mewakili serbagunanya dasbor thingspeak dan visualisasi kreatif yang diproyeksikan.
Logika yang digunakan dalam proses pengumpulan data ThingSpeak IoT
Gambar ini menunjukkan pembuatan visualisasi di berbagai channel. Di sini, saya telah membuat Grafik Suhu vs Waktu di bagian visualisasi. Data yang dikumpulkan oleh sensor AMG8833 akan masing-masing dialokasikan stempel waktu dan akan dipetak pada grafik untuk melihat waktu untuk setiap data yang ditangkap.
Data yang dikumpulkan dapat dilihat secara real-time di Dasbor Publik di sini ; ThingSpeak Temperature Dashboard
Demikian pula, plot ini dapat diintegrasikan secara kumulatif ke satu Dasbor yang dibuat terbuka untuk pengunjung pusat perbelanjaan untuk melihat data suhu sebelum memasuki pusat perbelanjaan. Jika pengunjung menemukan pembacaan suhu abnormal pada hari tertentu, mereka dapat memilih untuk tidak pergi ke supermarket atau pusat perbelanjaan pada hari itu untuk aman.
Grafik Integrasi data visualisasi:
<iframe width="450" height="260" style="border: 1px solid #cccccc;" src="https://thingspeak.com/channels/1121969/charts/1?bgcolor=%23ffffff&color=%23d62020&dynamic=true&results=600×cale=10&type=line"></iframe>
Grafik ini dapat disematkan di satu dasbor dengan pembacaan grafik dari pusat perbelanjaan dan supermarket lain di area tertentu dan oleh karena itu, pengunjung unik dapat memeriksa pusat perbelanjaan mana yang berkinerja lebih baik dari pusat perbelanjaan lain dalam hal keselamatan dan dapat memilih pergi ke pusat perbelanjaan di mana pedoman keselamatan diikuti dan orang yang masuk tidak didiagnosis demam. Ini dapat membantu Pemerintah untuk mendirikan keselamatan dan kepercayaan di kalangan orang bersama dengan pembukaan kembali pusat perbelanjaan dan sektor eceran
Kode dari proyek berikut dapat dilihat di Github atau di Arduino Web editor di sini ; Temperature-Model-code
Logika dalam kode adalah sebagai berikut:
#include <Wire.h>
#include <Adafruit_AMG88xx.h>
#include <Servo.h>
#include ESP32_Servo.h
#include <WiFi.h>
#include <WiFiMulti.h>
Servo servo1;
int trigPin = 9;
int echoPin = 8;
long distance;
long duration;
WiFiMulti WiFiMulti;
const char* ssid = "JioFiber-tcz5n"; // SSID Anda (Nama Wi-Fi Anda) - Ini adalah nama dummy, masukkan SSID Wi-Fi Anda di sini
const char* password = "**********"; //Saya tidak menyebutkan kata sandi di sini, saat menjalankan skrip, Anda dapat menyebutkan kata sandi Anda
const char* host = "api.thingspeak.com/1121969";
String api_key = "8LNG46XKJEJC89FE"; // API Key Anda yang diberikan oleh thingspeak
Adafruit_AMG88xx amg;
Di sini, saya telah menentukan beberapa Library dan Firmware beserta pengaturan yang diperlukan untuk host Wi-Fi dan API-Key untuk dasbor suhu di thingspeak
Ini adalah gambar dari Kode dalam proses:
Bagian selanjutnya dari kode adalah Menyiapkan komponen yang diperlukan sebelum loop sebenarnya dimulai:
Ini adalah prasyarat sebelum looping kode sebenarnya. Saya telah menentukan pin Servo dan Sensor Ultrasonik sambil juga memulai pengujian AMG 8833 untuk melihat apakah itu dapat membaca data atau apakah itu terhubung
void setup()
{
Serial.begin(9600);
servo1.attach(7);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}
{
Connect_to_Wifi();
Serial.println(F("AMG88xx test"));
bool status;
status = amg.begin();
if (!status) {
Serial.println("Could not find a valid AMG88xx sensor, check wiring!");
while (1);
}
Serial.println("-- Thermistor Test --");
Serial.println();
delay(100);
}
Bagian selanjutnya adalah Void Loop di mana fungsi lengkap dilakukan. Di sini, Awalnya saya telah menetapkan gerbang untuk terbuka untuk memungkinkan masuknya setiap orang. AMG 8833 melakukan pengumpulan data dan membaca suhu orang yang masuk. Jika suhu lebih tinggi dari ambang yang diharapkan, gerbang ditutup dan alarm(buzzer) dihidupkan untuk memperingatkan orang dan tidak memungkinkan masuknya orang
void loop()
ultra();
servo1.write(0);
if(distance <= 20){
Serial.print("Thermistor Temperature = ");
Serial.print(amg.readThermistor());
Serial.println(" *C");
Serial.println();
// call function to send data to Thingspeak
Send_Data();
//delay
delay(50);
if(amg.readThermistor() > 38.1) // jika orang dengan demam terdeteksi, ia tidak diizinkan untuk masuk
servo1.write(180);
digitalWrite(6, HIGH); //Turns on the buzzer to alarm people
}
Bagian terakhir adalah mengirim data ke Dasbor ThingSpeak:
Di sini, karena saya hanya memiliki satu field di channel, semua data akan dikirim ke field itu. Data yang ditangkap, amg.readThermistor() dikirim ke dasbor.
void Send_Data()
{
Serial.println("Prepare to send data");
// Use WiFiClient class to create TCP connections
WiFiClient client;
const int httpPort = 80;
if (!client.connect(host, httpPort)) {
Serial.println("connection failed");
return;
}
else
{
String data_to_send = api_key;
data_to_send += "&field1=";
data_to_send += string(amg.readThermistor());
data_to_send += "\r\n";
client.print("POST /update HTTP/1.1\n");
client.print("Host: api.thingspeak.com\n");
client.print("Connection: close\n");
client.print("X-THINGSPEAKAPIKEY: " + api_key + "\n");
client.print("Content-Type: application/x-www-form-urlencoded\n");
client.print("Content-Length: ");
client.print(data_to_send.length());
client.print("\n\n");
client.print(data_to_send);
delay(200);
}
client.stop();
}
Ini mengakhiri bagian kode dari proyek dan kita beralih ke penjelasan penggunaan dan bagian GO TO MARKET dari proyek
Gambar di atas menunjukkan implementasi metodologi dan model di supermarket dan pusat perbelanjaan.
GO TO MARKET & PRACTICALITY:
- Pusat perbelanjaan dan Supermarket dapat menggunakan ini untuk mengidentifikasi data Suhu Abnormal dan data ini dapat diamati bahkan untuk hari tertentu pada titik waktu tertentu.
- Terapkan Strategi menggunakan data ini untuk memastikan Keselamatan dan Kepatuhan.
- Kurangi Tenaga Kerja dan otomatisasi Proses Pemantauan Suhu
- Tawarkan Dasbor kepada pengunjung untuk memantau apakah pusat perbelanjaan aman dan demikian pula kunjungi pusat perbelanjaan pada titik waktu teraman.
- Produk ini dapat digunakan untuk memastikan pengunjung bahwa pusat perbelanjaan adalah tempat yang aman dan oleh karena itu, dapat meningkatkan penjualan dan kunjungan mengikuti pedoman Pemerintah
- Perusahaan yang menawarkan solusi berbasis IoT dapat berinvestasi dalam produk ini untuk produksi massal dan distribusi.
- Semakin banyak supermarket yang menggunakan produk ini, semakin banyak akses ke data bagi pemerintah dan semakin banyak pilihan bagi pelanggan untuk memilih tempat teraman di lingkungan mereka.
- Solusi yang relatif terjangkau dibandingkan dengan pemantauan suhu manual karena mengurangi biaya tenaga kerja + mengurangi tingkat infeksi dibandingkan pemantauan manual di mana orang yang mengambil suhu harus dekat dengan pengunjung untuk menangkap suhu.
Proyek 4: Sistem Antrian Berbasis TinyML & IoT untuk Pemantauan dan Pembentukan Antrian yang diterapkan pada Arduino 33 BLE Sense:
Sama seperti pusat perbelanjaan dan sektor eceran telah buka, manajemen antrian di pusat perbelanjaan dan supermarket telah menjadi masalah besar. Akibat pandemi, membatasi hanya sejumlah orang untuk masuk ke pusat perbelanjaan harus diikuti oleh pusat perbelanjaan untuk memastikan kepatuhan keselamatan. Namun ini dilakukan secara manual yang meningkatkan pekerjaan tenaga kerja. Juga data untuk jumlah orang di dalam pusat perbelanjaan pada titik waktu tertentu tidak tersedia untuk pengunjung pusat perbelanjaan. Jika data ini telah dibuat tersedia untuk pengunjung pusat perbelanjaan, itu akan meningkatkan persentase orang yang mengunjungi pusat perbelanjaan.
Mencoba menjalankan toko atau layanan selama krisis Corona yang berlangsung tentu merupakan tantangan. Melayani pelanggan sambil menjaga mereka dan karyawan tetap aman cukup sulit, tetapi antrian digital dapat membantu banyak dalam hal ini. Teknologi di balik antrian virtual tidak sepenuhnya baru; panggilan untuk jarak sosial hanya menyoroti beberapa manfaat yang ditawarkannya.
Sebagian besar negara telah memperkenalkan upaya hukum untuk mengatasi penyebaran COVID-19. Untuk memastikan kepuasan pelanggan sambil mematuhi peraturan baru, satu hal yang pasti: antrian panjang dan lobi ramai harus hilang. Teknologi antrian digital (juga disebut antrian virtual atau remote) memungkinkan bisnis untuk melayani pelanggan mereka tepat waktu sementara mereka tetap di luar bahaya.
Secara umum, Anda mungkin akan menemukan satu atau lebih dari jenis solusi manajemen antrian berikut di lingkungan eceran tertentu:
- Antrian terstruktur: Barisan terbentuk di posisi tetap dan terentukan. Contohnya kasir supermarket atau antrian keamanan bandara.
- Antrian tidak terstruktur: Barisan terbentuk secara alami dan spontan di lokasi dan arah yang bervariasi. Contohnya antrian taksi dan menunggu konsultan di toko eceran spesialis.
- Antrian berbasis Kiosk: Pelanggan yang datang memasukkan informasi dasar ke dalam kiosk, memungkinkan staf untuk merespons sesuai. Kiosk sering digunakan di bank, serta fasilitas medis dan pemerintah.
- Antrian seluler: Alih-alih berantrian secara fisik, pelanggan menggunakan smartphone mereka. Mereka tidak perlu menunggu di toko tetapi dapat memantau Dasbor IoT untuk melihat waktu tunggu di toko.
Antrian panjang, baik terstruktur atau tidak terstruktur, sering kali menghalangi pelanggan datang langsung untuk masuk ke toko. Selain itu, mereka membatasi produktivitas dan menyebabkan tingkat stres berlebih bagi pelanggan dan staf.
Apakah manajemen antrian yang efektif secara langsung mempengaruhi pengalaman pelanggan?
Ada aspek menarik tentang pengalaman menunggu dalam barisan: Waktu tunggu yang kita indikasikan seringkali tidak sesuai dengan waktu aktual yang kita habiskan dalam barisan. Kami mungkin mengaitkan periode waktu salah untuk menjadi "lebih lama" dari biasanya atau menilai periode lain "lebih singkat" meskipun sebenarnya melebihi waktu tunggu rata-rata. Sebagian besar ini terkait dengan bagaimana kita dapat menghabsi waktu menunggu.
"Waktu yang terisi (berjalan ke klaim bagase) terasa lebih pendek daripada waktu yang tidak terisi (berdiri di karusel). Penelitian tentang antrian telah menunjukkan bahwa, rata-rata, orang menglebih-lebihkan berapa lama mereka telah menunggu dalam barisan sekitar 36 persen."
Alasan utama pelanggan takut untuk mengunjungi supermarket apa pun adalah masalah data yang tidak mencukupi. Pengunjung tidak tahu kepadatan orang di dalam pusat perbelanjaan. Semakin banyak jumlah orang di dalam pusat perbelanjaan, semakin tinggi risiko untuk mengunjungi pusat perbelanjaan. Menghitung secara manual jumlah orang yang masuk dan keluar pusat perbelanjaan dan memperbarui data ini secara real-time tidak mungkin. Juga, pengunjung tidak tahu hari mana dan waktu mana yang paling cocok untuk mengunjungi pusat perbelanjaan. Pengunjung juga tidak tahu waktu tunggu setiap pusat perbelanjaan sehingga ia dapat pergi ke supermarket lain di sekitar jika waktu tunggu di sana lebih pendek. Akibatnya, semuanya ini mengarah pada konversi orang yang lebih sedikit dan demikian pula jumlah orang yang mengunjungi pusat perbelanjaan yang lebih sedikit. Jika pengunjung memiliki akses ke data populasi, mereka memiliki rasa percaya dan mengarah pada peningkatan penjualan pusat perbelanjaan. Oleh karena itu, saya telah datang dengan solusi TinyML dan IoT berbasis Arduino untuk membuat data ini tersedia bagi pengunjung dan juga meningkatkan konversi pengunjung di pusat perbelanjaan dengan mengikuti pedoman keselamatan yang diperlukan.Jika pengunjung memiliki akses ke data populasi, mereka memiliki rasa percaya dan mengarah pada peningkatan penjualan pusat perbelanjaan. Oleh karena itu, saya telah datang dengan solusi TinyML dan IoT berbasis Arduino untuk membuat data ini tersedia bagi pengunjung dan juga meningkatkan konversi pengunjung di pusat perbelanjaan dengan mengikuti pedoman kece
Solusi ini didasarkan pada visusi komputer dan algoritma deteksi orang berdasarkan framework tensorflow.
Ini berfungsi dengan cara berikut:
Solusi ini diterapkan di gerbang pusat perbelanjaan atau supermarket. Arducam mini 2mp terus menangkap data citra dan mengirimnya ke Arduino 33 BLE Sense untuk memproses dan mengklasifikasikan data ini. Jika orang terdeteksi, Arduino menambah jumlah data tersimpan dari jumlah orang di dalam pusat perbelanjaan sebesar 1. Karena orang terdeteksi, motor servo berputar, membuka pintu masuk untuk membiarkan orang masuk. Untuk setiap orang yang diizinkan masuk, data dikirim ke dasbor IoT ThingSpeak yang terbuka bagi pengunjung untuk dilihat.
Ketika jumlah orang meningkat ambang 50(Ambang ini dapat diubah tergantung pada ukuran supermarket), gerbang ditutup dan waktu tunggu 15 menit ditetapkan hingga pelanggan di dalam keluar toko. Waktu tunggu kemudian ditampilkan pada layar matriks LED sehingga pelanggan dalam antrian dapat mengetahui durasi yang harus mereka tunggu.
Orang juga dapat melacak jumlah orang di dalam toko. Jumlah orang yang diizinkan masuk ke toko sekaligus adalah 50 orang.
Unit antrian fisik dari produk ini membantu dalam mendirikan antrian sementara Dasbor IoT membantu dalam memproyeksikan jumlah total pelanggan yang masuk ke toko dan jumlah total pelanggan yang keluar dari toko. Saat ini ini adalah data dasbor yang akan ditampilkan tetapi saya sedang bekerja pada logika untuk menampilkan waktu tunggu yang diperlukan untuk pelanggan untuk masuk ke pusat perbelanjaan. Logikanya cukup sederhana, itu tergantung pada jumlah orang di dalam pusat perbelanjaan. Jumlah total orang yang masuk ke pusat perbelanjaan yang ditampilkan pada dasbor dikurangi jumlah total orang yang keluar dari pusat perbelanjaan yang ditampilkan pada dasbor. Ini akan memberi kita hasil jumlah total orang di dalam toko. Operasi berikutnya adalah jumlah total orang di luar toko dikurangi ambang (batas yang dapat ditampung toko). Jika hasilnya adalah bilangan negatif, waktu tunggu adalah perkalian bilangan negatif dengan negatif dari waktu rata-rata seseorang menghabiskan di dalam toko. Jika hasil dari operasi adalah bilangan positif, waktu tunggu adalah nol.
Menuju Implementasi Sistem Antrian Fisik:
Berikut adalah Perangkat Lunak yang digunakan dalam mendesain model ini:
- TensorFlow lite
- ThingSpeak
- Arduino Web Editor
Dalam model deteksi orang ini, saya telah menggunakan model Deteksi Orang Pra-terlatih TensorFlow yang tepat untuk proyek ini. Model pra-terlatih ini terdiri dari tiga kelas di mana kelas ketiga adalah dengan himpunan data yang tidak ditentukan:
"unused",
"person",
"notperson"
Dalam model kita kita memiliki Arducam Mini 2mp plus untuk melakukan intake citra dan data citra ini dengan tingkat fps yang layak dikirim ke Arduino Nano 33 BLE Sense untuk pemrosesan dan klasifikasi. Karena Mikrokontroler mampu menyediakan 256kb RAM, kita mengubah ukuran citra setiap citra menjadi standar 96*96 untuk pemrosesan dan klasifikasi. Jaringan Tensorflow Lite Arduino terdiri dari kerangka pembelajaran mendalam sebagai:
- Depthwise Conv_2D
- Conv_2D
- AVERAGE Pool_2D
- Flatten layer
Kerangka pembelajaran mendalam ini digunakan untuk melatih model Deteksi Orang.
Fungsi berikut adalah fungsi paling penting yang didefinisikan saat memproses output pada Mikrokontroler melalui Arduino_detetction_responder.cpp
// Process the inference results.
uint8_t person_score = output->data.uint8[kPersonIndex];
uint8_t no_person_score = output->data.uint8[kNotAPersonIndex];
RespondToDetection(error_reporter, person_score, no_person_score);
Dalam fungsi berikut yang didefinisikan, person_score dan no_person_score telah didefinisikan pada tingkat klasifikasi data.
menggunakan fungsi yang didefinisikan ini, saya akan menggunakannya untuk memberikan output tertentu berdasarkan kepercayaan dari person-score dan no_person_score.
Logika respons deteksi dari kode bekerja dengan cara berikut:
├── Deteksi Orang dan respons - Masuk
├── Arducam mini 2MP Plus
│ ├── Data Citra dan Video ke Arduino
├── Arduino BLE 33 Sense
│ ├── pemrosesan dan klasifikasi data input
│ │ ├── Jika orang terdeteksi, buka gerbang - servo(180)
│ │ ├── Jika tidak ada orang terdeteksi, tutup gerbang - servo(0)
│ │ ├── Kirim jumlah orang yang masuk ke Dasbor ThingSpeak melalui ESP8266 -01
│ │ | ├── Jika jumlah orang telah melebihi 50
│ │ │ | ├── Tutup gerbang & tunggu 15 menit untuk membiarkan orang di dalam keluar
│ │ │ │ ├── Tampilkan waktu tunggu pada LED Matrix
│ │ └── ...Ulangi loop
├── Deteksi Orang dan respons - Keluar
├── Arducam mini 2MP Plus
│ ├── Data Citra dan Video ke Arduino
├── Arduino BLE 33 Sense
│ ├── pemrosesan dan klasifikasi data input
│ │ ├── Jika orang terdeteksi, buka gerbang - servo(180)
│ │ ├── Jika tidak ada orang terdeteksi, tutup gerbang - servo(0)
│ │ ├── Kirim jumlah orang yang masuk ke Dasbor ThingSpeak melalui ESP8266 -01
│ │ └── ...Ulangi loop
Mematuhi logika yang digunakan dalam model, Arducam mini 2mp plus akan terus menangkap Data Citra dan mengirim data ini ke Arduino 33 BLE Sense untuk memproses dan mengklasifikasikan data. Ukuran model keseluruhan adalah 125KB. Jika orang terdeteksi, Arduino mengirim perintah ke servo untuk berputar ke 180derajat. Jika tidak ada orang terdeteksi, servo diputar ke 0derajat dan gerbang ditutup. Setiap kali orang terdeteksi, jumlah bertambah 1. Jika jumlah melebihi ambang 50, tidak ada orang lagi yang diizinkan masuk dan waktu tunggu 15 menit ditetapkan.
Waktu tunggu ditampilkan dan diperbarui terus-menerus pada layar LED Matrix.
Jumlah ini juga ditampilkan pada Dasbor IoT ThingSpeak melalui ESP8266 01
Melalui Dasbor, seseorang dapat dengan mudah melihat jumlah orang yang ada pada hari tertentu pada titik waktu tertentu.
Di gerbang keluar, logika yang sama diterapkan. Jika orang terdeteksi, gerbang dibuka sementara jika tidak ada orang terdeteksi, gerbang ditutup. Setiap kali orang terdeteksi, jumlah bertambah 1. Jumlah ini ditampilkan pada Dasbor IoT ThingSpeak.
Dengan cara ini seseorang dapat memantau jumlah orang yang masuk dan jumlah orang yang keluar.
Karena dua model untuk masuk dan keluar diterapkan pada dua mikrokontroler yang berbeda, menghitung waktu tunggu rata-rata berdasarkan data dari mikrokontroler yang berbeda cukup sulit, tetapi ini menggunakan fungsi logika sederhana.
x = Jumlah orang yang telah masuk
Y = Jumlah orang yang telah keluar
X - Y = Jumlah orang yang ada di dalam pusat perbelanjaan
Z = Ambang jumlah orang yang diizinkan untuk ada di dalam pusat perbelanjaan
let Z-(X-Y) = count {ini adalah jumlah orang (dalam negatif) yang telah melewati batas ambang atau di bawah batas ambang
If "count" is negatif, Waktu tunggu sama dengan count*(negatif dari waktu rata-rata seseorang menghabiskan di dalam pusat perbelanjaan)
if "count" is positif, waktu tunggu adalah nol
In dengan cara ini, algoritma perhitungan waktu antrian rata-rata diterapkan.
Kerja Firmware:
Ini adalah setup lengkap firmware yang dirancang pada Fritzing.
Model ini terdiri dari firmware berikut yang digunakan:
- Arduino 33 BLE sense - Digunakan untuk memproses data yang dikumpulkan, mengklasifikasikan data, memproses, dan mengirim perintah sesuai logika yang diberikan.
- MG959 / MG995 Servo - Servo berat( supply daya eksternal dapat diterapkan) - Untuk membuka dan menutup gerbang sesuai perintah mikrokontroler.
- Arducam Mini 2mp plus - Akumulasi citra data mentah berkelanjutan dari sumber.
- Pengisi baterai lithium ion Adafruit - Digunakan untuk mengisi daya melalui baterai lithium
- Baterai lithium ion - sumber daya
- ESP8266 - 01 - Digunakan untuk mengirim data ke dasbor ThingSpeak melalui jaringan Wi-Fi.
- MAX7219 4 in 1 display - Digunakan untuk menampilkan waktu tunggu pada layar tampilan.
Proyek 5: Deteksi Masker Algoritme
Model Deteksi Masker berdasarkan TinyML:
Dr. Kierstin Kennedy, kepala obat rumah sakit di University of Alabama di Birmingham, berkata, “Masker dapat melindungi terhadap penyakit menular apa pun yang dapat disebarkan oleh titik air. Misalnya, flu, batuk rejan (pertussis), atau pneumonia.”
Menambahkan bahwa penggunaan masker kain memiliki manfaat di luar memperlambat penyebaran COVID-19, dan kontrol sumber dapat mengurangi transmisi banyak infeksi pernapasan yang mudah disebarkan lainnya — jenis yang biasanya membuat orang infeksi bahkan sebelum mereka menunjukkan gejala, seperti influenza.
Sampel ancaman pandemi ini telah diatasi, orang harus mengamati perlindungan yang diizinkan masker untuk memberikan kepada mereka di sekitar mereka.
Setelah tudo, ini tidak harus tentang Anda — ini tentang semua orang yang Anda temui.
Tidak sama sekali jarang untuk menjadi penyebar asymptomatic dari koronavirus baru — yang berarti bahwa bahkan jika Anda tidak memiliki gejala sama sekali, Anda potensial dapat mentransmisikan virus kepada seseorang yang kemudian dapat menjadi sangat sakit atau bahkan mati.
Mematuhi ini, saya memutuskan untuk meningkatkan keharusan penggunaan masker wajah bersama dengan sistem sentuh bebas untuk meningkatkan keselamatan di pusat perbelanjaan dan supermarket. Bersama dengan algoritma deteksi orang, saya memutuskan untuk membuat model deteksi masker wajah kustom yang mendeteksi masker wajah dan menampilkan data ini pada dasbor IoT ThingSpeak untuk meningkatkan kesadaran di kalangan staf pusat perbelanjaan serta pengunjung yang masuk sehingga mereka menyadari tren waktu ketika sebagian besar orang tidak memakai masker. Melalui ini ada peningkatan rasa peringatan dan kesadaran di kalangan orang untuk memakai masker. Sesuai dengan itu, staf toko dapat memantau tren ini dan meningkatkan pembatasan berdasarkan statistik yang didorong data.
Memutuskan Logika dan Kumpulan Data Model:
Ini adalah Logika keseluruhan yang digunakan dalam sebagian besar algoritma deteksi masker wajah. Karena, kita menerapkan model ini pada Arduino 33 BLE Sense, proses penerapan model ini akan bervariasi.
Ada dua langkah yang terlibat dalam konstruksi model untuk Deteksi Masker Wajah.
- Pelatihan: Di sini kita akan fokus pada memuat kumpulan data deteksi masker wajah dari disk, melatih model (menggunakan Keras/TensorFlow) pada kumpulan data ini, dan kemudian menyimpan detektor masker wajah ke disk
- Penerapan: Setelah detektor masker wajah dilatih, kita kemudian dapat melanjutkan untuk memuat detektor masker, melakukan deteksi wajah, dan kemudian mengklasifikasikan setiap wajah sebagai
mask atau no_mask
Kumpulan data yang digunakan dalam pelatihan model ini:
Kumpulan data yang digunakan dalam proses ini terdiri dari 3500 citra tetapi untuk mengurangi ukuran model, dan memberi masukan citra model yang akurat, saya telah menggunakan 813 citra untuk meningkatkan akurasi model dengan mengurangi ukuran massal. Model ini berukuran rata-rata 676K dan menggunakan hampir 440.3K Ram. Karena model ini adalah versi yang dioptimalkan dari model asli, akurasi model adalah 87.47% dibandingkan 98.15% di yang tidak dioptimalkan.
Berikut adalah Perangkat Lunak yang digunakan dalam mendesain model ini:
- TensorFlow lite
- ThingSpeak
- Arduino Web Editor
Menuju mendesain model di EdgeImpulse Studio:
Model pembelajaran mendalam yang kuat (berdasarkan jaringan saraf buatan) kini mencapai mikrokontroler. Sepanjang tahun terakhir kemajuan besar telah dilakukan dalam membuat model pembelajaran mendalam lebih kecil, lebih cepat dan dapat dijalankan pada perangkat keras tertanam melalui proyek seperti TensorFlow Lite for Microcontrollers, uTensor dan Arm’s CMSIS-NN; tetapi membangun kumpulan data berkualitas, mengekstrak fitur yang tepat, melatih dan menerapkan model ini masih bisa rumit.
Menggunakan Edge Impulse Anda sekarang dapat dengan cepat mengumpulkan data sensor dunia nyata, melatih model ML pada data ini di cloud, dan kemudian menerapkan model kembali ke perangkat Arduino Anda. Dari sana Anda dapat mengintegrasikan model ke sketsa Arduino Anda dengan satu panggilan fungsi.
Langkah 1 - Akuisisi Data di Edge Impulse Studio:
Menggunakan kumpulan data 3500 citra, saya menyaring citra ini ke citra yang berkinerja terbaik dan akhirnya memberi masukan 813 citra secara total dalam Data Pelatihan dan 487 citra dalam Data Pengujian. Saya melabeli kelas ini sebagai mask dan no_mask.
Kemudian, saya melanjutkan membuat desain impulse yang paling cocok untuk tipe Model. Untuk akurasi optimal disarankan untuk menggunakan ukuran citra standar yaitu 96*96 dan juga bekerja terbaik pada Arduino 33 BLE Sense. Karena tipe input adalah citra, saya melanjutkan dan memilih "images" dalam blok pemrosesan. Untuk blok transfer learning, tipe yang direkomendasikan untuk pembelajaran citra adalah Transfer Learning (Images) yang merupakan Fine tune a pre-trained image model on your data. with Good performance even with relatively small image datasets.
Langkah selanjutnya adalah menyimpan parameter berdasarkan kedalaman warna. Di sini, saya telah memilih RGB karena dalam kumpulan data yang saya gunakan untuk deteksi masker, warna juga merupakan fitur penting klasifikasi bukan grayscale. Di halaman ini, kita juga dapat melihat fitur mentah dengan fitur yang diproses dari citra
Setelah Generasi Fitur saya mendapatkan grafik klasifikasi atau penjelajah fitur tempat saya dapat melihat kelas berdasarkan klasifikasinya. Titik biru mewakili citra masker dan titik oranye mewakili citra no_mask.
Dalam generasi fitur ini, saya mendapatkan klasifikasi yang cukup baik dengan plot klasifikasi yang jelas.
Akhirnya, Beralih ke Plot Transfer Learning:
Di sini, saya menetapkan jumlah siklus pelatihan/epoch sebagai 30 untuk mendapatkan akurasi tertinggi dengan val_loss minimum. Hal itu terjadi bahwa jika kita melatih model berdasarkan banyak siklus pelatihan, grafik akurasi mulai menurun setelah sejumlah epoch dan val_loss meningkat. Oleh karena itu saya memutuskan untuk membatasi epoch menjadi 30 yang terbukti sempurna. Tingkat pembelajaran diatur ke 0.0005 yang merupakan default dan terbukti paling sesuai. Di sini, saya telah menggunakan model MobileNetV2 0.35 (lapisan akhir: 16 neuron, 0.1 dropout) karena model ini relatif ringan dan akurat.
Akhirnya setelah menyelesaikan 30 epoch dan 10 epoch kinerja model terbaik, saya mendapatkan akurasi menuju 1.00 dan kerugian hampir 0 yaitu 0.0011. Berikut adalah keluaran selama proses pelatihan:
- Epoch 9/10 21/21 - 5s - loss: 0.0011 - accuracy: 1.0000 - val_loss: 0.0727 - val_accuracy: 0.9755
- Epoch 10/10 21/21 - 5s - loss: 0.0012 - accuracy: 1.0000 - val_loss: 0.0728 - val_accuracy: 0.9755 Finished training
Ini adalah keluaran akhir yang saya terima setelah pelatihan:
Akurasi adalah 92.6% dan kerugian adalah 0.19.
Akhirnya Menggunakan data uji, saya menguji akurasi dan menemukan bahwa 98.15%.
Akhirnya karena saya telah memiliki model siap, saya menerapkannya sebagai Library Arduino dengan firmware untuk Arduino 33 BLE Sense: saya telah memiliki folder zip library siap dan mulai membuat perubahan sesuai kebutuhan kami.
Untuk konfirmasi terakhir, saya mengklasifikasikan data secara langsung untuk memastikan data diklasifikasikan dengan benar. Saya mendapatkan hasil yang sempurna seperti yang diharapkan:
Mengubah kode sesuai output yang diperlukan dalam model:
Di sini adalah cuplikan kode main.ino dari model mask_detection
Saya telah mendefinisikan library Arduino yang diperlukan untuk fungsi model dan berdasarkan framework Tensorflow lite, saya telah merancang model ini.
Ini adalah loop dari beberapa fungsi utama dalam model yang didefinisikan dalam library. Kode main.ino memusatkan fungsi ini dan sesuai mem-loopnya dengan kode sentral.
void loop() {
// Get image from provider.
if (kTfLiteOk != GetImage(error_reporter, kNumCols, kNumRows, kNumChannels,
input->data.uint8)) {
TF_LITE_REPORT_ERROR(error_reporter, "Image capture failed.");
}
// Run the model on this input and make sure it succeeds.
if (kTfLiteOk != interpreter->Invoke()) {
TF_LITE_REPORT_ERROR(error_reporter, "Invoke failed.");
}
TfLiteTensor* output = interpreter->output(0);
// Process the inference results.
uint8_t mask_score = output->data.uint8[kmaskIndex];
uint8_t no_mask_score = output->data.uint8[kno-maskIndex];
RespondToDetection(error_reporter, mask_score, no_mask_score);
}
Data yang diproses dari model ini dapat dilihat di sini : (File ini relatif besar dan bervariasi sesuai ukuran kumpulan data model) Arduino_mask_detect_model_data.h
Untuk memberikan citra, saya akan menggunakan Arducam mini 2mp plus untuk input citra visual. Cuplikan dari file image_provider.h adalah :
#include "image_provider.h"
/*
* The sample requires the following third-party libraries to be installed and
* configured:
*
* Arducam
* -------
* 1. Download https://github.com/ArduCAM/Arduino and copy its `ArduCAM`
* subdirectory into `Arduino/libraries`. Commit #e216049 has been tested
* with this code.
* 2. Edit `Arduino/libraries/ArduCAM/memorysaver.h` and ensure that
* "#define OV2640_MINI_2MP_PLUS" is not commented out. Ensure all other
* defines in the same section are commented out.
*
* JPEGDecoder
* -----------
* 1. Install "JPEGDecoder" 1.8.0 from the Arduino library manager.
* 2. Edit "Arduino/Libraries/JPEGDecoder/src/User_Config.h" and comment out
* "#define LOAD_SD_LIBRARY" and "#define LOAD_SDFAT_LIBRARY".
*/
#if defined(ARDUINO) && !defined(ARDUINO_ARDUINO_NANO33BLE)
#define ARDUINO_EXCLUDE_CODE
#endif // defined(ARDUINO) && !defined(ARDUINO_ARDUINO_NANO33BLE)
#ifndef ARDUINO_EXCLUDE_CODE
// Required by Arducam library
#include <SPI.h>
#include <Wire.h>
#include <memorysaver.h>
// Arducam library
#include <ArduCAM.h>
// JPEGDecoder library
#include <JPEGDecoder.h>
// Checks that the Arducam library has been correctly configured
#if !(defined OV2640_MINI_2MP_PLUS)
#error Please select the hardware platform and camera module in the Arduino/libraries/ArduCAM/memorysaver.h
#endif
Kode Arduino_detection_responder.cpp melakukan inferensi dan memberikan output utama yang diperlukan untuk kode. Di sini, ketika orang dengan masker terdeteksi, kita membuka gerbang dan jika orang tanpa masker terdeteksi, kita menutup gerbang.
// Switch on the green LED when a mask is detected,
// the red when no mask is detected
if (mask_score > no_mask_score) {
digitalWrite(LEDG, LOW);
digitalWrite(LEDR, HIGH);
servo_8.write(0); // this servo moves to 0degrees in order to open the mall door when a person is detected to ensure no touch entry system
count++
} else {
digitalWrite(LEDG, HIGH);
digitalWrite(LEDR, LOW);
servo_8.write(180); // this servo moves to 180degrees when no person is detected
count2++
}
Variabel count dan count2 adalah integer yang bertambah setiap kali masker terdeteksi, atau tidak terdeteksi. Jumlah ini kemudian ditampilkan pada Dasbor IoT ThingSpeak sebagai berikut:
Grafik menampilkan jumlah masker dan tanpa masker seiring waktu. Dasbor thingspeak ini disiapkan dalam kode Arduino seperti yang terlihat di sini:
#include <WiFi.h>
#include <WiFiMulti.h>
WiFiMulti WiFiMulti;
const char* ssid = "Yourssid"; // Your SSID (Name of your WiFi)
const char* password = "Wifipass"; //Your Wifi password
const char* host = "api.thingspeak.com/channels/1118220";
String api_key = "9BRPKINQJJT2WMWP"; // Your API Key provied by thingspeak
Kode lengkap untuk responder dapat dilihat di sini: Arduino_detection_responder.cpp
Kode Github dapat dilihat di sini: Arduino Mask Detetction
Dasbor ThingSpeak dapat dilihat di sini - IoT Dashboard
Proyek 5 - Deteksi Orang di Gang Supermarket dan Sistem Sanitasi Mandiri:
Sama seperti pusat perbelanjaan dan supermarket dan sektor eceran telah buka, risiko kontaminasi virus telah meningkat. Risiko utama yang dihadapi adalah di supermarket dan toko. Toko dapat terkait dengan pakaian, makanan dan bahkan elektronika, virus dapat menempel dan bertahan di permukaan ini untuk waktu yang lama.
Data awal menunjukkan koronavirus baru dapat bertahan di permukaan selama beberapa hari
Koronavirus baru adalah, well, baru — dan masih banyak yang harus dipelajari tentang seberapa mudah virus dapat menyebar melalui permukaan yang terkontaminasi. Namun bukti awal menunjukkan bahwa daya tahan permukaan koronavirus baru mirip dengan SARS, koronavirus terkait yang pertama kali diidentifikasi pada 2002. Bergantung pada permukaan, virus dapat bertahan di permukaan selama beberapa jam hingga beberapa hari.
Koronavirus baru tampak dapat bertahan paling lama pada plastik dan stainless steel — potensial selama tiga hari pada permukaan ini. Ini juga dapat bertahan pada kardus hingga 24 jam.
Tahukan apa artinya ini untuk hal-hal yang Anda sentuh sepanjang hari, termasuk:
- Pakaian
- Makanan
- Belanjaan
- Paket
- Elektronik
Pandemi coronavirus telah menghidupkan kembali teknik berumur puluhan tahun yang dapat mematikan virus dan bakteri: cahaya ultraviolet.
Rumah sakit telah menggunakannya selama tahun-tahun untuk mengurangi penyebaran superbug resistensi obat dan untuk mendisinfeksi suite bedah. Namun sekarang ada minat untuk menggunakan teknologi ini di ruang seperti sekolah, gedung perkantoran, dan restoran untuk membantu mengurangi transmisi coronavirus setelah ruang umum dibuka kembali.
Efek sanitasi cahaya UV telah dilihat dengan coronavirus lain, termasuk yang menyebabkan sindrom pernapasan akut parah (SARS). Studi telah menunjukkan bahwa dapat digunakan terhadap coronavirus lain. Suatu studi menemukan paling sedikit 15 menit paparan UVC menonaktifkan SARS, sehingga virus tidak dapat mereplikasi. Otoritas Transportasi Metropolitania New York mengumumkan penggunaan cahaya UV pada kereta api bawah tanah, bus, pusat teknologi, dan kantor. Akademi Nasional Ilmuwan mengatakan meskipun tidak ada bukti konkret untuk efektivitas UV pada virus yang menyebabkan COVID-19, ini telah bekerja pada virus serupa lain, jadi kemungkinan akan melawan virus ini juga.
Mematuhi informasi yang diberikan, Pusat Perbelanjaan dan Supermarket telah mulai menerapkan solusi berbasis sanitasi UV secara manual. Ini memakan banyak waktu dan juga, data tidak tersedia. Dalam proses manual, seseorang tidak tahu area mana yang lebih banyak terpapar sentuhan manusia atau area mana yang memiliki risiko kontaminasi tertinggi.
Untuk mengotomatisasi proses ini dan untuk memberikan analisis spasial real-time dari data yang dikumpulkan dan tingkat kontaminasi di suatu area.
Kerangka kerja terstruktur sistem ini adalah sebagai berikut:
Model-model ini masing-masing diterapkan di Gang dan Area pusat perbelanjaan dan supermarket dekat Area yang harus disanitasi. Karena model menggunakan algoritma deteksi orang, penempatan model dilakukan sesuai.
Dalam model ini, untuk akumulasi data video, Arducam mini 2MP Plus digunakan. Arducam Mini 2MP Plus terus mengumpulkan data visual dan mengirim data ini ke Arduino Nano 33 BLE Sense untuk pemrosesan dan klasifikasi. Arduino mengklasifikasikan data dan sesuai memproses perintah. Jika orang terdeteksi, jumlah orang bertambah 1 pada deteksi setiap orang di dekat Gang.
Sebuah ambang untuk jumlah orang ditetapkan tergantung pada tingkat kontaminasi berdasarkan tipe objek di area tersebut. Tingkat kontaminasi dan ambang untuk gang makanan, gang pakaian, gang olahraga dan gang Elektronik berbeda.
Sesuai dengan itu mempertimbangkan ambang rata-rata, jika 25 orang terdeteksi, area aman. Jika jumlah meningkat menjadi 50, area menuju kontaminasi dan pengunjung diberikan peringatan. Jika jumlah meningkat menjadi 100, area dideklarasi terkontaminasi dan orang diperingatkan untuk berhati-hati saat menyentuh objek. Terakhir jika ambang batas dilampaui yaitu 150, area secara otonom disanitasi menggunakan Cahaya UV.
Peringatan yang dihasilkan berdasarkan Warna LED. Hijau adalah indikasi untuk aman, biru adalah indikasi untuk peringatan, dan Merah adalah indikasi untuk Peringatan!. Peringatan berbasis LED ini dipasang di masing-masing area secara individual.
Gambar di atas menunjukkan berbagai gang di pusat perbelanjaan tempat sistem dapat dipasang.
Gambar di atas menunjukkan area pemasangan Arducam atau perangkat pengambil data visual serupa untuk mencakup spektrum luas orang yang berjalan melalui gang.
Gambar di atas menunjukkan implementasi demo Cahaya Sanitasi UV di area yang sesuai di gang. Cahaya UV ini mencakup spektrum luas area yang dapat disanitasi bersama-sama.
Implementasi sistem sanitasi otonom.
Berikut adalah Perangkat Lunak yang digunakan dalam mendesain model ini:
- TensorFlow lite
- ThingSpeak
- Arduino Web Editor
Dalam model deteksi orang ini, saya telah menggunakan model Deteksi Orang Pra-terlatih TensorFlow yang tepat untuk proyek ini. Model pra-terlatih ini terdiri dari tiga kelas di mana kelas ketiga adalah dengan himpunan data yang tidak ditentukan:
"unused",
"person",
"notperson"
Dalam model kita kita memiliki Arducam Mini 2mp plus untuk melakukan intake citra dan data citra ini dengan tingkat fps yang layak dikirim ke Arduino Nano 33 BLE Sense untuk pemrosesan dan klasifikasi. Karena Mikrokontroler mampu menyediakan 256kb RAM, kita mengubah ukuran citra setiap citra menjadi standar 96*96 untuk pemrosesan dan klasifikasi. Jaringan Tensorflow Lite Arduino terdiri dari kerangka pembelajaran mendalam sebagai:
- Depthwise Conv_2D
- Conv_2D
- AVERAGE Pool_2D
- Flatten layer
Kerangka pembelajaran mendalam ini digunakan untuk melatih model Deteksi Orang.
Fungsi berikut adalah fungsi paling penting yang didefinisikan saat memproses output pada Mikrokontroler melalui Arduino_detetction_responder.cpp
// Process the inference results.
uint8_t person_score = output->data.uint8[kPersonIndex];
uint8_t no_person_score = output->data.uint8[kNotAPersonIndex];
RespondToDetection(error_reporter, person_score, no_person_score);
Dalam fungsi berikut yang didefinisikan, person_score dan no_person_score telah didefinisikan pada tingkat klasifikasi data.
menggunakan fungsi yang didefinisikan ini, saya akan menggunakannya untuk memberikan output tertentu berdasarkan kepercayaan dari person_score dan no_person_score.
Logika respons deteksi dari kode bekerja dengan cara berikut:
├── Deteksi Orang dan sanitasi
├── Arducam mini 2MP Plus
│ ├── Data Citra dan Video ke Arduino
├── Arduino BLE 33 Sense
│ ├── pemrosesan dan klasifikasi data input
│ │ ├── Jika orang terdeteksi, tambahkan jumlah dengan 1
│ │ ├── Jika tidak ada orang terdeteksi, lakukan apa-apa
│ │ ├── Kirim jumlah orang yang masuk ke Dasbor ThingSpeak melalui ESP8266 -01
│ │ | ├── Jika jumlah orang hingga 25
│ │ │ | ├── Indikasikan area aman dengan memflash lampu hijau
│ │ | ├── Jika jumlah orang hingga 50
│ │ │ | ├── Indikasikan orang untuk waspada dengan memflash lampu BIRU
│ │ | ├── Jika jumlah orang hingga 100
│ │ │ | ├── Indikasikan area terkontaminasi dengan memflash lampu MERAH
│ │ | ├── Jika jumlah orang antara 150 hingga 175
│ │ │ | ├── Sanitasi area dengan mengaktifkan cahaya UV
│ │ │ | ├── Atur ulang jumlah orang ke 0 karena area telah disanitasi
│ │ └── ...Ulangi loop
Menurut logika yang digunakan dalam model, Arducam Mini 2MP Plus akan terus menangkap data visual dan mengirim data ini ke Arduino Nano 33 BLE sense untuk diproses dan diklasifikasikan. Ukuran model ini 125Kb. Setelah citra diproses, Arduino mulai mengklasifikasikan data yang ditangkap. Jika orang terdeteksi dalam model, jumlah orang bertambah 1. Jumlah orang ini terus dikirim ke dasbor ThingSpeak melalui modul IoT ESP8266- 01. Jumlah orang memungkinkan staf supermarket dengan data jumlah pengunjung di suatu area pada titik waktu tertentu. Staf dapat membuat keputusan yang didorong data untuk bertindak di suatu area jika jumlah pengunjung sangat tinggi.
Melanjutkan ke output, jika jumlah orang antara 1 hingga 25, Area dinyatakan aman dengan memflash LED hijau. Jika jumlah orang antara 26 hingga 50, pengunjung diberikan peringatan dengan memflash LED BIRU. Jika jumlah antara 51 hingga 100, area dinyatakan terkontaminasi dengan memflash LED MERAH. Ketika jumlah melewati ambang tertentu, di sini diambil sebesar 150, cahaya UV menyala hingga orang ke-165 melewati area. Dengan cara ini Area disanitasi. Demikian pula jumlah orang diatur ulang ke 0 karena area telah disanitasi.
Kerja Firmware:
Model ini terdiri dari firmware berikut yang digunakan:
- Arduino 33 BLE sense - Digunakan untuk memproses data yang dikumpulkan, mengklasifikasikan data, memproses, dan mengirim perintah sesuai logika yang diberikan.
- Arducam Mini 2mp plus - Akumulasi citra data mentah berkelanjutan dari sumber.
- Pengisi baterai lithium ion Adafruit - Digunakan untuk mengisi daya melalui baterai lithium
- Baterai lithium ion - sumber daya
- ESP8266 - 01 - Digunakan untuk mengirim data ke dasbor ThingSpeak melalui jaringan Wi-Fi.
- RGB LED - Digunakan untuk memflash Sinyal berdasarkan status kontaminasi
- Cahaya UV- Digunakan untuk Sanitasi Area ( Karena ini adalah prototyp, LED ditampilkan. Dalam solusi sebenarnya, cahaya UV memakan banyak energi sehingga sumber daya eksternal perlu disediakan. )
Code
- Otomatisasi Lift menggunakan perintah suara "up" - "down"
Otomatisasi Lift menggunakan perintah suara "up" - "down"Arduino
Di bawah adalah file .zip dari Library Arduino
Tidak ada pratinjau (hanya unduhan).
Sanitasi Gang Pusat Perbelanjaan dengan Sistem Deteksi Orang
https://github.com/dhruvsheth-ai/self-sanitisation-person-detetction
Sistem Pemantauan Suhu Berbasis IoT
https://github.com/dhruvsheth-ai/temperature-arduino-iot
Algoritme Deteksi Masker
https://github.com/dhruvsheth-ai/ble-mask-detection-optimised
Intercom Orang Otonom Berbasis TinyML
https://github.com/dhruvsheth-ai/person-autonomous-intercom
Otomatisasi Lift Menggunakan TinyML
https://github.com/dhruvsheth-ai/elevator-Automation-ARDUINO
Sistem Deteksi Orang dan Antrian Masuk Pusat Perbelanjaan
Sistem Antrian berdasarkan deteksi orang TinyML di Masuk dan Keluar Pusat Perbelanjaan terhubung melalui dasbor IoT ThingSpeak untuk pemantauan data langsunghttps://github.com/dhruvsheth-ai/Person-queuing-system-arduino33
Skematika



Ini adalah Skematika untuk Sistem Deteksi Orang dan Sanitasi Mandiri Gang Pusat Perbelanjaan yang mentransfer data ke Dasbor IoT ThingSpeak

Mendeteksi orang yang hadir di pintu dan memicu bel serta menampilkan "person" pada LED Matrix sebagai alternatif