This shows you the differences between two versions of the page.
|
pm:prj2026:bianca.popa1106:ioan_cristian.pavel [2026/05/18 17:21] ioan_cristian.pavel [Software Design] |
pm:prj2026:bianca.popa1106:ioan_cristian.pavel [2026/05/19 13:51] (current) ioan_cristian.pavel [Download] |
||
|---|---|---|---|
| Line 48: | Line 48: | ||
| **Schema electrica:** | **Schema electrica:** | ||
| {{ :pm:prj2026:bianca.popa1106:schema_electrica_ioancristianpavel.png?600 | Schema Bloc }} | {{ :pm:prj2026:bianca.popa1106:schema_electrica_ioancristianpavel.png?600 | Schema Bloc }} | ||
| - | |||
| - | <note tip> | ||
| - | 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> | ||
| - | 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> | ||
| - | |||
| - | 1. Mediul de dezvoltare si arhitectura hibrida | ||
| Proiectul a fost dezvoltat cu PlatformIO, in limbaj C, folosind si un software multi-tier (python si web) pentru a permite controlul la distanta. | Proiectul a fost dezvoltat cu PlatformIO, in limbaj C, folosind si un software multi-tier (python si web) pentru a permite controlul la distanta. | ||
| Line 77: | Line 61: | ||
| 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. | 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 | + | **2. Algoritmul principal si fluxul de date** |
| Logica centrala a sistemului are la baza un selector de moduri prin variabila globala mod_manual. | Logica centrala a sistemului are la baza un selector de moduri prin variabila globala mod_manual. | ||
| Line 84: | Line 69: | ||
| Listening non-blocant (UART): In bucla principala, functia 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. | Listening non-blocant (UART): In bucla principala, functia 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: | + | **Logica Aplicatiei:** |
| Mod manual ON (mod_manual == 1): forteaza activarea registrului PWM la valoarea maxima (OCR0B = 255), aprinzand banda LED prin MOSFET. | Mod manual ON (mod_manual == 1): forteaza activarea registrului PWM la valoarea maxima (OCR0B = 255), aprinzand banda LED prin MOSFET. | ||
| Line 94: | Line 79: | ||
| 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 fallback. La 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. | 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 fallback. La 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 | + | **3. Implementarea modulelor periferice** |
| - | uart.c / uart.h (comunicatie seriala - Lab 1) - configurarea si gestionarea fluxului de date prin portul serial al microcontrolerului; | + | **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) | + | **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. | 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. | ||
| Line 104: | Line 89: | ||
| 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; | 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.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. | 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.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_Init: seteaza tensiunea de referinta la AVCC (5V); se configureaza un prescaler de 128 prin registrul ADCSRA. | ||
| Line 121: | 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 necesar, sau necesita interactiune fizica constanta. Prin 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 plus, adaugarea 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: surse, scheme, etc. Un fişier README, un ChangeLog, un 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 și 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> | ||