Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2022:ndrogeanu:robot_supraveghere_video [2022/06/02 13:18]
tudor.hodoboc [Download]
pm:prj2022:ndrogeanu:robot_supraveghere_video [2022/06/02 14:29] (current)
tudor.hodoboc [Rezultate Obţinute]
Line 5: Line 5:
  
 ===== Introducere ===== ===== Introducere =====
-Proiectul consta in implementarea unui robot ce va supraveghea video o incapere/un apartament. Acesta se va plimba prin casa si va filma cu ajutorul unei camere video. Feed-ul video va fi transmis catre o aplicatie suport(pe Windows si/sau pe Android) folosind o comunicatie Bluetooth. Din cauza frecventei scazute de transmisie, filmarea se va face doar in momentul in care robotul se afla in repaus pentru o calitate a imaginii ridicata.+Proiectul consta in implementarea unui robot ce va supraveghea video o incapere/un apartament. Acesta se va plimba prin casa si va filma cu ajutorul unei camere video. Feed-ul video va fi transmis catre o aplicatie suport(pe Windows si/sau pe Android) folosind o comunicatie Bluetooth ​sau va fi stocat pe un card SD. Din cauza frecventei scazute de transmisie, filmarea se va face doar in momentul in care robotul se afla in repaus pentru o calitate a imaginii ridicata.
 ===== Descriere generala ===== ===== Descriere generala =====
  
Line 31: Line 31:
 Modulul Bluetooth este conectat la GND-ul de pe placuta, in timp ce restul pieselor sunt conectate la un ground "​global"​ ce vine de la alimentare. Modulul Bluetooth este conectat la GND-ul de pe placuta, in timp ce restul pieselor sunt conectate la un ground "​global"​ ce vine de la alimentare.
  
-Schema electrica: (TODO)+A doua placuta arduino este alimentata similar cu prima. De la aceasta se alimenteaza prin pin-ul de 3V3 camera OV7670. Se vor folosi atat pinii digitali 2-8 si 11, cat si pinii analogici A0-5. 
 + 
 +Schema electrica ​motoare + bluetooth: (TODO) 
 + 
 +Schema electrica camera: 
 + 
 +{{:​pm:​prj2022:​ndrogeanu:​hodoboc:​schema_electrica_camera.png?​nolink&​200 |}} 
 + 
 + 
  
  
Line 40: Line 49:
   * ** Biblioteci folosite**:   * ** Biblioteci folosite**:
     * SoftwareSerial.h     * SoftwareSerial.h
 +    * stdint.h
 +    * avr/io.h
 +    * util/twi.h
 +    * util/​delay.h
 +    * avr/​pgmspace.h
  
   * **Aplicatii ajutatoare**:​   * **Aplicatii ajutatoare**:​
     * Se foloseste "​Dabble"​ pentru comunicatia Bluetooth     * Se foloseste "​Dabble"​ pentru comunicatia Bluetooth
 +    * Se foloseste o aplicatie de vizualizat feed-ul video ce vine pe un port serial
  
-Partea soft a fost in intregime dezvoltata pe Arduino IDE. +Partea soft a fost in intregime dezvoltata pe Arduino IDE. Pe partea de miscare, exista urmatoarele functii: 
-   ​* ​In setup se seteaza pinii de input si output(2-7 output pentru motoare si 8,10 input si 9,11 output pentru senzorii ultrasonici). Se initializeaza,​ de asemenea, o variabile SoftwareSerial pentru a seta comunicatia cu modulul Bluetooth +   ​* ​in setup se seteaza pinii de input si output(2-7 output pentru motoare si 8,10 input si 9,11 output pentru senzorii ultrasonici). Se initializeaza,​ de asemenea, o variabile SoftwareSerial pentru a seta comunicatia cu modulul Bluetooth 
-   ​* ​In mers_inainte,​ se trimite semnal de Low si High pe pinii corespunzatori fiecarui motor prin digitalWrite astfel incat deplasarea sa se faca in fata. Folosind analogWrite,​ se modifica tensiunea de alimentare si viteza la una potrivita, apoi se foloseste un delay de 400 de milisecunde pentru a se face deplasarea+   ​* ​in mers_inainte,​ se trimite semnal de Low si High pe pinii corespunzatori fiecarui motor prin digitalWrite astfel incat deplasarea sa se faca in fata. Folosind analogWrite,​ se modifica tensiunea de alimentare si viteza la una potrivita, apoi se foloseste un delay de 400 de milisecunde pentru a se face deplasarea
    * mers_inapoi este similara cu functia anterioara; singura diferenta este inversarea pinilor de High si Low intre ei pentru ca miscarea sa se faca invers    * mers_inapoi este similara cu functia anterioara; singura diferenta este inversarea pinilor de High si Low intre ei pentru ca miscarea sa se faca invers
    ​* ​ rotire_stanga se foloseste de logica de rotire a tancurilor: rotile din stanga se misca intr-o directie, cele din dreapta se misca in cealalta(ambele cu aceeasi viteza) si astfel se produce rotirea pe loc; sensul de rotire este dat de rotile care se deplaseaza in fata, si anume cele din stanga    ​* ​ rotire_stanga se foloseste de logica de rotire a tancurilor: rotile din stanga se misca intr-o directie, cele din dreapta se misca in cealalta(ambele cu aceeasi viteza) si astfel se produce rotirea pe loc; sensul de rotire este dat de rotile care se deplaseaza in fata, si anume cele din stanga
