Differences

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

Link to this comparison view

pm:prj2022:ndrogeanu:dynamiclights [2022/05/08 12:29]
ionut.rosoga
pm:prj2022:ndrogeanu:dynamiclights [2022/05/31 11:24] (current)
ionut.rosoga [Software Design]
Line 1: Line 1:
 ====== Dynamic Lights ====== ====== Dynamic Lights ======
 +<note tip>
 +Nume: Rosoga Ionut-Cristian \\
 +Grupa: 332CC
 +</​note>​
 ===== Introducere ===== ===== Introducere =====
  
Line 8: Line 12:
 ===== Descriere generală ===== ===== Descriere generală =====
  
-Voi folosi in cadrul proiectului placuta arduino ce va fi conectata la teefon ​prin intremediul ​unui modul bluetooth. Pe un breadboard ​+Voi folosi in cadrul proiectului placuta arduino ce va fi conectata la telefon ​prin intermediul ​unui modul bluetooth. Pe un breadboard ​
 se vor afla led-urile conectate la un shift register. De asemenea, avem un senzor de lumina pentru controlul stopurilor. se vor afla led-urile conectate la un shift register. De asemenea, avem un senzor de lumina pentru controlul stopurilor.
  
Line 24: Line 28:
   * Shift Register   * Shift Register
   * ServoMotor   * ServoMotor
 +
 +==== Schema ====
 +== Arduino ==
 +{{:​pm:​prj2022:​ndrogeanu:​arduino_schema_1.png?​400|}}
 +
 +== Shift Register ==
 +{{:​pm:​prj2022:​ndrogeanu:​shift_register_schema_1.png?​400|}}
  
 ===== Software Design ===== ===== Software Design =====
  
 +Pentru a controla led-urile rosii am folosit un shift register in cadrul caruia folosesc shiftOut() pentru a controla led-urile ce se 
 +aprind la un moment dat. Placuta primeste o comanda de la telefon prin intermediul modulului bluetooth si executa pe baza acesteia o serie de instructiuni. De exemplu, atunci cand se trimite comanda de deblocare, led-urile galbene simuleaza niste avarii, led-urile rosii se aprind daca este lumina scazuta iar servomotorul se roteste pentru a simula deblocarea. Pentru servomotor am folosit libraria Servo.h. Modulul bluetooth comunica direct pe interfata seriala, iar senzorul de lumina foloseste o intrare analogica. Servomotorul este conectat la pinul digital 2, iar shift register-ul foloseste pinul 11 pentru data, pinul 12 pentru clock si pinul 13 pentru latch. Led-urile galbene sunt conectate direct la plaucta arduino folosind intrarile digitale 3-10. \\
 +Pentru aplicatia android am folosit MIT App Inventor si contine un buton pentru a ne conecta la placuta arduino, doua butoane prin care putem semnaliza stanga sau dreapta. Pentru a opri folosim butonul ce foloseste ca icon o mana ridicata. Avem un buton pentru deblocare si unul pentru blocare, un buton pentru a aprinde led-urile rosii si un buton pentru avarii care de asemenea se opreste folosind butonul "mana ridicata"​. Odata conectat, butonul devine un buton de deconectare. \\
  
