Differences

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

Link to this comparison view

pm:prj2026:bianca.popa1106:ioan_cristian.pavel [2026/05/06 18:11]
ioan_cristian.pavel [Hardware Design]
pm:prj2026:bianca.popa1106:ioan_cristian.pavel [2026/05/19 13:51] (current)
ioan_cristian.pavel [Download]
Line 1: Line 1:
-====== Lampa de birou cu control ​prin bluetooth ======+====== Lampa de birou cu control bluetooth ======
   * Student: Pavel Ioan Cristian   * Student: Pavel Ioan Cristian
   * Grupa: 331CA   * Grupa: 331CA
Line 35: Line 35:
 ===== Hardware Design ===== ===== Hardware Design =====
 ^ Componenta ^ Model ^ Interfață cu MCU ^ Functie ^ ^ Componenta ^ Model ^ Interfață cu MCU ^ Functie ^
-| **Microcontroler** | ATMega324P ​| — | Unitate centrala | +| **Microcontroler** | ATMega328P ​| — | Unitate centrala | 
-| **Senzor ​de lumina** | Fotorezistor LDR | ADC (Pin PA0) | Masurarea intensitatii luminii | +| **Senzor lumina** | Fotorezistor LDR | ADC (Pin PA0) | Masurarea intensitatii luminii | 
-| **Senzor ​de miscare** | PIR HC-SR501 | GPIO + INT (Pin PD3) | Detectia miscarii |+| **Senzor miscare** | PIR HC-SR501 | GPIO + INT (Pin PD3) | Detectia miscarii |
 | **Bluetooth** | HC-06 | UART (PD0, PD1) | Comunicatie wireless cu aplicatia de telefon |  | **Bluetooth** | HC-06 | UART (PD0, PD1) | Comunicatie wireless cu aplicatia de telefon | 
 | **Control de putere** | MOSFET IRFZ44N | PWM (Pin PD5) | Comutarea curentului de 12V pentru banda LED | | **Control de putere** | MOSFET IRFZ44N | PWM (Pin PD5) | Comutarea curentului de 12V pentru banda LED |
-| **Limitator ​de tensiune** | LM2596 | — | Limitare 12V → 5V |+| **Limitator tensiune** | LM2596 | — | Limitare 12V → 5V |
 | **Iluminare** | Banda LED albastra | MOSFET | Sursa de lumina | | **Iluminare** | Banda LED albastra | MOSFET | Sursa de lumina |
 | **Feedback audio** | Buzzer | GPIO (Pin PB0) | Semnalizare audio la schimbarea modurilor | | **Feedback audio** | Buzzer | GPIO (Pin PB0) | Semnalizare audio la schimbarea modurilor |
Line 46: Line 46:
 | **Elemente pasive** | Rezistente 10kΩ, 1kΩ | — | Rezistente de pull-down, divizor de tensiune si protectie| | **Elemente pasive** | Rezistente 10kΩ, 1kΩ | — | Rezistente de pull-down, divizor de tensiune si protectie|
  
- +**Schema electrica:** 
-<note tip> +{{ :​pm:​prj2026:​bianca.popa1106:schema_electrica_ioancristianpavel.png?600 | Schema Bloc }}
-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 ===== ===== Software Design =====
  
 +**1. Mediul de dezvoltare si arhitectura hibrida**
  
