Table of Contents

FLOAREA NOPȚII - Lampă cu senzor de lumină

Introducere

Funcționalitate

Proiectul constă într-o floare inteligentă care reacționează la lumina ambientală. Pe măsură ce intensitatea luminii scade (ex. seara sau în spații întunecate), floarea se „deschide” automat cu ajutorul unui servomotor, iar un LED din interior se aprinde, transformând-o într-o lampă decorativă. Sistemul include un buton care permite utilizatorului să oprească manual LED-ul, chiar dacă senzorul de lumină ar indica altfel. Un ecran OLED afișează mesaje personalizate, contribuind la interactivitate.

Scop

Scopul proiectului este de a imita comportamentul natural al florii de noapte, transformându-l într-o aplicație practică și estetică. Floarea reacționează la lumina din mediu, aprinzând LED-ul și deschizând petalele odată cu lăsarea serii, oferind o soluție elegantă pentru iluminat ambiental automat.

Ideea inițială

Ideea proiectului mi-a venit inspirându-mă din comportamentul real al florilor nocturne. Inițial, voiam să creez o floare care doar să se deschidă cu ajutorul unui servomotor, dar pentru a adăuga utilitate și interactivitate, am decis să integrez un senzor de lumină, un led și un ecran OLED care oferă feedback vizual. Astfel, proiectul a evoluat într-o combinație între funcționalitate și natură.

Utilitate

Dispozitivul poate fi folosit ca lampă ambientală automată, decor inteligent sau proiect educațional. Este potrivit pentru camere de zi, dormitoare sau spații de relaxare, oferind un efect vizual plăcut și o experiență personalizată. În plus, integrează concepte de bază din electronică și programare, fiind ideal și pentru scopuri didactice.

Descriere generală

Aceasta este schema bloc care ilustrează interacțiunea dintre componentele proiectului:

Hardware Design

Componente necesare:

Descriere

OLED 0.96" I2C Display

Ecranul OLED utilizează protocolul I2C pentru a comunica cu Arduino-ul. Este conectat la pinii dedicați SDA și SCL ai plăcii.

OLED 0.96” PIN Arduino PIN
VCC 5V
GND GND
SDA A4
SCL A5
LED RGB KY-009 (cu rezistențe externe)

Fiecare culoare este controlată printr-un pin PWM. Anodul comun este conectat la 5V. Rezistențele recomandate sunt: R: 220 Ω (pusă) G & B: 100 Ω (puși)

RGB LED PIN Arduino PIN Resistor
R D11 220Ω
G D9 100Ω
B D10 100Ω
COM (Anode) 5V -
LDR Sensor (Modul de lumină)

Senzorul de lumină este conectat la un pin analogic al Arduino-ului. Acesta detectează nivelul de iluminare din mediu și oferă o valoare între 0–1023. Se folosește un divizor de tensiune sau modul gata făcut.

LDR Module PIN Arduino PIN
VCC 5V
GND GND
OUT A0
ServoMotor MG996R

Servomotorul este controlat prin semnal PWM de la Arduino. Deoarece consumă curent mare (până la 2A), este alimentat separat dintr-o sursă de 5V.

ServoMotor PIN Arduino PIN External Source
VCC - 5V (+)
GND GND GND (-)
PWM (signal) D7 -
Button (4 pini, tactil)

Butonul este conectat între un pin digital și GND. Se activează folosind INPUT_PULLUP pentru a evita folosirea unui rezistor extern de pull-down.

Button PIN Arduino PIN
1 (diagonal) D2
2 (diagonal) GND

Software Design

Mediu de dezvoltare

IDE: Arduino IDE 2.x Placă: Arduino UNO R3 (ATmega328P)

Librării & surse

Bibliotecă Rol
————————————— —————————————————–
`Servo.h` control PWM pentru servomotor (deschiderea petalelor)
`Wire.h` comunicare I²C
`Adafruit_GFX.h` + `Adafruit_SSD1306.h` afișare text/bitmap pe OLED 0 .96″

Algoritmi & structuri implementate

1. Mapare lumină → deschidere floare

`(LUX_BRIGHT - lux) / (LUX_BRIGHT - LUX_DARK)`, apoi se folosește `constrain(…)` pentru a o menține în interval.

2. Aprindere LED RGB în mai multe moduri

* Modurile se comută doar când floarea este deschisă. * Culoarea LED-ului în modul *party* se schimbă la fiecare `PARTY_STEP` ms.

3. Debounce buton
4. Afișare OLED sincronizată
5. Resetare stare la lumină
Funcții & roluri principale
Funcție Rol principal
——————–——————————————————————————
`setup()` Inițializează pinii, servo, OLED, LED, buton și mesajul de start
`loop()` Logica principală: senzor lumină, poziție servo, LED, OLED, buton
`show(…)` Afișează mesaj pe OLED doar dacă este diferit față de precedentul
`LEDoff()` Stinge complet LED-ul RGB
`LEDwhite()` Aprinde LED-ul cu alb (toate canalele la valoare maximă 255)
`LEDrgb(r,g,b)` Aprinde LED-ul cu o culoare specifică RGB

Pentru cod poti accesa Github - FloareaNoptii

Design 3D

Pentru construcția florii s-a utilizat o imprimantă 3D, care a permis imprimarea separată a fiecărei componente. Ulterior, acestea au fost asamblate pentru a forma mecanismul complet de deschidere al florii.

Am avut nevoie să printez:

Rezultate Obţinute

1.Floare închisă pe lumină

2.Deschidere graduală în penumbră

3.Floare complet deschisă pe întuneric

4.LED interior cu aprindere lină

5.Mesaj OLED corect

Concluzii

Proiectul simulează o floare care se deschide pe măsură ce se întunecă și se închide la lumină, folosind un senzor LDR și un servomotor controlat lin. LED-ul interior se aprinde treptat în funcție de întuneric, iar OLED-ul afișează mesaje diferite.

Sistemul funcționează stabil, reacționează natural și respectă toate cerințele propuse.