Robodog

Introducere

Prezentarea pe scurt a proiectului:

  • Robodog este un cățel autonom ce nu face mizerie și nu are nevoie să fie scos afară dimineața devreme
  • Poate sa faca paza, sa patruleze prin casa si chiar sa latre sau sa interactioneze cu un laser
  • Ideea a pornit de la interdictia de a avea animale de companie in camine

Descriere generală

Senzorii preiau date din mediu, le trimit catre arduino, care calculeaza tensiunea care ar trebui trimisa spre roti, dar si daca cainele ar trebui sau nu sa latre

Hardware Design

1.Lista piese:

  • Arduino Uno R3
  • Ultrasonic HC-SR04
  • PIR
  • Speaker
  • DC Motors
  • L293d
  • Fotorezistente
  • LED

2. Schema electrica:

Software Design

  • In loop() se verifică mai intâi dacă roțile ar trebui să se invârtă și dacă e vreuna blocată. Pentru acest lucru exista 2 fire de la Output-ul Punții H către Analog In-ul plăcuței Arduino. Dacă valoarea diferă față de ce ne-am aștepta înseamnă că avem o roată blocată. Robotul va merge un pic cu spatele și se va roti pentru a se așeza paralel cu peretele.
  • Se citesc datele de la senzorul ultrasonic(intervalul de timp in care semnalul se intoarce) si se calculează distanța. Apoi se preiau si se prelucrează datele de la senzorii de lumină. Daca se detectează o acțiune a unui laser, se trimite comanda de viraj către roți. Dacă se detectează o lumină prea slabă, Arduino activează PIR-ul si LED-ul, pune pe GND ambele borne ale motoarelor, iar atunci când detectează mișcare, se apelează funcția care pornește sunetul de lătrat. Algoritmul după care robotul se plimbă prin mediu este să țină tensiunea pe HIGH la bornele roților cât timp distanța față de obstacol este mai mare de 40 cm. Când nu este îndeplinită această condiție, microcontroller-ul dă comanda de rotire la stânga(roata din stânga se rotește inapoi, iar cea din dreapta inainte) până când robotul se rotește cu aproximativ 90 grade.
  • Se măsoară noua distanță, dacă este mai mare de 1.5 m, robotul se va deplasa înainte(timp in care va colecta din nou datele necesare din mediu). Dacă nu este satisfăcută această condiție, cățelul se va roti în sens invers trigonometric cu 180 grade, iar mai apoi va determina distanța maximă pe care o poate parcurge pe această direcție. In cazul, in care este mai mare decât distanța din stânga si mai mare de 70 cm(era redundant sa mai comparam si aici cu 150), iși va continua deplasarea in dreapta, altfel se va intoarce tot in sens invers trigonometric spre partea stângă, pentru a analiza si distanța față de obiectele din spate.

Demo

Concluzii

În urma unor teste, am observat că există probabilitatea ca unele unde emise prin mediu să se reflecte astfel încât să nu se mai întoarcă și să fie recepționate (în momentul în care robotul se îndreaptă spre un obstacol/perete , iar unghiul dintre direcția roboțelului si perete este destul de mic). Astfel măsurând tensiunea de la bornele motoarelor, robotul îsi dă seama ce roată s-a blocat pentru a se roti cât mai eficient si a se poziționa paralel cu peretele.

Download

Bibliografie/Resurse

  • ATmega328 datasheet
  • LDR datasheet
  • HC SR 04 datasheet
  • L293d datasheet

Export to PDF

pm/prj2023/apredescu/robodog.txt · Last modified: 2023/05/30 12:49 by adelin_doru.crestus
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