Lampa inteligenta cu control prin gesturi

Introducere

Proiectul constă în realizarea unei lămpi inteligente controlate prin gesturi și sunete. Scopul său este de a oferi o interacțiune modernă și intuitivă cu o sursă de lumină, ideală pentru mediul de acasă.

Lampa răspunde la mișcări ale mâinii: un gest de trecere laterală pornește sau oprește lumina, iar o mișcare verticală (sus/jos) reglează intensitatea acesteia. De asemenea, o bătaie din palme determină schimbarea automată a culorii sau a animației de culoare. Pentru un plus de funcționalitate, un ecran LCD afișează în timp real ora și temperatura ambientală, oferind un feedback vizual constant.

Proiectul este construit pe baza unui Arduino Nano și integrează mai mulți senzori – de gesturi, sunet și temperatură – pentru a transforma o lampă obișnuită într-un dispozitiv inteligent și adaptabil, potrivit pentru orice locuință modernă.

Descriere generală

Lampa se controlează fără butoane, doar prin:

Gesturi: Trecerea mâinii → pornește/oprește lumina | Menținerea mâinii → reglează intensitatea

Clapuri (sunet): 3 bătăi → mod schimbare culoare | Alte bătăi → schimbă culoarea

LCD: Afișează ora și luminozitatea lampei

Aprindere automată pe bază de lumină: Lampa se aprinde automat când fotorezistorul detectează întuneric.

Hardware Design

Aici se regăsesc toate elementele ce țin de proiectarea hardware: lista de componente, scheme electrice, diagrame de semnal și rezultate ale simulării.

Listă de piese

- HC-SR04 – Senzor ultrasonic (detectează gesturile mâinii)

- Microfon KY-038 – Senzor de sunet (detectează clapuri)

- Senzor de temperatură (LM35D ) – Măsurare temperatura

- DS1302 Real Time Clock with battery (CR2032 3V) – RTC ceas

- Banda de LED-uri WS2812 RGB – Afișează lumină colorată controlată digital

- Display LCD (opțional) – Afișează ora și temperatura

- Arduino Nano – Controlează toți senzorii și LED-urile

- Rezistență 330Ω – Protecție pentru semnalul de date al benzii de LED-uri

- Sursă de alimentare 5V 2A/3A – Alimentare stabilă pentru toate componentele

- Breadboard – Pentru conexiuni temporare și testare

- Fire Mama-Mama, Tata-Tata, Mama-Tata – Pentru conectarea componentelor

- Fotorezistor – Lampa se aprinde automat cand e intuneric

Schema

Pinii

Pin Arduino Conectat la Rol
D3 HC-SR04 (Trig) Declanșare ultrasonic
D2 HC-SR04 (Echo) Recepție ultrasonică
D7 DS1302 (CLK) Ceas RTC
D8 DS1302 (DAT) Comunicare date RTC
D9 DS1302 (RST) Reset RTC
D6 WS2812B LED Strip Semnal de control LED-uri
D5 KY-038 Semnal sunet
A1 Fotorezistor Analiza sursa lumina
A4 (SDA) LCD I2C Comunicare date LCD
A5 (SCL) LCD I2C Comunicare ceas LCD
5V, GND Toate modulele Alimentare

Consum energie

Calculul estimativ al consumului de energie pentru proiect:

▸ Banda LED WS2812B
  • Fiecare LED consumă aprox. 40 mA la culoare albă maximă (toate culorile activate)
  • 40 LED-uri × 40 mA = 1600 mA = 1.6 A
▸ Restul componentelor
  • HC-SR04 (senzor ultrasonic): ~15 mA
  • KY-038 (microfon): ~3–5 mA
  • Fotorezistor: ~0.1–0.2 mA
  • DS1302 (ceas RTC): ~1–2 mA (alimentat cu baterie CR2032)
  • LCD 1602 cu I2C: ~20 mA
  • Arduino Nano: ~30 mA (fără sarcină semnificativă pe pinii digitali)
▸ Total consum estimat
  • Fără banda LED: aprox. 70 mA
  • Cu banda LED activată la maxim: aprox. 1.7 A
⚠️ Observație: Banda LED este alimentată direct din sursa externă de 5V, nu prin regulatorul Arduino, deoarece acesta nu suportă curenți >500 mA.

BOM

