This shows you the differences between two versions of the page.
pm:prj2023:amocanu:coselectric [2023/05/07 18:44] david.mihalcenco |
pm:prj2023:amocanu:coselectric [2023/05/28 21:06] (current) david.mihalcenco |
||
---|---|---|---|
Line 18: | Line 18: | ||
{{ :pm:prj2023:amocanu:schema.jpg?600 |}} | {{ :pm:prj2023:amocanu:schema.jpg?600 |}} | ||
+ | |||
+ | |||
+ | {{ :pm:prj2023:amocanu:screenshot_2023-05-21_205005.jpg?600 |}} | ||
+ | |||
+ | |||
+ | {{ :pm:prj2023:amocanu:25ea800e-77c1-4054-93fd-c512277bb8bf.jpg?600 |}} | ||
</note> | </note> | ||
Line 30: | Line 36: | ||
- Cabluri | - Cabluri | ||
- Breadboard | - Breadboard | ||
- | * scheme electrice (se pot lua şi de pe Internet şi din datasheet-uri, e.g. http://www.captain.at/electronic-atmega16-mmc-schematic.png) | + | - Ecran LCD I2C |
- | * diagrame de semnal | + | |
- | * rezultatele simulării | + | |
</note> | </note> | ||
Line 40: | Line 44: | ||
<note tip> | <note tip> | ||
Descrierea codului aplicaţiei (firmware): | Descrierea codului aplicaţiei (firmware): | ||
- | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | + | * mediu de dezvoltare: Arduino IDE, PYTHON |
- | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | + | * librării şi surse 3rd-party : servo.h, LiquidCrystal_I2C, pyserial |
- | * algoritmi şi structuri pe care plănuiţi să le implementaţi | + | * Surse: |
- | * (etapa 3) surse şi funcţii implementate | + | |
+ | Servo.h: Aceasta este o bibliotecă pentru controlul servo-motoarelor. | ||
+ | |||
+ | LiquidCrystal_I2C.h: Aceasta este o bibliotecă pentru controlul afișajului LCD I2C. | ||
+ | |||
+ | Funcții implementate: | ||
+ | |||
+ | measureDistance(): Această funcție măsoară distanța utilizând senzorul ultrasunete. Ea configurează pini pentru emițătorul și receptorul ultrasunetelor, măsoară durata semnalului de întoarcere și calculează distanța în funcție de durată. | ||
+ | |||
+ | setup(): Această funcție este apelată o singură dată la pornirea sistemului. Ea inițializează comunicarea serială, atașează servo-motorul la pinul specificat, configurează pini pentru senzorul ultrasunete și afișajul LCD, închide capacul coșului de gunoi și inițializează LCD-ul. | ||
+ | |||
+ | loop(): Această funcție se execută într-un ciclu continuu. Ea verifică disponibilitatea datelor seriale primite, măsoară distanța utilizând temporizatorul sau fără temporizator în funcție de regimul selectat, deschide sau închide servo-motorul în funcție de distanța măsurată și timpul specificat, afișează mesaje pe afișajul LCD în funcție de distanța măsurată și întârzie pentru o perioadă de timp specificată. | ||
</note> | </note> | ||
Line 49: | Line 64: | ||
<note tip> | <note tip> | ||
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | Video : https://www.youtube.com/watch?v=g_FRvaLFFSU |
+ | {{ :pm:prj2023:amocanu:cosul_electric.jpeg?600 |}} | ||
</note> | </note> | ||
===== Concluzii ===== | ===== Concluzii ===== | ||
+ | Aparatul utilizează un senzor ultrasunete pentru a măsura distanța până la obiectele din fața lui și un servo-motor pentru a deschide și închide capacul coșului de gunoi. | ||
+ | |||
+ | În funcție de valoarea distanței măsurate de senzorul ultrasunete, se iau decizii referitoare la deschiderea sau închiderea capacului coșului de gunoi: | ||
+ | |||
+ | Dacă sistemul este în regimul "1" (isFirst = 1), atunci se măsoară distanța la intervale regulate folosind un temporizator. Dacă distanța măsurată este mai mică de 10 cm, servo-motorul este atașat și deschide capacul treptat pe parcursul unei perioade de timp specificate de servoOpenTime (3000 milisecunde în acest caz). Dacă timpul de deschidere a expirat sau distanța măsurată este mai mare sau egală cu 10 cm, servo-motorul este dezasociat și capacul rămâne închis. | ||
+ | |||
+ | Dacă sistemul nu este în regimul "1" (isFirst = 0), atunci distanța este măsurată fără a utiliza temporizatorul. Dacă distanța măsurată este mai mică de 10 cm și nu există un temporizator în desfășurare (need_timer = false), servo-motorul este atașat și deschide capacul imediat. De asemenea, temporizatorul este pornit (need_timer = true) pentru a se asigura că servo-motorul nu rămâne deschis pentru o perioadă prea lungă de timp. Capacul rămâne deschis până când temporizatorul expiră și apoi servo-motorul este dezasociat. | ||
+ | |||
+ | De asemenea, codul utilizează o librărie LiquidCrystal_I2C pentru a afișa mesaje pe un afișaj LCD I2C. În funcție de distanța măsurată de senzorul ultrasunete, mesajul "Sunt Plin" sau "Sunt Gol" este afișat pe afișaj. | ||
+ | |||
+ | În concluzie, acest cod combină utilizarea unui senzor ultrasunete, unui servo-motor și unui afișaj LCD I2C pentru a crea un sistem automat de coș de gunoi care deschide și închide capacul în funcție de distanța față de obiectele din fața sa și afișează un mesaj corespunzător pe afișajul LCD. | ||
===== Download ===== | ===== Download ===== | ||
<note warning> | <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ă ;-). | + | Arhiva : {{:pm:prj2023:amocanu:cosul_de_gunoi.zip|}} |
- | + | ||
- | 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> | </note> | ||
Line 65: | Line 90: | ||
<note tip> | <note tip> | ||
- | Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. | + | → Am primit piesele (1 mai 2023) |
+ | |||
+ | → Am realizat cablajul (10 mai 2023) | ||
+ | |||
+ | → Scriu cod pentru dispozitiv (24 mai 2023) | ||
+ | |||
+ | → Asamblez tot in cosul de gunoi (25-28 mai 2023) | ||
</note> | </note> | ||