Dynamic Lights

Nume: Rosoga Ionut-Cristian
Grupa: 332CC

Introducere

Dynamic Lights este un simulator pentru jocurile de lumini pe care le fac masinile din ziua de azi atunci cand semnalizeaza sau se pornesc stopurile. In cadrul proiectului voi folosi o aplicatie android care va trimite comenzi catre placuta si aceasta v-a crea un joc de lumini atunci cand “masina se deschide”. In baza unui senzor de lumina se vor porni si stopurile.

Descriere generală

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.

Schema Bloc

Hardware Design

Componente

  • Arduino UNO
  • BreadBoard
  • Light Sensor
  • Bluetooth Module
  • LEDs
  • Shift Register
  • ServoMotor

Schema

Arduino

Shift Register

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.

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();

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 avarii. Pentru 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.

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).

Rezultate Obţinute

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

Cod sursa si apk aplicatie: https://github.com/RosogaIonut/proiectpm

Jurnal

  1. 7.05.2022: Achizitionare piese
  2. 17.05.2022: Creare pagina proiect: descriere, schema bloc
  3. 19-20.05.2022: Creare circuit in Thinkercad si schema circuit
  4. 21-05.2022: Asamblare componente
  5. 22-24.05.2022: Scriere cod pentru placuta
  6. 27.05.2022: Creare demo

Bibliografie/Resurse

pm/prj2022/ndrogeanu/dynamiclights.txt · Last modified: 2022/05/31 11:24 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