Andrei MARDALE - RoboGest
Autorul poate fi contactat la adresa: Login pentru adresa
Introducere ''RoboGest''
Ce face?
RobotGest este un robot ce poate fi controlat prin mișcările telefonului, astfel:
înclinare în față –> accelerare
înclinare în spate –> frânare
înclinare în stânga –> viraj stânga
înclinare în dreapta –> viraj dreapta
Totodată, acesta va fi dotat cu un senzor de proximitate montat pe un servomotor, pentru a avea un unghi de detecție cât mai bun. Acest senzor îi va permite sa semnaleze prezența obstacolelor, pentru a le evita. Robotul va avea două moduri de funcționare: un mod în care utilizatorul îl poate controla manual și un mod automat- obstacle avoidance
Care este scopul lui?
Scopul proiectului este acela de a construi un robot care să fie controlat prin telefonul mobil via bluetooth, altfel decât prin apăsarea unor butoane. Astfel, RoboGest va putea fi controlat printr gesturile mâinii utilizatorului, ceea ce va oferi mai multa interactivitate. De asemenea, un scop secundar al priectului este acela de a utiliza cât mai mulți senzori: senzor de distanță, senzor de lumină (explicat în secțiunea urmatoare) + modul Bluetooth și servomotor.
Ideea de la care am pornit
Am pornit de la ideea de a construi un robot controlat prin telefon. Apoi, m-am gândit la o metoda prin care să îl fac mai interesant și mai interactiv. Astfel am ajuns în punctul în care am avut de ales între un robot controlat prin gesturile mâinii sau un robot controlat prin voce. Prima idee mi s-a părut mai bună, fiind mai puțin gălăgioasa.
De ce credeţi că este util pentru alţii şi pentru voi
Cred că acest proiect este util pentru că va arăta modul în care se utilizează o varietate mare de senzori și module, iar pentru mine este util pentru că va fi o experiență “hands-on”, având șansa să decid singur ce/cum/unde montez. În plus, voi avea șansa să lucrez pentru prima dată în Android, ceea ce mi-am dorit de foarte mult timp.
Descriere generală
Schema Bloc
Mod de functionare
Comunicatia - pentru comunicatie se foloseste un modul bluetooth HC-04, care, pe masinuta este in modul slave. Astfel, folosesc interfata seriala USART pentru a trimite cate un caracter masinutei. In functie de acest caracter, masina accelereaza, franeaza sau vireaza.
Senzorul de distanta - este plasat pe un servomotor. Senzorul este folosit atat in modul automat, cat si in cel manual. In modul manual, senzorul este blocat pe directia inainte, iar cand utilizatorul se apropie neatent de un zid, senzorul il avertizeaza sonor, folosind un BUZZER, si franeaza masina. In modul automat, senzorul este rotit de catre servomotor. Astfel, cand se detecteaza un obstacol, servo se uita la stanga, la dreapta, apoi ia decizia cea mai buna, in urmatorul mod: daca distanta fata de cel mai apropiat obiect din stanga este mai mica decat fata de cel din dreapta si exista spatiu suficient (adica exista cel putin 25 cm fata de acest obiect) vireaza la stanga: fie direct ( daca este suficient loc in fata, fie da inapoi apoi vireaza). Asemanator functioneaza si pentru schimbarea de directie in dreapta.
Motoarele - Folosesc 4 motoare, conectate doua cate doua pe fiecare latura. Acestea sunt conectate la un Driver Motor care le controleaza. Pentru a vira, se opresc motoarele de pe o anumita latura, celelalte continuand sa functioneze.
Telfonul - Functioneaza pe post de controller. Utilizatorul trebuie sa se conecteze la masina, apoi sa porneasca motorul (acest buton calibreaza defapt senzorul), apoi alege unul din cele doua moduri: fie modul automat, masina pornind imediat, fie modul manual: in acest mod, orice miscare a telefonului este sesizata si masina accelereaza in acea directie.
Hardware Design
Lista de piese
Piesa | Magazin | Preț (RON) |
Placuța PM | echipa PM | - |
Modul Bluetooth | okzii.ro | 31 |
Servomotor | Optimus Digital | 12 |
Senzor Distanță | Optimus Digital | 5 |
Buzzer | Optimus Digital | 2 |
Driver Motor | Optimus Digital | 10 |
4WD Chasis Kit (motoare incluse) | Optimus Digital | 100 |
Fire mama-tata | Optimus Digital | 7.5 |
Fire mama-mama | Optimus Digital | 7.5 |
Schema electrică
Software Design
Microcontroller
Mediu de dezvoltare: Programmer's Notepad
Librării: in general librariile de la laborator: avr/io.h, avr/interrupt.h, util/delay.h, usart.h
Functii: exista doua mari bucle while, in ambele se citeste un caracter de pe seriala, in functie de care se ia o decizie.
Aplicatie Android
Mediu de dezvoltare: Android Studio
Librării: android.bluetooth , android.hardware.Sensor;
Functii: Aplicatia contine 4 butoane: prima data user-ul trebuie sa se conecteze la masina, apasand butonul de conectare bluetooth. Apoi se porneste motorul, calibrandu-se astfel accelerometrul de pe mobil. Butoanele automat si manual selecteaza modul de utilizare al masinutei.
Rezultate Obţinute
Concluzii
Per total a fost un proiect super interesant. Mai ales că a fost primul proiect ce a inclus și o bună parte de hardware. Am învățat multe lucruri utile, cum ar fi la ce e bun în practică un divizor de tensiune. Am avut ocazia să aplic foarte multe cunoștințe dobândite la laboratoarele de pm, cum ar fi lucrul cu timere, util pt senzorul de distanță , lucrul cu pwm, util pentru servomotor. De asemeni am dobandit și niște cunoștințe de bază în programarea pe Android.
Download
Android
Microcontroller
Jurnal
16.04.2017 - alegere proiect
24.04.2017 - achizitionare piese: modul driver motor, kit sasiu, buzzer, senzor ultrasonic, fire colorate, servomotor
01.05.2017 - terminare lipire placuta
02.04.2017 - montare motoare & primele teste - hardcodat sa mearga inainte si inapoi
08.05.2017 - achizitionare piese pentru divizor rezistiv & montare divizor la laborator
12.05.2017 - montare modul bluetooth & teste
13.05.2017 - prima versiune a aplicatiei de Android
14.05.2017 - montare servomotor, montare senzor ultrasonic
19.05.2017 - dezvoltare algoritm “obstacle avoidance”
20.05.2017 - masinuta functioneaza corect!
24.05.2017 - incarcare cod & finalizare wiki
Bibliografie/Resurse
Resurse Software
Resurse Hardware
-
-
-
-
-
Documentația în format
PDF