Съдържание:

Роботизиран автомобил за избягване на препятствия: 9 стъпки
Роботизиран автомобил за избягване на препятствия: 9 стъпки

Видео: Роботизиран автомобил за избягване на препятствия: 9 стъпки

Видео: Роботизиран автомобил за избягване на препятствия: 9 стъпки
Видео: 40 полезных автотоваров с алиэкспресс, которые упростят жизнь любому автовладельцу #8 2024, Ноември
Anonim
Роботизиран автомобил, избягващ препятствия
Роботизиран автомобил, избягващ препятствия
Роботизиран автомобил, избягващ препятствия
Роботизиран автомобил, избягващ препятствия

Как да изградим робот, избягващ препятствия

Стъпка 1: Черна кутия

Черна кутия
Черна кутия

първата стъпка използвах черна кутия като основа за моя робот.

Стъпка 2: Arduino

Arduino
Arduino

Arduino е мозъкът на цялата система и организира нашите двигатели

Стъпка 3: Прикачване на Arduino към Blackbox

Прикачване на Arduino към Blackbox
Прикачване на Arduino към Blackbox

Прикрепих arduino към черната кутия с помощта на горещо лепило

Стъпка 4: Ултразвуков сензор

Ултразвуков сензор
Ултразвуков сензор

За да направим робот, който може да се движи сам, се нуждаем от някакъв вход, сензор, който отговаря на целта ни. Ултразвуков сензор е инструмент, който измерва разстоянието до обект с помощта на ултразвукови звукови вълни. Ултразвуков сензор използва преобразувател за изпращане и приемане на ултразвукови импулси, които предават обратно информация за близостта на обекта

Стъпка 5: Свързване на сензора към Arduino

Връзка на сензора към Arduino
Връзка на сензора към Arduino
Връзка на сензора към Arduino
Връзка на сензора към Arduino

Използвах проводници, за да свържа връзката между макета и arduino.

Обърнете внимание, че вашият сензор за пинг може да има различно разположение на щифтовете, но трябва да има щифт за напрежение, заземител, триг и ехо пин.

Стъпка 6: Щит на двигателя

Двигателен щит
Двигателен щит

Платките Arduino не могат сами да управляват постояннотокови двигатели, тъй като токовете, които генерират, са твърде ниски. За да разрешим този проблем, използваме щитове за двигатели. Щитът на двигателя има 2 канала, което позволява управление на два DC двигателя или 1 стъпков мотор. … Чрез адресиране на тези щифтове можете да изберете канал на двигателя, който да инициирате, да посочите посоката на двигателя (полярност), да зададете скорост на двигателя (PWM), да спрете и стартирате двигателя и да наблюдавате поглъщането на ток на всеки канал

Стъпка 7: Свързване на щита на двигателя към Arduino

Свързване на Motor Shield към Arduino
Свързване на Motor Shield към Arduino

Просто прикрепете щита на двигателя към arduino със счупени проводници на сензора

Стъпка 8: Свързване на 4 двигателя и батериите към Shield

Свързване на 4 -те двигателя и батериите към Shield
Свързване на 4 -те двигателя и батериите към Shield

Всеки щит на двигателя има (поне) два канала, един за двигателите и един за източник на захранване, Свържете ги един спрямо друг

Стъпка 9: Програмирайте робота

стартирайте този код

#включи #включи

NewPing сонар (TRIG_PIN, ECHO_PIN, MAX_DISTANCE);

AF_DC Мотор на двигателя1 (1, MOTOR12_1KHZ); AF_DCМотор на мотор2 (2, MOTOR12_1KHZ); AF_DCМотор на двигателя3 (3, MOTOR34_1KHZ); AF_DCМотор на мотора4 (4, MOTOR34_1KHZ); Servo myservo;

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

boolean goesForward = false; int разстояние = 80; int speedSet = 0;

void setup () {

myservo.attach (10); myservo.write (115); забавяне (2000); разстояние = readPing (); забавяне (100); разстояние = readPing (); забавяне (100); разстояние = readPing (); забавяне (100); разстояние = readPing (); забавяне (100); }

void loop () {int distanceR = 0; int разстояние L = 0; забавяне (40); if (разстояние <= 15) {moveStop (); забавяне (50); moveBackward (); забавяне (150); moveStop (); забавяне (100); distanceR = lookRight (); забавяне (100); distanceL = lookLeft (); забавяне (100);

if (distanceR> = distanceL) {turnRight (); moveStop (); } else {turnLeft (); moveStop (); }} else {moveForward (); } разстояние = readPing (); }

int lookRight () {myservo.write (50); забавяне (250); int разстояние = readPing (); забавяне (50); myservo.write (100); обратно разстояние; }

int lookLeft () {myservo.write (120); забавяне (300); int разстояние = readPing (); забавяне (100); myservo.write (115); обратно разстояние; забавяне (100); }

int readPing () {забавяне (70); int cm = sonar.ping_cm (); ако (cm == 0) {cm = 200; } return cm; }

void moveStop () {motor1.run (RELEASE); motor2.run (РЕЛИЗАЦИЯ); motor3.run (РЕЛИЗАЦИЯ); motor4.run (РЕЛИЗАЦИЯ); } void moveForward () {

ако (! отива напред) {отива напред = вярно; motor1.run (НАПРЕД); motor2.run (НАПРЕД); motor3.run (НАПРЕД); motor4.run (НАПРЕД); for (speedSet = 0; speedSet <MAX_SPEED; speedSet += 2) {motor1.setSpeed (speedSet); motor2.setSpeed (speedSet); motor3.setSpeed (speedSet); motor4.setSpeed (speedSet); забавяне (5); }}}

void moveBackward () {goesForward = false; motor1.run (НАЗАД); motor2.run (НАЗАД); motor3.run (НАЗАД); motor4.run (НАЗАД); for (speedSet = 0; speedSet <MAX_SPEED; speedSet += 2) {motor1.setSpeed (speedSet); motor2.setSpeed (speedSet); motor3.setSpeed (speedSet); motor4.setSpeed (speedSet); забавяне (5); } void turnLeft () {motor1.run (НАЗАД); motor2.run (НАЗАД); motor3.run (НАПРЕД); motor4.run (НАПРЕД); забавяне (500); motor1.run (НАПРЕД); motor2.run (НАПРЕД); motor3.run (НАПРЕД); motor4.run (НАПРЕД); }

void turnLeft () {motor1.run (НАЗАД); motor2.run (НАЗАД); motor3.run (НАПРЕД); motor4.run (НАПРЕД); забавяне (500); motor1.run (НАПРЕД); motor2.run (НАПРЕД); motor3.run (НАПРЕД); motor4.run (НАПРЕД); }

Препоръчано: