Explorobot

Introducere

Explorobot este un robot complet autonom, care reuseste singur, fara asistenta unui om, sa exploreze spatiul din jurul sau fara a se lovi de obstacolele care ar putea sa ii blocheze calea.Scopul acestui robotel este sa fie capabil sa se adapteze la diverse scenarii de drum, evitand obstacolele cu usurinta fara interventia umana.Ideea de la care am pornit era una simplista, de a crea un vehicul care evita obstacolele.Insa, pentru a exista mai multe functionalitati si pentru a creste fiabilitatea produsului, Explorobot pune accentul si pe interactivitatea si accesibilitatea dintre robotel si om, pentru a oferi o experienta cat mai placuta in utilizarea sa.Astfel, produsul poate fi util atat pentru mine, cat si pentru cei din jurul meu, deoarece poate fi dezvoltat pe nevoile fiecaruia.

Descriere generală

Explorobot este un robot autonom coneput pentru a explora mediul inconjurator fara interventia umana.Echipat cu senzori si tehnologie de control, acest robot poate detecta si evita obstacolle din calea sa.Utilizand Arduino UNO ca unitate centrala de control, senzori ultrasonici si motoare pentru propulsie, Explorobot poate naviga prin medii variate, permitand utilizatorului sa observe sau sa interactioneze cu mediul incojurator prin intermediul modulului Bluetooth.

Hardware Design

Piese folosite:

  • Plaza dezvoltare Uno R3 ATmega328P
  • Modul driver L298N
  • Doua carcase cu suport pentru 4 baterii (1,5V fiecare)
  • Bateria 9V
  • Fire
  • Breadboard
  • Seznor ultrasonic HC-SR04
  • Modul Bluetooth HC-05
  • Micro servo motor SG90
  • 2 motoare 3-6V DC cu roti
  • Regulator de tensiune LM2596
  • Rezistente
  • Ecran OLED

Aspecte relevante despre conexiunile hardware:

  • La motordriver: Pinii EnA si EnB activeaza/dezactiveaza motoarele.Pinii IN1,IN2(pt M1) si IN3,IN4(pt M2) permit placutei Arduino sa seteze directia de rotatie a motoarelor, informatie transmisa mai departe catre motoare prin iesirile OUT1,OUT2,OUT3,OUT4.
  • La servomotor: Pinul 5 al Arduino se conecteaza la pinul PWM de la servomotor.Lungimea semnalului cand este pe HIGH este o informatie cruciala,deoarece ii spune servomotorului cat trebuie sa se roteasca.
  • La modulul bluetooth: Acesta trebuie alimentat la un voltaj constant de 5V, de aceea am folosit un regulator de tensiune care are ca input 6V si ii transforma in 5V.De asemenea, pinii RX si TX ai modulului blutooth suporta doar 3,3V.Cum TX al HC-05 transmite semnale de 3,3V , ramane sa punem un divizor de tensiune doar la pinul RX al modulului bluetooth, pentru ca nu cumva placuta Arduino sa transmita semnale cu un voltaj mai mare si sa deterioreze componenta.
  • La senzorul ultrasonic pinul Trig este conectat la pinul digital 12 al Arduino.Acest pin este utilizat pentru a trimite un impuls de 10 microsecunde pentru a initia masurarea distantei.Pinul Echo e legat la pinul digital 13 al Arduino.Acest pin primeste semnalul de la senzor care este utilizat pentru a calcula durata calatoriei undei sonore si,implicit,distanta.
  • Ecranul OLED comunica cu Arduino prin protocolul I2C astfel: foloseste SDA(serial data) pentru transmiterea datelor si SCL(Serial Clock) pentru semnalul de ceas care sincronizeaza transmisia datelor.

Aici puneţi tot ce ţine de hardware design:

Software Design

