Робот с сервомотором избегает препятствий
Компоненты и расходные материалы
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
Необходимые инструменты и машины
|
Приложения и онлайн-сервисы
|
Об этом проекте
Все о проекте
Я изучаю медиа-дизайн в Университете мультимедиа в Сайберджайе, Малайзия. Это мой гамма-год изучения медиаискусства, интерактивный дизайн - это предмет, который научит студентов тому, как использовать компоненты Arduino и как это работает. Итак, в моем последнем задании я выбрал робота с обходом препятствий в качестве своего собственного проекта и узнал, как работают все компоненты.
Шаг 1:
Приготовьте и соберите свой робот-хазис. Внутри упаковки есть несколько компонентов, шасси, два двигателя, два колеса, переднее колесо, держатель батареи, несколько винтов, переключатель и перемычки. Фото ниже:
Шаг 2:
Прежде чем припаивать перемычки к обоим двигателям, я бы рекомендовал проверить все компоненты, чтобы убедиться, что все они работают нормально, например:оба двигателя постоянного тока, плата Arduino, моторный щит, серводвигатель и ультразвуковой датчик. Затем мы приступим к пайке красного и черного проводов на обоих двигателях, пример на картинке ниже:
Шаг 3:
Подойдите к нашему аккумуляторному шасси и переключите часть. Нам нужно только отрезать половину черного провода от корпуса батареи и припаять 1 сторону провода к 1 отверстию, еще один черный провод припаяется к другому отверстию. Наш свитч готов!
Шаг 4:
Нам нужно будет сложить плату Arduino и плату Motor Shield, Motor Shield будет складываться на плату Arduino. Пример ниже:
Шаг 5:
Перейдем к плате Motor Shield. Этот экран обеспечивает питание двигателей и серводвигателя, двигателям требуется большой ток, и этот экран может обеспечивать ток до 600 мА для каждого двигателя. Нам нужно припаять / закрепить провода двигателей постоянного тока на плате двигателя. Если провода вашего двигателя постоянного тока достаточно длинные, чтобы дотянуться до щита двигателя, это подойдет, в противном случае вам может потребоваться использовать внешние перемычки (независимо от того, является ли перемычка папа / мама), отрежьте головку перемычки и убедитесь, что внутри появляется медная линия. (Вам нужно будет отрезать резину перемычки, чтобы появилась медная проволока). И вам нужно припаять внешние провода к проводам двигателя постоянного тока. Пример:
Затем подключите левый провод мотора к разъему M1 моторного щита. Правый провод двигателя будет подключаться к разъему M3 от платы экрана двигателя. Пример:
Шаг 6:
Затем нам нужно будет подключить красный и черный провода переключателя аккумулятора к плате экрана двигателя.
После этого нам нужно будет подготовить перемычки «папа» и «мама», чтобы припаять их к 5V, GND, аналоговому контакту 4 и аналоговому контакту 5. Перед этим нам нужно будет найти провода перемычки «мама» и «папа» одинакового цвета и разрезать их пополам. . Почему должны быть одного цвета? Во-первых, нам легко распознать, какой провод для какой части. Во-вторых, белая перемычка «папа» будет припаяна к белой перемычке «мама», которая подключается к 5В. Перемычка черного цвета будет припаяна к перемычке с внутренней резьбой, а мужская перемычка будет припаяна к земле. Оранжевый цвет папа перемычки будет припаян к оранжевой перемычке с розеткой, оранжевый перемычка перемычка будет припаяна к аналоговому выводу 5. Наконец, что не менее важно, коричневая вилка перемычки будет припаяна к коричневой перемычке с внутренней резьбой, а затем к ней будет припаяна вилка перемычки коричневого цвета. Аналоговый вывод 4. Пример:
Шаг 7:
Вы можете использовать двусторонний скотч или пистолет для горячего клея, чтобы прикрепить оба экрана к корпусу робота.
Шаг 8. Перейдите к ультразвуковому датчику
От проводов перемычек «мама» и «папа», которые мы только что припаяли, белая перемычка (5 В) (перемычка на участке «мама») будет подключаться к контакту VCC ультразвукового датчика. Черная перемычка (GND) (перемычка с гнездом на месте) подключается к контакту GND. Коричневая перемычка (аналоговый вывод 4) (перемычка на участке «мама») подключается к выводу Echo. Перемычка оранжевого цвета (аналоговый вывод 5) (перемычка на участке «мама») подключается к контакту TRIG.
Шаг 9:
Наконец, серводвигатель подключается к слоту servo_2. Примечание * (Существует несколько типов серводвигателей. Возможно, вам потребуется найти в Интернете информацию о том, как они подключаются к слоту servo_2). Ниже представлена моя собственная версия слота сервопривода.
Последний шаг:код
Для этого робота, избегающего препятствий, нам понадобятся 3 библиотеки:библиотека Motor Shield для драйвера Motor Shield, библиотека New Ping для ультразвукового датчика. В-третьих, это Arduino IDE. Ниже приведены ссылки для загрузки библиотек:
-
Библиотека Motor Shield
- Новая библиотека Ping
Я благодарен вам за просмотр моего проекта. Я надеюсь, что инструкции достаточно ясны, и вы, ребята, сможете им следовать и построить робота, избегающего препятствий, для себя. Спасибо!
Видео для тестирования:
Код
- IDE Arduino
IDE Arduino C #
Скопируйте и вставьте код в Arduino IDE, затем загрузите на свою плату Arduino#include#include #include #define TRIG_PIN A4 #define ECHO_PIN A5 # define MAX_DISTANCE_POSSIBLE 1000 #define MAX_SPEED 150 // #define MOTORS_CALIBRATION_OFFSET 3 # define COLL_DIST 20 #define TURN_DIST COLL_DIST + 10 Сонар NewPing (TRIG_PIN, ECHO_PIN, MAX_DISTANCE_POSSIBLE); AF_DCMotor leftMotor12 (3, MOTHZOR) AF_DCMotor rightMotor (1, MOTOR12_8KHZ); Сервомотор NeckControllerServoMotor; int pos =0; int maxDist =0; int maxAngle =0; int maxRight =0; int maxLeft =0; int maxFront =0; int course =0; int curDist =0; String motorSet =""; int speedSet =0; void setup () {NeckControllerServoMotor.attach (10); NeckControllerServoMotor.write (90); задержка (2000); checkPath (); motorSet ="ВПЕРЕД"; NeckControllerServoMotor.write (90); moveForward ();} недействительный цикл () {checkForward (); checkPath ();} void checkPath () {int curLeft =0; int curFront =0; int curRight =0; int curDist =0; NeckControllerServoMotor.write (144); задержка (120); для (pos =144; pos> =36; pos- =18) {NeckControllerServoMotor.write (pos); задержка (90); checkForward (); curDist =readPing (); если (curDist curDist) {maxAngle =pos;} if (pos> 90 &&curDist> curLeft) {curLeft =curDist;} if (pos ==90 &&curDist> curFront) {curFront =curDist;} if (pos <90 &&curDist> curRight) {curRight =curDist;}} maxLeft =curLeft; maxRight =curRight; maxFront =curFront;} void setCourse () {if (maxAngle <90) {turnRight ();} if (maxAngle> 90) {turnLeft ();} maxLeft =0; maxRight =0; maxFront =0;} недействительным checkCourse () {moveBackward (); задержка (500); moveStop (); setCourse ();} void changePath () {if (pos <90) {lookLeft ();} if (pos> 90) {lookRight ();}} int readPing () {задержка (70); беззнаковый int uS =sonar.ping (); int cm =uS / US_ROUNDTRIP_CM; return cm;} void checkForward () {if (motorSet =="ВПЕРЕД") {leftMotor.run (ВПЕРЕД); rightMotor.run (ВПЕРЕД); }} void checkBackward () {if (motorSet =="НАЗАД") {leftMotor.run (НАЗАД); rightMotor.run (НАЗАД); }} void moveStop () {leftMotor.run (ВЫПУСК); rightMotor.run (RELEASE);} void moveForward () {motorSet ="FORWARD"; leftMotor.run (ВПЕРЕД); rightMotor.run (ВПЕРЕД); для (speedSet =0; speedSet
Схема
Производственный процесс
- Простой робот Pi
- Робот-последователь линии
- Управление роботом Roomba с помощью Arduino и устройства Android
- Управление серводвигателем с помощью Arduino и MPU6050
- Автономный домашний робот-помощник
- Самодельная рука робота Arduino - управляемая жестами рук
- Управление манипулятором Arduino с помощью приложения для Android
- Робот для супер-крутой навигации внутри помещений
- Что такое серводвигатель?
- Сопряжение редукторов с серводвигателями