Ideea proiectului constă în proiectarea unui robot care să colecteze diverse lucruri aflate în calea sa. Acesta este asemănător unei mașini, însa dispune de niște brațe în partea anterioară a sa, folosite pentru a colecta potențialele obiecte detectate.
Robotul poate să se deplaseze prin intermediul unui modul bluetooth, care va asigura conectarea telefonului la acesta, sau poate parcurge un traseu aleator pentru a depista obiectele.
Va dispune de un senzor cu ultrasunete folosit la reperarea acestor obstacole întâlnite, ce va declanșa brațele de colectare la o detecție reușită. Acestea vor împinge spre platforma de depozitare obiectele, iar după revenirea la poziția lor inițială, își va continua deplasarea.
Servomotoarele sunt utilizate la mișcarea efectuată de către brațe, în timp ce driver-ele vor fi folosite pentru a controla motoarele și a efectua schimbări de direcție.
Pentru porţiunea de cod unde am tratat interpreatarea caracterelor primite de la modulul bluetooth, am executat un switch case pentru fiecare comandă configurată.
Primeşte caracterul de la telefon(); switch pentru caracter { case faţă: activează pinii pentru deplasarea faţă case spate: activează pinii pentru deplasarea spate case stânga: activează pinii pentru deplasarea stânga case faţă: activează pinii pentru deplasarea dreapta case închidere braţe: schimbarea unghiurilor celor două braţe case deschidere braţe: schimbarea unghiurilor celor două braţe case mutare ambele braţe stânga: schimbarea unghiurilor celor două braţe case mutare ambele braţe dreapta: schimbarea unghiurilor celor două braţe case default: opreşte motoarele }
La partea ce implică servomotoarele am configurat registrele pentru timere şi am activat pinii folosiţi la mişcarea braţelor de colectare.
TCCR1A|=(1<<COM1A1)|(1<<COM1B1)|(1<<WGM11); //NON Inverted PWM TCCR1B|=(1<<WGM13)|(1<<WGM12)|(1<<CS11)|(1<<CS10); //FAST PWM ICR1=4999; // fPWM=50Hz DDRD|=(1<<PD4); // Pinii PWM de Out DDRD|= (1<<PD5); // pentru servomotoare
Proiectul acesta m-a ajutat să înţeleg mai bine conceptul de interacţiune între hardware şi software-ul dezvoltat pentru acesta.
Partea de hardware a necesitat puţin mai multă implicare, întrucât legarea driverelor de motoare şi a modulului de bluetooth cu placa am făcut-o ghidându-mă după datasheet-uri şi tutoriale online. Restul cablării şi asamblarea şasiului doar a necesitat atenţie sportiă din partea mea. Braţele de colectare precum şi platforma ataşatâ maşinii au fost modelate de mine, design-ul acestora fiind unul propriu.
Software-ul dezvoltat nu a necesitat prea mult timp, întrucât eram obişnuit cu conceptele de timere de la laborator şi de configurare de port-uri pentru intrare / ieşire. Aplicaţia folosită pentru manevrarea maşinii am descărcat-o de pe Google Play (details) şi am adus modificări comportamentului repoman-ului la caracterele trimitse către acesta prin aplicaţie.
Codul poate fi descărcat de la link-ul: matei_tita_332cb_repoman.zip
03.05 → Comandat piesele de bază
11.05 → Am început să asamblez şasiul din kit-ul maşinii
12.05 → Căutat piese adiţionale (cabluri, rezistenţe)
18.05 → Montat motoarele şi le-am ataşat modulelor
19.05 → Testat motoarele doar prin cabluri
20.05 → Conectat toate motoarele şi am realizat partea de cod pentru activarea acestora
21.05 → Am conectat modulul bluetooth şi servomotoarele la plăcuţă
22.05 → Testat din aplicaţia de android conectivitatea cu maşina
23.05 → Am realizat manopera maşinii (platformă şi braţele de colecare)
arduino-and-hc-05-bluetooth-module-tutorial
watch (tutorial pentru driver-ul L298N)