Barca cu telecomanda

Introducere

Am ales sa fac o barca cu telecomanda pentru ca de mic am fost pasionat de ele, iar cursul de PM mi-a oferit oportunitatea sa imi creez eu una. Barca va fi controlata prin infra-rosu. Aceasta va avea un sistem de directie actionat de un motor, propulsia va fi actionata de asemenea cu alte doua motoare. Inca nu m-am hotarat dar tind sa merg si spre implementarea unor faruri care vor fi pornite tot prin infra-rosu.

Descriere generală

Schema bloc:

Hardware Design

Lista componente:

  • Unordered List Item
  • Arduino UNO;
  • Modul driver motoare L298N;
  • Modul Bluetooth;
  • ON/OFF switch (pt a porni/opri masinuta inca ma gandesc pt asta);
  • rezistente;
  • cabluri;
  • 2x motoare DC;
  • 2x sau 4x RGB Led (inca nu-s sigur);
  • Diferite componente pt constructie: carbon, roti dintate etc.

Software Design

Descrierea codului aplicaţiei (firmware):

  • 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
  • Codul care animeaza proiectul a fost scris in Arduino IDE.
  • Pentru controlarea barcii se foloseste o telecomanda cu IR.
  • Proiectul este compatibil si cu HC-05 Bluetooth (asa trebuia facut initial, dar mi s-a ars modulul Bluetooth).

Biblioteci folosite:

  • Arduino.h → folosit pentru a importa functionalitatile de baza ale Arduino-ului.
  • Servo.h → folosit pentru a actiona servo motorul.
  • IRremote.h → folosit pentru a interactiona cu modulul IR si a capta datele primite.

Cod:

#include <Arduino.h>
#include <IRremote.h>
#include <Servo.h>
 
IRrecv IR(3);
Servo myservo;
// pinii motoarelor
int moto1 = 4;
int moto2 = 5;
int moto11 = 6;
int moto22 = 7;
// pinul pentru becuri
int bec = 13;
// pozitia initiala a carmei, pt a merge stanga/dreapta
int pos = 90;
 
void setup() {
  IR.enableIRIn();
  // pentru a controla componentele setez pinii placutei ca output
  pinMode(bec, OUTPUT);
  pinMode(moto1, OUTPUT);
  pinMode(moto2, OUTPUT);
  pinMode(moto11, OUTPUT);
  pinMode(moto22, OUTPUT);
  myservo.attach(9);
  Serial.begin(9600); 
}
 
void loop() { 
  if(IR.decode()) 
  { // citesc informatia de la modul IR si in functie de comanda, fac o actiune
    Serial.println(IR.decodedIRData.decodedRawData,HEX);
    if(IR.decodedIRData.decodedRawData == 0xEA15FF00) 
    { // aprind bec
      digitalWrite(bec, HIGH);
    }
 
    if(IR.decodedIRData.decodedRawData == 0xF807FF00) 
    { // sting bec
      digitalWrite(bec, LOW);
    }
 
    if(IR.decodedIRData.decodedRawData == 0xE718FF00) 
    { // merg fata
      digitalWrite(moto1, HIGH);
      digitalWrite(moto2, LOW);
      digitalWrite(moto11, LOW);
      digitalWrite(moto22, HIGH);
    }
 
    if(IR.decodedIRData.decodedRawData == 0xAD52FF00) 
    { //merg spate
      digitalWrite(moto1, LOW);
      digitalWrite(moto2, HIGH);
      digitalWrite(moto11, HIGH);
      digitalWrite(moto22, LOW);
    }
 
    if(IR.decodedIRData.decodedRawData == 0xE31CFF00) 
    { //opresc tot
      digitalWrite(moto1, LOW);
      digitalWrite(moto2, LOW);
      digitalWrite(moto11, LOW);
      digitalWrite(moto22, LOW);
      //readuc carma la pozitia de inainte
      myservo.write(90);
    }
 
    if(IR.decodedIRData.decodedRawData == 0xF708FF00)
    { // cotesc stanga
      myservo.write(25);
    }
 
    if(IR.decodedIRData.decodedRawData == 0xA55AFF00) 
    { // cotesc dreapta
      myservo.write(145);
    }
    //delay la citirea comenzilor de la IR
    delay(1500);
    IR.resume();
  }
}

Rezultate Obţinute

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.

Jurnal

Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului.

Bibliografie/Resurse

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

Export to PDF

pm/prj2023/alexau/remote-car.txt · Last modified: 2023/05/30 17:53 by mihai_teodor.piele
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