Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2025:atoader:raluca_aida.preda [2025/05/09 18:30]
raluca_aida.preda [Introducere]
pm:prj2025:atoader:raluca_aida.preda [2025/05/25 18:43] (current)
raluca_aida.preda
Line 2: Line 2:
 ===== Introducere ===== ===== Introducere =====
 Proiect realizat de Preda Raluca-Aida,​ 334CA Proiect realizat de Preda Raluca-Aida,​ 334CA
-asaa [aa] 
  
-<note tip> +**Despre ce este proiectul?​** \\  
-Prezentarea ​pe scurt a proiectului vostru: +Proiectul constă într-un cântar de bucătărie bazat pe o Placă de Dezvoltare compatibilă cu Arduino UNO. Dispozitivul măsoară greutatea ingredientelor și afișează valoarea pe un ecran LCD. 
-  * ce face + 
-  care este scopul ​lui +**Care este scopul ​proiectului?​** \\  
-  care fost ideea de la care aţi pornit +Scopul acestui proiect este de a oferi o soluţie precisă şi accesibilă pentru cântărirea ingredientelor în bucătărie,​ astfel încât utilizatorul să poată prepara reţete cu doze exacte şi rapiditate. 
-  * de ce credeţi că este util pentru ​alţii ​şi pentru ​voi + 
-</​note>​+**Ce inspirat ​ideea?** \\ 
 +Inspiraţia a venit din nevoia ​de precizie în gătit şi cofetărie, unde diferenţde câteva grame poate afecta reuşita unei reţete. Fascinaţia pentru proiecte embedded şsenzori ​de forţă m-a motivat să explorez modul în care un load cell şun microcontroller simplu precum ATmega328p pot lucra împreună pentru ​un dispozitiv practic ​şi educaţional. 
 + 
 +**De ce este util acest proiect?** \\  
 +Acest cântar de bucătăriedemonstrează cum componente electronice low-cost pot fi combinate ​pentru ​a crea un aparat util în viaţa de zi cu zi. Pe lângă beneficiile practice ale cântăririi precise, proiectul are valoare educaţională,​ întrucât învaţă interfeţarea senzorilor, protocolul HX711, gestionarea afișajelor. 
 ===== Descriere generală ===== ===== Descriere generală =====
  
-<note tip> +{{:​pm:​prj2025:​atoader:​d3.png?|}}
-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ă.+
  
-Exemplu ​de schemă blochttp://www.robs-projects.com/​mp3proj/​newplayer.html +==== Descrierarea componentelor ==== 
-</note>+**Arduino UNO R3 (ATmega328P + ATmega16U2)** 
 +    * Primește datele ​de greutate de la HX711. 
 +    * Procesează intrările de la butoane. 
 +    * Gestionează afișajul și redarea audio. 
 +    * Comunică cu toate celelalte componente prin GPIO, I2C, PWM și SPI. 
 +**Load Cell + Amplificator HX711** 
 +    *Transformă forța mecanică (greutatea ingredientelor) în semnal digital.  
 +    *Load cell-ul generează un semnal analog proporțional cu greutatea, iar modulul HX711 realizeazăconversia A/D.  
 +    *Comunică cu Arduino prin două linii digitale. 
 +**Butoane (Tare și Selectare Unitate)** 
 +    *Tareresetează greutatea afișată la zero. 
 +    *Selectare Unitatecomută între grame și uncii. 
 +    *Fiecare buton este conectat la un pin GPIO al plăcii Arduino UNO R3. 
 +**LCD Display** 
 +    *Afișează greutatea măsurată și unitatea selectată
 +    ​*Conectat la Arduino pe magistrala I2C, folosind doar două fire pentru date și ceas. 
 +**Modul SD (Card Reader)** 
 +    *Stochează fișiere audio. 
 +    *Arduino citește aceste fișiere WAV/RAW de pe card prin SPI și le trimite către buzzer pentru redare. 
 +**Buzzer** 
 +    *Redă audio-ul citit de pe cardul SD. 
 +    *Este controlat de Arduino printr-un pin PWM, care produce semnalul necesar decodării și redării pe buzzer.
  
 ===== Hardware Design ===== ===== Hardware Design =====
  
