Colour-guided rover

Autor: Semeniuc Calin-Mihai Grupa: 333CD Link Git: Github

Introducere

Ce face proiectul?

Proiectul este un rover (robot pe șenile) care navigheaza într-un spațiu închis, căutând o țintă de o anumită culaore.

Care a fost ideea de la care am pornit?

Ideea a pornit din dorinta sa fac o masina controlata cu baterie, un vis care il aveam de ceva vreme.

De ce cred că este util?

Aceasta aplicatie poate fi extinsa pentru a deteca varsari de substante sau substante toxice. Poate fi folosit ca punct de start pentru aparate de curatare etc.

Descriere generală

Robotul are la bază o placă Arduino cu un modul controlat prin UART care controleaza motoarele si ascultă citirea unui senzor de culoare (citeste culoarea suprafetei). Are concectati si photodiode puse in jurulul unui semicerc si un senzor pir pentru a schimba controlul robotului.

Robotul are ca master placuta Arduino, iar ca slave modulul RVR+. Modulul RVR+ are deja motoarele si senzorul de culaore inclus. Acestea sunt controlate prin UART. Se vor controla motoarele si se va face poll in timp real la culori. In loc de switch pentru pornirea robotului, folosesc un senzor PIR pentru a-i da start. Senzorii de detectie a obstacolelor constau in 3 senzori pusi in stanga, dreapta, si in fata. Ei au rolul de a detecta obstacolele. In functie de unde detectam obstacolele, trimitem comanda la motoare ca sa schimbam directia de mers.

Diagrama Hardware

Diagrama Logica

Hardware Design

Piese:

Conexiuni Hardware

PIR Sensor

Pin Value
GND Arduino IDE
PWR 5V
OUT Digital 8

OBSTACLE Sensor

Pin Value
GND Arduino IDE
PWR 5V
OUT Digital 13, 12 6

I2C Serial Controller

Pin Value
GND Arduino IDE
PWR 5V
SDA Analog 5
SDC Analog 4

Platforma RVR+ poate comunica cu arduino prin USB.

Software Design

Notiuni de laborator utilizate:

  • Lab 1 UART (Comunicarea cu platforma RVR pentru senzor de culoare)
  • Lab 2 Intreruperi (Intreruperi la detectarea obstacolelor, culorii tinta, declansare senzor PIR)
  • Lab 3 Timere (Controlul motoarelor intr-un interval de timp)
  • Lab 5 I2C (Controlul Ecranului)

Librarii utilizate:

  • SpheroRVR.h
  • DriveControl.h
  • LEDControl.h
  • LiquidCrystal_I2C.h
  • Wire.h
  • Structs.h (include structurile necesare pentru comunicare cu Senzorul de culoare si motoare)

Algoritm

  1. Se inititializeaza platforma RVR+ prin USART, folosing USB serial si ecranul.
  2. Se asteapta apasarea senzorului PIR pentru a da drumul robotului.
  3. Cand a pornit robotul, el merge drept inainte pana cand intalneste un obstacol sau gaseste culoarea rosie de sub el.
  4. Daca obstacolul e in fata, se da in spate si face o rotire de 180 grade. Daca e in senzorii laterali, se da inapoi in directia opusa si se indreapta asa cum era inainte (cu alte cuvinte, trece pe langa obstacolul lateral).
  5. Daca scaneaza o suprafata rosie, se opreste.

Functii implementate

PIR Sensor

Functie Descriere
rotate180_fast rotire 180 in cel mai rapid mod
lcd.setcursor
lcd.print
rvr.configUART initializare RVR
rvr.getDriveControl() obtinere obiect pentru apelarea functiilor rvr
rvr.resetYaw() / dc.resetHeading() resetare giroscop intern
dc.setRawMotors setare viteza motoare fina
dc.rollStart()/rollStop() setare mers robot, simplu
colorCallback() scanarea culorilor
pm/prj2025/iotelea/calin.semeniuc.txt · Last modified: 2025/05/30 08:44 by calin.semeniuc
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