payaem.ru

Паяем — Все о электронике

Автономный робот на основе Arduino с возможностью дистанционного управления

Чтобы наработать опыт в работе с платой Arduino, так сказать в качестве учебного опыта и просто для интереса был создан этот проект. Целью проекта было создать автомобиль, который может автономно перемещаться, объезжая различные препятствия и не сталкиваясь с ними.

Шаг 1: Список компонентов и стоимость проекта

1. Игрушечная Машинка с радиоуправлением (radio controlled).

Стоит эта штука около 20 баксов, если у вас есть возможность потратить больше, то можете использовать и получше.

2. Arduino Uno микроконтроллер — 25 долларов

3. Motor shield для контроля электромоторов — 20 долларов

4. GPS для навигации. Adafruit Ultimate GPS Shield — 50 долларов

5. Магнитометр в качестве компаса для навигации. Adafruit HMC5883 Magnetometer — 10 долларов

6. Ультразвуковой датчик расстояния, чтобы избегать препятствия. HC-SR04 — 6 долларов

7. ЖК-дисплей для отображения состояния транспортного средства и информации. LCD Display Blue 1602 IIC, I2C TWI — 6 долларов (можете использовать другой)

8. Инфракрасный датчик и пульт.

9. Arduino sketch (программа C++).

10. Тонкая древесная плита в качестве монтажной платформы.

11. Макетные платы. Одна длинная и узкая, а другая маленькая, чтобы отдельно установить на ней магнитометр подальше от других элементов.

12. Перемычки.

13. Набор для монтажа ультразвукового датчика — 12 долларов 

14. Паяльник и припой.

15. Дрель.

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

Шаг 2: Шасси и монтаж платформы

Радиоуправление изъяли из ненужной игрушки, которая стоила 15 баксов.

Машинка здесь с двумя двигателями. С помощью одного движка пультом контролируется скорость движения робота, а с помощью другого контролируется рулевое управления.

Использовалась тонкая доска в качестве монтажной поверхности, на которой были прикреплены макетные платы, Arduino, ЖК и т.д. Батарейки размещены под доской и провода пропущены через просверленные отверстия.

Шаг 3: Программа

Arduino управляется через программу С ++.

Исходный код

RC_Car_Test_2014_07_20_001.ino

Шаг 4: ЖК-дисплей

Во время работы экран отображает следующую информацию:

Ряд 1:

1. TH — Задача, курс к текущей маршрутной точки

2. CH — Текущее направление робота

Ряд 2:

3. Err — Направление по компасу, показывает в каком направлении движется робот (влево или вправо)

4. Dist — Фокусное расстояние (в метрах) до текущей маршрутной точки

Ряд 3:

5. SNR — Sonar расстояние, то есть расстояние до любых объектов в передней части робота

6. Spd — Скорость робота

Ряд 4:

7. Mem — Память (в байтах). В памяти Arduino имеется 2 КБ

8. WPT n OF x — Показывает, где робот находится в списке маршрутных точек

Шаг 5: Избежать столкновения с объектами

Чтобы робот избегал препятствий, здесь использовался ультразвуковой датчик » Ping». Было решено совместить его с библиотекой Arduino NewPing, поскольку она лучше, чем простая PIng библиотека.

Библиотека была взята отсюда: https://github.com/fmbfla/Arduino/tree/master/NewPing

Датчик был установлен на бампере робота.

Если объект обнаружен:

  1. Робот замедляется
  2. Если робот движется прямо (то есть не сворачивает), то помогите роботу, поверните его по направлению к вашей точке маршрута (бывают сбои иногда).
  3. Если робот столкнулся с объектом, то сдайте назад, чтобы потом робот снова продолжил движение.
  4. Если робот сбился с маршрутной точки, то не страшно, точки сохраняются и можно снова повторить процесс.

    Шаг 6: Управление маршрутными точками

    Для навигации курса, нам нужно управление различными точками.  Был создан простой WaypointClass, который содержит значения долготы и широты. Затем создали WaypointClass для хранения маршрутных точек, и переменную currentWaypoint, чтобы отслеживать текущие маршрутные точки.

    waypointClass.h

    Шаг 7: GPS-навигация

    GPS используется для обнаружения расположения робота. При помощи навигации можно рассчитать курс и расстояние маршрутной точки.

    Для GPS использовалась Adafruit Ultimate GPS Shield.

    Использовалась библиотека: https://github.com/adafruit/Adafruit-GPS-Library

    Образец кода: https://github.com/adafruit/Adafruit-GPS-Library/tree/master/examples/parsing

    Для расчёта расстояния до точки: https://github.com/mikalhart/TinyGPS

    Шаг 8: Компас навигации

    GPS работает отлично и подходит для предоставления точных данных о местоположении, но масштаб, на котором работает этот проект слишком мал для того, чтобы обеспечить точную информацию.

    Использовался цифровой магнитометр (который предоставлен коде как «компас»). «Компас» выполняет быстрое считывание с текущего направления транспорта. С помощью GPS вычисляется курс и куда поворачивать (влево или вправо).

    Можете использовать машинку с более широким размахом рулевого управления (то есть более маневренную). Здесь использовалась дешёвая игрушка и поэтому робот ограничен в управлении.

    Магнитометр был установлен подальше от моторов и прочих элементов, поскольку он очень чувствителен к электрическим помехам.

    Шаг 9: Мотор и управление скоростью

    Скорость автомобиля контролируется с помощью пульсовой волны модуляции (ШИМ), предоставленной Adafruit Motor Shield.

    Программа устанавливает частоту в зависимости от следующего:

    • Если робот едет прямо (не поворачивая) и объекты не обнаружены, движение быстрое.
    • Если робот едет прямо и обнаруживает объект, движение замедляется.

    В приведенном выше фото, вы можете увидеть: (1) на задних колёсах приводной двигатель и (2) на передних колёсах рулевой двигатель.

    Шаг 10: Инфракрасный датчик и пульт управления

    Был добавлен инфракрасный датчик (с соответствующим дистанционным пультом), чтобы обеспечить удобную функциональность.

    Как только будет подключено питание, робот сразу же начнёт движение и пульт позволяет сразу взять под контроль робота, чтобы он начал выполнять ваши команды.

    Шаг 11: Возможные улучшения проекта

    Cписок потенциальных усовершенствований
    • Лучше использовать игрушку джип, поскольку у него больше колёса по размеру и более мощные моторы, он гораздо легче едет по траве и грязи.
    • Можно добавить сервопривод.
    • Добавить более лучший переключатель.
    • Добавить камеру для фотоснимков или видео.
    • Добавить радиопередатчик.

    Шаг 12: Заключительное слово

    Получилась очень интересная штука. Надеемся данный проект поможет вам познать больше о робототехнике. Удачи вам в ваших проектах.

    До свидания.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *