Smart Lamp - Savu Paul Cristian
Introducere
Proiectul consta intr-o lampa inteligenta care are 6 moduri:
LED-urile isi ajusteaza automat intensitatea in functie de lumina ambientala
LED-urile pornesc doar atunci cand cineva se afla in apropiere
LED-urile lumineaza formand un curcubeu in miscare
LED-urile isi regleaza culoarea in functie de temperatura din camera
LED-urile imita un semnal sinusoidal
LED-urile sunt oprite
Independent de aceste doua moduri, lampa va avea senzori de temperatura si umiditate, detectand valorile acestora si afisandu-le pe un ecran LCD. In plus, daca temperatura sau umiditatea sar de un anumit prag, lampa va semnaliza acest lucru prin declansarea unui sunet emis de un buzzer si pornirea unui ventilator.
Scopul este nu numai de uz casnic, dar si de informare cu privire la calitatea aerului/temperaturii din camera.
Descriere generală
Asa cum este ilustrat in imaginea de mai sus, placa Arduino este elementrul central al proiectului. Toate componentele din schema sunt conectate la placa, functionand la o tensiune de 5V, iar sursa de alimentare este externa, prin cablul USB.
Componente de intrare
Buton – Permite utilizatorului să comute între două moduri de funcționare (iluminare în funcție de proximitate sau de lumina ambientală).
Senzor ultrasonic – Măsoară distanța pentru a aprinde banda de LED-uri când cineva se apropie.
Senzor de temperatură și umiditate – Trimite date către Arduino pentru a fi afișate pe ecran și pentru a declanșa ventilatorul sau buzzer-ul în cazul in care temperatura depaseste un anumit prag.
LDR – Senzor ce detecteaza gradul de intensitate al luminii ambientale.
Componente de iesire
LCD (I2C) – Afișează temperatura, umiditatea si ofera feedback despre calitatea aerului.
Buzzer – Emite un semnal sonor în cazul în care temperatura depășește o limită predefinită.
Banda LED-uri WS2812 – Este folosită pentru iluminare, iar intensitatea și culoarea pot fi controlate în funcție de mod și senzori.
Ventilator – Se activează automat când temperatura este prea mare.
Hardware Design
Schema Electrica
Schema difera de circuitul fizic prin amplasamentul catorva pini (pentru a evita suprapunerea liniilor pe schema electrica), precum si prin faptul ca senzorul din schema este doar de temperatura (avand 3 pini), iar cel din circuitul fizic este atat de temperatura, cat si de umiditate (avand 4 pini).
De asemenea, banda WS2812 contine 30 de LED-uri in circuitul fizic, spre deosebire de cea cu 20 de LED-uri din schema electrica.
Conexiuni pini
Pin Arduino | Componentă conectată | Tip pin |
2 | Buton | Digital |
6 | Bandă LED WS2812 | Digital |
7 | Senzor DHT11 (temperatură si umiditate) | Digital |
9 | Trigger (Ultrasonic) | Digital |
10 | Echo (Ultrasonic) | Digital |
11 | Buzzer | Digital |
12 | Ventilator (prin MOSFET) | Digital |
A0 | LDR (fotorezistenta) | Analogic |
A4 | SDA (LCD) | Analogic |
A5 | SCL (LCD) | Analogic |
Lista piese
In poza de mai sus se poate observa circuitul fizic complet in care se pot vedea LED-urile de culoare alba aprinse, precum si LCD-ul functional.
Software Design
Mediu de dezvoltare: Arduino IDE
Librarii folosite:
Adafruit_NeoPixel.h - WS2812 LED strip
LiquidCrystal_I2C.h - Afisaj LCD I2C
Wire.h - comunicarea I2C
DHT.h - Senzor de temperatura si umiditate DHT11
Lampa are 5 moduri intre care se poate comuta la apasarea unui buton. Trecerea de la un mod la altul este liniara (0 → 1 → 2 → 3 → 4 → 0), iar cele 5 moduri sunt:
mode_0 (Automatic Intensity Mode): LED-urile sunt setate pe culoarea alba si isi regleaza intensitatea in functie de lumina ambientala captata de LDR. Am realizat niste preprocesari ale intensitatii LED-urilor astfel incat sa fie cat mai vizibila si lina schimbarea intensitatii.
mode_1 (Detection Mode): LED-urile lumineaza doar daca senzorul ultrasunet detecteaza ceva in apropiere (la 50 cm distanta). Acestea se sting in momentul in care senzorul nu mai capteaza undele inapoi (adica obiectul din raza de 50 cm dispare).
mode_2 (Rainbow Mode): Modul Rainbow, in care LED-urile lumineaza formand in curcubeu animat. Acestea isi schimba culoarea continuu pentru a genera un gradient colorat in miscare.
mode_3 (Temperature to Colour): Pentru acest mod, se inregistreaza temperatura initiala la pornirea lampii cu ajutorul senzorului DHT11. Initial, LED-urile sunt de culoare mov (128, 0, 128), iar cantitatea de rosu, respectiv albastru, se regleaza in functie de diferenta dintre temperatura curenta si cea initial inregistrata. Astfel, daca in camera a crescut temperatura, atunci LED-urile isi vor schimba culoarea catre rosu, ajungand la un rosu intens. In schimb, daca a scazut temperatura, atunci LED-urile isi vor schimba culoarea catre albastru, ajungand la un albastru intens.
mode_4 (Breeze Mode): Modul breeze este un efect in care cele 30 de LED-uri imita un semnal sinusoidal, fiind setate pe culoarea albastru.
mode_5 (Off Mode): LED-urile sunt oprite.
Rezultate Obţinute
Concluzii
A fost un proiect de pe urma caruia am invatat si am acoperit foarte multe goluri pe care le aveam. A necesitat destul de mult efort, dar a fost un proces chiar foarte placut. In plus, a fost foarte satisfacator sa vad rezultatele in urma realizarii circuitului si codului 🥳
Bibliografie/Resurse
Resurse Hardware
Resurse Software