Differences

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

Link to this comparison view

pm:prj2024:iotelea:gabriel.neagu1409 [2024/05/18 02:45]
gabriel.neagu1409 [Hardware Design]
pm:prj2024:iotelea:gabriel.neagu1409 [2024/05/27 18:32] (current)
gabriel.neagu1409 [Concluzii]
Line 28: Line 28:
 {{ :​pm:​prj2024:​iotelea:​schema2_nga.png?​800 |}} {{ :​pm:​prj2024:​iotelea:​schema2_nga.png?​800 |}}
 {{ :​pm:​prj2024:​iotelea:​circuit_nga.png?​800 |}} {{ :​pm:​prj2024:​iotelea:​circuit_nga.png?​800 |}}
- 
-//Este posibil ca in circuitul de pe breadboard sa mai apara modificari in aranjare pentru a fi mai accesibil// 
- 
-<note tip> 
-Aici puneţi tot ce ţine de hardware design: 
-  * diagrame de semnal ​ 
-  * rezultatele simulării 
-</​note>​ 
  
 ===== Software Design ===== ===== Software Design =====
 +Mediul de dezvoltare: ArduinoIDE + vscode(cu extensia de arduino de la Microsoft)
  
 +Librarii folosite: ​
 +  * LCD_I2C.h
 +  * dht.h
 +  * SPI.h
 +  * MFRC522.h
 +  * NewPing.h
  
-<note tip> +Functionalitate
-Descrierea codului aplicaţiei (firmware)+  * Functia **setup** initializeaza lcd-ul, cititorul ​de tag-uri si configureaza pinii pentru **INPUT** si **OUTPUT**(in cazul pinilor asociati butoanelor s-a folosit **INPUT_PULLUP** pentru a folosi rezistentele din microcontroller). Pentru a fi siguri ca pompa nu este alimentatase pune pinul asociat pe low. 
-  * mediu de dezvoltare ​(if any(e.g. AVR StudioCodeVisionAVR) +  * Functia **loop** urmareste 6 cicluri principale:​ 
-  * librării şi surse 3rd-party (e.gProcyon AVRlib) +     * **Setarea inaltimii rezervorului**:​ In acest pas se intra cand se porneste sistemul. Utilizatorul incrementeaza cu ajutorul butoanelor de //up// and //down// inaltimea in cm, primind feedback-ul pe lcdDaca butoanele sunt tinute apasate mai mult de 3 secunde pasul incrementarii/​decrementarii devine 10. Cand se apasa butonul //ok// se trece la urmatorul pas. Inaltimea nu va trece de pragurile de 2cm si 400cm, acestea fiind limitele senzorului ultrasonic
-  algoritmi şi structuri pe care plănuiţi să le implementaţi +     ​**Setarea nivelului minim**: In acest pas se regleaza nivelul minim al apei, nivelul la care ne dorim sa porneasca pompa. Functionalitatea este asemanatoare pasului precedente. Nivelul minim va fi intre valoarea 2 si inaltime. 
-  (etapa 3) surse şi funcţii implementate +     ​**Setarea nivelului maxim**: In acest pas se regleaza nivelul maxim al apei, nivelul la care ne dorim sa se opreasca pompa. Functionalitatea este asemanatoare cu pasii precedenti. Nivelul maxim va fi intre valoarea minima si inaltime. 
-</note+     * **Loop-ul sistemului**:​ In momentul in care parametrii sunt setati, incepe loop-ul propriu-zis. Se masoara distanta de la senzor la apa si se foloseste temperatura si umiditate pentru precizie. Nivelul apei este calculat scazand din inaltime distanta, aceste masuratori avand o frecventa de 0.5Hz. In cazul in care unul din praguri este atins, pompa este pornita sau oprita. In cazul in care sistemul nu mai este utilizat 30 de secunde, backlight-ul lcd-ului se opreste. Acesta porneste din nou daca se tine apasat oricare buton. Pe fiecare ciclu se verifica daca cititorul electromagnetic detecteaza tag-ul sau cartela asociata. Daca se detecteaza, sistemul trece in modul autorizat. 
- +     * **Modul autorizat**:​ In acest loop se intra dupa citirea cartelei sau a tag-ului asociat dispozitivului. In acest moment utilizatorul are 3 optiuni prin care poate naviga cu butoanele ​//up// si //down//, iar in cazul in care nu primeste input, sistemul iese din acest loop. Optiunile:  
-===== Rezultate Obţinute ===== +         * **Schimbarea pragurilor** -utilizatorul se intoarce la al 2-lea loop 
- +         * **Pornirea pompei** -> pompa este pornita si nu se mai tine cont de masuratori 
-<note tip+         * **Iesire mod autorizat** -sistemul revine in loop-ul principal ​ 
-Care au fost rezultatele obţinute în urma realizării proiectului vostru. +     * **Pompa pornita**: In acest loop se ajunge in cazul in care din modul autorizat se porneste pompaIn acest moment sistemul tine pompa pornita si se opreste in momentul in care primeste orice input de la butoane
-</​note>​+
  
 ===== Concluzii ===== ===== Concluzii =====
 +Acest proiect a fost o experienta interesanta in care am reusit sa gasesc o solutie pentru o problema pe care o am acasa. Am inteles cat de important este sa ai o planificare buna, in care sa ai fiecare feature destul de detaliat cat sa nu ajungi in situatii in care iti apar alte idei pe parcursul implementarii. De asemenea am realizat importanta QA, deoarece pompa care am considerat ca este cea mai usoara componenta de adaugat mi-a provocat cele mai mari probleme care ar fi putut fi evitate daca depistam problema mai devreme.
  
 +E posibil sa ma folosesc de acest proiect acasa, dar cu urmatoarele modificari: ​
 +  * Sistemul sa comande o pompa de fantana la 220
 +  * Renunt la partea de acces autorizat, mediul fiind unul privat
 +  * As realiza un suport care sa tina drept senzorul ultrasonic cu 2 cm mai sus de inaltimea bazinului pentru a imbunatatii precizia
 +  * As trata cu mai multa atentie limitele senzorului ultrasonic pentru a imbunatatii precizia.
 +  * As renunta la pini in favoare cositoririi pentru a minimiza problemele de conexiune
 +  * As folosi cabluri mai groase pentru a minimiza pierderea de tensiune pe ele si pentru a avea o rezistenta mai mare
 ===== Download ===== ===== Download =====
- +{{:pm:prj2024:iotelea:waterleveler.zip|}}
-<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**. +
-</​note>​ +
- +
-===== Jurnal ===== +
- +
-<note tip> +
-Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. +
-</​note>​+
  
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
  
-<​note>​ +  * [[https://​www.youtube.com/​watch?​v=aIO6KdzITzU&​ab_channel=EnjoyMechatronics|Tutorial RFID]] 
-Listă cu documente, datasheet-uri,​ resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. +  [[https://​www.youtube.com/​watch?​v=xVC0X_PE_XE&​t=130s&​ab_channel=techydiy|Tutorial LCD]] 
-</note> +  * [[https://​www.youtube.com/​watch?​v=6F1B_N6LuKw&​t=1s&​ab_channel=DroneBotWorkshop|Turorial HC-SR04]] 
 +  * [[https://​www.youtube.com/​watch?​v=oZ-oFY6TiPw&​t=10s&​ab_channel=CircuitBasics|Tutorial DHT11]]
 <​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/prj2024/iotelea/gabriel.neagu1409.1715989507.txt.gz · Last modified: 2024/05/18 02:45 by gabriel.neagu1409
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