Smart Green Lamp

  • Autor: Vlad-Alexandru Zincă
  • Grupa: 333CC

Introducere

Proiectul presupune crearea unei lămpi inteligente a cărei folosire să fie axată pe consumul eficient de energie.

Scopul proiectului este evident limitarea consumului de energie, într-o lume în care trecerea către energie regenerabilă se face oarecum lent. Este convingerea mea că fiecare mic consum de energie poate fi optimizat sau chiar limitat.

Ideea de la care am pornit este strâns legată de acest scop: pentru că recent a fost Ziua Pământului, m-am gândit la lucrurile mici pe care le pot face pentru planeta noastră, iar alegerea unui proiect verde, eco-friendly, poate fi unul dintre ele.

Consider că Smart Green Lamp este un proiect util, pentru că:

  • ar putea fi implementat la scară largă, inclusiv la nivel de oraș. Iluminatul stradal din România este destul de ineficient, și consumă multă electricitate chiar și atunci când nimeni nu este pe stradă. Un sistem bazat pe senzori de mișcare/distanță și folosirea orei de răsărit/apus ar putea schimba asta
  • dezvoltarea unui ceas digital care să reziste și să arate ora corectă peste luni, ani sau chiar zeci de ani este o provocare pentru mine, și aș vrea să îl fac cât mai durabil și robust posibil
  • aș putea să îi găsesc un loc și o utilitate inclusiv în propria casă

Știați că? La nivelul Uniunii Europene, orașele consumă ~20% din venitul lor pe iluminatul stradal. Folosirea unui sistem inteligent de iluminare ar putea reduce acest cost de 10 ori.

Descriere generală

  • Lampa inteligentă se aprinde la apus și se stinge la răsărit.
  • Ceasul digital arată ora curentă și data la care ne aflăm.
  • De asemenea, el este conectat la un senzor de distanță, și se activează doar în prezența unei persoane la mai puțin de 50 cm.
  • Suplimentar, Smart Green Lamp suportă comenzi precum “ON” pentru a aprinde lampa, “OFF” pentru a o stinge, “hh:mm:ss” pentru a seta ora, “dd/mm/yyyy” pentru a seta data sau “dd/mm/yyyy hh:mm:ss” pentru a seta atât ora, cât și data.

Hardware Design

Listă de piese:

  • Arduino UNO R3
  • display LCD 16×2 cu modul I2C integrat
  • modul RTC DS3231
  • senzor ultrasonic de distanță HC-SR04+
  • modul releu cu un canal
  • bec cu LED E27 / fasung / stecher
  • baterie VARTA 6F22 9V
  • breadboard
  • fire
  • stand de montaj

Schemă electrică

Software Design

Pentru a scrie codul, m-am folosit de Arduino IDE și de trei biblioteci: Wire, pentru modulul I2C, LiquidCrystal_I2C, pentru display-ul LCD, și RTClib, pentru modulul RTC.

Implementarea se bazează pe crearea unei baze de date cu orele de răsăsit și de apus din București calculate ca număr de minute de la miezul nopții (de exemplu, pentru a ține minte ora 7:51 se va memora 7 * 60 + 51 = 471). Acest fapt s-a realizat folosind keyword-ul PROGMEM, iar citirea elementelor din baza de date s-a făcut folosind funcția pgm_read_word_near().

Pentru a aprinde/stinge becul la apus/răsărit, Arduino verifică în loop() dacă ora curentă se află între ora de apus și de răsărit al zilei respective, și trimite un semnal către releu care pornește becul doar dacă acest lucru se întâmplă.

Pentru a arăta ora și data curentă, display-ul LCD comunică cu modulul RTC DS3231 de mare precizie și obține aceste date de la acesta. Acest lucru se facilitează în cod folosind un obiect de tip RTC_DS3231 și metoda acestuia now().

Și mai important, lumina de fond a afișajului LCD este activată sau dezactivată de aproprierea unei persoane, pentru a elimina consumul energetic inutil atunci când nimeni nu se află în preajmă.

Acest lucru este asigurat de către senzorul ultrasonic de măsurare a distanței HC-SR04+ care, atunci când cineva se apropie la o distanță mai mică de 50 cm, aprinde lumina de fond a ecranului LCD prin activarea metodei backlight(), și o stinge atunci când persoane se îndepărtează la o distanță mai mare de 50 cm, folosind metoda noBacklight().

În plus, Arduino ascultă pe interfața serială comenzi pentru aprinderea/stingerea lămpii inteligente, precum și pentru setarea orei și datei calendaristice.

Știați că? În momentul conectării codulul la Arduino, acesta preia data și timpul din calculatorul de pe care se încarcă codul și le transmite modulului RTC, folosind funcția rtc.adjust(DateTime(F(DATE), F(TIME))).

Rezultate Obţinute

Concluzii

“The true measure of a person's character lies not in the promises they make, but in the unwavering pursuit of facts they undertake to fulfill those promises.” - Socrates

No, really, e foarte ușor să spui că faci x sau y ca proiect la PM, e foarte greu să cumperi piesele, să te documentezi, să le pui cap la cap până când iese ceea ce trebuie.

Însă a fost o experiență foarte plăcută. Mult mai plăcută decât mă așteptam, recunosc. E ceva foarte satisfăcător în a face ceva complex din bucăți ceva mai simple cu propriile mâini. I like it.

Acum, mă uit la el când scriu rândurile astea, și sincer, chiar dacă sunt doar niște bucăți de plastic, pentru mine proiectul ăsta e mai mult decât atât. <3

Download

Jurnal

7 mai 2023: S-a creat pagina proiectului Smart Green Lamp, precum și documentația sa inițială, schema bloc și lista de piese necesare.

21 mai 2023: Am adăugat schema electrică și am conectat piesele conform acesteia.

27 mai 2023: S-a terminat implementarea codului proiectului folosind Arduino IDE.

29 mai 2023: S-au adăugat detaliile implementării software, poze cu rezultatul proiectului, precum și concluziile personale.

Bibliografie/Resurse

În implementarea soluției, am plecat de la acest video [1] care descrie cum un bec poate fi controlat folosind Arduino și un releu. Proiectul a evoluat considerabil, însă videoclipul a reprezentat un punct de plecare important.

[1] - https://www.youtube.com/watch?v=s9dsR_X92io

Export to PDF

pm/prj2023/dene/smart-green-lamp.txt · Last modified: 2023/05/29 22:43 by vlad.zinca
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