-<note tip> +==== Lista Componentelor ====
-Aici puneţi tot ce ţine de hardware design: +
-  * listă de piese +
-  * scheme electrice (se pot lua şi de pe Internet şi din datasheet-uri,​ e.g. http://​www.captain.at/​electronic-atmega16-mmc-schematic.png) +
-  * diagrame de semnal  +
-  * rezultatele simulării +
-</​note>​+
  
-===== Software Design =====+^ Nume ^ Cantitate ^ Preț per unitate (lei) ^ 
 +|Placa de Dezvoltare Compatibila cu Arduino UNO R3 (ATmega328p + ATmega16u2) + cablu|1|54.37| 
 +|LCD Display|1|16.34| 
 +|Buzzer|1|1.40| 
 +|Button|2|0.36| 
 +|Breadboard|1|9.98| 
 +|Celula de Sarcina de 5 kg cu Amplificator HX711|1|25.85| 
 +|Cititor de card SD|1|28.16| 
 +^  Prețul total: 136.82 lei  ^^^^
  
 +{{:​pm:​prj2025:​atoader:​schema.png?​700|}}
 +
 +  - Arduino UNO
 +    - Microcontroller principal care orchestrează întregul sistem.
 +    - Tensiune de lucru: 5 V
 +    - Interfețe utilizate:
 +      *I2C → comunicație cu LCD-ul 1602 (SDA pe A4, SCL pe A5)
 +      *SPI → comunicație cu modulul SD-card (CS → D10, MOSI → D11, MISO → D12, SCK → D13)
 +      *Digital I/O → legături cu HX711 (DT → D3, SCK → D2)
 +      *PWM → generare de tonuri cu buzzerul pasiv (tone()) pe D9
 +      *GPIO → citirea stării butoanelor pe D7 și D8 cu pull-down extern
 +    -Motivație:​ UNO oferă toate interfețele necesare (I2C, SPI, PWM, GPIO), are suport extins de biblioteci pentru HX711, SD-card și LCD, și e ideal pentru prototipare rapidă.
 +  - HX711 Load Cell Amplifier + Celulă de sarcină
 +    - Modulul HX711 convertește semnalul analogic de la celula de sarcină într-un stream digital, permițând măsurarea greutății.
 +    - Pini utilizați:
 +      *DT (Data) → D3 (digital input)
 +      *SCK (Clock) → D2 (digital output)
 +      *VCC → 5 V
 +      *GND → GND
 +    - Motivație: HX711 oferă o rezoluție înaltă (24 biți) și comunică ușor prin doi pini digitali, ideal pentru măsurători precise de greutate.
 +  - Modul SD-Card (microSD)
 +    - Permite stocarea locală a datelor (greutate, timpi, evenimente).
 +    - Interfață:​ SPI
 +    - Pini utilizați:
 +      *CS → D10
 +      *DI (MOSI) → D11
 +      *DO (MISO) → D12
 +      *SCK → D13
 +      *VCC → 5 V
 +      *GND → GND
 +    - Motivație: SD-card-urile sunt ieftine, ușor de integrat și permit logarea pe termen lung fără a încărca memoria internă a Arduino.
 +  - LCD 1602 cu interfață I2C
 +    - Afișează valorile măsurate şi mesaje de stare.
 +    - Pini utilizați:
 +      *SDA → A4
 +      *SCL → A5
 +      *VCC → 5 V
 +      *GND → GND
 +    - Motivație: Interfața I2C reduce numărul de fire la doar 2 (plus VCC/GND), eliberând pini digitali și simplificând cablajul.
 +  - Buzzer pasiv
 +    - Emite semnale sonore de alertă.
 +    - Pin semnal → D9 (PWM-capable)
 +    - GND → GND
 +    - Motivație: Pinul D9 suportă tone(), permițând generarea de tonuri la diferite frecvențe pentru semnalizare acustică.
 +  - Butoane tactile (×2)
 +    - Permit utilizatorului să interacționeze cu sistemul (pornire/​oprire,​ reset, navigare meniu etc.).
 +    - Pini semnal → D7 și D8 (GPIO)
 +    - Pull-down extern → rezistențe de 10 kΩ către GND
 +    - Configurare software: pinMode(pin,​ INPUT); digitalRead(pin);​
 +    - Motivație: folosirea rezistențelor de pull-down externe asigură stabilitate a citirii și pini digitali liberi pentru butoane.
 +  - Breadboard + cabluri jumper
 +    - Asigură interconectarea rapidă și flexibilă a componentelor.
 +    - Tipuri de fire: mamă-mamă pentru module, tată-mamă pentru legături la Arduino.
 +    - Motivație: prototipare fără lipire, posibilitate de reconfigurare rapidă.
 +
 +{{:​pm:​prj2025:​atoader:​cantar_2025-05-18.png?​800|}}
 +
 +===== Software Design =====
 +**Mediu de dezvoltare:​** ​
 +  * Arduino IDE
 +**Librării:​** ​
 +  * SPI.h – pentru comunicaţia SPI cu modulul SD.
 +  * SD.h – pentru citirea de fişiere de pe cardul SD (findFirstWav,​ parseWavHeader).
 +  * HX711.h – driverul standard pentru conversia celulei de sarcină (tare, get_units).
 +  * avr/​interrupt.h – pentru definirea şi folosirea ISR-ului Timer1_COMPA_vect.
 +  * În plus, nu folosim nicio librărie I²C: am implementat “bit-banged” direct pe D2/D4.
 +**Structuri și algoritmi:​**
 +  * Structuri:
 +    * Enumerare enum Unit { KG, G, ML, DL, OZ } — facilitează ciclarea între unităţi de măsură.
 +    * Arrays pentru debounce (lastDebounceTime[3],​ lastBtnState[3]).
 +  * Algoritmi
 +    * Debounce simplu: compară starea curentă a fiecărui buton cu ultima, cu o întârziere minimă (debounceDelay).
 +    * State-machine PWM-WAV:
 +      * playing = false/true → ISR sau buclă principală porneşte/​opreşte redarea.
 +      * Logica threshold (dacă greutatea > 4.5 kg → porneşte WAV, altfel → opreşte).
 +    * Bit-banged I²C: secvenţă de start, byte-by-byte,​ ACK/NACK, stop – implementată manual pentru LCD.
 +    * Header parsing WAV:
 +      * Sari peste „RIFF” + „fmt” (12 octeți), apoi citești câte 8 bytes per chunk până găsești „data”.
 +** Funcții implementate:​**
 +  * setup() – inițializări (SD, PWM, Timer ISR, LCD, HX711, butoane).
 +  * loop() –
 +    * Debounce & acțiuni butoane (tare, lock, schimb unitate).
 +    * Citire greutate și aplicare offset/​tare.
 +    * Control redare WAV după pragul de 4.5 kg.
 +    * Conversie greutate în unități și afișare pe LCD.
 +  * ISR(TIMER1_COMPA_vect) – citește octet cu octet şi scrie în registrele PWM.
 +  * findFirstWav(),​ parseWavHeader(File &f) – căutare şi poziționare pentru fișierul WAV.
 +  * I²C bit-banged routines: i2c_start(),​ i2c_write_bit(),​ i2c_read_ack(),​ pcf_write(),​ lcd_cmd(), lcd_data() etc.
 +  * Debounce logic – în loop compararea stărilor şi actualizarea timpurilor.
  
-<note tip> +Codul sursă{{:​pm:​prj2025:​atoader:​cod-cantar.zip|}}
-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 +
-</​note>​+
  
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
pm/prj2025/atoader/raluca_aida.preda.1746804632.txt.gz · Last modified: 2025/05/09 18:30 by raluca_aida.preda
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0