Descriere: Robotul asteapta sa fie pornit dupa conectarea modului bluetooth la telefon, printr-o aplicatie care ii transmite ca poate porni.Dupa aceea, robotul isi incepe procesul autonom de a merge si a ocoli obstacolele, cu ajutorul senzorului de distanta si a servo motorului care ii permite senzorului de distanta sa analizeze imprejurimile.Robotelul poate fi oprit oricand din aplicatie.

Din punctul de vedere al laboratoarelor, au fost atinse 4 concepte din acestea.Primul ar fi UART, folosit in comunicarea cu modulul Bluetooth.Al doilea ar tine de intreruperi, deoarece modulul Bluetooth poate functiona si astfel daca este conectat la pinii 0 si 1 (RX,TX) ai placutei Arduino.In plus,senzorul ultrasonic l-am facut sa functioneze pe baza intreruperilor, existand o functie de intrerupere care este apelata atunci cand se schimba starea pinului echo (de la LOW la HIGH sau de la HIGH la LOW).Si un al treilea concept folosit este cel de comunicare seriala cu I2C, deoarece am adaugat si un ecran OLED.De asemenea, servomotorul foloseste semnale de tip PWM pentru pozitionarea lui, folosind pinul 5 al Arduino-ului ca pin de control.

Biblioteci folosite:

  • 'Servo.h'.Am folosit aceasta bilioteca pentru controlul precis al servo-motorului,deoarece miscarea acestuia la unghiuri specifice permite senzorului ultrasonic sa gaseasca mai multe date despre obstacole.
  • 'SoftwareSerial.h'.Am folosit aceasta biblioteca pentru a crea interfata seriala suplimentara pentru modulul Bluetooth HC-05, astfel putand folosi pini digitali.
  • 'Wire.h' permite comunicarea I2C intre diferite dispozitive electronice, facilitand schimbul de date intre Arduino si ecranul meu OLED.
  • 'Adafruit_GFX.h' ofera functionalitati de desenare si manipulare grafica, permitand afisare de forme,text si imagini pe ecrane grafice, iar in cazul meu eu afisez un text.
  • 'Adafruit_SSD1306.h' este spcifica pentru controlul ecranelor OLED bazate pe controlerul SSD1306, furnizand functionalitati pentru initializare, desenare si afisarea informatiilor pe aceste ecrane.

Mediu de dezvoltare: Arduino IDE

Link video:

https://youtube.com/shorts/Wpih2Vrniqk

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

Rezultatul este cel dorit.Robotelul reuseste sa mentina conexiunea bluetooth cu aplicatia de pe telefon, fiind disponibila comunicarea.Robotelul porneste din aplicatie, iar dupa reuseste sa evite singur obstacolele care ii sunt in cale si se plimba autonom.De asemenea, robotelul se opreste in momentul in care doresc si transmit acest lucru din aplicatie.Ecranul atasat circuitului afiseaza mesajul dorit.

Concluzii

Din punct de vedere software, totul a mers destul de bine si de intuitiv, insa partea de hardware a venit la pachet cu cateva provocari.In principal, acesta au aparut in momentul incercarii montarii modului Bluetooth care parea ca nu mentine conexiunea cu telefonul.Problema era ca HC-05 are nevoie de tesniune stabila de 5V pentru a functiona cum trebuie, iar placuta Arduino nu reusea sa genereze acest voltaj, avand la aceasta conectate atat servo-motorul, cat si senzorul ultrasonic.Astfel, prin adaugarea unui nou set de baterii, unui regulator de tensiune si a unui divizor de tensiune,conexiunea bluetooth ramanea stabila.In plus, pozitionarea componentelor hardware a fost un aspect important, pentru a evita dezechilibrul robotelului, lucru ce ar fi putut avea un impact si asupra puterii motoarelor.

In concluzie, desi proiectul mi-a pus cateva probleme, am reusit sa le rezolv si sa ajung la un produs final functional, atingand toate punctele dorite.

Download

Cod proiect: craciun_delia_ioana_333cc.zip

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

pm/prj2024/aungureanu/delia_ioana.craciun.txt · Last modified: 2024/05/27 10:16 by delia_ioana.craciun
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