Componentă Datasheet Link cumpărare
HC-SR04 https://cdn.sparkfun.com/datasheets/Sensors/Proximity/HCSR04.pdf https://sigmanortec.ro/Senzor-ultrasunete-HC-SR04-p125423514
KY-038 Microfon https://sensorkit.joy-it.net/en/sensors/ky-038 https://sigmanortec.ro/Modul-microfon-senzor-sunet-p126025149
LM35D https://www.ti.com/lit/ds/symlink/lm35.pdf https://www.optimusdigital.ro/ro/senzori/1469-senzor-de-temperatura-analogic-lm35d-to-92.html?search_query=LM35D&results=1
DS1302 RTC https://www.analog.com/media/en/technical-documentation/data-sheets/ds1302.pdf https://www.optimusdigital.ro/ro/toate-produsele/12988-modul-ceas-in-timp-real-ds1302-fara-baterie.html?search_query=ds1302&results=1
Banda LED WS2812 https://cdn-shop.adafruit.com/datasheets/WS2812.pdf https://sigmanortec.ro/Banda-LED-adresabila-RGB-WS2812-60led-m-IP67-10cm-p166125661
LCD 1602 + I2C Module https://www.waveshare.com/datasheet/LCD_en_PDF/LCD1602.pdf https://www.waveshare.com/datasheet/LCD_en_PDF/LCD1602.pdf
Arduino Nano (ATmega328) https://docs.arduino.cc/resources/datasheets/A000005-datasheet.pdf https://sigmanortec.ro/placa-dezvoltare-compatibila-arduino-nano-v30-atmega328p-au-ft232
Rezistență 330Ω https://www.vishay.com/docs/20035/dcrcwe3.pdf https://sigmanortec.ro/kit-rezistori-30-valori-20-bucati
Sursă alimentare 5V 2A https://www.farnell.com/datasheets/1701294.pdf -
Breadboard 400 https://www.farnell.com/datasheets/2622308.pdf https://sigmanortec.ro/Breadboard-400-puncte-p129872825
Fire Mama-Tata etc. - https://www.optimusdigital.ro/ro/fire-fire-mufate/92-fire-colorate-mama-tata-40p.html?search_query=fire+&results=428

Software Design

Stadiul actual al implementării

Implementarea componentelor hardware este funcțională, iar imaginea de mai sus reflectă configurația testată. Următoarele funcționalități au fost testate și validate cu succes:

Controlul prin gesturi

  • ➤ Mișcarea mâinii stânga-dreaptapornește/oprește lampa
  • ➤ Mișcarea mâinii sus-josreglează intensitatea luminozității

Modul de schimbare a culorii prin sunet

  • 3 bătăi din palme → activează modul de ciclu automat de culori
  • ➤ Bătăi ulterioare → schimbă culoarea manual

Afișaj informativ pe ecran LCD

  • ➤ Se afișează în timp real ora și data, preluate de la modulul RTC (DS1302)
  • ➤ Se afișează temperatura ambientală, măsurată cu senzorul LM35D

Conectivitate și alimentare

  • Toate componentele sunt conectate corect pe breadboard
  • Alimentarea este asigurată de o sursă de 5V 2A, suficientă pentru consumul întregului sistem

▸ Banda WS2812 consumă aproximativ 1.6A la luminozitate maximă

Librării utilizate

Librărie Rol De ce?
FastLED Control WS2812 performantă, suportă calibrare gamma & efecte simple
VirtualButton Gestionează click/hold pe distanță logică de “single-click / hold” fără debounce manual
LiquidCrystal_I2C LCD 1602 API prietenos, reduce pini față de 8-bit parallel
DS1302RTC Acces RTC wrapper ușor, conversie automată BCD ↔ dec
Wire I²C core standard Arduino

Elementul de noutate

  • Integrarea gesturilor pe un singur senzor ultrasonic cu filtrare mediană + exponentială.
  • Mod “color-mode” activat prin 3 clapuri – comută temporar logica într-un mod de schimbare rapidă a culorilor cu timeout hardware de 2 s.
  • Pulse-feedback (fade rapid) la confirmarea fiecărei acțiuni pentru un UX plăcut.

Legătura cu laboratoarele

Temă laborator Cum apare în proiect
Timere hardware (Lab 3) Timer1 în CTC ⇒ timeout color-mode (+ PWM fade)
Întreruperi externe PCINT2 pe microfon ⇒ detectare front sunet
ADC + senzori analogici FOtorezistor pe A1
I²C LCD pe bus comun, adresare multi-device
GPIO (digital I/O) HC-SR04, KY-038, WS2812B, DS1302

Calibrare senzori

