Оглавление:

OAREE - 3D-печать - Робот для предотвращения препятствий для инженерного образования (OAREE) с Arduino: 5 шагов (с изображениями)
OAREE - 3D-печать - Робот для предотвращения препятствий для инженерного образования (OAREE) с Arduino: 5 шагов (с изображениями)

Видео: OAREE - 3D-печать - Робот для предотвращения препятствий для инженерного образования (OAREE) с Arduino: 5 шагов (с изображениями)

Видео: OAREE - 3D-печать - Робот для предотвращения препятствий для инженерного образования (OAREE) с Arduino: 5 шагов (с изображениями)
Видео: ZEITGEIST: MOVING FORWARD | OFFICIAL RELEASE | 2011 2024, Июнь
Anonim
Image
Image
OAREE - 3D-печать - Робот для предотвращения препятствий для инженерного образования (OAREE) с Arduino
OAREE - 3D-печать - Робот для предотвращения препятствий для инженерного образования (OAREE) с Arduino
OAREE - 3D-печать - Робот для предотвращения препятствий для инженерного образования (OAREE) с Arduino
OAREE - 3D-печать - Робот для предотвращения препятствий для инженерного образования (OAREE) с Arduino

OAREE (Робот, избегающий препятствий для инженерного образования)

Дизайн: Целью данного руководства было спроектировать робота OAR (робота, избегающего препятствий), который был бы простым / компактным, пригодным для 3D-печати, простым в сборке, использующим сервоприводы непрерывного вращения для движения и имеющим как можно меньше покупных деталей. Я считаю, что мне удалось создать этого удивительного робота, и я назвал его OAREE (робот, избегающий препятствий для инженерного образования). Этот робот обнаружит препятствия, остановится, посмотрит налево и направо, затем развернется в беспрепятственном направлении и продолжит движение вперед.

Предыстория: в Интернете есть множество препятствий, позволяющих избежать роботов, но большинство из них громоздкие, трудно собираемые и дорогие. Многие из этих роботов поставляются с кодом Arduino, но было сложно найти хорошо продуманный рабочий пример. Я также хотел использовать сервоприводы непрерывного вращения для колес (вместо двигателей постоянного тока), что еще не было сделано. Итак, я отправился на миссию по разработке компактного изобретательного робота OAR, которым можно поделиться со всем миром.

Дальнейшее развитие: этот робот может быть доработан для повышения точности проверки связи, добавления ИК-датчиков для отслеживания линии, ЖК-экрана для отображения расстояния до препятствий и многого другого.

Запасы

  • 1x Arduino Uno -
  • 1x экран датчика V5 -
  • 1x держатель батареи 4xAA с переключателем включения / выключения -
  • 1x сервопривод SG90 -
  • 2x сервопривода непрерывного вращения -
  • 1x 9 В кабель питания батареи для Arduino (ДОПОЛНИТЕЛЬНО) -
  • 1x ультразвуковой датчик HC-SR04 -
  • 4x провода для перемычек женщина-женщина -
  • 2x резинки
  • 1x 9 В аккумулятор (ДОПОЛНИТЕЛЬНО)
  • 4 батарейки типа АА
  • 4 маленьких винта (4 x 1/2 или что-то подобное)
  • Отвертка Филлипс
  • Клей для крепления резинок к колесам

Шаг 1: 3D-печать: корпус, колеса, мраморный рицинус, болт / гайка 6 мм и крепление для ультразвукового датчика

3D-печать: корпус, колеса, мраморный рицинус, болт / гайка 6 мм и крепление для ультразвукового датчика
3D-печать: корпус, колеса, мраморный рицинус, болт / гайка 6 мм и крепление для ультразвукового датчика
3D-печать: корпус, колеса, мраморный рицинус, болт / гайка 6 мм и крепление для ультразвукового датчика
3D-печать: корпус, колеса, мраморный рицинус, болт / гайка 6 мм и крепление для ультразвукового датчика
3D-печать: корпус, колеса, мраморный рицинус, болт / гайка 6 мм и крепление для ультразвукового датчика
3D-печать: корпус, колеса, мраморный рицинус, болт / гайка 6 мм и крепление для ультразвукового датчика

Для 3D-печати нужно 5 частей.

  1. Тело
  2. Колеса
  3. Мраморный литейщик
  4. Болт / гайка 6 мм (опционально, можно заменить металлическую гайку / болт)
  5. Крепление ультразвукового датчика

