Table of Contents

Tanc cu Tureta Controlabilă prin Bluetooth/WiFi

Introducere

Proiectul constă în realizarea unui vehicul tip tanc controlat de la distanță, echipat cu o turetă mobilă capabilă să tragă proiectile. Controlul se face prin Bluetooth sau WiFi, oferind utilizatorului posibilitatea de a manevra tancul și tureta în timp real.

Scopul Proiectului

Scopul principal este de a construi un tanc telecomandat cu funcționalități avansate, inclusiv:

Toate acestea sunt comandate printr-o interfață mobilă sau web.

Mod de Funcționare

  1. La pornire, tancul se conectează la dispozitivul de control (telefon sau PC) prin Bluetooth sau WiFi.
  2. Utilizatorul trimite comenzi pentru:
    • deplasare (W, A, S, D)
    • rotirea turetei (J/L)
    • înclinarea turetei (I/K)
    • tragere (SPACE)
    • frana (X)
  3. Microcontrollerul interpretează comenzile și controlează motoarele și servomotoarele.

Descriere Generală

Schema bloc

Componente Principale

Hardware Design

Conexiuni Principale

Alimentare Sistem

Observații

Software Design

Funcționalități Principale

Module Software Implementate

Laboratoare Folosite

Laboratorul 0 – GPIO → folosit pentru configurarea pinilor motoarelor, buzzerului și controlul servomotoarelor (setare ieșiri digitale cu DDR și PORT).

Laboratorul 1 – UART → folosit pentru comunicarea serială prin USB (`Serial`) și Bluetooth (`SoftwareSerial`) pentru recepția comenzilor și debug.

Laboratorul 3 – Timere / PWM → - Timer1 (mod Fast PWM) este folosit pentru generarea semnalului PWM pentru motoarele DC, controlând viteza acestora prin pinii OCR1A (D9) și OCR1B (D10). - Timer0 (mod Fast PWM) este folosit pentru activarea buzzerului prin OC0A (pinul D6), generând un semnal sonor temporizat.

Implementarea Logicii

După pornirea sistemului, se realizează următoarele inițializări: - Se configurează pinii pentru motoare, buzzer și PWM (`setupPWM()`). - Se atașează servomotoarele la pinii 12 și 13 și se setează poziția inițială (90°). - Se initializează comunicația serială cu PC-ul și Bluetooth.

Funcționare în bucla principală

1. Recepție Comenzi:

 Comenzile sunt primite de la utilizator prin Bluetooth sau consolă serială. Funcția `handleCommand()` interpretează literele primite (`W`, `A`, etc.) și activează comportamentul asociat.

2. Control Motoare DC:

  1. Se folosesc 4 pini digitali (IN1–IN4) pentru sensul de rotație.
  2. Semnalul PWM este aplicat pe OCR1A și OCR1B pentru controlul vitezei.
  3. Se suportă control de direcție, frânare activă (`brakeMotors()`), diagonală și timeout automat.

3. Control Turelă Servo:

  1. La primirea comenzilor `I`, `K`, `J`, `L`, turelă se mișcă incremental (1°/pas) timp de 200ms.
  2. Servomotoarele sunt controlate cu funcții `Servo.write()`.

4. Siguranță (Timeout):

  1. Dacă nu se primesc comenzi de motor timp de 200 ms, acestea sunt oprite automat (`stopMotors()`).
  2. La fel, comenzile de servomotoare sunt valabile doar timp de 200 ms.

Funcții Auxiliare

- `setupPWM()`: configurează Timer1 în mod Fast PWM pentru controlul motoarelor pe OCR1A (D9) și OCR1B (D10).

- `beepBuzzer(uint8_t durationMs)`: pornește buzzerul folosind Timer0 pentru o durată specificată, pentru feedback sonor (ex: confirmare frână).

- `handleCommand(char cmd)`: interpretează comenzile primite de la utilizator și apelează funcțiile corespunzătoare (motor, servo, buzzer).

- `stopMotors()`: dezactivează toți pinii de control motor și oprește PWM.

- `brakeMotors()`: activează frâna motoarelor (toți pinii HIGH) și declanșează buzzerul pentru 100 ms.

- `moveDiagonal(char a, char b)`: gestionează combinațiile de taste pentru mișcare diagonală (`WA`, `WD`, `SA`, `SD`), activând doar motoarele necesare.

Rezultate Obținute

Concluzii

Proiectul demonstrează un sistem robotic funcțional și modular. Integrarea Bluetooth/WiFi, controlul pe două axe și tragerea automatizată oferă o platformă excelentă pentru învățare în domeniul roboticii și sistemelor încorporate.

Resurse Suplimentare