This shows you the differences between two versions of the page.
pm:prj2025:atoader:alexia_maria.rat [2025/05/28 13:26] alexia_maria.rat [Hardware Design] |
pm:prj2025:atoader:alexia_maria.rat [2025/05/28 17:17] (current) alexia_maria.rat [Software Design] |
||
---|---|---|---|
Line 4: | Line 4: | ||
**Prezentarea pe scurt a proiectului:** | **Prezentarea pe scurt a proiectului:** | ||
- | Proiectul consta intr-o masinuta controlata cu ajutorul placutei Arduino, care, la apasarea unui buton, declanșeaza mai multe semnale acustice si luminoase, in timp ce masina se misca. Scopul principal al proiectului este realizarea unui sistem integrat de divertisment. Am pornit de la ideea de a imbina notiunile invatate pe parcursul laboratoarelor de PM cu creativitatea. Astfel proiectul este util ca exemplu de combinare a elementelor de hardware cu sofware dar de asemenea este util si ca mijloc de divertisment. | + | Proiectul consta intr-o masinuta controlata cu ajutorul placutei Arduino, care, la apasarea unor butoane, declanșeaza mai multe semnale acustice si luminoase,iar comenzile din serial fac masina sa se miste. Scopul principal al proiectului este realizarea unui sistem integrat de divertisment. Am pornit de la ideea de a imbina notiunile invatate pe parcursul laboratoarelor de PM cu creativitatea. Astfel proiectul este util ca exemplu de combinare a elementelor de hardware cu sofware dar de asemenea este util si ca mijloc de divertisment. |
===== Descriere generală ===== | ===== Descriere generală ===== | ||
Line 10: | Line 10: | ||
{{ :pm:prj2025:atoader:output_1_.png?700 |}} | {{ :pm:prj2025:atoader:output_1_.png?700 |}} | ||
- | **Switch On/Off** | ||
- | *Comută alimentarea plăcii Arduino şi activează starea de “ready”. | ||
**Butoane** | **Butoane** | ||
Line 18: | Line 16: | ||
*Buton Display: activează afișajul pe LCD. | *Buton Display: activează afișajul pe LCD. | ||
- | *Buton Start: porneşte redarea audio pe buzzer şi motoarele DC. | + | *Buton Start: porneşte redarea audio pe buzzer. |
- | **Arduino UNO R3** (ATmega328P + ATmega16U2) | + | **Arduino UNO R3** |
*Primeşte semnale de la switch şi butoane. | *Primeşte semnale de la switch şi butoane. | ||
Line 56: | Line 54: | ||
- | Componente folosite: | + | **Componente folosite:** |
* Arduino Uno | * Arduino Uno | ||
* Motoare DC | * Motoare DC | ||
* Buzzer | * Buzzer | ||
* Display | * Display | ||
- | * Switch On/Off | + | * Butoane |
* LED-uri | * LED-uri | ||
* Driver motoare L298N | * Driver motoare L298N | ||
- | {{ :pm:prj2025:atoader:mas.png?300 |}} | + | {{ :pm:prj2025:atoader:mas.png?300 |}} |
+ | **Pini folositi:** | ||
- | ===== Implementare Hardware ===== | + | Buzzer (HONK_PIN) |
- | {{ :pm:prj2025:atoader:294e7989-df3e-4156-81d2-70e4b07733bf.jpg?300 |}} | + | *signal: D3 |
+ | *GND: GND Arduino | ||
+ | *VCC: — buzzer pasiv nu are alimentare separată (folosește pin digital 3 pentru semnal) | ||
+ | Buton pentru buzzer (NITRO_BUTTON_PIN) | ||
+ | *Pin semnal buton: D12 | ||
+ | *Celălalt picior: GND Arduino | ||
+ | Buton pentru LED-uri (LED_BUTTON_PIN) | ||
+ | *Pin semnal buton: D2 | ||
+ | *Celălalt picior: GND Arduino | ||
+ | |||
+ | Buton pentru display (LCD_SWITCH_PIN) | ||
+ | *Pin semnal buton: A3 (pin analogic folosit ca digital) | ||
+ | *Celălalt picior: GND Arduino | ||
+ | |||
+ | LED verde (LED_GREEN_PIN) | ||
+ | *Pin: D4 | ||
+ | *GND: prin rezistență către GND breadboard/Arduino | ||
+ | LED roșu (LED_RED_PIN) | ||
+ | *Pin: D5 | ||
+ | *GND: prin rezistență către GND | ||
+ | LED1 verde (LED1_G) | ||
+ | *Pin: D6 | ||
+ | *GND: prin rezistență către GND | ||
+ | LED1 roșu (LED1_R) | ||
+ | *Pin: D7 | ||
+ | *GND: prin rezistență către GND | ||
+ | |||
+ | Motoare (control driver L298N) - pini de control IN1..IN4 | ||
+ | *IN1 (motor stânga) → D8 | ||
+ | *IN2 (motor stânga) → D9 | ||
+ | *IN3 (motor dreapta) → D10 | ||
+ | *IN4 (motor dreapta) → D11 | ||
+ | *ENA, ENB → Jumper (alimentați permanent pe driver) | ||
+ | |||
+ | Display LCD I2C | ||
+ | *VCC → 5V | ||
+ | *GND → GND | ||
+ | *SDA → A4 | ||
+ | *SCL → A5 | ||
+ | |||
+ | |||
+ | ===== Implementare Hardware ===== | ||
+ | |||
+ | {{ :pm:prj2025:atoader:whatsapp_image_2025-05-28_at_15.53.43.jpeg?300 |}} | ||
===== Software Design ===== | ===== Software Design ===== | ||
- | <note tip> | + | **Mediu de dezvoltare:** PlatformIO |
- | Descrierea codului aplicaţiei (firmware): | + | |
- | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | + | **Microcontroler:** Arduino Uno |
- | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | + | |
- | * algoritmi şi structuri pe care plănuiţi să le implementaţi | + | **Cod** scris în limbaj C++ cu utilizarea librăriilor Arduino. |
- | * (etapa 3) surse şi funcţii implementate | + | |
- | </note> | + | **Librării utilizate:** |
+ | *Arduino.h – bibliotecă de bază pentru funcționalități fundamentale: control pini, temporizări, comunicare serială. | ||
+ | |||
+ | *Wire.h (implicit în LiquidCrystal_I2C) – pentru comunicarea I2C (folosită de LCD-ul I2C). | ||
+ | |||
+ | *LiquidCrystal_I2C.h – pentru controlul afișajului LCD cu interfață I2C. | ||
+ | |||
+ | **Funcții principale:** | ||
+ | *playmusic() – Redă melodia pe buzzerul conectat la pinul 3, folosind funcția tone(). | ||
+ | |||
+ | *setup() – Inițializează toate pinii (input cu pull-up pentru butoane, output pentru LED-uri și motoare), initializează LCD-ul, configurează întreruperi. | ||
+ | |||
+ | *loop() – care detectează apăsările de butoane și comută stări (mod LED-uri, pornire/oprire buzzer), controlează modurile LED-urilor (normal sau intermitent - police), controlează pornirea/oprirea melodiilor pe buzzer la apăsarea butonului, controlează motoarele pe baza comenzilor primite (din serial sau variabilă cmd). | ||
+ | |||
+ | **Logica butoanelor și stărilor:** | ||
+ | *Butonul buzzer (pin 12) comută o variabilă booleană buzzerOn. | ||
+ | |||
+ | Dacă buzzerOn == true, se pornește melodia, altfel se oprește. | ||
+ | |||
+ | *Butonul LED-uri (pin 2) comută între moduri de iluminare a LED-urilor. | ||
+ | |||
+ | *Butonul LCD (pin A3) comută backlight-ul LCD-ului. | ||
+ | |||
+ | *Motoarele sunt controlate prin comenzi primite de la serial . | ||
+ | |||
+ | **Pattern-uri de design:** | ||
+ | Debounce simplificat butoane: verificare stare anterioară și stare curentă pentru detectarea apăsărilor . | ||
+ | |||
+ | **State machine simplificată:** LED-urile au moduri NORMAL și POLICE care schimbă comportamentul în funcție de ledMode. | ||
+ | |||
+ | **Event-driven buzzer:** pornirea/oprirea buzzerului este controlată doar la apăsarea butonului (nu permanent). | ||
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
- | <note tip> | + | În urma implementării și testării proiectului, am reușit să dezvolt un sistem funcțional cu următoarele caracteristici: |
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | |
- | </note> | + | |
- | ===== Concluzii ===== | + | *Controlul motorului: Motoarele s-au putut porni și opri corect folosind comenzile implementate, iar direcția de deplasare (înainte, înapoi, stânga, dreapta) a fost controlată cu succes |
- | ===== Download ===== | + | *Butoanele: au fost corect integrate, permițând schimbarea modurilor LED-urilor și controlul buzzerului si al display-ului |
- | <note warning> | + | *Buzzerul și melodia: Buzzerul a redat corect melodia la apăsarea butonului, iar oprirea melodiei la a doua apăsare s-a realizat fără probleme. |
- | 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**. | + | *LED-urile: LED-urile s-au aprins în modurile programate (normal și intermitent). |
- | </note> | + | |
- | ===== Jurnal ===== | + | *Afișajul LCD: Display-ul LCD a afișat mesajele corespunzătoare |
+ | ===== Concluzii ===== | ||
- | <note tip> | + | *Acesta a fost primul meu proiect hardware-software cu Arduino, iar experiența a fost foarte interesanta. Am învățat să controlez motoare, LED-uri, buzzer și LCD, iar sistemul funcționează conform așteptărilor. |
- | Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. | + | |
- | </note> | + | |
- | ===== Bibliografie/Resurse ===== | ||
- | <note> | + | ===== Download ===== |
- | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | + | |
- | </note> | + | {{:pm:prj2025:atoader:discocar.zip|}} |
+ | |||
+ | ===== Bibliografie/Resurse ===== | ||
- | <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | + | *Optimus Digital[[https://www.optimusdigital.ro/ro/]] |
+ | *Emag[[https://www.emag.ro/]] | ||
+ | *Tinkercad[[https://www.tinkercad.com/circuits]] | ||