-<note tip> +In **setup** setez pinii pentru led-urile galbene care sunt conectate direct la placuta Arduino ca OUTPUT folosind pinMode(); atasez pinul dedicat servomotorului folosind .attach(); setez pinii ce controleaza shift register-ul folosind pinMode()initializez interfata seriala; apelez functia updateShiftRegister(care trimite pattern-ul led-urilor, intial toate fiind 0; setez servomotorul la 180 grade folosind .write(); \\ 
-Descrierea codului aplicaţiei ​(firmware)+ 
-  * mediu de dezvoltare ​(if any) (e.g. AVR StudioCodeVisionAVR+In **loop** citesc valoarea senzorului de lumina, iar daca lumina este slaba, apelez functia redLightsAnimation care aprinde led-urile rosii pritr-o animatie folosind functia updateShiftregister(); iar in cazul in care lumina este puternica se apeleaza functia ce creaza animatia de inchidere lock_animation();​ Citesc comenzi ce vin de la modulul Bluetooth; daca primim '​1'​ simulam semnalizarea stanga cu un for si digitalWrite(),​ totul intr-un while care se opreste cand se primeste un '​5';​ similar pentru semnalizare dreapta si avariiPentru lock si unlock se primeste comanda respectiva si se apeleaza do_lock(respectiv do_unlock() in cadrul carora se apleaza functii de animatii si se roteste servomotroul. \\ 
-  librării şi surse 3rd-party (e.gProcyon AVRlib+ 
-  * algoritmi şi structuri ​pe care plănuiţi să le implementaţi +Pentru a simula lumina de semnalizare folosesc un for care seteaza pinii pe high succesiv. Pentru lumina de avarie folosesc 4 pini pentru a simula semnal stanga si 4 pini pentru a simula semnal dreapta. De asemenea, se foloseste un for specific. Atunci cand se da comanda de deblocare se apeleaza functia de avarii de 2 ori si functia de animatie pentru led-urile rosii (in cazul in care nu este lumina); se roteste servomotorul la 180 de grade. Atunci cand led-urile rosii trebuie sa se stinga se apleaza o functie create in acest sens care creaza o animatie ​(in cazul in care se da comanda de blocare sau se apasa butonul creat in acest sens)
-  * (etapa 3surse şi funcţii implementate +
-</​note>​+
  
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
  
-<note tip> +{{:​pm:​prj2022:​ndrogeanu:​img_3357.jpeg?​400|}} 
-Care au fost rezultatele obţinute în urma realizării proiectului vostru+{{:​pm:​prj2022:​ndrogeanu:​rosoga_photo_1.jpeg?400|}} 
-</note>+ 
 +Demo: [[https://​youtu.be/Bjd9k-jE7Q8]]
  
 ===== Concluzii ===== ===== Concluzii =====
 +Consider ca acest proiect ne forteaza sa fim creativi, sa facem ceva care sa aiba o functionalitate invatand in acelasi timp si parte de hardware si parte de software. \\
 +
 +Sunt mandru de rezultatul obtinut, functionalitatea proiectului este cea dorita.
  
 ===== Download ===== ===== Download =====
  
-<note warning>​ +Cod sursa si apk aplicatie[[https://github.com/​RosogaIonut/proiectpm]]
-O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectuluisurse, 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**. +
-</note>+
  
 ===== Jurnal ===== ===== Jurnal =====
  
-<note tip> +  - 7.05.2022: Achizitionare piese 
-Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect ​progresul proiectului+  - 17.05.2022: Creare pagina ​proiect: descriere, schema bloc 
-</​note>​+  - 19-20.05.2022: Creare circuit in Thinkercad si schema circuit 
 +  - 21-05.2022: Asamblare componente 
 +  - 22-24.05.2022:​ Scriere cod pentru placuta 
 +  - 27.05.2022: Creare demo
  
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
  
-<​note>​ +Shift Register: [[https://​circuits-diy.com/​74hc595-shift-register-works-interface-with-arduino-uno/​]] \\ 
-Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**+Led-uri: [[https://​ocw.cs.pub.ro/​courses/​pm/​lab/​lab0-2022]] \\ 
-</note>+Servo motor: [[https://​www.instructables.com/​Arduino-Servo-Motors/​]] \\ 
 +Bluetooth module and android App: [[https://​www.youtube.com/watch?​v=aQcJ4uHdQEA&​ab_channel=BINARYUPDATES]] \\
  
 <​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/ndrogeanu/dynamiclights.1652002151.txt.gz · Last modified: 2022/05/08 12:29 by ionut.rosoga
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