This shows you the differences between two versions of the page.
pm:prj2024:vstoica:bogdan.sprincenatu [2024/05/05 22:38] bogdan.sprincenatu [Hardware Design] |
pm:prj2024:vstoica:bogdan.sprincenatu [2024/05/27 23:37] (current) bogdan.sprincenatu [Rezultate Obţinute] |
||
---|---|---|---|
Line 9: | Line 9: | ||
<note tip> | <note tip> | ||
- | O schemă bloc cu toate modulele proiectului vostru, atât software cât şi hardware însoţită de o descriere a acestora precum şi a modului în care interacţionează. | + | Cu ajutorul receptorului infraroșu putem sa dam comenzi de la telecomandă. Senzorul ultrasonic din tankul de apa o să verifice dacă e suficientă apă pentru paharul mare(din telecomandă putem selecta pahar mare/mic), în situația în care nu este un buzzer va emite un semnal cu un mesaj aferent afisat pe LCD, prin intermediul butoanelor CH- și CH+ de pe telecomandă vom putea selecta marimea paharului pe care vrem să il umplem. |
+ | Schema bloc: | ||
- | Exemplu de schemă bloc: http://www.robs-projects.com/mp3proj/newplayer.html | + | |
+ | |||
+ | {{:pm:prj2024:vstoica:bogdansprincenatu.png?200|}} | ||
</note> | </note> | ||
+ | Schema electrica | ||
+ | |||
+ | |||
+ | |||
+ | {{:pm:prj2024:vstoica:bogdan.jpeg?200|}} | ||
===== Hardware Design ===== | ===== Hardware Design ===== | ||
Line 32: | Line 40: | ||
<note tip> | <note tip> | ||
- | Descrierea codului aplicaţiei (firmware): | + | Acest cod implementează un sistem automat de dozare a apei, controlat prin telecomandă infraroșu și utilizând senzori cu ultrasunete pentru a detecta nivelul apei și prezența unui pahar. Codul este scris pentru un microcontroller Arduino și utilizează un display LCD pentru a afișa mesaje către utilizator. Iată o descriere detaliată a codului: |
- | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | + | |
- | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | + | |
- | * algoritmi şi structuri pe care plănuiţi să le implementaţi | + | |
- | * (etapa 3) surse şi funcţii implementate | + | |
- | </note> | + | |
- | ===== Rezultate Obţinute ===== | + | Biblioteci Incluse |
+ | - Wire.h: Utilizată pentru comunicarea I2C. | ||
+ | - LiquidCrystal_I2C.h: Controlul display-ului LCD prin I2C. | ||
+ | - IRremote.h: Pentru a citi semnalele de la telecomanda infraroșu. | ||
- | <note tip> | + | Definirea Componentelor |
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | - LiquidCrystal_I2C lcd(0x27, 16, 2): Inițializează display-ul LCD cu adresa I2C 0x27, având 16 coloane și 2 rânduri. |
- | </note> | + | - decode_results results: Structură pentru a stoca rezultatele decodării semnalului IR. |
+ | - Pinii de conexiune: | ||
+ | - IRPIN: Pinul pentru receptorul IR. | ||
+ | - TRIG_PIN1 și ECHO_PIN1: Pinii pentru senzorul de nivel al apei. | ||
+ | - TRIG_PIN2 și ECHO_PIN2: Pinii pentru senzorul de prezență a paharului. | ||
+ | - BUZZER_PIN: Pinul pentru buzzer. | ||
+ | - *RELAY_PIN*: Pinul pentru releu. | ||
+ | - Coduri pentru butoane IR: | ||
+ | - BUTTON_LEFT: Cod pentru butonul de alegere a paharului mic. | ||
+ | - BUTTON_RIGHT: Cod pentru butonul de alegere a paharului mare. | ||
+ | - BUTTON_OK: Cod pentru butonul de confirmare. | ||
+ | - Constante: | ||
+ | - MAX_WATER_LEVEL: Nivelul maxim de apă necesar. | ||
+ | - MIN_WATER_LEVEL: Nivelul minim de apă. | ||
+ | - MAX_GLASS_DISTANCE: Distanța maximă la care este detectat paharul. | ||
+ | - SMALL_GLASS și BIG_GLASS: Timpul de turnare pentru pahare mici și mari. | ||
- | ===== Concluzii ===== | + | Setup |
+ | - Inițializează LCD-ul și buzzer-ul. | ||
+ | - Configurează pinii pentru senzorii de ultrasunete, releu și receptorul IR. | ||
+ | - Pornește citirea semnalului IR și comunicarea serială. | ||
- | ===== Download ===== | + | Loop |
+ | - Afișează pe serial monitor distanțele citite de la senzorii de apă și pahar. | ||
+ | - Verifică dacă a fost primit un semnal IR: | ||
+ | - Decodifică și afișează codul IR primit. | ||
+ | - Pe baza codului, actualizează mesajul pe LCD și setează timpul de turnare corespunzător. | ||
+ | - La primirea butonului OK, verifică prezența paharului și nivelul apei: | ||
+ | - Dacă nu este pahar sau nu este apă suficientă, afișează mesajul corespunzător și emite un sunet de avertizare. | ||
+ | - Dacă sunt îndeplinite condițiile, începe procesul de turnare a apei. | ||
- | <note warning> | + | Funcții Auxiliare |
- | 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ă ;-). | + | - beep(): Emite un sunet de avertizare prin buzzer. |
+ | - pourWater(): Activează releul pentru a turna apă pentru timpul specificat și resetează variabila pourTime. | ||
+ | - isWater(): Verifică dacă nivelul apei este suficient. | ||
+ | - isGlass(): Verifică dacă este prezent un pahar. | ||
+ | - readWaterLevel(): Citește și returnează nivelul apei folosind senzorul cu ultrasunete. | ||
+ | - readGlassDistance(): Citește și returnează distanța până la pahar folosind senzorul cu ultrasunete. | ||
- | 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**. | + | Fluxul de Operare |
- | </note> | + | 1. Utilizatorul apasă un buton pe telecomandă pentru a selecta mărimea paharului. |
+ | 2. Codul IR este citit și interpretat. | ||
+ | 3. Când utilizatorul confirmă cu butonul OK: | ||
+ | - Sistemul verifică dacă există un pahar și dacă este suficientă apă. | ||
+ | - Dacă sunt îndeplinite condițiile, începe turnarea apei. | ||
+ | - Mesajele relevante sunt afișate pe LCD. | ||
- | ===== Jurnal ===== | + | Acest cod integrează funcționalitatea de citire a senzorilor, controlul releului pentru dozarea apei, și interfața cu utilizatorul prin intermediul unui display LCD și a unei telecomenzi IR. |
- | + | ||
- | <note tip> | + | |
- | Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. | + | |
</note> | </note> | ||
- | ===== Bibliografie/Resurse ===== | ||
- | <note> | + | ===== Download ===== |
- | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | + | |
+ | <note warning> | ||
+ | {{:pm:prj2024:vstoica:bogdan_sprincenatu_332cc.zip|}} | ||
</note> | </note> | ||
- | <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | + | |