Differences

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

Link to this comparison view

pm:prj2026:alexandru.predescu:philip.agapie [2026/05/09 19:26]
andrei.cotiga [Descriere generală]
pm:prj2026:alexandru.predescu:philip.agapie [2026/05/23 23:24] (current)
andrei.cotiga [Descriere generală]
Line 1: Line 1:
-====== SmartMug Monitor ======+===== SmartMug Monitor ======
 ===== Introducere ===== ===== Introducere =====
  
  
-Ce face: +Ce face: Proiectul ​este un suport inteligent ​care masoara temperatura lichidului in timp real. Afiseaza datele pe LCD si 
-Proiectul ​reprezinta ​un suport ​de cana inteligent. Acesta ​masoara temperatura lichidului in timp real si ma avertizeaza +ma avertizeaza ​prin LED si buzzer ​cand bautura este prea fierbinte ​sau tocmai buna de consum. Un senzor LDR pune 
-atat atunci ​cand bautura este prea fierbinte ​cat si atunci cand a ajuns la temperatura optima ​de consum.+sistemul in repaus automat cand ridic cana.
  
-Care este scopul lui: +Scopul: Vreau sa evit arsurile si situatiile in care uit bautura pe birou pana se raceste ​complet.
-Vreau sa evit situatiile ​neplacute ​in care ma ard cu lichide fierbinti sau in care ajung sa consum cafeaua ​complet ​rece +
-din cauza neglijentei.+
  
-Care a fost ideea de la care am pornit: +Ideea de pornireIn timpul ​orelor lungi de invatat imi pierdeam concentrarea ​si ajungeam ​sa beau cafeaua ​prea fierbinte 
-Am observat ca in timpul ​sesiunilor ​de studiu pierd notiunea timpului ​si fie incerc ​sa beau ceaiul ​prea repede +sau complet rece.
-provocandu mi arsuri fie il uit pe birou pana cand devine imbuvabil. +
- +
-De ce este util: +
-SmartMug Monitor asigura siguranta utilizatorului si elimina risipa de resurse prin monitorizare automata. Pot ramane +
-concentrat pe sarcini deoarece primesc alerte vizuale prin LED RGB care indica starile critice de temperatura si o +
-alerta sonora cand lichidul este sigur pentru consum.+
  
 +Utilitate: SmartMug Monitor monitorizeaza constant starea bauturii. Astfel raman concentrat pe invatat si primesc alerte
 +clare doar cand actiunea mea este necesara.
  
 ===== Descriere generală ===== ===== Descriere generală =====
  
 +{{:​pm:​prj2026:​alexandru.predescu:​blocagapi2.jpeg?​600|}}
  
-Sistemul ​este alimentat ​printr ​o conexiune ​USB C, tensiunea fiind stabilizata la 5V printr un regulator LDO pentru a +Sistemul ​primeste curent ​printr ​un cablu micro USB direct din laptopCreierul intregului montaj ​este placa de 
-asigura functionarea corecta a componentelorUnitatea centrala ​este microcontrolerul ​ATmega328P care gestioneaza +dezvoltare ​ATmega328P ​Xplained Mini care controleaza toate modulele ​pe care le am adaugat pe breadboard.
-comunicarea intre modulele ​de intrare si cele de iesire.+
  
-Modulele ​de intrare ​sunt compuse dintr un senzor LM35, conectat la pinul ADC0 pentru citirea temperaturii, ​si un buton +Pe partea ​de intrare ​folosesc ​un senzor ​analogic ​LM35 prins de exteriorul canii ca sa citesc temperatura ​si un senzor ​de 
-de start legat la pinul INT0 pentru activarea sistemului prin intreruperi externeModulele ​de iesire includ un LED RGB +lumina LDR pus sub canaLDR ul detecteaza lumina din camera cand ridic cana de pe suport, iar microcontrolerul stie 
-pentru semnalizare vizuala ​si un buzzer pasiv controlat prin semnal PWM generat ​de Timer1.+astfel sa opreasca alertele. Mai am si un buton push ca sa pornesc manual sistemul din starea ​de asteptare.
  
