Autor: Chiru Cătălin-Mihail
Grupa: 332CBa

Introducere

O mașinuță linetracker, care urmărește cu ajutorul laserelor, marcaje pe o filă albă.

Descriere generala

Mașinuța se deplasează cu ajutorul a două motoare. Acestea sunt acționate de către semnale primite de la un board de senzori ce detectează intensitatea reflexiei infraroșu. Dacă senzorii sunt paraleli cu linia, cele 2 motoare vor avea aceeași viteză și mașinuța se va deplasa frontal. Cu cât senzorii se îndepărtează de line, variază diferența de rotație, iar mobilul virează. Mai mult decât atât, mașinuța este dotată cu un modul Bluetooth Master/Slave controlabil de către telefonul mobil. Prin intermediul Bluetooth se setează stările de funcționare ale mașinuței “ON”/“OFF”, “FORWARD”/“BACKWARD”(direcția de deplasare a mașinuței) și “LEFT”, “RIGHT”, “ACCELERATION”, “START”, “BRAKE”, “STOP” pentru modul de control teleghidat (când mașinuța nu face linetracking).

Schema Bloc

Hardware Design

Schema Electrică

Lista de Piese

  • Arduino UNO
  • 1 x Sursa de alimentare cu protecție (3 x Acumulator 5V/3A + 1 x Battery Management system)
  • 1 x Step Down Converter
  • 8 x Diode
  • cabluri/fire de legatura
  • 1 x Kit Robot cu 2 Motoare
  • 1 x Modul cu Driver de Motoare Dual L298N (Ar fi fost mult mai util și bun un Driver Dual TB6612FNG. Suportă voltaje mai mari și are eficiență mult mai bună decât L298N)
  • 1 x Modul senzor urmărire linie
  • 2 x Modul infraroșu urmărire linie
  • 1 x Modul Bluetooth Master Slave HC-05 cu Adaptor (compatibil 3.3V/5V)
  • 1 x suprafață de deplasare

Software Design

Codul Arduino este scris integral de mine.

Inițial mi-am scris niște cod pentru a face debugging pe module, pe măsură ce le-am conectat. Am decis să implementez cât pot singur, fiind funcții cu o logică simplă.

Am împărțit logica codului în 3 mari chunckuri: logica motoarelor, a senzorilor IR și a modulului Bluetooth.

Detalii referitoare la implementare se găsesc în fișierul ”.ino”

Codul final este acesta: arduino_chirumobilul.rar

Mai mult decât atât, am scris cu ajutorul MIT App Inventor o aplicație în Android pentru controlul Bluetooth al mașinuței:

mobil_apk_final_chiru.jpeg

Rezultate Obtinute

Videoclip Youtube

Jurnal

Inceputurile

Adevăratul Chirumobil de la care a pornit toată acțiunea (să sperăm că Arduinoul nu va avea aceeași soartă în trafic :D)

real_chirumobil.jpeg

Arduino

meme_chirumobil.jpeg

Am pornit tema cu un oarecare deficit deoarece am avut probleme cu livrarea comenzii.

În prima zi de proiect m-am ocupat strict de partea Hardware, am asamblat kitul, am citit documentații pentru tensiunile de alimentare ale componentelor, am lipit componentele de scheletul mașinii și am reglat senzorii IR.

Dificultăți:

  • Am îndreptat aluminiul de răcire și pinii L298
  • Am avut probleme cu prinderea firelor în pinii terminali cu reglaj de pe L298
  • Nu prindeau lipitura cu fludor firele pe care le aveam așa că a trebuit să dezizolez mai multe fire până să găsesc ceva care prinde bine lipitura

În cea de-a doua zi de proiect m-am ocupat de Software, am făcut debugging și m-am asigurat că pot trimite corect PWM către motoarele DC, că acestea se pot roti în ambele direcții, am căutat pentru tensiunea de 5V pe canalele de logică și alimentare care este PWM de STALL al motoarelor. M-am asigurat că pot primii semnale digitale de la senzori și le transmit corect în comenzi pentru motor. Nu în ultimul rând am realizat comunicarea cu modulul Bluetooth prin serială și am dezvoltat aplicația prin care poate fi controlat modulul cu semnale de la telefonul mobil (cu ajutorul MIT App Inventor) Dificultăți:

  • Am avut probleme cu debuggingul după conectarea HC05 din cauză că utiliza monitorul serial
  • Am constatat că motoarele deși comandate cu același PWM primesc tensiuni foarte diferite, decalaj ce crește pe măsură ce ne apropiem de PWMul de Stall al motorului mai slab (a fost nevoie de offset pe o roată)
  • La un moment dat conexiunea cu aplicația nu era făcută corect și trimiteam niște biți în afara comenzilor necesare, lucru care producea comportamente neașteptate în Arduino
  • Reglajul senzorilor de IR s-a dovedit foarte laborios (mai multe la dificultăți zilele 3-5)

În ultimele 3 zile de proiect am tot făcut fine-tuning la partea de motoare/senzori. Am schimbat alimentarea de pe 5 pe 7 volți (fapt ce permitea o viteză mai mare, dar inacuratețe și mai mare între cele 2 motoare) fiindcă mi s-a părut că mașinuța se mișcă mult prea încet. S-a dovedit dificil de manevrat pentru putere prea mare, ieșea imediat din traseu. Am încercat să aduc senzorii mai aproape de sol, să le fac o margine pentru a capta interferențe mai mici din exterior (din cauza marginii începuse să se reflecte lumina în interiorul camerei formate și să nu se comporte corespunzător). Am încercat să schimb logica programului, să încerc să virez spre margini rapid, să încerc să țin centrul lent.

Printre altele am pus elastice pe roți pentru a crește aderența (mașinuța patina din cauza suprafeței de pe jos) și am uns rotița directoare din spate, pe care am dat-o și cu silicon (rămânea blocată într-o poziție și influența deplasarea atât pe linetracking cât și pe modul Bluetooth).

Până la urmă soluția a fost să dublez banda traseului și de aici nu am mai avut probleme foarte mari. Din punct de vedere al logicii, soluționarea virajelor a fost să acționez asemenea unei bărci (tankLeft, tankRight înaintează cu roata corespunzătoare, în timp ce roata opusă merge spre spate pentru a accentua virajul). Astfel am ajuns să baleez și avansul să se facă considerabil când prinde porțiuni de drum drept.

Baleerea produce totuși un mic inconvenient: Stall dinamic, fapt ce consumă mult mai rapid bateria. La penultima filmare când am reușit printre primele dăți să completez traseul din prima motoarele, abia se mai auzeau semn că și Uno știa că aventura noastră se apropie de sfârșit :D. (Just kidding se descărcase, am așteptat reîncărcarea și am filmat finalul apoteotic de pe youtube :) )

Concluzii

M-am distrat super mult făcând proiectul (mai puțin la partea de reglare a linetrackerului :C ), a fost foarte relaxant să citesc documentații și chiar simt că sunt ceva mai îndemânatic după toată lupta cu pinii cu reglaj. Am reușit să termin proiectul fără să ard sau să scap pe jos nimic. Niciun Arduino nu a fost rănit și nicio casă nu a luat foc. Sooo, I call this a W :D. Mulțumesc pentru citire.

༼ つ ◕_◕ ༽つ CHIRUMOBIL TAKE MY GOOD VIBES ༼ つ ◕_◕ ༽つ

Bibliografie/Resurse

Click aici pentru descarcarea PDF a paginii curente.

Resurse Hardware

Resurse Software

pm/prj2021/alazar/chirumobilul.txt · Last modified: 2021/06/03 13:47 by catalin.chiru
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