Smart Curtain

Introducere

Proiectul consta in implementarea unui sistem automatizat si motorizat pentru jaluzelele clasice, in functie de nivelul luminii exterioare, astfel tinandu-se inchise noaptea (cand intensitatea luminii este scazuta) si deschizandu-se dimineata. Pe langa modul automat de actionare, comandat de valoarea citita de senzorul de lumina, sistemul pune la dispozitie si un mod manual de reglare a jaluzelelor printr-o telecomanda.

Descriere generală

Mod functionare
Sistemul va avea doua moduri, ce vor putea fi selectate din telecomanda, by default acesta va fi automat, unde in functie de valoarea pragului de lumina mentionat in codul placutei, motorul va incepe sa deschida jaluzelele cand valoarea transmisa de senzorul ambiental e peste prag (deci s-a facut zi, este multa lumina afara), iar in momentul in care se trece sub prag, acestea se vor inchide din nou (voi exemplifica in cadrul proiectului cu o lumina artificiala, puternica, de la flash-ul telefonului, fiind mai usor de demonstrat functionalitatea).
Pentru a trata cazul unei intreruperi, se va efectua o rutina de initializare a motorului, care va citi un byte de pe memoria EEPROM (pe care il updatez de fiecare data cand deschid jaluzeaua) pentru a vedea daca ultima oara era deschisa, pentru a o aduce in pozitia default (inchisa).
In modul manual, utilizatorul va putea controla pozitia jaluzelei prin actionarea a doua butoane pe telecomanda.
De asemenea am si un mod de setup de unde pot alege daca vreau sa fiu in modul automat sau in cel manual (cu feedback pe ecranul LCD)
Schema Bloc

Hardware Design

Lista de piese

  • Arduino Uno
  • Senzor de lumina ambientala (I2C)
  • Motor Stepper + Driver Motor ULN2003
  • Sursa alimentare 12V + regulator de tensiune (pentru iesire 5V catre Arduino)
  • Senzor IR
  • Telecomanda
  • Ecran LCD (pentru feedback + afisarea nivelului de lumina) + driver I2C
  • Breadboard, fire, rezistente
  • Carcasa pentru Motor (Printata 3D)
  • Roata conectoare brat motor-snur jaluzea (Printata 3D)


Schema TinkerCAD

Schema electrica

Se poate observa prezenta a doua rezistente de pull-up pe magistralele SDA si SCL, acest lucru este datorat prezentei a doua dispozitive I2C care sunt conectate la aceeasi doi pini ai dispozitivului arduino (Senzorul de lumina + Ecranul LCD). Este nevoie de acestea pentru a reusi sa opresc interferentele intre cele doua si a nu avea probleme la nivelul HIGH al semnalului pe cele doua bus-uri.

Carcasa de motor (se poate monta pe un perete)
Roata pentru motor (reliefata pentru potrivirea cu snurul)

Software Design

Mediu dezvoltare + biblioteci third-party

Proiectul a fost realizat in AVR Studio, am folosit:

  • biblioteca EEPROM pentru citire/scriere in memoria ne-volatila a uC-ului.
  • biblioteca IRremote pentru interpretarea input-ului primit de la telecomanda prin receptorul IR
  • biblioteca BH1750, pentru comunicarea cu senzorul de lumina
  • biblioteca LiquidCrystal_I2C, pentru comunicarea cu ecranul LCD
  • biblioteca Wire, pentru detectarea celor doua adrese ale dispozitivelor I2C
Functii implementate

In functia de setup a programului initializez pinii si modurile lor, initializez comunicarea cu dispozitivele I2C, deschid interfata Seriala + ascultarea comenzilor primite de la telecomanda, initalizez variabilele globale si apelez o rutina de initializare: functie ce verifica daca in momentul inchiderii sistemului jaluzeaua era deschisa, pentru a o inchide (pozitia default).

In functia de loop am doua functii principale:

  • Functia ce interpreteaza o comanda primita de la telecomanda
  • Functia ce schimba (daca este nevoie) starea jaluzelei daca este in modul automat si daca sunt indeplinite conditiile necesare (inchisa - noapte; deschisa - zi)


Drept functii auxiliare am:

  • O functie ce opreste motorul (pentru a nu se supraincalzi in idle)
  • Doua functii pentru rotatia motorului (CW/CCW), ce primesc ca parametru numarul de pasi pe care sa ii execute motorul
  • O functie pentru cautarea adreselor dispozitivelor I2C conectate la Arduino

Rezultate Obţinute

Exterior - carcasa sistem

  • Stanga - Ecran LCD
  • Centru - Senzor IR
  • Dreapta - Senzor lumina


Interior - carcasa sistem

  • Sursa 12V
  • Arduino
  • Breadboard
  • Divizor tensiune
  • Driver motor stepper
Montaj Motor

Ansamblu

Download

Jurnal

  • 02.05 - Pagina wiki
  • 05.05 - Completat Introducere + Schema bloc + piese
  • 11.05 - Descriere mod de functionare
  • 19.05 - Schema electrica + schema TinkerCAD + poze obiecte printate 3D
  • 19.05 - Descriere partiala - software design
  • 24.05 - Modificarea componentelor din proiect (Senzor de lumina digital → Senzor I2C + Adaugarea ecranului LCD)
  • 27.05 - Adaugare poze cu rezultatele obtinute

Bibliografie/Resurse

pm/prj2022/apredescu/smart_curtain.txt · Last modified: 2022/05/27 17:34 by stefan.dumitriu
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