This shows you the differences between two versions of the page.
pm:prj2025:eradu:mihai.strejaru [2025/05/26 23:14] mihai.strejaru [Hardware Design] |
pm:prj2025:eradu:mihai.strejaru [2025/05/30 04:45] (current) mihai.strejaru [Rezultate Obținute] |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== Paper Plane Radar ====== | ====== Paper Plane Radar ====== | ||
- | ===== Introduction ===== | + | ===== Introducere ===== |
- | **What is the project about?** | + | **Despre ce este proiectul?** |
- | Paper Plane Radar is a distance-based tracking system using an ultrasonic sensor and a microcontroller. It detects the flight of a paper airplane and calculates both its speed and angle of movement, displaying them on a simple LED matrix. A warning LED simulates radar alert behavior when a target is detected. | + | Paper Plane Radar este un sistem de urmărire bazat pe distanță, care folosește senzori ultrasonici și un microcontroler. Acesta detectează zborul unui avion de hârtie și calculează atât viteza, cât și unghiul de deplasare, afișându-le pe o matrice LED simplă. Un LED de avertizare simulează comportamentul unui radar atunci când este detectată o „țintă”. |
- | **What is the project's purpose?** | + | **Care este scopul proiectului?** |
- | The purpose of this project is to simulate a minimalistic radar system using low-cost components and to practice real-time measurement and feedback systems in embedded environments. | + | Scopul proiectului este de a simula un sistem radar minimalist folosind componente cu cost redus și de a exersa măsurători și reacții în timp real într-un mediu embedded. |
- | **What inspired the idea?** | + | **Ce a inspirat ideea?** |
- | The idea came from the fascination with radar systems and motion tracking. By adapting this concept to something as lighthearted as a paper airplane, the project makes radar concepts tangible and interactive while remaining technically relevant and accessible. | + | Inspirația a venit din fascinația pentru sistemele radar și urmărirea mișcării. Adaptând acest concept la ceva amuzant, precum un avion de hârtie, proiectul face ideile legate de radar mai ușor de înțeles și interactive, rămânând în același timp relevante și accesibile din punct de vedere tehnic. |
- | **Why is this project useful?** | + | **De ce este util acest proiect?** |
- | It offers a hands-on experience with sensor data acquisition, time-based calculations, and visual output. It is useful for learning embedded system design principles, especially in motion tracking and data visualization scenarios, and could serve as a fun educational tool or demo. | + | Conceptul poate fi extins și aplicat la scară mai mare, în sisteme radar reale sau alte aplicații ce implică monitorizarea și analizarea mișcării obiectelor. Astfel, proiectul poate servi atât ca o demonstrație tehnică practică, cât și ca bază pentru dezvoltări ulterioare în domeniul sistemelor de detecție și urmărire. |
===== General Description ===== | ===== General Description ===== | ||
Line 21: | Line 21: | ||
{{:pm:prj2025:eradu:dig2.png?600|}} | {{:pm:prj2025:eradu:dig2.png?600|}} | ||
- | ### ===== Hardware Design ===== | + | ===== Hardware Design ===== |
- | #### **Bill of Materials – Completat** | + | **Utilizare PINI** |
- | | No. | Component | Description | Quantity | Unit Price | Total Price | Product Link / Datasheet | | + | Arduino Mega: |
- | | --- | ------------------------------------- | -------------------------------------------------------------------- | -------- | ----------- | ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | + | |
- | | 8 | Arduino Mega 2560 | Placă de dezvoltare principală pentru controlul motoarelor și afișaj | 1 | \~69.99 lei | 69.99 lei | [https://www.optimusdigital.ro/ro/placi-de-dezvoltare/1559-placa-de-dezvoltare-compatibila-cu-arduino-mega-2560-r3-atmega2560-i-ch340.html](https://www.optimusdigital.ro/ro/placi-de-dezvoltare/1559-placa-de-dezvoltare-compatibila-cu-arduino-mega-2560-r3-atmega2560-i-ch340.html) | | + | |
- | | 9 | TMC2209 Stepper Driver | Driver silențios și eficient pentru motorul Nema17 | 1 | \~35.00 lei | 35.00 lei | [https://www.trinamic.com/products/integrated-circuits/details/tmc2209-la/](https://www.trinamic.com/products/integrated-circuits/details/tmc2209-la/) | | + | |
- | | 10 | Nema17 Stepper Motor | Motor pas cu pas pentru control precis | 1 | \~49.99 lei | 49.99 lei | [https://www.optimusdigital.ro/ro/motoare-pas-cu-pas/457-motor-pas-cu-pas-nema17-17hs4401.html](https://www.optimusdigital.ro/ro/motoare-pas-cu-pas/457-motor-pas-cu-pas-nema17-17hs4401.html) | | + | |
- | | 11 | L293D Motor Driver | Driver H-bridge pentru controlul motorului DC | 1 | \~11.99 lei | 11.99 lei | [https://www.optimusdigital.ro/ro/motoare-driver-motoare/414-l293d-motor-driver-shield.html](https://www.optimusdigital.ro/ro/motoare-driver-motoare/414-l293d-motor-driver-shield.html) | | + | |
- | | 12 | DC Motor (3–6V) | Motor simplu utilizat pentru deplasarea unei componente | 1 | \~9.99 lei | 9.99 lei | [https://www.optimusdigital.ro/ro/motoare-dc/476-motor-dc-3v-6v.html](https://www.optimusdigital.ro/ro/motoare-dc/476-motor-dc-3v-6v.html) | | + | |
- | | 13 | LCD 1602 cu I2C | Afișează viteza și alte informații | 1 | 16.34 lei | 16.34 lei | *(deja inclus mai sus)* | | + | |
- | | 14 | Module DC-DC LM2596 | Modul de reglare a tensiunii de alimentare | 1 | \~8.99 lei | 8.99 lei | [https://www.optimusdigital.ro/ro/surse-de-tensiune/35-modul-step-down-lm2596-dc-dc.html](https://www.optimusdigital.ro/ro/surse-de-tensiune/35-modul-step-down-lm2596-dc-dc.html) | | + | |
- | | 15 | Type-C Trigger Board | Modul de pornire a sursei Type-C | 1 | \~6.99 lei | 6.99 lei | [https://www.optimusdigital.ro/ro/surse-de-tensiune/12677-modul-usb-c-type-c-trigger-decoupling-board.html](https://www.optimusdigital.ro/ro/surse-de-tensiune/12677-modul-usb-c-type-c-trigger-decoupling-board.html) | | + | |
- | | 16 | Butoane momentane + rezistențe | Selecția numărului de participanți | 2 | \~1.50 lei | 3.00 lei | [https://www.optimusdigital.ro/ro/comutatoare-butoni/177-buton-momentan.html](https://www.optimusdigital.ro/ro/comutatoare-butoni/177-buton-momentan.html) | | + | |
- | | 17 | Jumper Wires (Male-Male, Female-Male) | Cablu pentru conectare între module și placă | 20 | \~0.20 lei | 4.00 lei | *(idem mai sus)* | | + | |
- | **Total Cost adăugat:** \~219.28 lei (cu tot cu părțile anterioare) | + | | Pin | Funcție | |
+ | | ---------------- | ------------------------------------------------------------------------------------------ | | ||
+ | | D4–D7 | (PD4 – PD7) – ieșiri digitale către pinii **Trig** ai celor 4 senzori ultrasonic HC-SR04 | | ||
+ | | D8, D9, D10, D12 | (PB0, PB1, PB2, PB4) – intrări digitale de la pinii **Echo** ai celor 4 senzori ultrasonic | | ||
+ | | D20, D21 | (SDA, SCL) – magistrala I2C pentru controlul LCD-ului | | ||
+ | | D3 | ieșire PWM către buzzer piezoelectric pentru semnal sonor proporțional cu viteza | | ||
+ | | 5V, GND | alimentare și masă pentru toate componentele | | ||
- | --- | + | Senzori Ultrasonic HC-SR04 (x4): |
- | #### **Utilizare PINI:** | + | | Pin | Conectare | |
+ | | ---- | -------------------------------------------- | | ||
+ | | Trig | Pini digitali D4 – D7 de la Arduino | | ||
+ | | Echo | Pini digitali D8, D9, D10, D12 de la Arduino | | ||
+ | | Vcc | Alimentare 5V de la Arduino | | ||
+ | | GND | Masă comună | | ||
- | **Arduino Mega:** | + | LCD I2C: |
- | * **D2, D3, D6, D7** – pini digitali pentru controlul driverului TMC2209 | + | | Pin | Conectare | |
- | * **D27, D29** – pini conectați la butoane pentru selecția numărului de participanți | + | | --- | -------------------- | |
- | * **D8, D9, D10** – pini conectați la L293D pentru controlul motorului DC | + | | SDA | Arduino Mega pin D20 | |
- | * **D20 (SDA), D21 (SCL)** – pentru comunicația cu LCD-ul prin I2C | + | | SCL | Arduino Mega pin D21 | |
- | * **5V, GND** – alimentare pentru module externe și ground comun | + | | Vcc | 5V | |
+ | | GND | Masă | | ||
- | **TMC2209:** | + | Buzzer Pasiv: |
- | * **STEP, DIR, EN** – semnale de control primite de la Mega | + | | Pin | Conectare | |
- | * **VIO, GND, VM** – alimentare logică și de motor | + | | ------ | -------------------- | |
- | * **A+, A-, B+, B-** – ieșiri către bobinele motorului Nema17 | + | | Semnal | PWM – conectat la D3 | |
+ | | GND | Masă | | ||
- | **Motor Nema17:** | + | **Bill of Materials** |
- | * Conectat direct la ieșirile driverului TMC2209 (A și B) | + | | No. | Component | Description | Quantity | Unit Price | Total Price | Product Link / Datasheet | |
+ | | --- | ---------------------------------- | ----------------------------------------------------------------------- | -------- | ---------- | ----------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | ||
+ | | 1 | HC-SR04+ Ultrasonic Sensor | Measures distance to the paper airplane | 4 | 14.99 lei | 59.96 lei | [Link](https://www.optimusdigital.ro/ro/senzori-senzori-ultrasonici/2328-senzor-ultrasonic-de-distana-hc-sr04-compatibil-33-v-i-5-v.html) [Datasheet](https://www.optimusdigital.ro/ro/index.php?controller=attachment&id_attachment=1) | | ||
+ | | 2 | Arduino UNO | Main controller for the system *(not Mega, modify dacă folosești Mega)* | 1 | 34.99 lei | 34.99 lei | [Link](https://www.optimusdigital.ro/ro/compatibile-cu-arduino-uno/1678-placa-de-dezvoltare-compatibila-cu-arduino-uno-atmega328p-i-ch340.html?search_query=0104110000016997&results=1) [Datasheet](https://www.optimusdigital.ro/ro/index.php?controller=attachment&id_attachment=143) | | ||
+ | | 3 | USB AM-BM Cable 30 cm | Power and programming for Arduino | 1 | 3.60 lei | 3.60 lei | [Link](https://www.optimusdigital.ro/ro/cabluri-cabluri-usb/3146-cablu-albastru-usb-am-la-bm-30-cm-pentru-arduino-mega-i-uno.html?search_query=0104210000027792&results=1) | | ||
+ | | 4 | LCD 1602 with I2C Interface | Displays the angle and speed of the detected plane | 1 | 16.34 lei | 16.34 lei | [Link](https://www.optimusdigital.ro/ro/optoelectronice-lcd-uri/2894-lcd-cu-interfata-i2c-si-backlight-albastru.html?search_query=0104110000003584&results=1) [Datasheet](https://www.handsontec.com/dataspecs/module/I2C_1602_LCD.pdf) | | ||
+ | | 5 | 3V Passive Buzzer | Emits sound signals corresponding to speed | 1 | 0.99 lei | 0.99 lei | [Link](https://www.optimusdigital.ro/ro/audio-buzzere/12247-buzzer-pasiv-de-33v-sau-3v.html?search_query=0104210000081527&results=1) | | ||
+ | | 6 | Breadboard | Platform for prototyping | 1 | 5.99 lei | 5.99 lei | [Link](https://www.ardumarket.ro/ro/product/mb102-830-puncte-fara-lipire-breadboard) | | ||
+ | | 7 | Male-to-Male Jumper Wires (10 pcs) | Connects components together | 4 | 1.70 lei | 6.80 lei | [Link](https://www.optimusdigital.ro/en/wires-with-connectors/885-wires-male-male-10p-10cm.html) | | ||
- | **L293D:** | + | **Total Cost:** 128.68 lei |
- | * **IN1, IN2, EN** – controlate de Mega | + | **Electrical Diagram** |
- | * **OUT1, OUT2** – conectate la motorul DC | + | |
- | * **Vcc1** – 5V pentru logică | + | |
- | * **Vcc2** – 6V–12V pentru motor | + | |
- | * **GND** – ground comun | + | |
- | **Motor DC:** | + | `{{:pm:prj2025:eradu:paper_plane_radar.png?700|}}` |
+ | ===== Software Design ===== | ||
- | * Alimentat prin ieșirile OUT1 și OUT2 de la L293D | + | ==== Mediu de dezvoltare ==== |
+ | * **Platformă:** Arduino UNO ATmega328p | ||
+ | * **IDE:** PlatformIO cu Visual Studio Code | ||
+ | * **Limbaj:** AVR, Arduino | ||
- | **LCD:** | + | ==== Biblioteci externe utilizate ==== |
+ | * **LiquidCrystal_I2C.h** – pentru afișajul pe ecranul LCD prin interfață I2C | ||
+ | * **Wire.h** – necesară pentru comunicarea I2C | ||
+ | * **stdlib.h**, **util/delay.h** – pentru conversii, manipulare de date și întârziere precisă | ||
- | * **SDA, SCL** – comunicație I2C cu Mega | + | ==== Laboratoare folosite ==== |
- | * **Vcc, GND** – alimentare | + | * **Laboratorul 0 – GPIO** |
+ | * Configurarea pinilor pentru senzori (trig și echo) și buzzer-ul | ||
- | **Butoane:** | + | * **Laboratorul 1 – UART** |
+ | * Afișarea informațiilor de debug prin consola serială | ||
- | * Conectate la D27 și D29 | + | * **Laboratorul 2 – Întreruperi externe** |
- | * Rezistențe de pull-down conectate la GND | + | * Folosirea vectorului de întrerupere ''PCINT0_vect'' pentru detectarea precisă a semnalelor ''echo'' |
- | **Type-C Trigger Board & LM2596:** | + | * **Laboratorul 3 – Timere / PWM** |
+ | * Timer1 – configurat în modul CTC pentru generarea trigger-ului periodic către senzori | ||
+ | * Timer2 – folosit ca cronometru hardware pentru măsurarea timpului dintre două detecții | ||
+ | * PWM – generat pentru buzzer în funcție de viteza detectată | ||
- | * Type-C Trigger -> alimentează LM2596 | + | * **Laboratorul 6 – I2C** |
- | * LM2596 -> reglează tensiunea de alimentare pentru motor și restul sistemului | + | * Folosit pentru afișajul pe ecranul LCD I2C |
- | --- | + | ==== Funcționalitate generală ==== |
+ | - Scanare ciclică a senzorilor ultrasonici: fiecare senzor este activat pe rând cu semnal trigger generat de Timer1 | ||
+ | - Măsurare distanță: comparație între distanțele curente și anterioare pentru detecția unei scăderi bruște | ||
+ | - Calcul viteză: dacă două perechi de senzori detectează scăderi succesive, se calculează timpul și viteza | ||
+ | - Afișare pe LCD: viteza este afișată pe ecran cu două zecimale | ||
+ | - Semnalizare buzzer: ton generat proporțional cu viteza (frecvență mai mare pentru viteză mai mare) | ||
- | #### **Electrical Diagram** | + | ==== Pseudocod general ==== |
- | > {{\:pm\:prj2025\:eradu\:paper\_plane\_radar.png?700|}} | + | <code cpp> |
+ | setup(): | ||
+ | - Configurează pinii pentru trigger (OUTPUT) și echo (INPUT) | ||
+ | - Inițializează LCD-ul I2C și UART-ul | ||
+ | - Setează întreruperile pentru echo (PCINT) | ||
+ | - Configurează Timer1 pentru trigger periodic | ||
+ | - Configurează Timer2 pentru măsurarea timpului | ||
- | ===== Software Design ===== | + | loop(): |
- | https://github.com/Cristiansen13/Paper-plane-radar | + | - Pentru fiecare pereche de senzori: |
+ | dacă ambele au citiri noi: | ||
+ | - Calculează distanțele | ||
+ | - Verifică dacă a avut loc o scădere bruscă | ||
+ | - Dacă ambele perechi detectează: | ||
+ | - Calculează timpul dintre evenimente | ||
+ | - Calculează viteza | ||
+ | - Afișează viteza pe LCD | ||
+ | - Generează ton pe buzzer | ||
+ | |||
+ | ISR(TIMER1_COMPA): | ||
+ | - Trimite un impuls trigger către următorul senzor din ciclu | ||
+ | |||
+ | ISR(TIMER2_OVF): | ||
+ | - Incrementează contorul de timp (folosit pentru calculul vitezei) | ||
+ | ISR(PCINT0_vect): | ||
+ | - Detectează fronturile pe pinul de echo (rising/falling) | ||
+ | - Calculează durata impulsului ultrasonic pentru a deduce distanța | ||
+ | </code> | ||
+ | ==== Project Code Link ==== | ||
+ | [[https://github.com/Cristiansen13/Paper-plane-radar|GitHub: Paper-plane-radar]] | ||
+ | ===== Rezultate Obținute ===== | ||
- | ===== Results ===== | + | În urma realizării proiectului, am dezvoltat un sistem capabil să detecteze și să măsoare viteza unui obiect în mișcare (ex: avion de hârtie), folosind senzori ultrasonic și timere hardware. Sistemul poate: |
- | <note tip> | + | |
- | Describe the results you obtained after building the project. | + | |
- | </note> | + | |
- | ===== Conclusions ===== | + | * Măsura simultan distanțele cu 4 senzori ultrasonic, folosind întreruperi externe; |
+ | * Genera semnalele **TRIG** pentru toți senzorii în paralel, prin **Timer1**; | ||
+ | * Măsura timpul dintre două scăderi bruște de distanță cu **Timer2**; | ||
+ | * Detecta evenimente pe oricare senzor din fiecare pereche; | ||
+ | * Calcula și afișa viteza obiectului pe un ecran **LCD I2C**; | ||
+ | * Emite un semnal acustic (**buzzer**) proporțional cu viteza; | ||
+ | * Reseta automat măsurătoarea dacă nu apare o a doua detecție în timp util. | ||
- | ===== Download ===== | + | Sistemul a funcționat conform așteptărilor, fiind fiabil și suficient de rapid pentru aplicația propusă. |
- | <note warning> | + | |
- | An archive (or more if needed) containing the project files: sources, schematics, etc. A README file, a ChangeLog, and a script to compile and copy to the microcontroller always make a good impression ;-) | + | |
- | Files should be uploaded to the wiki using the **Add Images or other files** feature. The namespace for uploads is typically **:pm:prj20??:c?** or **:pm:prj20??:c?:student_name** (if applicable). Example: Dumitru Alin, 331CC → **:pm:prj2009:cc:dumitru_alin** | + | <html> |
- | </note> | + | <iframe width="560" height="315" src="https://www.youtube.com/embed/wOfwup2tgho" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe> |
+ | </html> | ||
- | ===== Journal ===== | + | ===== Concluzii ===== |
- | <note tip> | + | |
- | You may include a journal section to help your lab assistant track the project's progress. | + | |
- | </note> | + | |
- | ===== Bibliography/Resources ===== | + | Proiectul a demonstrat integrarea eficientă a mai multor tehnologii hardware, precum întreruperi, timere, senzori ultrasonic și afișaj I2C. Am consolidat cunoștințe despre sincronizarea precisă a evenimentelor și controlul paralel al mai multor componente. A fost o experiență practică utilă în dezvoltarea și testarea sistemelor automate simple, cu aplicabilitate reală. |
- | <note> | + | |
- | List of documents, datasheets, and Internet resources used — optionally grouped into **Software Resources** and **Hardware Resources**. | + | |
- | </note> | + | |