Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

Kamera Pelacakan Wajah

Komponen dan persediaan

Arduino UNO
× 1
kamera web
× 1
karet gelang
× 1
Suplai Daya Dinding Pengalih 9V 1A
× 1
servo MG-90s
× 2
colokan colokan 2.1*5.5mm
× 1
Regulator Linier (7805)
× 1
Sekrup self-tapping M2*10mm
× 15
penjepit kertas
× 1
Kit Kawat Penghubung, 22 AWG
× 1
pin header
× 1
LED 5 mm:Merah
× 1
LED 5 mm:Hijau
× 1
LED 5 mm:Kuning
× 1
Resistor 220 ohm
× 3
tabung heat-shrink
× 1

Alat dan mesin yang diperlukan

Pemotong &Pemotong Kawat, 18-10 AWG / 0,75-4mm² Kabel Kapasitas
Tang, Hidung Panjang
Besi solder (generik)
multimeter
obeng
Printer 3D (generik)

Aplikasi dan layanan online

Microsoft Windows 10

Tentang proyek ini


Beberapa bulan yang lalu, saya membuat model dan mencetak salah satu kepala rekan saya untuk bersenang-senang. Saya pikir akan lucu untuk mendorong lelucon dan membangun mekanisme untuk kepala ini yang dapat mendeteksi orang dan terus menatap mereka saat mereka bergerak di sekitar ruangan.

Saya berjuang untuk membuat mekanismenya cukup kecil agar sesuai dengan cetakan 3D saya, jadi alih-alih mengunci proyek di lemari selamanya dan melupakannya, saya memutuskan untuk membuat model yang mudah dirakit dengan perangkat lunak yang mudah digunakan untuk dinikmati dan dibangun semua orang. .

...............https://www.littlefrenchkev.com/face-tracking-camera-mini.............

Bagaimana cara kerjanya?

Kamera bergerak menggunakan dua servo yang digerakkan oleh Arduino Uno. Kamera dicolokkan ke komputer tempat perangkat lunak mencoba menemukan wajah dalam gambar yang diterima dari kamera.

Jika wajah ditemukan, perangkat lunak akan mengirimkan pesan ke Arduino untuk membuat kamera bergerak agar wajah yang terdeteksi berada di tengah gambar.

Jika tidak ada wajah yang ditemukan, perangkat lunak akan mengirimkan pesan ke Arduino untuk memindahkannya ke posisi acak.

Saya mencoba membuat perangkat lunak ini cukup fleksibel dengan opsi seperti:

  • rentang servo yang dapat dimodifikasi
  • kemungkinan untuk membalikkan rotasi servos
  • kontrol manual

Mudah-mudahan ini akan memudahkan untuk digunakan kembali untuk tujuan lain.

Saya juga menambahkan 3 LED yang menunjukkan status deteksi, merah untuk tidak terdeteksi, kuning ketika wajah terdeteksi tetapi tidak di tengah gambar, dan hijau ketika wajah terdeteksi dan di tengah gambar.

LED sendiri tidak terlalu menarik, tetapi seharusnya mudah untuk memodifikasi perangkat untuk melakukan tindakan yang berguna, bukan hanya menghidupkan dan mematikan beberapa lampu.

Komunikasi antara Arduino dan perangkat lunak dilakukan melalui komunikasi serial (melalui USB).

Perangkat lunak pendeteksi wajah ditulis dengan Python. Saya meninggalkan semua file Python di GitHub jika Anda ingin melihat kodenya (peringatan:ini mungkin tidak bagus, saya sedang belajar sendiri) atau menggunakannya kembali untuk proyek Anda sendiri.

Jika Python bukan milik Anda, Anda juga dapat mengunduh versi yang dapat dieksekusi di situs web saya.

Jika Anda ingin membuatnya sendiri, lihat video berikut. Saya mencoba membuatnya semudah mungkin untuk diikuti, saya harap saya melakukannya dengan baik.

Semua yang Anda butuhkan

Perakitan

Pengkabelan

Perangkat lunak dan penyiapan


Kode

  • Kode Arduino