Senzor Metodă calibrare Precizie obținută / Observații
HC-SR04 • Ignor semnalele > 40 cm ⇒ domeniu de lucru 5–40 cm stabil. ±0.5 cm între 5 cm și 40 cm
KY-038 • Prag hardware reglat cu şurubelniţa pe trimerul modulului până la ≈3× nivel zgomot ambiental. false-positive ≈ 0 în cameră liniștită; clapuri detectate de la ~1 m

Filtrare ultrasonică

// În loop():
int d = getDistance();    // 1️⃣ citire brută
d = filterMedian(d);      // 2️⃣ spike-killer (mediană pe 3 probe)
d = filterSkip(d);        // 3️⃣ ignoră salturi >40 cm / ecouri ratate
d = expFilter(d);         // 4️⃣ low-pass α = 0.25
// ---- filterMedian ----  (buffer circular + formulă mediană)
buf[idx] = v;                         // salvez noua citire
idx = (idx + 1) % 3;                  // rotim indexul (0-1-2)
return (max(b[0],b[1]) == max(b[1],b[2]))
             ? max(b[0],b[2])
             : max(b[1], min(b[0],b[2])); // mediana
// ---- filterSkip ----  (respinge salturi mari / 0 nevalid)
if (abs(prev - v) > 40 || v == 0) {          // >40 cm ori 0 ⇒ suspect
    if (++skip > 6) { prev = v; skip = 0; }  // accept după 6 confirmări
    else            { v = prev; }            // altfel păstrez valoarea veche
} else skip = 0;
// ---- expFilter ----
lamp.filt = (v>0)
        ? lamp.filt + ((v*16L - lamp.filt) >> 2)    // += α·(nou-vechi)
        : 0;                                        // semnal „0” ⇒ reset
return lamp.filt >> 4;                              // /16, back to int

Optimizari

* Filtrare în 3 paşi (median → skip-noise → exponential) pe distanţa ultrasonică ⇒ jitter ↓ ~70 %.

* Timer hardware pentru inactivitate în loc de `millis()` ⇒ încărcare CPU redusă.

* SmoothSetBrightness() – tranziţie în paşi mici, fără flicker vizibil.

Schelet

Proiect dezvoltat în Visual Studio Code + PlatformIO; tot codul sursă se află în directorul `src`.

└── src
    ├── main.cpp           # punct de intrare
    ├── DS1302.cpp         # implementare driver RTC
    ├── DS1302.h           # interfață DS1302
    └── VirtualButton.h    # click / hold pe distanță

Rezultate obţinute

  • Control gesturi perfect funcțional: timp mediu de reacție ≈ 120 ms.
  • Detectare clapuri robustă: 0 declanșări false în test 10 min / cameră liniștită; clap detectat la ≈1 m.
  • Reglare luminozitate 10–255 fără flicker vizibil.
  • Mod ciclu culori: 7 culori; schimb instant la o singură bătaie.
  • Afișaj LCD actualizat la 1 s fără glitch-uri.
  • Consumul total la white full-bright: ~1.68 A; idle (LED off) ~12 mA.

Concluzii

Proiectul dat a demonstrat o interacțiune intuitivă și modernă cu un sistem de iluminare folosind doar gesturi și sunet, fără butoane fizice. Prin integrarea mai multor senzori și utilizarea optimă a resurselor disponibile pe Arduino Nano, lampa poate fi controlată complet hands-free și oferă feedback vizual adaptiv (culoare, luminozitate, animații).

✔️ Controlul gesturilor este fiabil în intervalul 5–40 cm

✔️ Sistemul de detectare a clapurilor este stabil și configurabil (cu debounce și timeout hardware)

✔️ Luminozitatea este reglabilă fin, cu tranziții fluide (PWM)

✔️ Informațiile afișate (ora și temperatura) oferă utilitate în plus față de iluminat

Funcțiile implementate acoperă toate cerințele milestone-urilor hardware & software, iar proiectul este scalabil: poate fi extins cu Bluetooth, control WiFi sau integrare Home Assistant.

Download

Jurnal

Dată Activitate Status
29 apr Alegere temă + test componente de bază
05 mai Detectare gesturi cu HC-SR04 + filtrare
12 mai Detectare clapuri + timer hardware
12 mai Integrare FastLED + reglare luminozitate
16 mai Afișaj LCD + RTC (ora + temperatură)
29 mai Adaugare fotorezistor

Bibliografie/Resurse

pm/prj2025/ajipa/denis.iurciuc.txt · Last modified: 2025/05/30 08:13 by denis.iurciuc
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