Line 53: Line 68:
    * senzor_fata:​ aceasta functie preia distanta fata de primul obiect de la senzorul ultrasonic; se porneste transmiterea ultrasunetului prin setarea tensiunii pe High pe pinul de trigger, se asteapta sa se trimita sunetul(10 microsecunde),​ apoi se opreste trimiterea; la final se preia valoarea obtinuta de pe pinul de echo folosindu-se functia pulseIn; aceasta va reprezenta durata totala de miscare a sunetului, se va folosi o simple regula de 3 simple pentru a calcula distanta pana la primul obiect    * senzor_fata:​ aceasta functie preia distanta fata de primul obiect de la senzorul ultrasonic; se porneste transmiterea ultrasunetului prin setarea tensiunii pe High pe pinul de trigger, se asteapta sa se trimita sunetul(10 microsecunde),​ apoi se opreste trimiterea; la final se preia valoarea obtinuta de pe pinul de echo folosindu-se functia pulseIn; aceasta va reprezenta durata totala de miscare a sunetului, se va folosi o simple regula de 3 simple pentru a calcula distanta pana la primul obiect
    * senzor_spate functioneaza la fel ca functia anterioara, doar ca se folosesc pinii corespunzatori senzorului din spate    * senzor_spate functioneaza la fel ca functia anterioara, doar ca se folosesc pinii corespunzatori senzorului din spate
-   * move_alone: aceasta functie permite robotului sa se miste "​singur";​ se verifica data se poate misca in fata folosind ​snezorul ​din fata, in caz pozitiv se va deplasa in fata, altfel se va roti aproximativ 360 de grade pana cand nu mai exista obstacole; in cazul in care nu gaseste un astfel de loc, se va misca inapoi+   * move_alone: aceasta functie permite robotului sa se miste "​singur";​ se verifica data se poate misca in fata folosind ​senzorul ​din fata, in caz pozitiv se va deplasa in fata, altfel se va roti aproximativ 360 de grade pana cand nu mai exista obstacole; in cazul in care nu gaseste un astfel de loc, se va misca inapoi
    * loop se foloseste de urmatoarea logica: se verifica daca exista vreun mesaj primit pe placuta Bluetooth; daca da, se verifica ce mesaj si se aplica comanda primita(daca s-a primit o comanda valida) si se reseateaza rotile pentru a opri miscarea in cazul in care s-a facut; de fiecare daca se verifica daca robotul este setat sa fie pe modul de miscare automata, caz in care se misca singur    * loop se foloseste de urmatoarea logica: se verifica daca exista vreun mesaj primit pe placuta Bluetooth; daca da, se verifica ce mesaj si se aplica comanda primita(daca s-a primit o comanda valida) si se reseateaza rotile pentru a opri miscarea in cazul in care s-a facut; de fiecare daca se verifica daca robotul este setat sa fie pe modul de miscare automata, caz in care se misca singur
  
 +Pentru filmare, logica programului este urmatoarea:
 +  * se foloseste protocolul I2C/TWI pentru transferul datelor de la camera la placuta
 +  * in setup se initializeaza protocolul, se initilizeaza camera si se fac setarile de rezolutie si culoare
 +  * in loop se incepe sa se capteze imaginea in format 320p x 240p
 +  * citirea si transmiterea imaginii se face de la stanga la dreapta, de sus in jos
 +  * imaginea e trimisa serial pentru a fi afisata pe aplicatia de pe PC
  
