This is an old revision of the document!


Card Dealer

Autor: Andrei Pîrlea
Grupa: 332CA

Introducere

Acest proiect constă în realizarea unui dealer de cărți.

De ce un dealer de cărți și nu altceva? Pentru că mi se pare util și diferit de celelalte proiecte.

Din punct de vedere tehnic, acesta implică:

  • utilizarea unui microcontroler Arduino Uno pentru controlul componentelor
  • integrarea unui motor stepper pentru controlul rotației
  • folosirea unui motor DC pentru lansarea cărților

Descriere generală

Componente

  • Arduino Mega
  • Nema17 - Stepper Motor
  • TMC2209 - Motor Driver
  • Type-C Trigger Board
  • DC Motor
  • L293D - Motor Driver
  • Telecomandă IR
  • Modul Receptor IR KY-022
  • Ecran
  • Modul DC-DC LM2596

Mod de funcționare

  • Utilizatorul selectează numărul de participanți și alte opțiuni folosind o telecomandă cu senzor IR.
  • Sistemul primește comenzile de la telecomandă și interpretează codurile IR pentru a controla fluxul aplicației.
  • Arduino Uno trimite driverului numarul de pași care trebuie făcuți de motor pentru pozitia fiecărui jucator aflat la joc.
  • Dupa poziționarea dorită se rotește motorul DC pentru a lansa o carte, iar apoi se repetă punctul anterior.

Hardware Design

Utilizare PINI :

  • Arduino Mega:
    • D3, D4, D6, D7 - pini digitali pentru controlul driverului TMC2209
    • D32 - pin digital conectaț la receptorul IR
    • D10, D11, D12 - pini digitali conectați la L293D pentru controlul motorului DC
    • D20, D21 - pinii SDA și SCL conectați la LCD
    • 5V, GND - pentru alimentare și ground
  • TMC2209:
    • STEP, DIR, EN - semnale de control din Arduino Mega
    • VIO, GND, VM - alimentare logică și pentru motor
    • A+, A-, B+, B- - ieșiri către motorul Nema17
  • Nema17:
    • Conectat la ieșirile driverului TMC2209 (A și B)
  • L293D:
    • IN1, IN2, EN - controlați de Arduino
    • OUT1, OUT2 - conectate la motorul DC
    • Vcc1 - 5V pentru logică
    • Vcc2 - alimentare motor
    • GND - ground
  • Motor DC:
    • Conectat la ieșirile driverului L293D
  • LCD:
    • SDA, SCL - conectați la Arduino
    • Vcc - alimentare 5V
    • GND - ground
  • Receptor IR:
    • Conectat la D32
  • Type-C Trigger Board:
    • VCC, GND - conectat la sursă de alimentare externă
    • Alimentează LM2596
  • Modul DC-DC LM2596:
    • IN+, IN- - conectat la sursa Type-C
    • Alimentează restul componentelor

Listă de componente:

Nume componentă Link Cantitate Preț unitar (lei) Preț final (lei)
Placa de dezvoltare Arduino MEGA 2560 Link 1 72.99 72.99
Stepper Motor Nema17 Link 1 30.44 30.44
Motor Driver TMC2209 Link 1 17.02 17.02
USB-C Fast Charge Trigger Board 100W Link 1 9.60 9.60
Motor Driver L293D Link 1 1.96 1.96
DC Motor Link 1 4.95 4.95
Modul DC-DC LM2596 Link 1 16.49 16.49
Ecran Link 1 14.99 14.99
Kit Telecomandă și Receptor IR Link 1 7.30 7.30
Rulment Oscilant KFL001 Link 2 6.99 13.98
Suruburi M3 Link 1 3.36 3.36
Țeavă 12mm Link 1 11.02 11.02
Alte șuruburi Link 1 2.00 2.00
Bucăți de lemn Link 1 5.00 5.00
Preț total: 211.10

Software Design

Proiectul este implementat pe platforma Arduino, folosind limbajul de programare C/C++ specific mediului Arduino IDE.

Laboratoare folosite

  • Laboratorul 0 – GPIO → folosit pentru configurarea pinului pentru receptorul IR.
  • Laboratorul 1 – UART → folosit pentru a afișa informații de debug în consola serială.
  • Laboratorul 2 – Întreruperi → folosit pentru tratarea semnalelor de la receptorul IR și implementarea debounce-ului pentru semnalele IR.
  • Laboratorul 3 – Timere / PWM
    • Timer folosit pentru delay-uri pentru motorul DC.
    • PWM folosit pentru controlul vitezei motorului DC prin L293D.
  • Laboratorul 6 – I2C → folosit pentru afișajul pe ecran.

Biblioteci

Biblioteci externe folosite:

  • AccelStepper.h – pentru controlul motorului stepper
  • LiquidCrystal_I2C.h - pentru afișarea pe ecran
  • IRremote.hpp - pentru recepția și decodarea semnalelor de la telecomanda cu IR
  • Wire.h - pentru comunicarea I2C între microcontroller și ecranul LCD

Pseudocod

SETUP:
    Initializează pinii butoanelo
    Initializează driverul motorului DC
    Initializează driverul motorului stepper
    Initializează LCD-ul prin I2C
    Initializează variabile

LOOP PRINCIPAL:
    // Selectare număr jucători prin comenzi IR
    DACĂ cod IR este recepționat:
        INTERPRETEAZĂ codul pentru a identifica comanda (ex: cifra pentru număr jucători)
        setează numar_jucatori corespunzător
        Afișează pe LCD: "Jucători: " + numar_jucatori
        Așteaptă o nouă comandă IR (debounce prin timp)

    DACĂ numar_jucatori > 0 && start == 1:
        Afișează pe LCD: "Distribuire cărți..."
        
        PENTRU jucator ← 1 până la numar_jucatori:
            // Mergi la poziția jucătorului
            stepper.move(pași_necesari)
            
            // Lansează cartea
            PORNEȘTE motor_DC
            AȘTEAPTĂ 100ms
            OPREȘTE motor_DC
            
            Afișează pe LCD: "Carte trimisă la Juc. " + jucator
            
        // Resetare poziție
        Afișează pe LCD: "Distribuire finalizată"
        numar_jucatori ← 0
        start ← 0

Jurnal

Turetă

Lansare cărți

Rezultate Obţinute

Care au fost rezultatele obţinute în urma realizării proiectului vostru.

Concluzii

Download

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.

Bibliografie/Resurse

Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe Resurse Software şi Resurse Hardware.

Export to PDF

pm/prj2025/eradu/andrei.pirlea.1748524807.txt.gz · Last modified: 2025/05/29 16:20 by andrei.pirlea
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