====== Dan-Bogdan BELDEA (78405) - Room Stalker ====== Autorul poate fi contactat la adresa: dan_bogdan.beldea@stud.acs.upb.ro **Login pentru adresa** ===== Introducere ===== Prezentarea pe scurt a proiectului: * O masina care se va ghida singura incercand sa mapeze 3d zonele accesibile dintr-o camera. * Scopul ei este de a modela interiorul unei incaperi folosindu-se de magnetometru si un senzor de distanta orientabil, fiind astfel capabila sa se deplaseze singura, fara se a lovi de obstacole. * O versiune imbunatatita ar putea automatiza maparea interiorul cladirilor, nemaifiind nevoie de alte aparate specializate in acest domeniu. ===== Descriere generală ===== O schemă bloc cu toate modulele proiectului vostru, atât software cât şi hardware însoţită de o descriere a acestora precum şi a modului în care interacţionează. {{ :prj2018:avoinescu:beldea_bogdan_block_diagram.jpg?direct |}} Creierul jucariei va fi un RaspberryPi. Acesta va stoca harta incaperii in filesystem-ul propriu si va folosi o conexiune serial (RS232 sau I2C) cu microcontroller-ul. Cel din urma va fi fi folosit pentru citirea informatiilor de la senzori si pentru a controla analog (PWM) motoarele si servomotorul. Servo-ul are ca scop orientarea senzorului de distanta pentru a mapa proximitatea masinii. Motoarele vor fi alimentate printr-o punte H deoarece microcontrollerul nu poate suporta curentul necesar acestora. ===== Hardware Design ===== Lista de piese: * RaspberryPi model 1B * Microcontroller AVR AtMega324 * Senzor analog de distanta Sharp GP2Y0A60SZ * Servomotor * Punte H dubla TB6612FNG * Motoare * Magnetometru LIS3MDL * Stabizator de tensiune 5V 2A S18V20F5 * Conectori Schema electrica: {{ :prj2018:avoinescu:beldeabogdan:schema_electrica.png?nolink |}} ===== Software Design ===== Descrierea codului aplicaţiei (firmware): * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) * librării şi surse 3rd-party (e.g. Procyon AVRlib) * algoritmi şi structuri pe care plănuiţi să le implementaţi * (etapa 3) surse şi funcţii implementate Software-ul are 3 parti: Conexiunea client PC - server Raspberry Pi

Conexiunea intre client si server se face automat, acestia isi anunta prin broadcast pe WiFi adresa lor locala din retea, urmand ca fiecare sa stie la ce adresa si la ce port sa trimita pachetele UDP cu date. Intre client si server vor fi trimise doar pachete UDP. Integritatea datelor nu este importanta.

Pachetele UDP sunt in format JSON. Pentru serializarea si deserializarea entitatilor in acest format am folosit Jackson objectMapper. Entitatile trimise de server catre client contin informatii de la senzori. Cele trimise de la client la server contin informatii de control.

Conexiunea intre Raspberry Pi si ATMega324 se face prin RS-232. Datele trimise (RPi->ATMega324) vor fi pachete de cate 2 octeti (directia de deplasare + viteza). Datele trimise (ATMega324->RPi) vor fi tot pachete de 2 octeti (directia de la care s-a facut citirea reprezentata de pozitia servomotorului + distanta inregistrata la acea directie).

Accesarea pinilor GPIO de pe Raspberry Pi se fac prin intermediul bibliotecii pi4j. De aici folosesc conexiuni I2C pentru interfatarea cu magnetometrul, respectiv RS-232 pentru interfatarea cu ATMega324.

===== Rezultate Obţinute ===== Care au fost rezultatele obţinute în urma realizării proiectului vostru. ===== Concluzii ===== ===== Download ===== 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:prj2017:avoinescu:dumitru_alin**. ===== Jurnal ===== Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. ===== Bibliografie/Resurse =====