Disco Lamp

Autor

Introducere

Acest proiect urmarește crearea unei “lampi” formate dintr-o serie de 2 leduri care vor lumina in pattern-uri diferite in functie de selectia utilizatorului remote, printr-un site hostat de catre arduino in reteaua locala sau prin comutarea starii ledurilor prin intermediul butoanelor fizice.

Descriere generală

Schema bloc:



Funcționalitate

Placuta arduino joaca rolul unui web server care hosteaza in reteaua locala un website de unde pot selecta ce pattern uri de culori doresc sa afisezi pe cele 2 leduri ale circuitului. De asemenea ledurile pot sa fie schimbate si din cele 2 butoane ale circutului, comutand intre 2 moduri de lumin hardcodate.

Hardware Design

Listă de piese

  • Arduino Uno
  • 2 LED-uri
  • 2 butoane
  • Ethernet Shield
  • Fire
  • Breadboard
  • 3 Rezistente 1k
  • o hartie

Schema circuit - EAGLE

Ca o nota de umor, in cadrul circuitului am folosit o bucata de hartie care nu apare in schema pentru ca ethernet shield-ul avea pini de conectare mult prea scurti iar placuta arduino se atingea de cea ethernet si faceau scurt. Din fericire am inginerit o solutie!

Software Design

Medii de dezvoltare folosite
  • Arduino IDE - pentru codul Arduino
  • Draw.io - pentru schema bloc
  • EAGLE - pentru schema circuitului
  • 192.168.0.102 - IP-ul la care este hostata pagina web
Biblioteci
  • Ethernet.h - pentru initializarea si utilizarea server-ului web
Descrierea Codului

Am initializat pinii pentru fiecare led si pentru butoane, led1 are pinii 9, 8, 7 iar led2 6, 5, 4, butoanele fiind pe pinii 2 si 3. Pinii 10, 11 si 12 sunt ocupati de catre ethernet shield. De asemenea am variabilele buttonState1 si buttonState2 ce tin minte starile butoanelor, originalState folosit pentru a tine minte starea precedenta a ledurilor ca sa schimb modurile definite pe butoane iar buttonPressed tine minte ce buton a fost apasat ultima data.

Functii
  • blink1 - functie utilizata pentru a comuta pe modul de pe primul buton, culorile propriu zise sunt setate in functia loop
  • blink2 - functie utilizata pentru a comuta pe modul de pe al 2-lea buton, culorile propriu zise sunt setate in functia loop
  • loop - in cazul in care au fost apasate vreunele dintre cele 2 butoane, ledurile sunt comutate pe diferite culori in functie de valoarea pe care variabila buttonPressed o reprezinta. Continuam prin a crea un ethernetClient care sa reprezinte pagina web, unde scriem pe rand string-uri ce reprezinta content HTML cat timp clientul este disponibil. Pentru a citi valorile date de catre utilizator in cadrul webpage-ului folosesc variabila readString ce preia toate datele caractere transmise de client catre server, urmand sa citesc valoarea setata de catre utilizator. Pentru a face diferenta dintre cele 2 led-uri ma folosesc de indicele unde apare setarea aleasa in interiorul string-ului readString, fiind date putine de citit, setarile pentru led-ul 1 vor incepe mereu de la pozitia 10 iar cele pentru led-ul 2 de la pozitia 15.
Observatii
  • Proiectarea a fost foarte interesanta, procesul de a crea un webserver local a fsot simplu la prima vedere insa din cauza nevoii de a utiliza string-uri pentru a scrie content-ul fiecarui client duce la o crestere considerabila a dificultatii in cazul in care doream sa creez un site mai complex.
  • O alta problema ar fi memoria limitata, care ajunge sa fie destul de usor consumanta daca doream sa introduc mai multe linii de content in interiorul site-ului, limitand considerabil ce functii ar putea avea pagina mea.
  • Un ultim aspect dificil este trimiterea datelor inapoi la server, metoda aleasa de mine de a citi fiecare caracter primit de la client este o metoda foarte ineficienta in cazul in care am un proiect mai complex, sau daca as dori sa primesc comenzi care nu sunt deja prestabilite.

Rezultate Obţinute

Videoclip de prezentare: https://youtu.be/QGCXBMD6xy8

Concluzii

Ca si experienta a fost un proiect fun care prin niste modificari in cadrul codului, ceva memorie in plus si posibile modificari ale circuitului sa poate fi extins la ceva mult mai utilizabil.

Download

arhiva cod: discolamp.zip

Jurnal

  • 24 Aprilie : alegerea temei proiectului
  • 27 Aprilie : Discutie cu laborantul
  • 15 Mai : Achizitionare componente
  • 26 Mai : Schema electrica EAGLE
  • 2 Iunie: Finalizare proiect + finalizare pagina wiki.

Bibliografie/Resurse

pm/prj2021/agrigore/discolamp.txt · Last modified: 2021/06/03 13:21 by stefan.chifan
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