Все необходимые файлы. STL включены в это руководство, а также файлы Sketchup. Рекомендуется заполнение 40%.

Шаг 2: запрограммируйте Arduino

Image
Image
Соберите робота
Соберите робота

Отправить код в Arduino UNO: используя Arduino IDE, отправьте код (из прикрепленного файла) в свой модуль Arduino. Вам нужно будет загрузить и включить в этот скетч библиотеки servo.h и newping.h.

Код тщательно прокомментирован, поэтому вы можете видеть, что делает каждая команда. При желании вы можете легко изменить расстояние ультразвукового датчика на большее или меньшее значение. Это начальный код, который предполагается расширить и использовать для дальнейшей разработки проекта.

// РОБОТ ДЛЯ ИЗБЕЖАНИЯ ПРЕПЯТСТВИЙ // [email protected], [email protected], Университет штата Теннесси в Чаттануге, Электротехника, ОСЕНЬ 2019 // Необходимые материалы: // 1) Arduiino UNO, 2) Щит сервопривода v5.0, 3) Датчик HCSR04 Ulrasonic, 4) Сервопривод FS90 (для ультразвукового датчика) // 5 и 6) 2 СЕРВИСА НЕПРЕРЫВНОГО ВРАЩЕНИЯ для колес // 7) Мрамор 16 мм для оси заднего ролика, 8 и 9) 2 резиновые ленты для колес // 10- 15) 1x (4xAA) Держатель батареи с переключателем, 16 и 17) Батарея 9 В с разъемом для питания Arduino UNO // 3D PRINT: // 18) Корпус РОБОТА, 19 и 20) 2 колеса, 21) Мраморный рицинус, 22) Ультразвуковой датчик Крепление и винт 6 мм (см. Прикрепленные файлы) // -------------------------------------- -------------------------------------------------- ----------------------------------------- #include // Включить сервобиблиотеку #include // Включить библиотеку Newping // ------------------------------------------- -------------------------------------------------- ------------------------------------ #define TRIGGER_PIN 1 2 // Триггер США на вывод 12 на Arduino #define ECHO_PIN 13 // Эхо США на вывод 13 на Arduino #define MAX_DISTANCE 250 // Расстояние до пинга (макс. 250) int distance = 100; // ------------------------------------------------ -------------------------------------------------- ------------------------------- Сервопривод US_Servo; // Сервопривод ультразвукового датчика Left_Servo; // Сервопривод левого колеса Servo Right_Servo; // Сервопривод правого колеса Сонар NewPing (TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // Настройка NewPing контактов и максимального расстояния. // ------------------------------------------------ -------------------------------------------------- ------------------------------- void setup () // ВХОДЫ / ВЫХОДЫ, ГДЕ ПРИКРЕПИТЬ, УСТАНОВИТЬ НАЧАЛЬНОЕ ПОЛОЖЕНИЕ / ДВИЖЕНИЕ {pinMode (12, ВЫХОД); // Вывод триггера установлен как вывод pinMode (13, INPUT); // Вывод эхо-сигнала установлен как input US_Servo.attach (11); // Сервопривод США установлен на вывод 11 US_Servo.write (90); // СЛУЖБА США СМОТРИТ ВПЕРЕД

Left_Servo.attach (9); // Сервопривод левого колеса к выводу 9

Left_Servo.write (90); // СЕРВО ЛЕВОГО КОЛЕСА установлен в положение СТОП

Right_Servo.attach (10); // Сервопривод правого колеса установлен на вывод 10

Right_Servo.write (90); // СЕРВО ПРАВОЕ КОЛЕСО установлено на задержку СТОП (2000); // Ждем 2 секунды distance = readPing (); // Получить расстояние Ping при прямой задержке положения (100); // Ждем 100 мс moveForward (); // РОБОТ ДВИГАЕТСЯ ВПЕРЕД} // ------------------------------------------ -------------------------------------------------- ------------------------------------- void loop () {int distanceRight = 0; // Инициируем расстояние США вправо с 0 int distanceLeft = 0; // Инициируем расстояние по США слева в 0 //US_Servo.write(90); // сервопривод по центру США // delay (50); // US_Servo.write (70); // Посмотрите немного вправо // delay (250); // US_Servo.write (110); // Посмотрите немного влево // delay (250); // US_Servo.write (90); // Look Center