-Aplicatia software suport nu a fost inca impementata,​ din acest motiv camera nu a fost inca adaugata la proiect. 
  
-Diagrama Setup:+Diagrama Setup miscare:
  
 {{:​pm:​prj2022:​ndrogeanu:​hodoboc:​flow_setup.png?​nolink&​100|}} {{:​pm:​prj2022:​ndrogeanu:​hodoboc:​flow_setup.png?​nolink&​100|}}
  
-Diagrama Loop:+Diagrama Loop miscare:
  
 {{:​pm:​prj2022:​ndrogeanu:​hodoboc:​flow_loop.png?​nolink&​450 |}} {{:​pm:​prj2022:​ndrogeanu:​hodoboc:​flow_loop.png?​nolink&​450 |}}
Line 74: Line 94:
 {{ :​pm:​prj2022:​ndrogeanu:​hodoboc:​poza_bolid.png?​nolink&​650 |}} {{ :​pm:​prj2022:​ndrogeanu:​hodoboc:​poza_bolid.png?​nolink&​650 |}}
  
 +Imagini obtinute cu camera:
 +
 +{{:​pm:​prj2022:​ndrogeanu:​hodoboc:​poza_unicorn.png?​nolink&​200 |}} {{:​pm:​prj2022:​ndrogeanu:​hodoboc:​poza_pinguin.png?​nolink&​200 |}}
 ===== Concluzii ===== ===== Concluzii =====
 In urma acestui proiect, am realizat ca transmiterea si inregistrarea video sunt mult mai grele decat par. In urma acestui proiect, am realizat ca transmiterea si inregistrarea video sunt mult mai grele decat par.
 ===== Download ===== ===== Download =====
  
-<​hidden>​ 
-<note warning> 
-O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului:​ surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-). 
- 
-Fişierele se încarcă pe wiki folosind facilitatea **Add Images or other files**. Namespace-ul în care se încarcă fişierele este de tipul **:​pm:​prj20??:​c?​** sau **:​pm:​prj20??:​c?:​nume_student** (dacă este cazul). **Exemplu:​** Dumitru Alin, 331CC -> **:​pm:​prj2009:​cc:​dumitru_alin**. 
-</​note>​ 
-</​hidden>​ 
 Cod robot, camera si aplicatie pentru viziualizarea imaginilor de la camera: Cod robot, camera si aplicatie pentru viziualizarea imaginilor de la camera:
   * {{:​pm:​prj2022:​ndrogeanu:​hodoboc:​proiect_pm_robot_bluetooth_camera.zip|}}   * {{:​pm:​prj2022:​ndrogeanu:​hodoboc:​proiect_pm_robot_bluetooth_camera.zip|}}
 +
 +
 +=== Descriere si utilizare arhiva ===
 +Continut arhiva:
 +  * folder-ul camera contine codul pentru placuta corespunzatoare camerei
 +  * folder-ul miscare_din_bluetooth contine codul pentru miscarea robotului prin Bluetooth
 +  * folder-ul SerialPortReader contine aplicatia pentru vizualizarea imaginilor de la camera
 +
 +
 +Vizualizare imagini:
 +  * se conecteaza placuta la calculator si se porneste aplicatia SerialPortReader
 +  * se selecteaza portul la care e conectata placuta arduino
 +  * se porneste din start si se asteapta afisarea imaginilor
 +
 +
 +
 ===== Jurnal ===== ===== Jurnal =====
   * 29/04/2022: Comandare piese initiale si creare pagina wiki.   * 29/04/2022: Comandare piese initiale si creare pagina wiki.
   * 12/05/2022: Miscare robot si update functionare hardware/​software.   * 12/05/2022: Miscare robot si update functionare hardware/​software.
   * 29/05/2022: Update wiki milestone 2: adaugare rezultate si update design hardware & software   * 29/05/2022: Update wiki milestone 2: adaugare rezultate si update design hardware & software
 +  * 02/06/2022: Adaugare versiune finala: filmare + miscare
  
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
pm/prj2022/ndrogeanu/robot_supraveghere_video.1654165094.txt.gz · Last modified: 2022/06/02 13:18 by tudor.hodoboc
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