Dumitru BRIGALDA (78770) - Car/LineFollower

Autorul poate fi contactat la adresa: Login pentru adresa

Introducere

  • Proiectul presupune asamblarea si configurarea unei “masini” care va fi capabila sa se deplaseze in 2 moduri.
  • Bluetooth Mode : Masinuta va primi comenzi de la un dispozitiv Android si se va misca conform acestora.
  • LineFollower Mode : Masinuta va urmari dunga neagra de pe podea.
  • Scopul proiectului este self-studying:
    1. familiarizarea cu comunicarea dispozitivelor(necesar in domeniul IoT).
    2. antrenament pentru competii de LineFollower (prototip pentru masini autonome).

Descriere generală

  • Masinuta va incepe in Bluetooth Mode, semnalizat de Led-ul verde. In acest mod, Masinuta primeste comenzi de la dispozitivul Android si se misca conform acestora.
  • Daca dispozitivul Android trimite comanda de “Switch Mode”, masinuta va trece in modul LineFollower semnalizat de Led-ul albastru, ignorand orice comanda in afara de “Switch Mode”. In acest mod masinuta este autonoma si incearca sa urmareasca dunga neagra.

Hardware Design

Componenta Cantitate Scop
Placa de baza 1 Conectarea pieselor
Componente obligatorii 1 Logica basic
Kit Sasiu 2WD V2 Robot 1 Deplasare
Driver A4990 Dual Motor 1 Comunicare Atmega cu motoare
Modul Bluetooth HC-06 1 Comunicare cu disp. Android
Bara QTR-3RC (3senzori) 1 Urmarirea dungii negre
Led RGB 1 Semnalizarea modului
Led galben 2 Semnalizarea la cotire

Software Design

Mediu de dezovltare: Atmel Studio 7.0

Controller: Joystick BT Commander(descarcat de pe Google Play)

Biblioteca Scopul
util/delay.h Delay pentru a permite incarcarea de cateva microsecunde a senzorului de detectie a dungii negre
avr/interrupt.h In modul LineFollower, masinuta primeste comenzi folosind intreruperi
string.h Pentru a sti lungimea mesajului trimis ca raspuns
math.h Calculul puterii pentru fiecare motor pe baza coordonatelor joystick-ului

Comunicatie Android - Masinuta: USART0(9600 baudrate, 8 bit, recv-trans activ)

  • fiecare 50 milisecunde aplicatia Android trimite comenzi tip:
    1. “0x2 (Xcoord+200)(ASCII) (Ycoord+200)(ASCII) 0x3” care reprezinta pozitia joystick-ului.
    2. “0x2 ButtonState(A sau B) 0x3” care reprezinta schimbarea starii butonului.
  • cat timp butonul este in starea B(neapasat), masinuta este controlata de joystick, iar uC executa operatii blocante de asteptare a comenzii.
  • cat timp butonul este in starea A(apasat), masinuta este in modul LineFollower, iar uC activeaza intreruperile pentru a putea folosi senzorii la o frecventa sporita. Comenzile diferite de schimbarea starii sunt ignorate.
  • dupa fiecare “frame”, Masinuta trimite dispozitivului Android statistica, cum ar fi viteza fiecarui motor sau datele senzorilor.

Deplasarea Masinutei: Timer0 si Timer1(FPWM pana la 0xFF cu prescaler de 64)

Duty Cycle OCRnA Duty Cycle OCRnB Rezultat
100% 100% miscare fata
0% 0% miscare spate
0% 100% frana
50% 50% repaus

Citirea Senzorilor: Timer2(FPWM pana la OCR2A cu prescaler de 32 si intrerupere de OVF activata)

  • Numara 10 microsecunde si incrementeaza contorul.
  • Nu se executa operatii blocante de asteptare a comenzilor pentru a elimina delay-ul dintre citirile senzorilor. Se foloseste intrerupere de primire a datelor.
  • Pinul conectat la senzor trebuie pus ca iesire cu valoarea 1 timp de 10 microsecunde pentru ca senzorul sa se incarce.
  • Pinul trebuie pus ca intrare fara pull-up. Se numara cate microsecunde-milisecunde dureaza pana la descarcarea senzorului(inputul devine 0).
  • Suprafetele negre reflecta mai greu lumina(sute de microsecunde - cateva milisecunde) in timp ce suprafetele mai deschise o reflecta cu mult mai rapid(zeci de microsecunde).

Rezultate Obţinute

  • Modulul Bluetooth(comunicatie)
  • Led RGB(verde - Bluetooth Mode, albastru - LineFollower)
  • Baterie externa 5V(alimentare placuta)
  • 6 Baterii 1.5V(alimentare motoare)

  • Driver(controlare motoare)

  • 2 Motoare
  • 3 Senzori(inaltimea se poate ajusta prin mutarea suportului)

  • Prezentare Video

Concluzii

  • a fost o placere sa execut atat partea software(asteptat), cat si hardware(neasteptat XD).
  • a fost o experienta atat interesanta, cat si distractiva.
  • m-a incantat procesul de creare “de la zero” a unui “ceva”, proiectarea lui, alegerea pieselor, depanarea erorilor.
  • am invatat lucruri noi si am aprofundat notiunile cunoscute.
  • este primul proiect de acest gen. Nu se limiteaza doar la un program(chiar si complex) pe PC.
  • acest proiect mi-a trezit interesul pentru acest domeniu.

Download

Resursele necesare: brigalda_dumitru_2018_pm.zip

Bibliografie/Resurse

  • Documentația în format PDF
pm/prj2018/avoinescu/proiect1.txt · Last modified: 2021/06/06 21:17 by dumitru.brigalda
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