This is an old revision of the document!
Robot supraveghere video
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.
Descriere generala
Lista piese
Modul Arduino Uno
Modul Bluetooth HC-05
Modul Camera OV7670
Modul cu Driver de Motoare Dual L298N Rosu
Senzori Ultrasonici x2
Fire de legatura
Acumulatori
Motoare x4
Corp robot(roti, placute pentru suport, suruburi etc)
Interactiune module
Modulul Arduino Uno va reprezenta creierul proiectului. Acesta va face comunicarea intre celelalte module. Modulul Bluetooth HC-05 va face comunicarea intre robot si aplicatie suport. Acesta va primi de la modulul Arduino feed video pe care il va trimite mai apoi aplicatiei si va transmite diversele comenzi primite de la aplicatie catre Arduino pentru a fi procesate. Modulul de camera va filma imprejurimile si va transmite output-ul la Arduino si apoi spre aplicatie. Modulele de Driver vor avea scopul de a transmite curent catre motoarele ce vor misca robotul. Conexiunile intre module vor fi realizate prin fire.
Hardware Design
Placuta arduino este alimentata la o tensiune de 5V ce vine ca output de la puntea H. Puntea H este alimentata la o tensiune de 12 V. Puntea este conectata la arduino prin intermediul pinilor 2-7. Pinii (7;5) si (2;4) vor trasmite tensiunea Low si High pentru fiecare motor, astfel setand sensul de deplasare(cand 7 si 4 sunt High, iar 5 si 2 sunt Low se va deplasa inainte). Pinii 6 si 3 au rolul de a seta procentajul de tensiune transmisa catre motoare. In mod normal, modificarea tesniunii ar fi facuta pentru schimbarea vitezei de deplasare, aici insa este facuta pentru a asigura ca tensiunea de alimentare nu este prea mare si motoarele nu se prajesc. Cei doi senzori ultrasonici sunt conectati la placuta prin intermediul pinilor 8-11. Modulul Bluetooth, deoarece necesita comunicare seriala, este conectat la pinii RX si TX.
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)
Software Design
Partea soft a fost in intregime dezvoltata pe Arduino IDE.
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
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-dreapta este similara cu functia anterioara; asa cum am specificat si mai sus, sensul de rotire este dat de rotile ce se deplaseaza in fata, adica cele din dreapta
resetare_roti: pentru a opri miscarea motoarelor, pinii cu tensiunea High trebuie setati pe Low; pentru a nu verifica de fiecare data ce pin e pe High, se seteaza toti pinii digitali folositi pentru motoare pe Low
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
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
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
Aplicatia software suport nu a fost inca impementata, din acest motiv camera nu a fost inca adaugata la proiect.
Diagrama Setup:
Diagrama Loop:
Rezultate Obţinute
Robotul se plimba singur(Video). Camera reuseste sa capteze imagini la framerate destul de scazut, insa momentan doar conectata direct la calculator.
Robot:
Concluzii
In urma acestui proiect, am realizat ca transmiterea si inregistrarea video sunt mult mai grele decat par.
Download
Jurnal
29/04/2022: Comandare piese initiale si creare pagina wiki.
12/05/2022: Miscare robot si update functionare hardware/software.
29/05/2022: Update wiki milestone 2: adaugare rezultate si update design hardware & software
Bibliografie/Resurse