-Interactiunea hardware software: +Pe partea ​de iesire am un ecran LCD 1602 cu modul I2C care imi afiseaza temperatura exacta ​si mesajele de stareMai 
-Dupa activarea din buton, microcontrolerul preia datele analogice ​de la senzor ​si le proceseaza folosind o medie mobila+folosesc un LED RGB care isi schimba culoarea in functie de cat de fierbinte e bautura ​si un buzzer ​pasiv care ma anunta 
-In functie de rezultatul obtinut, logica interna comanda culorile LED ului si frecventa ​buzzer ​ului pentru a oferi +cand pot sa beau in siguranta. Microcontrolerul ia datele de la senzori si decide ​in timp real ce sa scrie pe ecran si 
-feedback ​in timp real despre starea lichidului din cana.+cum sa controleze lumina si sunetul.
  
  
-{{:​pm:​prj2026:​alexandru.predescu:​blocagapi.jpeg?​600|}} 
 ===== Hardware Design ===== ===== Hardware Design =====
  
 ^ # ^ Componenta ^ Cantitate ^ Rol ^ ^ # ^ Componenta ^ Cantitate ^ Rol ^
 | 1 | Placuta de dezvoltare ATmega328P Xplained Mini | 1 | Controlul sistemului si procesarea datelor | | 1 | Placuta de dezvoltare ATmega328P Xplained Mini | 1 | Controlul sistemului si procesarea datelor |