if (distance <= 20) // Робот ДВИГАЕТСЯ ВПЕРЕД {moveStop (); // Робот ОСТАНАВЛИВАЕТСЯ на расстоянии = distanceLeft) // Решаем, в каком направлении повернуть {turnRight (); // Правая сторона имеет наибольшее расстояние, РОБОТ ПОВОРАЧИВАЕТСЯ ВПРАВО с задержкой 0,3 с (500); // Задержка определяет длину поворота moveStop (); // Робот останавливается} else {turnLeft (); // Наибольшее расстояние слева, РОБОТ ПОВОРАЧИВАЕТСЯ с задержкой 0,3 с (500); // Задержка определяет длину поворота moveStop (); // Робот ОСТАНОВИТСЯ}} else {moveForward (); // Робот ДВИГАЕТСЯ ВПЕРЕД} distance = readPing (); // США СЧИТАЮТ НОВЫЙ PING для нового направления движения} // ----------------------------------- -------------------------------------------------- -------------------------------------------- int lookRight () // Ультразвуковой датчик СМОТРЕТЬ ПРАВИЛЬНО ФУНКЦИЯ {US_Servo.write (30); // Сервопривод США ДВИГАЕТСЯ ВПРАВО на угол delay (500); int distance = readPing (); // Установить значение пинга для задержки вправо (100); US_Servo.write (90); // Сервопривод США ДВИГАЕТСЯ В ЦЕНТР return distance; // Расстояние установлено} // ------------------------------------------ -------------------------------------------------- ------------------------------------- int lookLeft () // Ультразвуковой датчик СМОТРЕТЬ ЛЕВУЮ ФУНКЦИЮ {US_Servo.write (150); // Сервопривод США ДВИГАЕТСЯ ВЛЕВО на угол delay (500); int distance = readPing (); // Установить значение пинга для левой задержки (100); US_Servo.write (90); // Сервопривод США ПЕРЕМЕЩАЕТСЯ В ЦЕНТР return distance; // Расстояние установлено} // ------------------------------------------ -------------------------------------------------- ------------------------------------- int readPing () // Считываем функцию Ping для ультразвукового датчика. {задержка (100); // 100 мс между пингами (мин. Время пинга = 0,29 мс) int cm = sonar.ping_cm (); // Расстояние PING собирается и устанавливается в см if (cm == 0) {cm = 250; } return cm; } // ----------------------------------------------- -------------------------------------------------- -------------------------------- void moveStop () // ОСТАНОВКА РОБОТА {Left_Servo.write (90); // LeftServo 180 вперед, 0 назад Right_Servo.write (90); // RightServo 0 вперед, 180 назад} // --------------------------------------- -------------------------------------------------- ---------------------------------------- void moveForward () // РОБОТ ВПЕРЕД {Left_Servo.write (180); // LeftServo 180 вперед, 0 назад Right_Servo.write (0); // RightServo 0 вперед, 180 назад} // --------------------------------------- -------------------------------------------------- ---------------------------------------- void moveBackward () // РОБОТ НАЗАД {Left_Servo.write (0); // LeftServo 180 вперед, 0 назад Right_Servo.write (180); // RightServo 0 вперед, 180 назад} // --------------------------------------- -------------------------------------------------- ---------------------------------------- void turnRight () // РОБОТ ВПРАВО {Left_Servo.write (180); // LeftServo 180 вперед, 0 назад Right_Servo.write (90); // RightServo 0 вперед, 180 назад} // --------------------------------------- -------------------------------------------------- ---------------------------------------- void turnLeft () // РОБОТ ВЛЕВО {Left_Servo.write (90); // LeftServo 180 вперед, 0 назад Right_Servo.write (0); // RightServo 0 вперед, 180 назад} // --------------------------------------- -------------------------------------------------- ----------------------------------------

Шаг 3: соберите робота

Image
Image
Соберите робота
Соберите робота
Соберите робота
Соберите робота

Пришло время собрать вашего робота. Шаги перечислены ниже.

1) Прикрепите круглый серво диск и резиновые ленты к колесам: все сервоприводы поставляются с пластиковым монтажным оборудованием и винтами. Найдите круглые диски и ввинтите их в два отверстия на плоской стороне колес. Резиновые ленты надеваются на колесо, чтобы обеспечить сцепление с дорогой. Вы можете добавить немного клея, чтобы резинки оставались на месте.

