This is an old revision of the document!


Stabilizator de camera selfie

Introducere

Proiectul consta intr-un stabilizator de camera selfie, care va putea fi controlat in doua moduri (manual sau automat), cu scopul de a centra camera pe fata utilizatorului. Poate fi utilizat in timpul unei conferinte online sau chiar pentru crearea mai facila a filmuletelor de vlogging.

Descriere generală

Pentru controlul unghiului stabilizatorului, voi atasa camera de un servomotor. In modul manual, acesta va fi controlat cu ajutorul a doua butoane (left si right). In modul automat, va fi controlat in functie de pozitia fetei, detectate prin OpenCV. Detectia se va face in PC, iar comenzile pentru servomotor vor fi transmise catre Arduino prin seriala. Interschimbarea dintre cele doua moduri de utilizare se va face actionand un buton si va fi semnalata prin aprinderea unui led si pornirea unui buzzer.

Hardware Design

In ceea ce priveste procurarea sau achizitionarea pieselor, am comandat un set complet pentru Arduino. Din acest set, am folosit doar piesele necesare acestui proiect. Set-ul poate fi gasit aici.

Lista componente:

  1. Arduino UNO
  2. Breadboard
  3. 3 x butoane
  4. servomotor
  5. 2 x rezistente
  6. 2 x LED-uri
  7. buzzer
  8. fire
  9. camera web


Camera Web

Camera web, SriHome™ SH039 Pro, Extra FullHD 3MP, unghi 110 grade, 30FPS, anulare zgomot de fond, rotire, plug & play, negru.
Modelul poate fi gasit aici.


Schema bloc:


Schema Tinkercad:


Schema electrica:


Software Design

Continutul arhivei:

  1. projectPM.ino
  2. camera.py
  3. haarcascade_frontalface_default.xml
  4. README


Componenta software corespunzatoare placii Arduino e reprezentata de projectPM.ino. Pentru a putea lucra cu functiile necesare controlului servomotorului, am inclus biblioteca Servo.h. Algoritmul incepe cu initializarile paramatrilor de stare si cei ai servomotorului, apoi continua cu cele doua functii: setup si loop. In functia setup, setez rolul pinilor de intrare si de iesire, starea initiala a celor doua LED-uri (verde aprins, rosu stins), atasez servomotorul pinului 9 de tip PWM si pornesc protocolul de comunicare prin seriala.
In functia loop, incep prin a face toggle pe butonul de switch: compar starea butonului cu cea anterioara si, daca aceasta difera, atunci se interschimba modurile de functionare ale stabilizatorului, respectiv se interschimba starile LED-urilor. Tot la apasarea butonului de switch, se porneste buzzer-ul, pentru a anunta auditiv utilizatorul ca s-a schimbat modul de utilizare. Salvez apoi starea curenta a butonului de switch pentru a fi folosita la urmatoarea iteratie. In cele ce urmeaza, algoritmul e impartit in doua cazuri:

  1. modul manual: se citesc starile celor doua butoane (left si right). Daca unul dintre ele este apasat, se modifica gradul servomotorului in sensul dorit, fiind intotdeauna constrans de intervalul (-180, 180).
  2. modul automat: se primeste prin seriala (de la algoritmul camera.py explicat mai jos) o valoare care este convertita la int. Aceasta valoare reprezinta un cod pentru unul dintre cele doua cazuri: necesitatea deplasarii la stanga sau la dreapta. In functie de caz, se seteaza gradul servomotorului, cu o granularitate de 5 grade.

Rezultate obtinute

Aici puteti viziona un demo video.

Circuit in modul automat:


Circuit in modul manual:


Camera web conectata pe servomotor:


Interfata utilizatorului:


Concluzii

Download

Jurnal

  • 25.04.2021 - Alegerea temei si crearea paginii de wiki
  • 03.05.2021 - Comandarea camerei web
  • 16.05.2021 - Realizarea schemelor hardware
  • 22.05.2021 - Finalizarea conectarii componentelor hardware
  • 30.05.2021 - Finalizarea componentelor software
  • 02.06.2021 - Finalizarea paginii de wiki

Bibliografie/Resurse

pm/prj2021/alazar/stabilizator_camera_selfie.1622646362.txt.gz · Last modified: 2021/06/02 18:06 by teodora.moraru
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0