Differences

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

Link to this comparison view

pm:prj2026:farhad_ali.gul:diana_ioana.novac [2026/05/20 17:22]
diana_ioana.novac [Descriere generală]
pm:prj2026:farhad_ali.gul:diana_ioana.novac [2026/05/20 18:01] (current)
diana_ioana.novac
Line 31: Line 31:
 ===== Hardware Design ===== ===== Hardware Design =====
  
-===Lista de componente===+=== Lista de componente ===
  
-  * ATMega328p xplained mini +  ​* **Microcontroller:​** ATMega328p xplained mini 
-  * Senzor de distanță HC-SR04 +  ​* **Senzor de distanță:** Ultrasonic ​HC-SR04 
-  * Modul RFID RC522 +  ​* **Modul RFID RC522** 
-  * Senzor nivel apă +  ​* **Senzor nivel apă** 
-  * Senzor calitatea apei (TDS) +  ​* **Senzor calitatea apei:** TDS (Total Dissolved Solids
-  * Pompă submersibilă +  ​* **Pompă submersibilă ​3-6V** 
-  * Display LCD cu I2C +  ​* **Display**: LCD cu modul I2C 
-  * Butoane de control +  ​* **Butoane de control** 
-  * Tranzistor MOSFET +  ​* **Tranzistor MOSFET** 
-  * Diodă flyback +  ​* **Diodă flyback** 
-  * Rezistențe +  ​* **Rezistențe** 
-  * Surse de alimentare+  * **Sursă breadboard** 
 + 
 +=== Schema electrică === 
 + 
 +{{ :​pm:​prj2026:​farhad_ali.gul:​schema_electrica_diana.drawio.png?​direct |}} 
 + 
 +=== Pinii folosiți pentru fiecare componentă === 
 + 
 +  * **Ecranul LCD:** Pinii dedicați pentru magistrala I2C pe ATMega328p sunt PC4 pentru SDA și PC5 pentru SCL. 
 +  * **Senzorul ultrasonic HC-SR04**: Senzorul necesită un pin de ieșire pentru Trig și un pin de intrare pentru Echo. Am ales pinii PD2 și PD3 ca pini GPIO. 
 +  * **Modulul RFID RC522**: Pinii PB2, PB3, PB4, PB5 și PB0. Modulul comunică prin protocolul SPI. Pe ATMega328p, pinii hardware pentru SPI sunt PB3 (MOSI), PB4 (MISO) și PB5 (SCK). Pinul PB0 e folosit pentru resetarea modulului și poate fi orice pin digital liber, dar am ales PB0 pentru a păstra pinii portului D disponibili pentru butoane și senzorul ultrasonic. 
 +  * **Pompa submersibilă**:​ Pompa e controlată printr-un semnal PWM pentru reglarea debitului. Pinul PB1 e conectat intern la Timer1 al microcontrolerului. 
 +  * **Senzorul de nivel al apei și senzorul TDS:** Ambii senzori necesită pini ADC, am ales pinii PC0 și PC1. 
 +  * **Butoanele**:​ Butoanele sunt conectate ca intrări digitale cu rezistențe pull-up externe și am ales pinii PD4, PD5 și PD6.
  
 ===== Software Design ===== ===== Software Design =====
  
-===== Rezultate Obţinute =====+  * **Mediu de dezvoltare:​** PlatformIO 
 +  * **Biblioteci și resurse folosite:** Am făcut configurarea Timer1 pentru generarea semnalului PWM al pompei prin scriere directă în registrele AVR TCCR1A, TCCR1B și OCR1A. Configurarea ADC pentru citirea senzorilor de nivel și TDS se face prin registrele ADMUX și ADCSRA. Am folosit biblioteca //​MFRC522.h//​ pentru comunicația cu cititorul RFID RC522 prin SPI. Biblioteca gestionează inițializarea registrelor interne ale modulului și citirea UID-ului tag-urilor. O altă bibliotecă folosită este //​EEPROM.h//​ pentru salvarea și citirea persistentă a statisticilor per animal. 
 + 
 +== Mașina de stări ​== 
 + 
 +Sistemul este implementat ca o mașină de stări finită cu patru stări: Repaus, Activ, Eroare și Configurare. Starea curentă e reținută într-un enum. Tranzițiile între stări sunt declanșate de flag-uri booleene setate de funcțiile de citire ale senzorilor. 
 + 
 +== Profiluri animale == 
 + 
 +Datele fiecărui animal sunt reținute într-o structură PetProfile care conține UID-ul tag-ului RFID, numărul de vizite din ziua curentă, durata acestora și timestamp-ul ultimei vizite. Array-ul de aceste structuri e sincronizat cu EEPROM-ul la finalul fiecărei vizite. 
 + 
 +== Controlul pompei = 
 + 
 +Debitul e reglat prin modificarea valorii registrului OCR1A care controlează duty cycle-ul semnalului PWM. La detectarea animalului, valoarea e incrementată la fiecare iterație a loop-ului până la nivelul maxim configurat, iar la plecarea animalului procesul e inversat. 
 + 
 +== Filtrarea ADC == 
 +Citirile brute de la senzorul nivel și cel TDS sunt procesate și filtrate pentru a reduce zgomotul.
  
-===== Concluzii =====+== Funcționalități din laboratoare ​== 
  
-===== Download =====+  * **GPIO** - folosit pentru controlul pinilor de Trig și Echo ai senzorului ultrasonic HC-SR04 și pentru citirea stării butoanelor de meniu 
 +  * **Întreruperi** - folosite pentru detectarea apăsărilor de butoane prin PCINT 
 +  * **PWM** - duty cycle-ul PWM e modificat pentru a regla debitul pompei 
 +  * **SPI** - folosit pentru comunicația cu modulul RFID RC522. 
 +  * **I2C** - folosit pentru comunicația cu display-ul LCD 16x2 
 +  * **ADC** - folosit pentru citirea semnalelor analogice ale senzorilor de nivel al apei și cel TDS
  
 ===== Jurnal ===== ===== Jurnal =====
pm/prj2026/farhad_ali.gul/diana_ioana.novac.1779286936.txt.gz · Last modified: 2026/05/20 17:22 by diana_ioana.novac
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