2) Мраморный рицинус: используйте два маленьких винта, чтобы прикрепить мраморный рицинус к двум треугольникам сзади. Мраморный ролик является простой заменой заднего колеса и обеспечивает заднюю точку поворота.

3) Вставьте сервоприводы в слоты (винты не требуются): поместите сервопривод FS90 (для ультразвукового датчика) в передний слот корпуса. Два сервопривода непрерывного вращения вставляются в левый и правый пазы. Прорези предназначены для плотной посадки, поэтому для удержания сервоприводов на месте не требуются винты. Убедитесь, что провода сервопривода проходят через канавки в пазах так, чтобы они были обращены к задней части корпуса.

4) Размещение батареи 9 В (ДОПОЛНИТЕЛЬНО): поместите батарею 9 В + разъем питания Arduino за передним сервоприводом.

5) Узел крепления ультразвукового датчика: используйте два небольших винта, чтобы прикрепить одно из прилагаемых белых пластиковых сервоприводов к нижней части монтажной пластины ультразвукового датчика. Затем используйте напечатанный на 3D-принтере 6-миллиметровый болт / гайку (или замените металлический болт / гайку), чтобы прикрепить корпус ультразвукового датчика к монтажной пластине. Наконец, поместите датчик в корпус штырями вверх и защелкните его в задней части корпуса.

6) 4 батарейных отсека типа AA: поместите отсек для батареек AA в большую прямоугольную область так, чтобы переключатель включения / выключения был направлен назад.

7) Arduino Uno + V5 Sensor Shield: прикрепите экран к Arduino и поместите его на крепления над батарейным отсеком. Разъем питания должен быть обращен влево.

Ваш робот построен! То, что осталось? Программирование Arduino и подключения перемычек: сервоприводы, ультразвуковой датчик и источник питания.

Шаг 4: Присоедините провода датчика

Image
Image
Законченный!!! Подключите блок питания Arduino 9 В, включите аккумулятор и начните избегать препятствий с помощью OAREE
Законченный!!! Подключите блок питания Arduino 9 В, включите аккумулятор и начните избегать препятствий с помощью OAREE

Подключите провода сервопривода к V5 Shield:

  1. Левый сервопривод непрерывного вращения подключается к контакту 9
  2. Правый сервопривод непрерывного вращения подключается к контакту 10
  3. Сервопривод FS90 спереди подключается к контакту 11

Подключите контакты ультразвукового датчика (через 4 штекерных провода перемычек) к экрану V5:

  1. Триггер на PIN 12
  2. Эхо на PIN 13
  3. VCC к любому из контактов, отмеченных буквой 'V'
  4. Заземлите любой из контактов, отмеченных буквой G.

Подключите батарейный отсек AA к V5 Shield:

  1. Подсоедините положительный красный провод к разъему VCC.
  2. Подключите отрицательный черный провод к заземлению.

Шаг 5: Готово !!! Подключите блок питания Arduino 9 В, включите аккумулятор и начните избегать препятствий с помощью OAREE

Image
Image
Законченный!!! Подключите блок питания Arduino 9 В, включите аккумулятор и начните избегать препятствий с помощью OAREE
Законченный!!! Подключите блок питания Arduino 9 В, включите аккумулятор и начните избегать препятствий с помощью OAREE

Законченный!

1) Подключите блок питания Arduino на 9 В (опционально)

2) Включите аккумулятор.

3) Начните избегать препятствий с OAREE !!!

Я уверен, что вы полюбите своего нового друга, OAREE, после того, как увидите, как он чувствует препятствие, отступает и меняет направление. OAREE лучше всего работает с большими объектами, от которых ультразвуковой датчик может отлетать (например, со стенами). Ему сложно звонить по мелким предметам, таким как ножки стульев, из-за их небольшой площади поверхности и углов. Пожалуйста, поделитесь, доработайте и дайте мне знать о любых необходимых корректировках или ошибках. Это был отличный познавательный опыт, и я надеюсь, что вы получите такое же удовольствие от работы над этим проектом, как и я!

Конкурс робототехники
Конкурс робототехники
Конкурс робототехники
Конкурс робототехники

Финалист конкурса робототехники

Рекомендуемые: