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
  • Slip Ring
  • 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
Slip Ring Link 1 19.00 19.00
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: 230.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

Lipituri

Turetă

Lansare cărți

Rezultate Obţinute

În urma realizării proiectului, am reușit să dezvolt un sistem automatizat de distribuire a cărților de joc, controlat printr-o telecomandă IR. Sistemul poate:

  • Selecta numărul de jucători (1–9) folosind telecomanda;
  • Alege numărul de cărți ce trebuie distribuite fiecărui jucător;
  • Controla un motor stepper pentru a roti cu precizie spre fiecare jucător;
  • Acționa un motor DC pentru a lansa cărțile;
  • Afișa starea sistemului și instrucțiunile pe un ecran LCD I2C;
  • Efectua distribuirea într-un mod ciclic, fără întoarcere;
  • Permite trimiterea de cărți individuale la un jucător ales ulterior.

Funcționalitatea generală a fost conform așteptărilor, sistemul fiind stabil și ușor de utilizat în cadrul unui joc de societate.

Concluzii

Proiectul a demonstrat cum pot fi integrate mai multe componente hardware și software într-un sistem util. Utilizarea unei telecomenzi IR a simplificat interacțiunea și a adăugat flexibilitate. Prin acest proiect am aprofundat cunoștințe legate de controlul motoarelor, comunicația I2C, utilizarea semnalelor IR și organizarea logicii într-un sistem embedded complex. De asemenea, proiectul a fost o bună ocazie de a exersa gândirea modulară, testarea incrementală și talentul meșteșugăresc.

Download

pm/prj2025/eradu/andrei.pirlea.txt · Last modified: 2025/05/30 00:14 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