-| 2 | Senzor ​de temperatura ​analogic ​LM35 | 1 | Preluarea temperaturii lichidului din cana +| 2 | Modul senzor ​de temperatura LM35 | 1 | Citirea valorilor termice de pe exteriorul canii 
-| 3 | Buton push | 1 | Activarea sistemului ​din starea de asteptare ​+| 3 | Modul senzor de lumina LDR | 1 | Detectarea ridicarii canii pentru oprirea alertelor | 
-Buzzer ​pasiv | 1 | Generarea avertizarilor sonore | +| 4 | Modul buton switch ​| 1 | Activarea ​manuala a sistemului | 
-| LED RGB | 1 | Afisarea ​vizuala a temperaturii prin culori ​+Modul buzzer ​pasiv | 1 | Generarea avertizarilor sonore ​de tip PWM 
-Rezistente ​de 330 ohmi | Limitarea ​curentului ​pentru culorile LED ului +Modul LED RGB | 1 | Semnalizarea ​vizuala a starilor de temperatura ​
-| Breadboard si fire de conexiune ​| 1 | Asamblarea fizica a componentelor ​|+Display LCD 1602 cu interfata I2C | 1 | Afisarea temperaturii si a mesajelor ​de stare | 
 +| 8 | Set rezistente (utilizare 220 ohmiProtectia componentelor si limitarea ​curentului | 
 +| Breadboard ​400 puncte ​si fire jumper ​| 1 | Realizarea conexiunilor fizice intre module | 
 +| 10 | Cablu date micro USB | 1 | Alimentarea si programarea microcontrolerului ​|
  
 +
 +Am finalizat montarea și cablarea tuturor componentelor pe breadboard și le-am conectat cu succes la placa ATmega328P
 +Xplained Mini. Din punct de vedere fizic, prototipul este complet asamblat, iar toate legăturile electrice sunt sigure.
 +
 +Codul rulează stabil pe microcontroler,​ realizând achiziția automată de date de la senzori și gestionarea alertelor.
 +Sistemul reacționează instantaneu la modificările din mediu: ecranul LCD își actualizează valorile în timp real, LED-ul
 +RGB își schimbă culorile în funcție de temperatură,​ buzzerul emite semnalele sonore setate, iar butonul push și senzorul
 +LDR controlează corect stările de funcționare și repaus.
 +
 +
 +Componentele folosite și rolul lor în proiect:
 +
 +*Plăcuța ATmega328P Xplained Mini*: Reprezintă creierul întregului montaj. Colectează datele trimise de senzori, rulează
 +algoritmul de control în timp real și comandă ecranul, buzzerul și culorile luminoase.
 +
 +*Senzor de temperatură LM35* (Conectat la pinul PC0): Se fixează pe exteriorul cănii pentru a citi temperatura
 +lichidului în mod constant și pentru a trimite alerte dacă băutura este prea fierbinte sau dacă s-a răcit.
 +
 +*Modul senzor de lumină LDR* (Conectat la pinul PC1): Se poziționează direct sub cană. Detectează lumina din cameră în
 +momentul ridicării cănii de pe suport și transmite microcontrolerului comanda de oprire imediată a alertelor sonore.
 +**
 +Buton push switch** (Conectat la pinul PD2): Funcționează ca un comutator manual de siguranță. Oferă posibilitatea de a
 +opri complet monitorizarea sau de a trezi sistemul instantaneu din starea de repaus.
 +
 +*Display LCD 1602 cu modul I2C* (Conectat la pinii PC4 / SDA și PC5 / SCL): Afișează temperatura exactă în grade Celsius
 +și mesaje clare de stare privind starea băuturii.
 +
 +*Modul buzzer pasiv* (Conectat la pinul PB1): Emite sunete scurte sau alarme pe frecvențe diferite pentru a atrage
 +atenția în timpul orelor lungi de învățat.
 +
 +*LED RGB* (Conectat la pinii PD3, PD5 și PD6): Își schimbă culoarea dinamic pentru a indica starea băuturii dintr-o
 +privire, fără a fi necesară citirea ecranului (Roșu pentru fierbinte, Verde pentru gata de băut și Albastru pentru
 +rece).
 +
 +*Set rezistențe de 220 ohmi*: Sunt montate în serie pe firele LED-ului RGB pentru a limita curentul electric și pentru a
 +proteja pinii plăcuței de dezvoltare.
 +**
 +Breadboard și fire jumper**: Asigură realizarea tuturor legăturilor fizice și distribuirea alimentării de la placă către
 +restul modulelor.
 +
 +
 +Ce pini folosesc pentru fiecare componentă și de ce:
 +
 +*Pinul PC0* (Analog 0) -> Senzorul LM35: Destinat citirii semnalului analogic de tensiune trimis de senzor. Portul C
 +este legat direct la convertorul analog-digital (ADC) al plăcuței, fiind singura modalitate de a transforma variația de
 +tensiune în grade Celsius.
 +
 +*Pinul PC1* (Analog 1) -> Modulul LDR: Ales tot pentru funcția hardware ADC de pe Portul C, necesară pentru a măsura și
 +traduce variațiile de lumină sub formă de numere în intervalul 0 - 1023.
 +
 +*Pinul PD2* -> Butonul Push: Dispune de o funcție hardware dedicată numită întrerupere externă (INT0). Permite oprirea
 +instantanee a restului de cod la apăsarea butonului, fără ca această comandă să fie blocată sau întârziată de pauzele
 +(delay) din programul principal.
 +
 +*Pinul PB1* -> Buzzerul Pasiv: Reprezintă pinul hardware dedicat OC1A, conectat la timerul intern al plăcii. Permite
 +generarea unor frecvențe audio curate prin funcția tone, fără a încărca procesorul cu calcule suplimentare.
 +
 +*Pinii PD3, PD5 și PD6* -> LED-ul RGB: Dispun de funcție hardware PWM (Pulse Width Modulation). Permit variația fină a
 +tensiunii de ieșire pentru a controla intensitatea fiecărei culori în parte (Roșu, Verde, Albastru) și pentru a obține
 +nuanțe curate.
 +
 +*Pinii PC4 (SDA) și PC5 (SCL)* -> Display-ul LCD: Reprezintă liniile dedicate pentru protocolul de comunicare serială
 +I2C. Permit controlul complet și transmiterea datelor către ecranul LCD folosind doar două fire, economisind restul
 +pinilor digitali ai plăcuței.
 +
 +
 +{{:​pm:​prj2026:​alexandru.predescu:​poza1ag.jpeg?​600|}}
 +{{:​pm:​prj2026:​alexandru.predescu:​poza2ag.jpeg?​600|}}
 +{{:​pm:​prj2026:​alexandru.predescu:​poza3ag.jpeg?​600|}}
 ===== Software Design ===== ===== Software Design =====
  
 +Stadiul implementarii software
 +
 +Codul este finalizat si functional pe placa. Programul citeste senzorii continuu, proceseaza datele si actualizeaza LCD
 +ul, LED ul si buzzerul in timp real.
 +
 +Motivatia bibliotecilor
 +
 +Wire.h: Necesara pentru initierea comunicatiei I2C.
 +LiquidCrystal I2C.h: Simplifica controlul ecranului prin comenzi directe, eliberand codul de manipularea manuala a
 +registrilor.
 +
 +Functionalitati din laborator
 +
 +ADC: Transforma tensiunea analoaga de la senzorii LM35 si LDR in valori numerice.
 +Intreruperi Externe: Butonul foloseste un pin de intrerupere pentru a pune sistemul pe pauza instantaneu,​ blocand restul
 +codului.
 +PWM si Timere: Controleaza intensitatea culorilor LED ului RGB si genereaza frecventele audio pentru buzzer.
 +I2C: Asigura comunicatia cu ecranul LCD folosind doar doua fire de date SDA si SCL.
 +
 +Scheletul proiectului
 +
 +Functia setup initializeaza pinii si intreruperea. Functia loop verifica intai starea butonului. Apoi citeste LDR ul
 +pentru a detecta cana. Daca sistemul e activ, face 10 citiri succesive pentru temperatura si afiseaza media. Peste 32 de
 +grade activeaza alarma si aprinde rosu. Intre 25 si 32 de grade emite un bip si aprinde verde. Sub 25 de grade aprinde
 +albastru.
 +
 +Calibrarea senzorilor
 +
 +LDR: Calibrare empirica prin Serial Monitor. Valorile citite au fost peste 100 in lumina si 20 in intuneric cu cana
 +pusa. Pragul din cod a fost setat la 80.
 +LM35: Calibrare matematica. Valoarea ADC este convertita in temperatura calculand raportul la referinta de 5000mV a
 +placii, senzorul oferind 10mV per grad Celsius.
 +
 +Optimizari realizate
 +
 +Optimizare ADC contra zgomotului electric: Am implementat o mediere software din 10 citiri consecutive la distanta de 10
 +milisecunde pentru a stabiliza temperatura afisata.
 +Optimizare buton prin debouncing: Am creat un filtru software folosind functia millis care ignora automat fluctuatiile
 +mecanice ale contactelor timp de 250 de milisecunde dupa apasare.
 +
 +
 +
 +Justificarea utilizarii functionalitatilor din laborator
 +
 +Ca sa fac ideea sa mearga, m am folosit de mai multe concepte invatate practic:
 +
 +Convertorul Analog Digital (ADC): Il folosesc constant ca sa citesc voltajul de la senzorul de temperatura LM35 si de la
 +cel de lumina LDR, transformand tensiunea in valori numerice pe care sa le pot prelucra matematic.
 +
 +Intreruperi Externe: Am legat butonul fix pe un pin de intrerupere hardware. E super util pentru ca, indiferent ce
 +instruciuni se executa in acel moment, cand apas butonul procesorul declanseaza intreruperea si imi opreste
 +monitorizarea instantaneu.
 +
 +Semnale PWM si Timere: Ca sa controlez cat de tare si in ce culoare se aprinde LED ul RGB, am folosit pinii de PWM
 +hardware. Modific factorul de umplere din cod si obtin fix nuanta de care am nevoie pentru temperatura curenta. Tot cu
 +timerele interne generez si notele audio pentru buzzer.
 +
 +Comunicatia I2C: A fost esentiala ca sa leg ecranul la placa folosind doar 2 fire de date (SDA si SCL), economisind o
 +groaza de pini pentru restul pieselor.
 +
 +
 +
 +Explicarea scheletului proiectului
 +
 +Structura codului are cele doua functii clasice, setup() si loop(), plus o functie separata numita schimba_stare()
 +pentru intreruperea butonului.
 +In setup() fac setarile initiale pentru pini, pornesc ecranul si atasez intreruperea.
 +In loop() se intampla toata logica: prima data codul verifica daca am oprit manual sistemul din buton. Daca e pornit,
 +verifica senzorul LDR sa vada daca am cana pe suport. Daca este acolo, face o medie din 10 citiri ale temperaturii ca sa
 +am o valoare curata, fara zgomot. Valoarea asta ajunge pe ecran, iar printr un set de decizii aprind LED ul si buzzerul:
 +peste 60 de grade da alarma si se face rosu, intre 40 si 60 de grade da un bip scurt de confirmare si se face verde, iar
 +sub 40 se face albastru.
  
  
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
  
 +Tot sistemul a fost validat direct pe birou, testandu l cu o cana de apa fierbinte. Elementul de noutate, adica detectia
 +contextului prin senzorul LDR, functioneaza perfect: cand am ridicat cana, totul s a stins instantaneu,​ exact cum mi am
 +propus ca sa nu ma deranjeze alertele in timp ce beau.
 +
 +Cand am lasat cana pe suport, am vazut cum temperatura crestea pe ecran, LED ul s a facut rosu si a pornit alarma. Cand
 +apa a coborat sub 60 de grade, sistemul a comutat instantaneu pe verde cu mesajul "Gata de baut". Toate modulele
 +hardware interactioneaza impecabil cu logica scrisa.
  
 ===== Concluzii ===== ===== Concluzii =====
 +
 +Proiectul si a atins scopul initial suta la suta. Am reusit sa construiesc un dispozitiv practic care imi rezolva
 +problema cu bautul cafelei reci in timpul invatatului. Dincolo de utilitatea lui pe biroul meu, proiectul m a ajutat sa
 +inteleg mult mai clar cum se leaga partea teoretica de programare a registrilor cu piesele fizice pe care pui mana, in
 +special lucrul cu intreruperile hardware si traductoarele analogice.
  
 ===== Download ===== ===== Download =====
  
 +{{:​pm:​prj2026:​alexandru.predescu:​smartmug.zip|}}
 ===== Jurnal ===== ===== Jurnal =====
  
 +Saptamana 1: Alegerea ideii de proiect pe baza unei nevoi personale. Comandarea pieselor si documentarea pe datasheet
 +uri pentru pinii de la ATmega328P.
 +
 +Saptamana 2: Realizarea conexiunilor hardware pe breadboard. Testarea individuala a ecranului I2C si a butonului de
 +push.
 +
 +Saptamana 3: Scrierea codului principal. Integrarea senzorului de temperatura LM35 si a modulului LDR. Reglarea
 +factorului de umplere PWM pentru culorile LED ului RGB.
 +
 +Saptamana 4: Testarea finala a sistemului pe birou cu o cana reala. Fixarea debouncing ului la buton, calibrarea
 +senzorului LDR la lumina din camera mea si redactarea documentatiei de laborator.
  
  
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
 +
 +Instrument generare diagrame: Mermaid (pentru diagrama de flux logic a sistemului)
 +
 +Proiectare circuit și schemă electrică: tinkercad (pentru vizualizarea conexiunilor hardware)
 +
 +Datasheet ATmega328P: Documentația oficială pentru identificarea pinilor ADC, PWM și a întreruperilor hardware
pm/prj2026/alexandru.predescu/philip.agapie.1778343992.txt.gz · Last modified: 2026/05/09 19:26 by andrei.cotiga
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