This is an old revision of the document!


Treasure Hunt Robot

Student: Lincă Nicoale-Robert
Grupa: 331 CC

Introducere

Proiectul reprezintă un robot tip mașină, autonom care va identifica si semnaliza automat obiecte de metal aflate pe un traseu predefinit. Pe acest traseu se pot afla obstacole care o vor fi ocolite in mod automat, prin stanga sau prin dreapta, in functie de spatiul disponibil, iar la intalnirea unui zid, care se va afla la final de trraseu, robotul il va identifica si isi va opri executia.

Acest proiect este util pentru că este un prim pas spre învățarea dezolvatării de roboți autonomi care repezintă un interes de actualitate în industrie, spre exemplu un robot autonom care realizează cartografierea unei zone reprezintă un astfel de interes, care prezintă o oarecare similiaritate cu proiectul ales, fiind astfel un bun model de învățare.

Descriere generală

Schema bloc:

Modulul arduino va utiliza sevomotorul pentru a roti senzorul ultrasonic de proximitate pentru a depista obstacolele pentru a asigura menținerea traseului de parcurgere, respectiv a ocoli obstacolele și a reveniri pe traseu. Toți acești factori vor determina comenzile PWM pe care le va transmite driver-ului de motor care controlează motoarele roților ceea ce permite deplasarea corectă și autonomă a mașinii.

Modulul arduino va citi senzorii inductivi pentru a depista găsirea unui obiect de metal, pe care o va notifica prin modulul bluetooth la un monitor serial de pe calculator. Modulul bluetooth va avea rol și ca tool de debugging în dezvoltarea proiectului.

Hardware Design

Listă componete folosite:

  • Arduino Uno R3 - ATmega328P
  • Modul driver motoare L293D
  • Modul bluetooth HC-05
  • Motor 5v reductor
  • MicroServo motor 9G
  • Senzor ultrasonic HC-SR04
  • Senzor inductiv SN04-N
  • Rezistențe
  • Suport baterii
  • Șasiu mașină
  • Roți

Schemă robot:

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 pentru robot a fost realizat în Arduino 1.8.16, iar pentru controlul motoarelor si a servomotorului am folosit bibliotecile <AFMotor.h>, respectiv <Servo.h>. In ceea ce priveste funcțiile implementate, acestea pot fi împărțite în următoarele categorii:

A. Funcții pentru controlul direcției:

  1. void forward() → mișcare înainte pe o perioadă nedefinită
  2. void forward2(int timp) → mișcare înainte timp de timp ms
  3. void backward() → mișcare înapoi pe o perioadă nedefinită
  4. void turnleft() → rotire pe loc spre stânga pe o perioadă nedefinită
  5. void turnleft2(int timp) → rotire pe loc spre stânga timp de timp ms
  6. void turnright() → rotire pe loc spre dreapta pe o perioadă nedefinită
  7. void turnright2(int timp) → rotire pe loc spre dreapta timp de timp ms
  8. void Stop() → oprirea motoarelor

B. Funcții pentru detecțția obstacolelor:

  1. int leftsee() → returnează distanța până la cel mai apropiat obiect din stânga-fata în cm
  2. int rightsee() → returnează distanța până la cel mai apropiat obiect din dreapta-fata în cm
  3. int ultrasonic() → returnează distanța până la cel mai apropiat obiect detectat de senzorul ultrasonic (pentru mai multe detalii de implementare: https://stackoverflow.com/questions/41501360/getting-distance-in-inches-and-cm-from-ultrasonic-sensor-in-arduino)

C. Funcții pentru ocolirea obstacolelor:

  1. void ocolire_stanga() → rutină de ocolire a obstacolului prin partea stângă print-o parcurgere în formă de trapez
  2. void ocolire_stanga() → rutină de ocolire a obstacolului prin partea dreaptă print-o parcurgere în formă de trapez

Rezultate Obţinute

Robot deadline hardware:

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

  • 30.05.2023 - Finalizare documentație
  • 29.05.2023 - Finalizare Software
  • 28.05.2023 - Schimbare mod de alimentare robot
  • 27.05.2023 - Primă formă Software și schițarea algoritmului robotului
  • 20.05.2023 - Finalizare hardware
  • 07.05.2023 - Documentația inițială (Introducere, descriere, schema bloc, listă componente)
  • 03.05.2023 - Creare pagină wiki
  • 30.04.2023 - Comandă piese proiect
  • 28.04.2023 - Alegere temă proiect

Bibliografie/Resurse

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

Export to PDF

pm/prj2023/dene/treasurehuntrobot.1685424308.txt.gz · Last modified: 2023/05/30 08:25 by nicolae.linca
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