Kode ArduinoC/C++
Ini adalah kode yang akan diupload ke arduino
//Sketch berdasarkan pekerjaan yang dilakukan oleh Robin2 di forum arduino//info lebih lanjut di sini//https://forum.arduino.cc/index.php?topic=225329.msg1810764#msg1810764#include Servo panServo;Servo tiltServo; byte redledPin =2;byte yellowledPin =3;byte greenledPin =4;const byte buffSize =40;char inputBuffer[buffSize];const char startMarker ='<';const char endMarker ='>';byte byteRecvd =0;boolean readInProgress =false;boolean newDataFromPC =false;float panServoAngle =90.0;float tiltServoAngle =90.0;int LED_state =0;//8==============Dvoid setup() { Serial.begin(115200); panServo.attach(8); tiltServo.attach (9); pinMode(Pin merah, OUTPUT); pinMode (pin kuning, OUTPUT); pinMode(Pin hijau, OUTPUT); //pindahServo(); start_sequence(); penundaan (200); Serial.println(""); // kirim pesan ke komputer}//8==============Dvoid loop() { getDataFromPC(); balasanKePC(); pindahServo(); setLED();}//8==============Dvoid getDataFromPC() { // menerima data dari PC dan menyimpannya ke inputBuffer if(Serial.available()> 0) { char x =Serial.baca(); //baca karakter dari serial if (x ==endMarker) { //cari penanda akhir readInProgress =false; //jika ditemukan, set read in progress true (akan berhenti menambahkan byte baru ke buffer) newDataFromPC =true; // beri tahu arduino bahwa data baru tersedia inputBuffer[bytesRecvd] =0; //hapus input buffer processData(); // memproses data dalam buffer } if(readInProgress) { inputBuffer[bytesRecvd] =x; //mengisi buffer input dengan byte byteRecvd ++; //increment index if (bytesRecvd ==buffSize) { //ketika buffer penuh byteRecvd =buffSize - 1; //menyimpan spasi untuk penanda akhir } } if (x ==startMarker) { // mencari pembuat awal byteRecvd =0; // jika ditemukan, set byte yang diterima ke 0 readInProgress =true; // set read in progress true } }}//8==============Dvoid processData() // untuk tipe data "" { char * strtokIndx; // ini digunakan oleh strtok() sebagai indeks strtokIndx =strtok(inputBuffer,","); // dapatkan bagian pertama panServoAngle =atof(strtokIndx); // konversi bagian ini menjadi float strtokIndx =strtok(NULL,","); // dapatkan bagian kedua(ini berlanjut di mana panggilan sebelumnya dihentikan) tiltServoAngle =atof(strtokIndx); // konversi bagian ini menjadi float strtokIndx =strtok(NULL, ","); // dapatkan bagian terakhir LED_state =atoi(strtokIndx); // konversi bagian ini menjadi integer (string to int)}//8==============Dvoid replyToPC() { if (newDataFromPC) { newDataFromPC =false; Serial.print("<"); Serial.print(panServo.read()); Serial.print(","); Serial.print(tiltServo.read()); Serial.println(">"); }}//8==============Dvoid moveServo() { panServo.write(panServoAngle); tiltServo.write(tiltServoAngle);}void setLED(){ if(LED_state ==2){ digitalWrite(redledPin, LOW); digitalWrite(pin kuning, TINGGI); digitalWrite(Pin led hijau, RENDAH); } else if(LED_state ==1){ digitalWrite(redledPin, LOW); digitalWrite(pin kuning, RENDAH); digitalWrite(Pin led hijau, TINGGI); } else if(LED_state ==0){ digitalWrite(redledPin, HIGH); digitalWrite(pin kuning, RENDAH); digitalWrite(Pin led hijau, RENDAH); } else if(LED_state ==3){ digitalWrite(redledPin, HIGH); digitalWrite(pin kuning, TINGGI); digitalWrite(Pin led hijau, TINGGI); } else{ digitalWrite(redledPin, RENDAH); digitalWrite(pin kuning, RENDAH); digitalWrite(Pin led hijau, RENDAH); } }//8==============D void start_sequence() { panServo.write(90); tiltServo.write(90); penundaan (300); digitalWrite(redledPin, TINGGI); penundaan(100); digitalWrite(redledPin, RENDAH); digitalWrite(pin kuning, TINGGI); penundaan(100); digitalWrite(pin kuning, RENDAH); digitalWrite(Pin led hijau, TINGGI); penundaan(100); digitalWrite(redledPin, RENDAH); digitalWrite(pin kuning, RENDAH); digitalWrite(Pin led hijau, RENDAH); penundaan(100); digitalWrite(redledPin, TINGGI); digitalWrite(pin kuning, TINGGI); digitalWrite(Pin led hijau, TINGGI); penundaan(100); digitalWrite(redledPin, RENDAH); digitalWrite(pin kuning, RENDAH); digitalWrite(Pin led hijau, RENDAH); }
Perangkat lunak pendeteksi wajah
Berikut adalah repositori tempat Anda dapat menemukan file untuk perangkat lunak pendeteksi wajah. Anda juga dapat menemukan versi yang dapat dijalankan di situs web saya. https://github.com/LittleFrenchKev/face_tracking_camera

Suku cadang dan penutup khusus

bagian kamera pelacak wajah
semua bagian yang diperlukan untuk membuat kamera pelacak wajah mini. Anda juga dapat menemukannya di sini:https://www.littlefrenchkev.com/downloadfile CAD di thingiverse.com

Skema


Proses manufaktur

  1. Pan / Miringkan pelacakan wajah dengan raspberry pi
  2. Kartu kunjungan permainan Tic Tac Toe
  3. Sensor Multi Suhu
  4. Kontrol Besi Solder DIY untuk 862D+
  5. MotionSense
  6. Keselamatan Kebakaran Printer 3D
  7. Pengukur IoT dengan Arduino, Yaler &IFTTT
  8. Arduino Repulsive Electromagnetic Levitation
  9. Bot Gripper Kontrol Jarak Jauh
  10. CoroFence - Detektor Termal🖖