This shows you the differences between two versions of the page.
|
pm:prj2026:vlad.radulescu2901:rares.ciociea [2026/05/05 14:58] rares.ciociea [Introducere] |
pm:prj2026:vlad.radulescu2901:rares.ciociea [2026/05/13 10:18] (current) rares.ciociea [2. Scheme Electrice și Maparea Pinilor] |
||
|---|---|---|---|
| Line 5: | Line 5: | ||
| Proiectul consta in crearea unui robot "autonom" care urmareste un algoritm de tip zig-zag. Acesta poate fi oprit, pornit sau resetat prin intermediul modulului Bluetooth. Pe viitor se poate adapta la a se conecta la un server ML pentru a invata camera autonom, iar Swiffer-ul poate fi schimbat cu un modul de aspirator. | Proiectul consta in crearea unui robot "autonom" care urmareste un algoritm de tip zig-zag. Acesta poate fi oprit, pornit sau resetat prin intermediul modulului Bluetooth. Pe viitor se poate adapta la a se conecta la un server ML pentru a invata camera autonom, iar Swiffer-ul poate fi schimbat cu un modul de aspirator. | ||
| </note> | </note> | ||
| - | ===== Descriere generală ===== | + | ====== Descriere generală ====== |
| - | <note tip> | + | <note> |
| - | 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ă. | + | {{:pm:prj2026:vlad.radulescu2901:schema_bloc.png?700|}} |
| - | Exemplu de schemă bloc: http://www.robs-projects.com/mp3proj/newplayer.html | + | **Descrierea sumara a modulelor si a modului de interactiune** |
| - | </note> | + | |
| - | ===== Hardware Design ===== | + | **1. Descrierea modulelor hardware:** |
| - | <note tip> | + | * **Unitatea de procesare (ATmega328P):** Reprezinta "creierul" sistemului, fiind responsabil cu rularea algoritmului principal si coordonarea tuturor perifericelor. |
| - | Aici puneţi tot ce ţine de hardware design: | + | * **Modulul de alimentare si putere (L298N & Divizor):** Gestioneaza energia. Regulatorul integrat asigura 5V stabili pentru logica sistemului, puntea H controleaza curentii mari pentru locomotie, iar divizorul de tensiune permite citirea nivelului bateriei in conditii de siguranta. |
| - | * listă de piese | + | * **Modulul de perceptie (Senzori HC-SR04 si TCRT5000):** Culeg date din mediul fizic, masurand distanta pana la pereti/obstacole si detectand prezenta suprafetei de rulare. |
| - | * scheme electrice (se pot lua şi de pe Internet şi din datasheet-uri, e.g. http://www.captain.at/electronic-atmega16-mmc-schematic.png) | + | * **Sistemul de locomotie (Motoare DC):** Executa miscarea fizica (directie si viteza) a sasiului. |
| - | * diagrame de semnal | + | * **Modulul de comunicatie (Bluetooth HC-05):** Asigura o legatura seriala wireless bidirectionala cu un terminal extern pentru monitorizare si debugging. |
| - | * rezultatele simulării | + | |
| + | **2. Modul de interactiune (Fluxul de functionare):** | ||
| + | |||
| + | Sistemul interactioneaza printr-o bucla continua de tip **Achizitie date -> Procesare -> Actiune**. | ||
| + | Pachetul de baterii alimenteaza intregul ansamblu. In timpul rularii, senzorii colecteaza date din mediu si le transmit catre microcontroler sub forma de impulsuri sau niveluri de tensiune. ATmega328P analizeaza aceste intrari si, pe baza algoritmului de decizie, trimite semnale de control (PWM si directie logica) catre driverul L298N. Driverul actioneaza ca un amplificator, cupland motoarele la curentul bateriei pentru a executa deplasarea. In paralel, microcontrolerul raporteaza constant starea sistemului (baterie, distante, decizii de viraj) prin intermediul modulului Bluetooth. | ||
| </note> | </note> | ||
| + | ====== Hardware Design ====== | ||
| - | ===== Software Design ===== | + | ===== 1. Listă de piese (BOM - Bill of Materials) ===== |
| + | Pentru realizarea acestui proiect, a fost utilizată următoarea configurație hardware, axată pe un echilibru între eficiența energetică și acuratețea senzorilor: | ||
| - | <note tip> | + | * **Unitate de Control:** 1x Placă de dezvoltare ATmega328P Xplained Mini. |
| - | Descrierea codului aplicaţiei (firmware): | + | * **Sistem de Locomoție:** |
| - | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | + | * 1x Șasiu robot 2WD (din plexiglas). |
| - | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | + | * 2x Motoreductoare de curent continuu (Motoare TT, raport 1:48). |
| - | * algoritmi şi structuri pe care plănuiţi să le implementaţi | + | * 2x Roți cauciucate + 1x Roată pivotantă (Caster wheel). |
| - | * (etapa 3) surse şi funcţii implementate | + | * 1x Modul Driver Motoare L298N (cu regulator de tensiune LM7805 integrat). |
| - | </note> | + | * **Sistem de Percepție (Senzori):** |
| + | * 3x Module ultrasonice HC-SR04 (amplasate frontal, stânga, dreapta). | ||
| + | * 1x Senzor optic reflexiv infraroșu TCRT5000 (pentru detecția marginilor / "Swiffer"). | ||
| + | * **Sistem de Comunicație:** 1x Modul Bluetooth HC-05. | ||
| + | * **Sistem de Alimentare:** | ||
| + | * 1x Suport pentru 4 baterii tip AA. | ||
| + | * 4x Baterii Alcaline AA 1.5V (Tensiune totală nominală: 6V). | ||
| + | * **Componente Pasive & Conectică:** | ||
| + | * 1x Rezistor 4.7kΩ (Albastru-precizie: Galben-Violet-Negru-Maro). | ||
| + | * 1x Rezistor 2.2kΩ (Albastru-precizie: Roșu-Roșu-Negru-Maro). | ||
| + | * 1x Breadboard mini (170 puncte). | ||
| + | * Set fire conexiune Dupont (Tată-Tată, Mamă-Tată). | ||
| + | |||
| + | |||
| + | ===== 2. Scheme Electrice și Maparea Pinilor ===== | ||
| + | |||
| + | Pentru a vizualiza interconectarea componentelor, se va consulta schema electrică de ansamblu de mai jos. | ||
| + | *(Notă tehnică: Alimentarea logicii de 5V a microcontrolerului se face prin pinul de +5V al modulului L298N, acesta coborând tensiunea de 6V a bateriei printr-un regulator integrat).* | ||
| + | |||
| + | {{:pm:prj2026:vlad.radulescu2901:schematic_provizoriu_ciociea_rares.png?500|}} | ||
| + | |||
| + | **Tabelul Conexiunilor Hardware (Pinout Map):** | ||
| + | Pentru interfațarea senzorilor cu perifericele interne ale ATmega328P s-a utilizat următoarea mapare: | ||
| + | |||
| + | ^ Modul Extern ^ Pin Modul ^ Conexiune ATmega328P ^ Rol / Periferic Utilizat ^ | ||
| + | | **Modul HC-05** | TX | PD0 (RXD) | Comunicație Serială (USART) | | ||
| + | | **Modul HC-05** | RX | PD1 (TXD) | Comunicație Serială (USART) | | ||
| + | | **L298N (Driver)** | ENA | PD5 | Control Viteză Motor Stânga (PWM Hardware) | | ||
| + | | **L298N (Driver)** | ENB | PD6 | Control Viteză Motor Dreapta (PWM Hardware) | | ||
| + | | **L298N (Driver)** | IN1, IN2 | PD4, PD7 | Control Direcție Motor Stânga (GPIO) | | ||
| + | | **L298N (Driver)** | IN3, IN4 | PB2, PB3 | Control Direcție Motor Dreapta (GPIO) | | ||
| + | | **Divizor Tensiune** | Vout (Intersecție) | PC0 (A0) | Monitorizare nivel baterie (ADC) | | ||
| + | | **TCRT5000** | A0 | PC1 (A1) | Detecție analogică margine / podea (ADC) | | ||
| + | | **HC-SR04 (Față)** | Trig, Echo | PD2, PD3 | Măsurare distanță față (GPIO) | | ||
| + | | **HC-SR04 (Stânga)** | Trig, Echo | PC2 (A2), PC3 (A3) | Măsurare distanță stânga (ADC folosit ca GPIO) | | ||
| + | | **HC-SR04 (Dreapta)** | Trig, Echo | PC4 (A4), PC5 (A5) | Măsurare distanță dreapta (ADC folosit ca GPIO) | | ||
| + | ===== 3. Diagrame de Semnal ===== | ||
| + | |||
| + | Pentru interfațarea corectă a perifericelor s-au analizat următoarele semnale cheie: | ||
| + | |||
| + | **A. Diagrama de semnal pentru senzorii HC-SR04 (Time-of-Flight)** | ||
| + | Microcontrolerul emite un impuls logic HIGH de 10µs pe pinul Trigger. Senzorul răspunde cu un semnal HIGH pe pinul Echo, a cărui durată este proporțională cu distanța. Această durată este măsurată hardware folosind întreruperile externe și un Timer. | ||
| + | |||
| + | {{:pm:prj2026:vlad.radulescu2901:hc-sr04.png?800|}} | ||
| + | |||
| + | **B. Diagrama semnalului PWM pentru L298N** | ||
| + | Controlul locomoției și aplicarea metodei de "Soft Start" se realizează prin modularea lățimii impulsurilor (PWM) aplicate pe pinii ENA și ENB ai driverului, dictând astfel cuplul și viteza motoarelor. | ||
| + | |||
| + | {{:pm:prj2026:vlad.radulescu2901:l298n.png?800|}} | ||
| + | |||
| + | ====== Software Design ====== | ||
| + | |||
| + | *(Nota: Aceasta sectiune prezinta o arhitectura de nivel inalt, detaliile urmand sa fie rafinate in etapa finala de implementare).* | ||
| + | |||
| + | ===== 1. Mediu de dezvoltare ===== | ||
| + | Pentru scrierea, compilarea si incarcarea firmware-ului, mediul de dezvoltare ales este **Arduino IDE**. Desi platforma hardware este un ATmega328P Xplained Mini, ecosistemul Arduino ofera un flux de lucru mult mai rapid (Rapid Prototyping) si o sintaxa mai accesibila pentru gestionarea pinilor (GPIO) si a functiilor de timp, comparativ cu programarea stricta pe registri in Microchip Studio. | ||
| + | |||
| + | ===== 2. Librarii si surse 3rd-party ===== | ||
| + | Pentru a mentine un control strict asupra executiei si a minimiza overhead-ul, utilizarea librariilor externe va fi limitata la minimum necesar: | ||
| + | * Se va folosi exclusiv biblioteca standard **Arduino Core** (pentru functii de baza precum millis(), analogRead(), analogWrite(), digitalWrite()). | ||
| + | * Interfatarea cu senzorii ultrasonici si citirea nivelului bateriei se vor face prin metode standard, fara a importa librarii masive din surse terte. | ||
| + | * Optional, pentru modulul Bluetooth, se poate folosi libraria SoftwareSerial.h inclusa in pachetul standard Arduino. | ||
| + | |||
| + | ===== 3. Algoritmi si structuri de date planificate ===== | ||
| + | Aplicatia va fi proiectata pe o arhitectura **non-blocanta** (fara utilizarea instructiunii delay()), esentiala pentru reactia in timp real a robotului la datele primite de la senzori. | ||
| + | * **Multitasking cooperativ:** Se va utiliza functia millis() pentru a implementa "software timere". Acest algoritm permite procesorului sa citeasca senzorii, sa raporteze date prin Bluetooth si sa ajusteze PWM-ul motoarelor (aproape) simultan. | ||
| + | * **Masina de Stari Finita (FSM):** Structura principala de control va fi un bloc switch-case ce defineste comportamentul robotului. Starile planificate includ: MERGE_FATA, DETECTARE_PERETE, INTOARCERE_90_GRADE_ST/DR, ALINIERE_ZIG_ZAG, OPRIRE_URGENTA_MARGINI si LOW_BATTERY. | ||
| + | * **Algoritm de acoperire:** Logica FSM va dicta un traseu de tip zig-zag. La detectarea unui obstacol frontal, robotul va verifica senzorii laterali pentru a alege directia corecta de viraj, alternand intoarcerile stanga-dreapta. | ||
| + | ===== 4. Surse si functii implementate (Etapa 3) ===== | ||
| + | *(Sectiunea va fi completata cu fragmente de cod in momentul finalizarii dezvoltarii. Principalele functii planificate sunt:)* | ||
| + | * void setup() si void loop() - structura de baza Arduino. | ||
| + | * void readSensors() - responsabila de declansarea impulsurilor Trig si citirea duratei Echo, precum si citirea ADC pentru TCRT5000 si baterie. | ||
| + | * void motorControl(int vitezaStanga, int vitezaDreapta) - o functie de abstractizare ce transpune cerintele de miscare in semnale PWM si stari logice pentru driverul L298N. | ||
| + | * void updateFSM() - functia care proceseaza datele de la senzori si decide comutarea dintr-o stare in alta. | ||
| ===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
| <note tip> | <note tip> | ||
| - | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | To be determined. |
| </note> | </note> | ||
| Line 59: | Line 137: | ||
| <note> | <note> | ||
| - | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | + | ===== Resurse Hardware (Datasheet-uri) ===== |
| + | * **ATmega328P Xplained Mini** - User Guide-ul oficial Microchip (utilizat pentru maparea pinilor fizici ai placii si schemele de alimentare): [[https://ww1.microchip.com/downloads/en/DeviceDoc/ATmega328P-Xplained-Mini-User-Guide-DS50002659B.pdf|ATmega328P Xplained Mini User Guide (PDF)]] | ||
| + | * **Microcontroler ATmega328P** - Datasheet complet (utilizat pentru intelegerea arhitecturii, registrilor interni, Timere, ADC, USART si intreruperi): [[https://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf|ATmega328P Datasheet (PDF)]] | ||
| + | * **Driver Motoare L298N** - STMicroelectronics Datasheet (consultat pentru limitele de curent, caderea de tensiune pe puntea H si logica de control): [[https://www.st.com/resource/en/datasheet/l298.pdf|L298N Datasheet (PDF)]] | ||
| + | * **Senzor Ultrasonic HC-SR04** - Specificatii tehnice (utilizat pentru extragerea diagramelor de semnal si a formulei de calcul a distantei bazate pe viteza sunetului): [[https://cdn.sparkfun.com/datasheets/Sensors/Proximity/HCSR04.pdf|HC-SR04 Datasheet (PDF)]] | ||
| + | * **Modul Bluetooth HC-05** - Manual de utilizare (consultat pentru tensiunile de operare si pinii de comunicatie RX/TX): [[https://components101.com/sites/default/files/component_datasheet/HC-05%20Datasheet.pdf|HC-05 Datasheet (PDF)]] | ||
| + | * **Senzor Infrarosu TCRT5000** - Vishay Datasheet (utilizat pentru curbele de reflectie si intelegerea circuitului emitator-receptor): [[https://www.vishay.com/docs/83760/tcrt5000.pdf|TCRT5000 Datasheet (PDF)]] | ||
| + | * **Motoare DC cu Reductor (TT Motors 1:48)** - Specificatii generice pentru motoarele galbene de sasiu (utilizate pentru a calcula curentul de stall necesar a fi suportat de L298N): [[https://cdn.sparkfun.com/datasheets/Robotics/DG01D.pdf|TT Motor Datasheet (PDF)]] | ||
| + | |||
| + | ===== Resurse Software ===== | ||
| + | * **OCW UPB - Proiectare cu Microprocesoare:** Suportul teoretic de laborator pentru configurarea perifericelor hardware si notiuni de electronica: [[https://ocw.cs.pub.ro/courses/pm|ocw.cs.pub.ro/courses/pm]] | ||
| + | * **Arduino Reference:** Documentatia oficiala pentru arhitectura de cod si functiile standard (millis, pini I/O) utilizate in sistemul non-blocant: [[https://www.arduino.cc/reference/en/|Arduino Language Reference]] | ||
| + | * **WaveDrom:** Unealta utilizata pentru generarea diagramelor de semnal (timing diagrams) din sectiunea de Hardware Design: [[https://wavedrom.com/|wavedrom.com]] | ||
| </note> | </note> | ||
| <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | ||