This shows you the differences between two versions of the page.
pm:prj2025:vstoica:marius.gheorghe0509 [2025/05/29 17:47] marius.gheorghe0509 [Descriere generală] |
pm:prj2025:vstoica:marius.gheorghe0509 [2025/05/30 00:00] (current) marius.gheorghe0509 [Hardware Design] |
||
---|---|---|---|
Line 91: | Line 91: | ||
| Sensor Shield Arduino V5 | [[https://www.optimusdigital.ro/ro/shield-uri-pentru-arduino/1013-placa-de-expansiune-sensor-shield.html|Link]] | 1 | 11.30 | | | Sensor Shield Arduino V5 | [[https://www.optimusdigital.ro/ro/shield-uri-pentru-arduino/1013-placa-de-expansiune-sensor-shield.html|Link]] | 1 | 11.30 | | ||
| LCD1602 cu I2C | [[https://www.optimusdigital.ro/ro/optoelectronice-lcd-uri/2894-lcd-cu-interfata-i2c-si-backlight-albastru.html|Link]] | 1 | 16.34 | | | LCD1602 cu I2C | [[https://www.optimusdigital.ro/ro/optoelectronice-lcd-uri/2894-lcd-cu-interfata-i2c-si-backlight-albastru.html|Link]] | 1 | 16.34 | | ||
- | | Senzor DHT11 | [[https://www.optimusdigital.ro/ro/senzori-senzori-de-temperatura/99-senzor-de-temperatura-si-si-umiditate-dht11.html|Link]] | 1 | 7.00 | | ||
| Modul senzor apă | [[https://www.optimusdigital.ro/ro/senzori-altele/272-senzor-de-nivel-al-apei.html|Link]] | 1 | 1.73 | | | Modul senzor apă | [[https://www.optimusdigital.ro/ro/senzori-altele/272-senzor-de-nivel-al-apei.html|Link]] | 1 | 1.73 | | ||
| Modul senzor sunet KY-037 | [[https://www.optimusdigital.ro/ro/senzori/12982-modul-senzor-de-sunet-cu-microfon.html|Link]] | 1 | 2.99 | | | Modul senzor sunet KY-037 | [[https://www.optimusdigital.ro/ro/senzori/12982-modul-senzor-de-sunet-cu-microfon.html|Link]] | 1 | 2.99 | | ||
| Modul senzor flacără IR | [[https://sigmanortec.ro/Senzor-flacara-4-pini-p136262597|Link]] | 1 | 5.95 | | | Modul senzor flacără IR | [[https://sigmanortec.ro/Senzor-flacara-4-pini-p136262597|Link]] | 1 | 5.95 | | ||
| Modul senzor IR barieră | [[https://www.optimusdigital.ro/ro/senzori-senzori-optici/171-senzor-fotoelectric-in-forma-de-u.html|Link]] | 1 | 8.49 | | | Modul senzor IR barieră | [[https://www.optimusdigital.ro/ro/senzori-senzori-optici/171-senzor-fotoelectric-in-forma-de-u.html|Link]] | 1 | 8.49 | | ||
- | | Modul senzor fotorezistor LDR | [[https://www.optimusdigital.ro/ro/componente-electronice-altele/1863-fotorezistor-tip-5528.html|Link]] | 1 | 1.49 | | + | | Modul senzor fotorezistor LDR | [[https://sigmanortec.ro/Senzor-lumina-fotorezistor-p125423559|Link]] | 1 | 3.20 | |
| Modul Bluetooth HC-05 | [[https://www.optimusdigital.ro/ro/wireless-bluetooth/153-modul-bluetooth-master-slave-hc-05-cu-adaptor.html|Link]] | 1 | 28.09 | | | Modul Bluetooth HC-05 | [[https://www.optimusdigital.ro/ro/wireless-bluetooth/153-modul-bluetooth-master-slave-hc-05-cu-adaptor.html|Link]] | 1 | 28.09 | | ||
| Servomotor SG90 | [[https://www.optimusdigital.ro/ro/motoare-servomotoare/2261-micro-servo-motor-sg90-180.html|Link]] | 3 | 6.00 | | | Servomotor SG90 | [[https://www.optimusdigital.ro/ro/motoare-servomotoare/2261-micro-servo-motor-sg90-180.html|Link]] | 3 | 6.00 | | ||
- | | Ventilator | [[https://www.optimusdigital.ro/ro/kituri/12026-kit-plusivo-pentru-introducere-in-electronica-0721248990075.html|Link]] | 1 | 2.00 | | ||
| LED roșu | [[https://www.optimusdigital.ro/ro/kituri/12026-kit-plusivo-pentru-introducere-in-electronica-0721248990075.html|Link]] | 1 | 0.50 | | | LED roșu | [[https://www.optimusdigital.ro/ro/kituri/12026-kit-plusivo-pentru-introducere-in-electronica-0721248990075.html|Link]] | 1 | 0.50 | | ||
| Modul LED alb | [[https://www.optimusdigital.ro/ro/kituri/12026-kit-plusivo-pentru-introducere-in-electronica-0721248990075.html|Link]] | 1 | 0.50 | | | Modul LED alb | [[https://www.optimusdigital.ro/ro/kituri/12026-kit-plusivo-pentru-introducere-in-electronica-0721248990075.html|Link]] | 1 | 0.50 | | ||
Line 107: | Line 105: | ||
| Modul Senzor umiditate sol | [[https://sigmanortec.ro/Senzor-umiditate-sol-higrometru-p125814620|Link]] | 1 | 4.01| | | Modul Senzor umiditate sol | [[https://sigmanortec.ro/Senzor-umiditate-sol-higrometru-p125814620|Link]] | 1 | 4.01| | ||
- | ^ **TOTAL** ^ **178.73** ^ | + | ^ **TOTAL** ^ **161.14** ^ |
**Electrical Diagram:** | **Electrical Diagram:** | ||
Line 127: | Line 125: | ||
^ Componentă ^ Pin Arduino ^ Interfață ^ Funcție principală ^ | ^ Componentă ^ Pin Arduino ^ Interfață ^ Funcție principală ^ | ||
| Senzor fotoelectric | A0 | Analog (ADC) | Detectează obiecte care întrerup un fascicul (garaj) | | | Senzor fotoelectric | A0 | Analog (ADC) | Detectează obiecte care întrerup un fascicul (garaj) | | ||
- | | Senzor fotorezistiv (LDR) | A1 | Analog (ADC) | Măsoară lumina pentru activarea LED-ului alb | | + | | Senzor fotorezistiv (LDR) | D6 | Digital | Măsoară lumina pentru activarea LED-ului alb | |
| Senzor nivel apă | A2 | Analog (ADC) | Detectează apă pentru închiderea automată a ferestrei | | | Senzor nivel apă | A2 | Analog (ADC) | Detectează apă pentru închiderea automată a ferestrei | | ||
| Senzor umiditate sol | A3 | Analog (ADC) | Măsoară umiditatea pentru irigare automată | | | Senzor umiditate sol | A3 | Analog (ADC) | Măsoară umiditatea pentru irigare automată | | ||
- | | LCD1602 I2C | SDA, SCL | I2C | Afișează starea senzorilor / mesaje | | + | | LCD1602 I2C | SDA, SCL | I2C | Afișează parola pentru acces in casa | |
- | | Bluetooth HC-05 | RX, TX| UART | Comunicare serială cu telefonul mobil | | + | | Bluetooth HC-05 | RX, TX, D13| UART | Comunicare serială cu telefonul mobil | |
| Senzor sunet | D2 | Digital | Detectează zgomote sau bătăi | | | Senzor sunet | D2 | Digital | Detectează zgomote sau bătăi | | ||
| Buzzer | D3 | Digital | Emite avertizări sonore | | | Buzzer | D3 | Digital | Emite avertizări sonore | | ||
- | | Buton roșu | D4 | Digital | Control manual pentru cod de acces | | + | | Buton roșu | D5 | Digital | Control manual pentru cod de acces | |
- | | Buton verde | D5 | Digital | Confirmare acțiuni | | + | | Buton verde | D4 | Digital | Confirmare acțiuni | |
- | | Ventilator (motor DC) | D6 | PWM | Control prin tranzistor NPN, în funcție de temperatură | | + | |
| Senzor flacără IR | D8 | Digital | Detectează prezența flăcărilor | | | Senzor flacără IR | D8 | Digital | Detectează prezența flăcărilor | | ||
| Servomotor ușă | D9 | PWM | Deschide/închide automat ușa | | | Servomotor ușă | D9 | PWM | Deschide/închide automat ușa | | ||
| Servomotor fereastră | D10 | PWM | Închide geamul dacă senzorul detectează ploaie | | | Servomotor fereastră | D10 | PWM | Închide geamul dacă senzorul detectează ploaie | | ||
- | | Servomotor poartă | D11 | PWM | Controlează deschiderea porții sau barierei | | + | | Servomotor garaj | D11 | PWM | Controlează deschiderea barierei | |
| LED alb | D12 | Digital | Aprins automat în întuneric | | | LED alb | D12 | Digital | Aprins automat în întuneric | | ||
- | | LED roșu | D13 | Digital | Semnalizează stare critică sau alertă | | + | | LED roșu | D7 | Digital | Semnalizează stare critică sau alertă | |
Line 172: | Line 169: | ||
- | <note tip> | + | Proiectul este funcțional și include următoarele componente software: |
- | Descrierea codului aplicaţiei (firmware): | + | |
- | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | + | *Control acces pe bază de parolă Morse |
- | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | + | |
- | * algoritmi şi structuri pe care plănuiţi să le implementaţi | + | *Afișare informații pe ecran LCD (I2C) |
- | * (etapa 3) surse şi funcţii implementate | + | |
- | </note> | + | *Control servo-motoare (Timer1 și PWM manual) |
- | link github:https://github.com/razvang05/PM_project | + | |
+ | *Control LED automat în funcție de sunet și lumină | ||
+ | |||
+ | Detectare: | ||
+ | |||
+ | *Flacără (digital) | ||
+ | |||
+ | *Lumină (fotorezistor digital) | ||
+ | |||
+ | *Ploaie | ||
+ | |||
+ | *Umiditate sol | ||
+ | |||
+ | |||
+ | Interfață Bluetooth HC-05 prin UART + control cu aplicație MIT App Inventor | ||
+ | |||
+ | ** Utilizarea funcționalităților din laborator:** | ||
+ | |||
+ | | Funcționalitate | Modul | Observație | | ||
+ | | PWM și Timer | Servo (Timer1) | Servo deschidere ușă/geam/garaj | | ||
+ | | ADC | `read_adc()` | Senzori analogici (umiditate, ploaie, lumină) | | ||
+ | | UART | bluetooth.cpp | Comunicare HC-05 | | ||
+ | | GPIO direct | Parola, LED | Control LED, senzori, butoane | | ||
+ | | LCD I2C (soft) | lcd.cpp | Comunicare TWI prin registre | | ||
+ | |||
+ | **Calibrarea senzorilor:** | ||
+ | |||
+ | *Fotorezistor (lumină): prag = 500 (empiric în cameră întunecată/luminată) | ||
+ | |||
+ | *Umiditate sol: prag = 1000 (umiditate maximă simulată) | ||
+ | |||
+ | *Pluviometru (ploaie): prag = 100 (test cu apă picurată) | ||
+ | |||
+ | *Calibrarea s-a făcut prin afișarea valorilor ADC și stabilirea pragurilor. | ||
+ | |||
+ | **Motivația alegerii bibliotecilor:** | ||
+ | |||
+ | *Am evitat biblioteci externe și am folosit direct registre AVR pentru: | ||
+ | |||
+ | *Control precis | ||
+ | |||
+ | *Reducerea memoriei consumate | ||
+ | |||
+ | *Învățarea arhitecturii hardware | ||
+ | |||
+ | *Totuși, folosesc Arduino.h pentru compatibilitate cu PlatformIO și pentru String. | ||
+ | |||
+ | **Optimizări:** | ||
+ | |||
+ | *Separare cod în fișiere pentru claritate și mentenanță | ||
+ | |||
+ | *Eliminare biblioteci externe | ||
+ | |||
+ | *Utilizarea Timer1 direct în loc de Servo.h | ||
+ | |||
+ | *Folosirea String doar când e necesar, evitând alocări dinamice costisitoare | ||
+ | |||
+ | **Detalii tehnice firmware:** | ||
+ | |||
+ | *Mediu dezvoltare: PlatformIO + VSCode | ||
+ | |||
+ | *Compilator: avr-g++ | ||
+ | |||
+ | *Board: Arduino UNO (ATmega328P) | ||
+ | |||
+ | *Frecvență: 16 MHz (F_CPU) | ||
+ | |||
+ | *Interfață Bluetooth: UART (registri UBRR0, UCSR0X) | ||
+ | |||
+ | *LCD: I2C pe TWI (registri TWCR, TWDR, TWBR) | ||
+ | |||
+ | *Senzori analogici: ADC cu prescaler 64 | ||
+ | |||
+ | **Funcții și module implementate:** | ||
+ | |||
+ | *ParolaMorse() – citire Morse din butoane | ||
+ | |||
+ | *servo_set_angle_timer1() – PWM pe Timer1 | ||
+ | |||
+ | *pulse_servo_d11() – PWM manual | ||
+ | |||
+ | *generate_tone() – buzzer | ||
+ | |||
+ | *lcd_write_raw() – trimitere comenzi I2C | ||
+ | |||
+ | *read_adc() – citire valori analogice | ||
+ | |||
+ | *control_bluetooth() – interpretare comenzi BT | ||
+ | |||
+ | *control_led() – logica sunet/lumină | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | link github:https://github.com/razvang05/Smart_Home | ||
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
- | <note tip> | + | Link youtube: |
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | |
- | </note> | + | |
+ | {{:pm:prj2025:vstoica:1000203288.jpg?400|}} | ||
+ | |||
+ | https://youtube.com/shorts/M6zA6UMoJTA?feature=share | ||
===== Concluzii ===== | ===== Concluzii ===== | ||
===== Download ===== | ===== Download ===== | ||
- | <note warning> | + | link github: https://github.com/razvang05/Smart_Home |
- | 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**. | + | |
- | </note> | + | |
===== Jurnal ===== | ===== Jurnal ===== | ||
Line 204: | Line 291: | ||
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||
- | <note> | + | *Arduino UNO - https://docs.arduino.cc/resources/datasheets/A000066-datasheet.pdf |
- | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | + | *LCD 1602/I2C - https://www.waveshare.com/w/upload/4/4d/LCD1602_I2C_Module.pdf |
- | </note> | + | *Modul Bluetoot hHC-05-https://components101.com/sites/default/files/component_datasheet/HC-05%20Datasheet.pdf |
<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> | ||