Cuprins:

Masina robotica care evita obstacolele: 9 pasi
Masina robotica care evita obstacolele: 9 pasi

Video: Masina robotica care evita obstacolele: 9 pasi

Video: Masina robotica care evita obstacolele: 9 pasi
Video: Cum se face o masina inteligenta care evita obstacolele | proiect arduino | program si test 2024, Iulie
Anonim
Evitarea obstacolelor Mașina robotică
Evitarea obstacolelor Mașina robotică
Evitarea obstacolelor Mașina robotică
Evitarea obstacolelor Mașina robotică

Cum să construiești un robot pentru a evita obstacolele

Pasul 1: Black Box

Cutia Neagră
Cutia Neagră

primul pas am folosit o cutie neagră ca bază pentru robotul meu.

Pasul 2: Arduino

Arduino
Arduino

Arduino este creierul întregului sistem și ne orchestrează motoarele

Pasul 3: Atașarea Arduino la Blackbox

Atașarea Arduino la Blackbox
Atașarea Arduino la Blackbox

Am atașat arduino la cutia neagră folosind adeziv fierbinte

Pasul 4: senzor cu ultrasunete

Senzor cu ultrasunete
Senzor cu ultrasunete

Pentru a crea un robot care se poate mișca singur, avem nevoie de un fel de intrare, un senzor care să se potrivească obiectivului nostru. Un senzor cu ultrasunete este un instrument care măsoară distanța față de un obiect folosind unde sonore ultrasonice. Un senzor cu ultrasunete utilizează un traductor pentru a trimite și primi impulsuri ultrasonice care retransmite informații despre apropierea unui obiect

Pasul 5: Conexiunea la panou a senzorului la Arduino

Conexiunea senzorului la Arduino
Conexiunea senzorului la Arduino
Conexiunea panoului de măsurare a senzorului la Arduino
Conexiunea panoului de măsurare a senzorului la Arduino

Am folosit fire pentru a conecta la bărbați conexiunea dintre panou și arduino.

Acordați atenție faptului că senzorul dvs. de ping poate avea un aspect diferit al pinului, dar ar trebui să aibă un pin de tensiune, pin de masă, pin pin și un pin ecou.

Pasul 6: Scut motor

Scutul motorului
Scutul motorului

Plăcile Arduino nu pot controla singur motoarele de curent continuu, deoarece curenții pe care îi generează sunt prea mici. Pentru a rezolva această problemă folosim scuturile motorului. Scutul motorului are 2 canale, ceea ce permite controlul a două motoare de curent continuu sau 1 motor pas cu pas. … Adresând acești pini, puteți selecta un canal al motorului pentru a iniția, specifica direcția motorului (polaritatea), setați viteza motorului (PWM), opriți și porniți motorul și monitorizați absorbția curentă a fiecărui canal.

Pasul 7: Conectarea ecranului motorului la Arduino

Conectarea ecranului motorului la Arduino
Conectarea ecranului motorului la Arduino

Pur și simplu atașați scutul motorului la arduino cu firele senzorului strânse

Pasul 8: Conectarea celor 4 motoare și baterii la ecran

Conectarea celor 4 motoare și baterii la ecran
Conectarea celor 4 motoare și baterii la ecran

Fiecare scut motor are (cel puțin) două canale, unul pentru motoare și unul pentru o sursă de alimentare, conectați-le unul față de celălalt

Pasul 9: Programați robotul

rulați acest cod

#include #include

Sonar NewPing (TRIG_PIN, ECHO_PIN, MAX_DISTANCE);

AF_DCMotor motor1 (1, MOTOR12_1KHZ); AF_DCMotor motor2 (2, MOTOR12_1KHZ); AF_DCMotor motor3 (3, MOTOR34_1KHZ); AF_DCMotor motor4 (4, MOTOR34_1KHZ); Servo miservo;

#define TRIG_PIN A2 #define ECHO_PIN A3 #define MAX_DISTANCE 150 #define MAX_SPEED 100 #define MAX_SPEED_OFFSET 10

boolean mergeForward = false; int distanta = 80; int speedSet = 0;

configurare nulă () {

myservo.attach (10); myservo.write (115); întârziere (2000); distanță = readPing (); întârziere (100); distanță = readPing (); întârziere (100); distanță = readPing (); întârziere (100); distanță = readPing (); întârziere (100); }

bucla void () {int distanceR = 0; int distanțaL = 0; întârziere (40); if (distanță <= 15) {moveStop (); întârziere (50); mergi inapoi(); întârziere (150); moveStop (); întârziere (100); distanțăR = lookRight (); întârziere (100); distanțăL = lookLeft (); întârziere (100);

if (distanceR> = distanceL) {turnRight (); moveStop (); } else {turnLeft (); moveStop (); }} else {moveForward (); } distanță = readPing (); }

int lookRight () {myservo.write (50); întârziere (250); int distanță = readPing (); întârziere (50); myservo.write (100); distanța de întoarcere; }

int lookLeft () {myservo.write (120); întârziere (300); int distanță = readPing (); întârziere (100); myservo.write (115); distanța de întoarcere; întârziere (100); }

int readPing () {delay (70); int cm = sonar.ping_cm (); if (cm == 0) {cm = 200; } returnează cm; }

void moveStop () {motor1.run (RELEASE); motor2.run (ELIBERARE); motor3.run (ELIBERARE); motor4.run (ELIBERARE); } void moveForward () {

if (! goesForward) {goesForward = true; motor1.run (FORWARD); motor2.run (FORWARD); motor3.run (FORWARD); motor4.run (FORWARD); for (speedSet = 0; speedSet <MAX_SPEED; speedSet + = 2) {motor1.setSpeed (speedSet); motor2.setSpeed (speedSet); motor3.setSpeed (speedSet); motor4.setSpeed (speedSet); întârziere (5); }}}

void moveBackward () {mergeForward = false; motor1.run (BACKWARD); motor2.run (BACKWARD); motor3.run (BACKWARD); motor4.run (BACKWARD); for (speedSet = 0; speedSet <MAX_SPEED; speedSet + = 2) {motor1.setSpeed (speedSet); motor2.setSpeed (speedSet); motor3.setSpeed (speedSet); motor4.setSpeed (speedSet); întârziere (5); } void turnLeft () {motor1.run (BACKWARD); motor2.run (BACKWARD); motor3.run (FORWARD); motor4.run (FORWARD); întârziere (500); motor1.run (FORWARD); motor2.run (FORWARD); motor3.run (FORWARD); motor4.run (FORWARD); }

void turnLeft () {motor1.run (BACKWARD); motor2.run (BACKWARD); motor3.run (FORWARD); motor4.run (FORWARD); întârziere (500); motor1.run (FORWARD); motor2.run (FORWARD); motor3.run (FORWARD); motor4.run (FORWARD); }

Recomandat: