Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2022:apredescu:smart_curtain [2022/05/19 22:29]
stefan.dumitriu [Software Design]
pm:prj2022:apredescu:smart_curtain [2022/05/27 17:34] (current)
stefan.dumitriu [Jurnal]
Line 6: Line 6:
 ===== Descriere generală ===== ===== Descriere generală =====
 **Mod functionare**\\ **Mod functionare**\\
-Sistemul va avea doua moduri, ce vor putea fi selectate din telecomanda,​ by default acesta va fi automat, unde in functie de reglarea potentiometrului de pe senzorul digital ​de lumina, motorul va incepe sa deschida jaluzelele cand valoarea e (s-a trecut de pragul de lumina, este zi), iar in momentul in care se trece sub prag, acestea se vor inchide din nou (voi exemplifica in cadrul proiectului cu o lumina artificiala,​ fiind mai usor de demonstrat functionalitatea).\\ +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 ​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 ​un mod de setupunde motorul ​va efectua o cursa completa stanga-dreapta ​pentru a ma asigura ca jaluzeaua se afla in pozitia ​initiala.\\+Pentru a trata cazul unei intreruperi,​ se va efectua ​o rutina ​de initializare a motoruluicare 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.\\ 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**\\ **Schema Bloc**\\
-{{ :​pm:​prj2022:​apredescu:​schema_bloc_pm.jpg |}}+{{ :​pm:​prj2022:​apredescu:​smart_curtain_schema_bloc.jpg?500 |}}
  
 ===== Hardware Design ===== ===== Hardware Design =====
Line 16: Line 17:
 **Lista de piese** **Lista de piese**
   * Arduino Uno   * Arduino Uno
-  * Senzor de lumina ​digital +  * Senzor de lumina ​ambientala (I2C) 
-  * Motor Stepper ​5V + Driver Motor ULN2003 +  * Motor Stepper + Driver Motor ULN2003 
-  * Sursa alimentare + Adaptor ​(pentru ​motor)+  * Sursa alimentare ​12V regulator de tensiune ​(pentru ​iesire 5V catre Arduino)
   * Senzor IR   * Senzor IR
   * Telecomanda   * Telecomanda
 +  * Ecran LCD (pentru feedback + afisarea nivelului de lumina) + driver I2C
   * Breadboard, fire, rezistente   * Breadboard, fire, rezistente
   * Carcasa pentru Motor (Printata 3D)   * Carcasa pentru Motor (Printata 3D)
Line 26: Line 28:
 \\ \\
 **Schema TinkerCAD**\\ **Schema TinkerCAD**\\
-{{ :​pm:​prj2022:​apredescu:​smart_curtain_tinkercad.jpg?500 |}}+{{ :​pm:​prj2022:​apredescu:​smart_curtain_tinkercad_v2.jpg?500 |}}
 \\ \\
 **Schema electrica**\\ **Schema electrica**\\
-{{ :​pm:​prj2022:​apredescu:​smart_curtain_schema_electrica.jpg?500 |}}+{{ :​pm:​prj2022:​apredescu:​smart_curtain_schema_electrica_v2.jpg?500 |}} 
 +\\ 
 +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)**\\ **Carcasa de motor (se poate monta pe un perete)**\\
Line 43: Line 48:
   * biblioteca EEPROM pentru citire/​scriere in memoria ne-volatila a uC-ului.   * 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 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 == == Functii implementate ==
  
-In functia de setup a programului initializez pinii si modurile lor, deschid interfata Seriala + ascultarea comenzilor primite de la telecomanda,​ initalizez variabilele globale si apelez o rutina de initializare, ce are codul urmator: +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).\\ 
-<code java> +\\ 
-void initRoutine() { +In functia de loop am doua functii principale: 
-  ​byte eepromIsOpen = EEPROM.read(0); +  ​* Functia ce interpreteaza o comanda primita de la telecomanda 
-  ​if (!eepromIsOpen+  * Functia ce schimba ​(daca este nevoiestarea jaluzelei daca este in modul automat si daca sunt indeplinite conditiile necesare (inchisa - noaptedeschisa - zi) 
-    ​rotateCW_full()+\\ 
-+Drept functii auxiliare am: 
-</code java> +  ​* 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 ===== ===== Rezultate Obţinute =====
  
-<note tip> +== Exterior - carcasa sistem == 
-Care au fost rezultatele obţinute în urma realizării proiectului vostru+{{ :​pm:​prj2022:​apredescu:​smart_curtain_exterior_carcasa.jpeg? 500 |}} 
-</​note>​+  * Stanga - Ecran LCD 
 +  * Centru - Senzor IR 
 +  * Dreapta - Senzor lumina 
 +\\ 
 +== Interior - carcasa sistem == 
 +{{ :​pm:​prj2022:​apredescu:​smart_curtain_interior_carcasa.jpeg?​ 500 |}} 
 +  * Sursa 12V 
 +  * Arduino 
 +  * Breadboard 
 +  * Divizor tensiune 
 +  * Driver motor stepper
  
-===== Concluzii =====+== Montaj Motor == 
 +{{ :​pm:​prj2022:​apredescu:​smart_curtain_ansamblu_sistem.jpeg?​ 300 |}}
  
-===== Download =====+== Ansamblu ​== 
 +{{ :​pm:​prj2022:​apredescu:​smart_curtain_motor.jpeg?​ 600 |}}
  
-<note warning> 
-O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului:​ surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-). 
  
-Fişierele se încarcă pe wiki folosind facilitatea **Add Images or other files**. Namespace-ul în care se încarcă fişierele este de tipul **:pm:​prj20??:​c?​** sau **:​pm:​prj20??:​c?:​nume_student** (dacă este cazul)**Exemplu:​** Dumitru Alin, 331CC -> **:​pm:​prj2009:​cc:​dumitru_alin**. +===== Download ===== 
-</​note>​+ 
 +[[https://github.com/​stefandumitriu/​smart-curtains-arduino|Link github proiect]]
  
 ===== Jurnal ===== ===== Jurnal =====
Line 78: Line 98:
   * 11.05 - Descriere mod de functionare   * 11.05 - Descriere mod de functionare
   * 19.05 - Schema electrica + schema TinkerCAD + poze obiecte printate 3D   * 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 ===== ===== Bibliografie/​Resurse =====
  
-<​note>​ +Link-uri Internet:  
-Listă cu documente, datasheet-uri, resurse ​Internet ​folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. +  ​[[https://​arduinogetstarted.com/​tutorials/​arduino-lcd-i2c| Tutorial LCD I2C]] 
-</note>+  ​[[https://​create.arduino.cc/​projecthub/​infoelectorials/​project-017-arduino-bh1750-light-sensor-project-640075| Tutorial Senzor Lumina]] 
 +  ​[[https://​github.com/​Arduino-IRremote/​Arduino-IRremote| Repo biblioteca IRremote (Docs)]] 
 +  * [[https://​create.arduino.cc/​projecthub/​debanshudas23/​getting-started-with-stepper-motor-28byj-48-3de8c9| Tutorial motor stepper]]
  
 <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​ <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​
  
pm/prj2022/apredescu/smart_curtain.1652988586.txt.gz · Last modified: 2022/05/19 22:29 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