This shows you the differences between two versions of the page.
|
pm:prj2026:atoader:theodor.mitrofan [2026/05/14 19:41] theodor.mitrofan [Introducere] |
pm:prj2026:atoader:theodor.mitrofan [2026/05/14 20:06] (current) theodor.mitrofan |
||
|---|---|---|---|
| Line 9: | Line 9: | ||
| Pentru mine, utilitatea este didactica si practica: invat sa stapanesc interactiunea dintre senzori asincroni (RFID, Ultrasonic) si actuatoare (Servomotor) folosind o arhitectura de tip Finite State Machine (FSM), eliminand total functiile blocante de tip delay(). Pentru un utilizator real, sistemul ofera un feedback clar (pe ecranul LCD) si un acces fluid. | Pentru mine, utilitatea este didactica si practica: invat sa stapanesc interactiunea dintre senzori asincroni (RFID, Ultrasonic) si actuatoare (Servomotor) folosind o arhitectura de tip Finite State Machine (FSM), eliminand total functiile blocante de tip delay(). Pentru un utilizator real, sistemul ofera un feedback clar (pe ecranul LCD) si un acces fluid. | ||
| + | |||
| Laboratoarele folosite au fost 3-timere, 5-spi si 6-i2c | Laboratoarele folosite au fost 3-timere, 5-spi si 6-i2c | ||
| ===== Descriere generala ===== | ===== Descriere generala ===== | ||
| - | Sistemul este centralizat in jurul microcontrolerului ATmega328P. La momentul scanarii unui card, microcontrolerul interogheaza senzorul RFID prin protocolul SPI. Daca UID-ul cardului este validat si exista locuri disponibile, sistemul trimite date prin I2C catre ecranul LCD pentru actualizarea interfetei si genereaza un semnal PWM pentru a ridica servomotorul (bariera). | + | Arhitectura software a sistemului este concepută sub forma unui automat cu stări finite (Finite State Machine), implementat în limbaj C la nivel de regiștri pe microcontrolerul ATmega328P. Sistemul este construit în jurul unei bucle principale non-blocking, care orchestrează comunicația cu perifericele, asigurând un management fluid al accesului auto și al resurselor parcării. |
| + | |||
| + | Fluxul operațional este împărțit în patru module logice principale: | ||
| + | |||
| + | **1. Autentificare și Gestiunea Accesului (Comunicație SPI)** | ||
| + | Sistemul interoghează continuu senzorul RFID RC522 prin intermediul protocolului de comunicație de mare viteză SPI (Serial Peripheral Interface). | ||
| + | * **Validarea Identității:** La detectarea unui tag RFID (card sau breloc), microcontrolerul extrage identificatorul unic (UID) pe 4 octeți. Acest UID este comparat cu o structură de date internă ce conține utilizatorii autorizați. | ||
| + | * **Logica de Capacitate:** Chiar dacă un card este recunoscut ca fiind valid, accesul este condiționat de variabila globală a locurilor de parcare. Sistemul verifică preventiv dacă există locuri disponibile, refuzând accesul (și afișând un mesaj corespunzător pe ecran) în cazul în care parcarea este la capacitate maximă. | ||
| + | |||
| + | **2. Interfață și Feedback Vizual (Comunicație I2C)** | ||
| + | Feedback-ul către utilizator este asigurat de un ecran LCD 1602, controlat eficient prin protocolul I2C pentru a minimiza numărul de pini utilizați (se folosesc doar SDA și SCL). | ||
| + | * **Actualizare Dinamică:** Microcontrolerul actualizează interfața grafică în timp real, gestionând tranzițiile de stare: de la mesajul implicit de așteptare (,,Locuri Libere: X''), la mesaje de validare (,,Acces Permis''), sau mesaje de eroare (,,Card Invalid'' / ,,Parcare Ocupată''). | ||
| - | Ulterior, controlul este preluat de senzorul ultrasonic. Folosind functiile de temporizare (Timere hardware), microcontrolerul masoara timpul de raspuns al ecoului pentru a determina cand masina a eliberat complet zona de tranzit. Odata confirmata trecerea, bariera coboara, iar contorul locurilor de parcare este decrementat. | + | **3. Controlul Mecanic al Barierei (Timer Hardware și PWM)** |
| + | Pentru acționarea fizică a barierei (Servomotorul SG90), sistemul evită funcțiile de blocare a codului (precum funcțiile de delay), bazându-se pe resursele hardware interne ale microcontrolerului. | ||
| + | * **Generare Semnal Precis:** Este utilizat Timer-ul 1 pe 16-biți în modul Fast PWM. Prin setarea regiștrilor (ex: ICR1 și OCR1A), microcontrolerul generează un semnal PWM cu o frecvență fixă de 50Hz, modificând doar factorul de umplere (Duty Cycle) pentru a ridica bariera (poziția de 90 grade) la momentul validării accesului. | ||
| + | **4. Telemetrie și Siguranța Tranzitului (Senzor Ultrasonic)** | ||
| + | Odată bariera ridicată, controlul logic este delegat modulului de siguranță gestionat de senzorul ultrasonic HC-SR04, pentru a preveni coborârea accidentală a brațului peste autovehicul. | ||
| + | * **Măsurarea Timpului de Zbor (ToF):** Microcontrolerul trimite un impuls scurt (Trigger) de 10 microsecunde și utilizează funcții de temporizare pentru a măsura durata impulsului de întoarcere (Echo). | ||
| + | * **Conversie și Decizie:** Distanța este calculată matematic pe baza vitezei sunetului în aer. | ||
| + | * **Logica de Tranzit:** Sistemul monitorizează continuu distanța. Când distanța scade sub un anumit prag, sistemul detectează mașina sub barieră. Doar în momentul în care distanța revine la valoarea inițială (confirmând că mașina a eliberat complet zona de tranzit), microcontrolerul comandă închiderea barierei și decrementează contorul locurilor de parcare, actualizând simultan afișajul LCD. | ||
| {{pm:prj2026:atoader:mitrofan_theodor.png?670}} | {{pm:prj2026:atoader:mitrofan_theodor.png?670}} | ||
| Line 22: | Line 41: | ||
| ^ Piesa ^ Link ^ Tip Utilizare ^ | ^ Piesa ^ Link ^ Tip Utilizare ^ | ||
| - | |ATmega328P-Xplained Mini|[[https://ro.farnell.com/microchip/atmega328p-xmini/eval-board-8bit-mcu-atmega328p/dp/2452771|Placa de dezvoltare ATmega328P-Xplained Mini]]|Baza dezvoltare| | + | | ATmega328P-Xplained Mini | [[https://www.microchip.com/en-us/development-tool/atmega328p-xmini|ATmega328P-Xplained Mini]] | Baza dezvoltare | |
| - | |Modul RFID RC522|[[https://www.optimusdigital.ro/ro/rfid-nfc/144-modul-rfid-rc522-la-1356-mhz.html|Modul RFID RC522 (13.56 MHz)]]|SPI| | + | | Modul RFID RC522 | [[https://www.bitmi.ro/modul-rfid-rc522-13-59mhz-cu-card-si-tag-10468.html?gad_source=1&gad_campaignid=22991722025&gbraid=0AAAAADLag-nnaAD2-KamZ6qMPeX9EODW5&gclid=CjwKCAjw5ZXQBhBdEiwAI5XVWWYh4P4q0otfQLW_UaE-AMkAOe1yxy4PVNM3kBF_5TlyA5kxobgOlhoC0qEQAvD_BwE|Modul RFID RC522]] | SPI | |
| - | |Display LCD 1602 cu convertor I2C|[[https://www.optimusdigital.ro/ro/optoelectronice-lcd/550-display-lcd-1602-cu-interfata-i2c.html|Display LCD 1602 retroiluminat cu modul I2C PCF8574]]|I2C| | + | | Display LCD 1602 cu convertor I2C | [[https://www.bitmi.ro/electronica/modul-interfata-i2c-pentru-lcd1602-10456.html|Modul interfață I2C pentru LCD]] | I2C | |
| - | |Servomotor SG90|[[https://www.optimusdigital.ro/ro/motoare-servomotoare/110-micro-servomotor-sg90.html|Servomotor SG90]]|PWM (Timer1)| | + | | Servomotor SG90 | [[https://www.bitmi.ro/servomotor-sg90-180-grade-9g-10496.html?gad_source=1&gad_campaignid=22991722025&gbraid=0AAAAADLag-nnaAD2-KamZ6qMPeX9EODW5&gclid=CjwKCAjw5ZXQBhBdEiwAI5XVWQXZa27TW67QwGFsDZUVFMhMdv7029RM0G-rRfPgTVxxRnwx-d1RfRoCtfkQAvD_BwE|Servomotor SG90]] | PWM (Timer1) | |
| - | |Senzor Ultrasonic HC-SR04|[[https://www.optimusdigital.ro/ro/senzori-ultrasonici-de-distanta/22-senzor-ultrasonic-hc-sr04.html|Senzor Ultrasonic HC-SR04]]|GPIO, Input Capture| | + | | Senzor Ultrasonic HC-SR04 | [[https://sigmanortec.ro/Senzor-ultrasunete-HC-SR04-p125423514?SubmitCurrency=1&id_currency=2&srsltid=AfmBOorCJkTIpRGAV4zxJQd6-_3oJh7cRBnG1qOWIAHL12xkTYJTcHGaZik|Senzor Ultrasonic HC-SR04]] | GPIO, Input Capture | |
| - | |Breadboard si fire DuPont|[[https://www.optimusdigital.ro/ro/20-prototipare|Breadboard si fire de conexiune DuPont (Tata-Tata, Mama-Tata)]]|Conexiuni hardware| | + | | Breadboard si fire DuPont | [[https://www.bitmi.ro/breadboard-400-puncte-pentru-montaje-electronice-rapide-10633.html?gad_source=1&gad_campaignid=22991722025&gbraid=0AAAAADLag-nnaAD2-KamZ6qMPeX9EODW5&gclid=CjwKCAjw5ZXQBhBdEiwAI5XVWeDqc7DeK0XeCdZCfTkPi31TB3drat6GdZFtWn-J7no54kN9QCawohoCJsMQAvD_BwE|Breadboard si fire DuPont]] | Conexiuni hardware | |
| {{pm:prj2026:atoader:circuit_electric_mitrofan_theodor.jpeg?670}} | {{pm:prj2026:atoader:circuit_electric_mitrofan_theodor.jpeg?670}} | ||