This shows you the differences between two versions of the page.
pm:prj2021:agrigore:discolamp [2021/06/03 02:07] stefan.chifan |
pm:prj2021:agrigore:discolamp [2021/06/03 13:21] (current) stefan.chifan |
||
---|---|---|---|
Line 13: | Line 13: | ||
\\ | \\ | ||
==== Funcționalitate ==== | ==== Funcționalitate ==== | ||
- | Utilizatorul va putea selecta cu ajutorul butoanelor de pe breadboard sau prin controlul remote unul dintre metodele de luminare a lampii, lampa apoi va reda un pattern de lumini si culori in functie de dorinta utilizatorului. In cazul in care utilizatorul doreste crearea unui nou pattern, acesta poate face unul nou din controlul remote, urmand sa fie redat de catre lampa. | + | 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 ===== | ===== Hardware Design ===== | ||
==== Listă de piese ==== | ==== Listă de piese ==== | ||
* Arduino Uno | * Arduino Uno | ||
- | * LEDs | + | * 2 LED-uri |
- | * butoane | + | * 2 butoane |
- | * Sound Sensor | + | * Ethernet Shield |
* Fire | * Fire | ||
* Breadboard | * Breadboard | ||
- | * Rezistente | + | * 3 Rezistente 1k |
+ | * o hartie | ||
+ | |||
+ | === Schema circuit - EAGLE === | ||
+ | {{:pm:prj2021:agrigore:discolampeagle.jpg?200|}} | ||
+ | |||
+ | 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! | ||
+ | |||
+ | {{:pm:prj2021:agrigore:disco.jpg?500|}} | ||
===== Software Design ===== | ===== 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. | ||
- | ===== Rezultate Obţinute ===== | + | == 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 ===== | ===== Concluzii ===== | ||
- | ===== Download ===== | + | 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: {{:pm:prj2021:agrigore:discolamp.zip|}} | ||
===== Jurnal ===== | ===== Jurnal ===== | ||
- | 24 Aprilie : alegerea temei proiectului | + | * 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 ===== | ===== Bibliografie/Resurse ===== | ||
- | Documentația: <html><a class="media mediafile mf_pdf" href="?do=export_pdf">PDF</a></html> | + | * [[https://www.arduino.cc/en/Guide/ArduinoEthernetShield]] |
+ | * [[https://www.instructables.com/Arduino-Ethernet-Shield-Tutorial]] | ||
+ | * Laboratoare | ||
+ | PDF: <html><a class="media mediafile mf_pdf" href="?do=export_pdf">PDF</a></html> |