-<​note ​tip> +Proiectul a fost dezvoltat cu PlatformIO, in limbaj C, folosind si un software multi-tier (python si web) pentru a permite controlul la distanta. 
-Descrierea codului aplicaţiei ​(firmware): + 
-  mediu de dezvoltare ​(if any(e.gAVR StudioCodeVisionAVR+Firmware (C): Controlul perifericelor microcontrolerului (PWM, comunicatie seriala, intreruperi hardware, ADC) + interactionare exclusiva cu registrii chip-ului ATmega328P. 
-  librării şi surse 3rd-party (e.gProcyon AVRlib+ 
-  algoritmi şi structuri ​pe care plănuiţi să le implementaţi +Backend local (Python Flask & PySerial): Rulat pe laptop, serverul actioneaza ca o punte de legatura; expune un API REST cu rute dedicate (/lampa/on, /lampa/off, /​lampa/​auto) si traduce request-urile HTTP venite din retea in comenzi de tip caractere ASCII ('​1',​ '​0',​ '​A'​),​ pe care le trimite instantaneu prin portul serial (USB sau Bluetooth) catre microcontroler folosind bt.flush(). 
-  * (etapa 3) surse şi funcţii implementate + 
-</note>+Frontend si tunneling ​(Web & SSH): Interfata grafica este o pagina web hostata public prin GitHub Pages. Pentru bypass-ul restrictiilor retelelor se creeaza un tunel (ssh -R 80:​127.0.0.1:​5000 nokey@localhost.run). Serviciul genereaza un link public HTTPS dinamic oferind acces instant de pe datele mobile ale telefonului direct la serverul local Flask. 
 + 
 +**2. Algoritmul principal si fluxul ​de date** 
 + 
 +Logica centrala a sistemului are la baza un selector de moduri prin variabila globala mod_manual. 
 + 
 +Initializarea:​ Se configureaza directiile pinilor ​(I/O), interfata UART la 9600 bps, ADC-ul, temporizatorul pentru PWM si se activeaza intreruperile externe si cele globaleSistemul emite un beep de confirmare dupa o stabilizare initiala de 2 secunde. 
 + 
 +Listening non-blocant (UART): In bucla principalafunctia UART_Receive(verifica registrul de receive fara a bloca executia codului. Daca de pe telefon se trimite o comanda, variabila mod_manual isi schimba starea, 0 - auto, 1 - on, 2 - off), iar buzzer-ul emite un beep de confirmare. 
 + 
 +**Logica Aplicatiei:​** 
 + 
 +Mod manual ON (mod_manual == 1): forteaza activarea registrului PWM la valoarea maxima (OCR0B = 255), aprinzand banda LED prin MOSFET. 
 + 
 +Mod Manual OFF (mod_manual == 2): dezactiveaza timerul PWM, forteaza pinul PD5 in starea Low (0V) si opreste alimentarea benzii LED. 
 + 
 +Modul Automat (mod_manual == 0): sistemul citeste valoarea luminii ambientale prin ADC. Daca valoarea LDR scade sub pragul stabilit si flag-ul de miscare este activ se aprinde lampa. 
 + 
 +prompt dinamic ​(JS): link-ul de SSH este dinamic si se schimba la fiecare repornire in CMD, iar codul JavaScript din index.html include o logica de fallbackLa prima apasare a unui buton, aplicatia deschide un prompt pop-up pe ecranul telefonului cerand introducerea link-ului HTTPS generat; valoarea este salvata local in sesiune. 
 + 
 +**3. Implementarea modulelor periferice** 
 + 
 +**uart.c / uart.h (comunicatie seriala - Lab 1)** - configurarea si gestionarea fluxului de date prin portul serial al microcontrolerului;​ 
 + 
 +**interrupts.c / interrupts.h (Intreruperi Externe - Lab 2)** 
 + 
 +Butonul Fizic (INT0): Pinul PD2 este configurat ca intrare; registrul EICRA este configurat cu bitul ISC01 pentru a declansa intreruperea hardware ​pe front descrescator;​ rutina ISR(INT0_vect) realizeaza un debounce software rapid de 50ms, dupa care se schimba starea modului. 
 + 
 +senzorul PIR (INT1): Pinul PD3 primeste semnal de la senzorul de miscare; este mapat pe intreruperea INT1, configurata prin bitul ISC10 din EICRA. in rutina ISR(INT1_vect),​ starea pinului PIND este citita direct; 
 + 
 +**timer.c / timer.h ​(Generare semnale PWM - Lab 3)** - gestioneaza controlul fin si tranzitiile de luminozitate ale benzii LED de mare putere. 
 + 
 +Timer 0 (8-bit): configurat sa lucreze in modul fast PWM; pinul PD5 este setat in modul non-inverted;​ prescalerul este setat la valoarea 64 prin registrul pentru a obtine o frecventa stabila; luminozitatea este controlata direct prin scrierea de valori in registrul de comparare OCR0 si modificand factorul de umplere. 
 + 
 +**adc.c ​adc.h (Conversie Analog-Digital - Lab 4)** - permite citirea valorilor de pe senzorul fotorezistiv (LDR) montat intr-un circuit de divizor de tensiune cu o rezistenta fixa de 10kΩ: 
 + 
 +ADC_Init: seteaza tensiunea de referinta la AVCC (5V); se configureaza un prescaler de 128 prin registrul ADCSRA.
  
 +ADC_Read: primeste ca parametru canalul (0 pentru pinul PC0); returneaza valoarea convertita pe 10 biti, reprezentand nivelul de luminozitate procesat de algoritmul principal.
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
  
Line 74: Line 106:
 ===== Concluzii ===== ===== Concluzii =====
  
-===== Download =====+Proiectul a fost finalizat, rezultand intr-un prototip functional, complet automatizat,​ capabil sa fie controlat de la distanta.
  
-<note warning>​ +Sistemul rezolva o problema reala de eficienta energetica si confort. Iluminatul obisnuit ramane activ chiar si cand nu este necesarsau necesita interactiune fizica constantaPrin combinarea senzorului fotorezistiv cu cel de miscare se garanteaza faptul ca banda LED consuma energie strict atunci cand cineva este in incapere si lumina naturala este insuficienta. In plusadaugarea componentei ​de server web si trecerea prin tunelul SSH a rezolvat problema de accesibilitate IoT in medii cu retele restrictive (cum ar fi lipsa unui IP public sau limitari de tip AP Isolation), permitand controlul prin date mobile.
-O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului:​ sursescheme, etcUn fişier README, un ChangeLogun 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**. +Desi sistemul indeplineste scopul de proiectare, ​se pot aduce cateva imbunatatiri ​pe viitor:
-</​note>​+
  
-===== Jurnal =====+Inlocuirea modulului Bluetooth (HC-06) cu un microcontroler cu Wi-Fi integrat (ex. ESP8266 sau ESP32) pentru a elimina necesitatea unui server cu rol de bridge. 
 + 
 +Crearea unui PCB (Printed Circuit Board) dedicat pentru a face un sistem mai compact, care sa se potriveasca cu design-ul anumitor corpuri de lampa.
  
-<note tip> 
-Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. 
-</​note>​ 
  
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
 +**Resurse Hardware:**
 +  * [[https://​ww1.microchip.com/​downloads/​aemDocuments/​documents/​MCU08/​ProductDocuments/​DataSheets/​Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf|ATmega328P 8-bit AVR Microcontroller Datasheet]]
 +  * [[https://​scl.engr.uconn.edu/​courses/​ece3411/​preliminaries/​Atmel-42287-ATmega328P-Xplained-Mini-User-Guide_UserGuide.pdf|ATmega328P Xplained Mini User Guide]]
 +  * [[https://​www.rajguruelectronics.com/​Product/​707/​HC-06%20core%20bluetooth%20module.pdf|HC-06 Bluetooth Module Datasheet]]
 +  * [[https://​www.handsontec.com/​dataspecs/​SR501%20Motion%20Sensor.pdf|HC-SR501 PIR Motion Sensor Datasheet]]
 +  * [[https://​www.acdcshop.gr/​content/​02-LDR1.pdf|Photoresistor (LDR)]]
 +  * [[https://​www.ssh.com/​academy/​ssh/​tunneling-example|SSH Port Forwarding Documentation]]
  
-<​note>​ +**Resurse Software ​șTool-uri:** 
-Listă cu documente, datasheet-uri,​ resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**+  ​Cirkit Designer (schema electrica) 
-</​note>​+  ​GitHub (cod sursa)
  
 <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​ <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​
  
pm/prj2026/bianca.popa1106/ioan_cristian.pavel.1778080304.txt.gz · Last modified: 2026/05/06 18:11 by ioan_cristian.pavel
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