This is an old revision of the document!


Mapping Robot - Luca Seritan 333CA

Introducere

Proiectul meu consta in construirea si programarea unui robotel mic in scopul de a genera in mod autonom harta unei incaperi. Am plecat de la ideea unui aspirator autonom, aceasta fiind si una din posibilele utilitati ale unui astfel de robot. Alte posibile aplicatii ar putea fi explorarea zonelor periculoase/greu accesibile pentru oameni. (Desigur, cu o varianta mai complexa al aceluiasi principiu)

Descriere generală

Robotul are capacitatea de a fi controlat si a transmite in timp real pozitia sa si pozitia obstacolelor pe care le detecteaza pe o retea WiFi. Localizarea este realizata cu ajutorul encoderelor de pe micromotoare, iar detectarea obstacolelor este facuta de trei senzori ultrasonici. Microcontroller-ul ce are la baza chip-ul ESP-WROOM-32 se ocupa pe de o parte de controlul si calculele de pe robot, cat si de comunicarea wireless, dubland ca un AP la retea.

Schema Bloc

Schema bloc

Hardware Design

Piese utilizate:

  • Placa dezvoltare D1 R32, ESPDuino-32, ESP32, WiFi si Bluetooth
  • Micro Motor cu Reductor și Codor Pololu
  • Modul driver motor, punte H duala, DRV8833
  • Senzor ultrasonic de distanta HC-SR04+
  • Sursa stabilizatoare de tensiune LM2596
  • Modul Convertor nivel logic I2C bidirectional 8 Biti TXS0108E
  • Placa prototipare
  • Baterii AA litiu
  • Baterie portabila
  • Roti
  • Ball casters
  • Piese printate

Design-ul robotului a fost realizat integral in Fusion360, iar modelul final este open source, disponibil aici.

Am urmarit cateva principii de-a lungul realizarii sale:

  • Sa aiba dimensiuni reduse pentru a putea accesa cat mai multe locuri
  • Sa aiba centrul de greutate cat mai jos, pentru stabilitate (de aceea bateriile sunt dedesubt)
  • Sa aiba rotile pe centru. Avand doar doua motoare, acest lucru ajuta atat la un control mai bun, cat si o localizare mai simpla (ar fi devenit mai complicat daca avea doar tractiune fata/spate si mai greu de condus)
  • Sa fie usor, pentru a nu solicita motoarele si a putea folosi roti cat mai mari - acest lucru ajuta pe de o parte la deplasarea pe un teren denivelat, iar pe de alta parte la o viteza mai mare a robotului.

Randari cu modelul final

Randari cu modelul final

Randare stangaRandare centruRandare dreapta

Toate piesele sunt fie montate pe sasiu cu cate un suport special, fie sunt montate pe o placuta de prototipare care este apoi prinsa de sasiu. Am optat pentru lipirea unor headeri de pini pe placutele de prototipare, in locul lipirii direct a pieselor pentru inlocuirea usoara a acestora in caz de defect. De asemenea, nu riscam sa defectez piesele in timp ce lucram la lipituri.

Lipituri

Lipituri

Placa prototipare centruPlaca prototipare senzoriHeaderi pini

Daca le numaram cu grija, observam ca din placuta centrala, cea care corespunde celor trei senzori ultrasonici ies doar 6 fire (pentru 12 pini). Acest lucru se datoreaza pe de o parte faptului ca GND si 3.3V sunt comune celor trei senzori, iar mai putin evident este faptul ca putem lega in paralel si cei trei pini de pulse ai senzorilor. Acest lucru face economie de doua fire si doi pini si pastreaza functionalitatea. (Cand vrem sa citim un senzor, putem trimite o unda din toti senzorii de-o data si sa citim impulsul de echo doar de pe cel care ne intereseaza, iar senzorii nu vor interfera intre ei datorita pozitionarii perpendiculare)

2 fire si 2 pini

Software Design

Pentru partea software voi folosi notiuni din mai multe laboratoare:

  • citirea senzorilor ultrasonici pe baza intreruperilor (lab 2)
  • controlul motoarelor in PWM (lab 3)
  • scrierea pe cardul SD folosind SPI (lab 5)

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

Rezultate Obţinute

Care au fost rezultatele obţinute în urma realizării proiectului vostru.

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/adarmaz/room-mapper.1685280571.txt.gz · Last modified: 2023/05/28 16:29 by luca.seritan
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