✓ Контроллер
x1 Плата, совместимая с Arduino Uno R3
x1 Кабель USB
✓ Платы расширения
x1 Плата расширения V5 (UNO Sensor Shield V5)
x1 Драйвер двигателей 2-х канальный на базе L298N
✓ Датчики
x1 Ультразвуковой дальномер HC-SR04
x3 Инфракрасный датчик препятствий
x3 Датчик линии TCRT 5000
x1 Электронный компас GY-271 (HMC5883L)
x1 Модуль GY-521 3-осевой акселерометр и гироскоп MPU6050
✓ Компоненты для управления
x1 Пульт управления + ИК приемник HX1838
x1 Модуль Bluetooth HC-05
✓ Элементы коммутации
x1 Плата макетная беспаечная [170 контактов], 45×34,5×8,5 мм
x40 Провода 20 см с разъемами “мама-мама”
x20 Провода 20 см с разъемами “папа-мама”
x8 Провода 20 см тонкие многожильные
x1 Выключатель питания KCD1-101
✓ Базовые компоненты
x5 Конденсатор керамический 0,1 мкФ
x10 Резистор 220 Ом
✓ Двигатели
x4 Двигатели колес
x1 Серводвигатель MG90S 13,6 г. 180°
✓ Светодиоды
x2 Светодиод красный 5 мм
x2 Светодиод зеленый 5 мм
x2 Светодиод синий 5 мм
x2 Светодиод желтый 5 мм
✓ Элементы питания, зарядное устройство
x2 Аккумуляторы литиевый 18650 3,7 В
x1 Отсек для 2-х аккумуляторов типа 18650
x1 Зарядное устройство для аккумуляторов 18650
✓ Механические детали
x2 Шасси мобильного робота 4WD
x4 Детали для установки серводвигателя и HC-SR04
x3 Детали бампера
x8 Детали для крепления двигателей
x4 Колеса
✓ Крепеж
x10 Стойки латунные
x105 Болты, гайки
x2 Нейлоновый стяжки 2,5х100 мм
x4 Держатель для светодиодов
x3 Втулки пластмассовые
х1 Клей
✓ Инструменты
x1 Отвертка
x1 Ключ гаечный M2хM3
✓ Руководство
x1 Инструкция по сборке мобильного робота
✓ Книга
x1 Момот М. Мобильные роботы на базе Arduino (2-изд.). – СПб.: БХВ-Петербург, 2017 – 336 с.
На протяжении тысячелетий люди усовершенствовали орудия труда, изучали силы природы и подчиняли их себе, использовали их энергию для работы машин, а в прошлом веке создали машины, которые могут управлять другими машинами. Теперь создание устройств, которые взаимодействуют с физическим миром, доступно даже школьнику.
Вы узнаете, из каких узлов состоит простейший робот и как выполнять электрические соединения. Научитесь программировать контроллер Arduino и подключать различные датчики для взаимодействия робота с внешним миром. Изучите ходовую часть и основы управления двигателями. Узнаете, как организовать дистанционное управление роботом с помощью смартфона с операционной системой Android или с пульта дистанционного управления. Сможете собрать различных роботов, построенных на основе простой базовой модели и способных выполнять различные задачи: находить выход из лабиринта, играть в кегельринг, двигаться по компасу, ориентироваться в пространстве и др.
Контроллер
Датчики
Элементы крепежа
Платы расширения
Механические детали
Двигатели
Светодиоды
Компоненты для управления
Элементы питания, зарядное устройство
Базовые компоненты
Элементы крепежа
Книга M. Момота «Мобильные роботы на базе Arduino» поможет вам научиться конструировать роботов, начиная с простейших управляемых автомобилей и заканчивая более умными моделями.
В приложении к книге содержится программный код, файлы с рисунками корпуса.
Данный проект рассчитан на начинающих ардуинщиков и даст хорошую базу для дальнейшего освоения Arduino, Matlab, программирования и механики.
Электроники в проекте немного. Робот представляет из себя манипулятор с 2-мя степенями свободы, в качестве рабочего органа у которого используется карандаш. В проекте решена обратная задача кинематики и задача определение положения рабочего органа в плоскости в зависимости от углов поворота сервоприводов.
Подберите подходящую прищепку (или другой схват) и прикрепите ее к серве так, чтобы расстояние от второй сервы до рабочего органа составляло около 20 сантиметров.
При разработке механической части важно выдерживать указанные расстояния — 20, 15 сантиметров и правильно проводить калибровку двигателей. Естественно, доработка конструкции возможна и зависит того, какие именно узлы у вас еще есть в наличии. Например, вместо алюминиевых звеньев из набора конструктора можно использовать обычные линейки, куски пластика и т.п.
На рисунке сверху приведена схема подключения платы Arduino. Можно использовать макетную плату, можно распаять шилд, на ваше усмотрение.
Эта часть проекта самая интересная и, наверное, самая важная.
Давайте вкратце разберемся, что именно происходит в программной части.
Сначала мы берем изображение и находим его границы. После начинаем рисовать. Процесс рисования состоит из двух частей.
Часть первая. Сначала мы находим пиксель, который соответствует 1, так как наш рисунок теперь представлен в виде 0 и 1. Проходит проверка того, не являются ли пиксели рядом тоже 1, после чего ручка перемещается на выбранный пиксель и удаляет предыдущую 1. Функция повторяется по кругу и позволяет создавать плавные линии.
Вторая часть. Решение обратной задачи кинематики для перемещения рабочего органа к определенному пикселю. При расчете берутся координаты пикселя и вычисляются соответствующие углы приводов. Как именно решается эта задача можно увидеть на рисунке выше.
Теперь перейдем к настройке Matlab и Arduino для отрабатывания кода.
Для начала установите Arduino IO плагин в Matlab.
После этого замените файл arduino.m тем, что прикреплен к проекту под тем же именем.
Скачайте и сохраните finaldraw.m и draw.m в директорию с матлабом.
Загрузите файл adioes.ino на плату Arduino.
Проверьте, к какому порту подключена ваша плата Arduino, после чего откройте finaldraw.m и измените COM3 на ваш порт.
Измените расширение рисунка, который вы хотите нарисовать на .png. Это можно сделать с посощью большинстве графических редакторов. Сохраните полученный файл в директорию с Matlab. Откройте finaldraw.m и измените emma.png на название вашего рисунка с рисширением .png. Схраните файл emma.png.
По молчанию в проекте загружена фотография Эммы Уотсон, которую вы можете использовать для тестирования. Конечно же, вы можете настроить параметры определения положения рабочего органа в соответствии с вашими габаритами конструкции.
На этом все. Подключите вашу плату Arduino к персональному компьютеру, пропишите в командной строке Matlab слово finaldraw и играйтесь.
Алгоритм работы нашего манипулятора достаточно простой. Давайте немного разберемся в этом вопросе.
Сначала мы конвертируем изображение, которое хотим нарисовать в формат png и сохраняем его в папке с Matlab. После этого наш алгоритм преобразовывает рисунок в формат ч/б пикселей, как это показано на рисунке выше. Самая интересная часть — это прорисовка полученных пикселей.
Начинается проверка пикселей конвертированного рисунка. Когда находится 1, которая соответствует белому пикселю на рисунке, рабочий орган перемещается в это положение и опускает ручку. После этого проверяются ближайшие 8 пикселей и, если находится хоть один, ручка перемещается на него, не отрываясь от плоскости. При этом предыдущий пиксель заменяется на 0, чтобы избежать повторов. Таким образом продолжается работа, пока не исчезнут все 1. После этого, рабочий орган перемещается в новое положение проверяет новый массив пикселей. Данный алгоритм позволяет постепенно воспроизвести весь рисунок.
Результат всех приведенных выше пунктов приведен на видео ниже:
СОСТАВ НАБОРА:
— Контроллер
x1 Arduino UNO R3 + кабель USB
— Датчики
x1 Ультразвуковой дальномер HC-SR04
x3 Датчик препятствия
x3 Датчик линии TCRT 5000
x1 Электронный компас GY-271 (HMC5883L)
— Элементы крепежа
x1 Макетная плата малая
x40 Провода 20 см с разъемами «мама-мама»
x8 Провода 20 см тонкие многожильные
x1 Выключатель питания
— Платы расширения
x1 Плата расширения V5 (UNO Sensor Shield V5, APC220)
x1 Драйвер двигателей 2-х канальный на базе L298N
— Механические детали
x2 Шасси мобильного робота 4WD
x4 Колеса
x1 Кронштейн для установки датчика расстояния
— Двигатели
x4 Двигатели колес
x1 Сервомотор аналоговый SG90
— Светодиоды
x5 Светодиод красный
x5 Светодиод жёлтый
— Компоненты для управления
x1 Пульт управления с ИК приемником
x1 Модуль Bluetooth HC-05
— Элементы питания, зарядное устройство
x2 Аккумуляторы литиевый типа 18650
x1 Отсек для 2-х аккумуляторов типа 18650
x1 Зарядное устройство для аккумуляторов
— Базовые компоненты
x5 Конденсатор 0,1 мкФ
x10 Резистор 220 Ом
— Элементы крепежа
x4 Стойки для крепления двигателей
x68 Болты, гайки, шпильки
— Книга
x1 Момот М. Мобильные роботы на базе Arduino. – СПб.: БХВ-Петербург, 2017 — 288 с.
Аннотация
Если вы хотите научиться конструировать мобильного робота, но у вас пока нет знаний, опыта, деталей и электронных компонентов, то этот набор разработан специально для Вас. В его состав входит плата Arduino, необходимые электронные компоненты, двигатели, 4-х колесное шасси, а также популярная книга М. Момота «Мобильные роботы на базе Arduino».
Вы узнаете, из каких узлов состоит простейший робот и как выполнять электрические соединения. Научитесь программировать контроллер Arduino и подключать различные датчики для взаимодействия робота с внешним миром. Изучите ходовую часть и основы управления двигателями. Узнаете как организовать дистанционное управление роботом с помощью смартфона с операционной системой Android или с пульта дистанционного управления. Сможете собрать различных роботов, построенных на основе простой базовой модели и способных выполнять различные задачи: находить выход из лабиринта, играть в кегельринг, двигаться по компасу, ориентироваться в пространстве и др.
Вы сможете:
— изучить основы программирования контроллера Arduino
— сконструировать базовую модель мобильного робота
— дистанционно управлять роботом с помощью IR-пульта или смартфона Android
— изучить базовые алгоритмы управления роботом
— модернизировать и обучить базового робота выходу из лабиринта, путешествию по комнате, игре в кегельринг и др.
Чтобы наработать опыт в работе с платой Arduino, так сказать в качестве учебного опыта и просто для интереса был создан этот проект. Целью проекта было создать автомобиль, который может автономно перемещаться, объезжая различные препятствия и не сталкиваясь с ними.
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 долларов, это при условии, если закупать все эти компоненты, поскольку возможно у вас уже что то имеется из этого.
Радиоуправление изъяли из ненужной игрушки, которая стоила 15 баксов.
Машинка здесь с двумя двигателями. С помощью одного движка пультом контролируется скорость движения робота, а с помощью другого контролируется рулевое управления.
Использовалась тонкая доска в качестве монтажной поверхности, на которой были прикреплены макетные платы, Arduino, ЖК и т.д. Батарейки размещены под доской и провода пропущены через просверленные отверстия.
Arduino управляется через программу С ++.
RC_Car_Test_2014_07_20_001.ino
1. TH — Задача, курс к текущей маршрутной точки
2. CH — Текущее направление робота
3. Err — Направление по компасу, показывает в каком направлении движется робот (влево или вправо)
4. Dist — Фокусное расстояние (в метрах) до текущей маршрутной точки
5. SNR — Sonar расстояние, то есть расстояние до любых объектов в передней части робота
6. Spd — Скорость робота
7. Mem — Память (в байтах). В памяти Arduino имеется 2 КБ
8. WPT n OF x — Показывает, где робот находится в списке маршрутных точек
Чтобы робот избегал препятствий, здесь использовался ультразвуковой датчик » Ping». Было решено совместить его с библиотекой Arduino NewPing, поскольку она лучше, чем простая PIng библиотека.
Библиотека была взята отсюда: https://github.com/fmbfla/Arduino/tree/master/NewPing
Датчик был установлен на бампере робота.
Для навигации курса, нам нужно управление различными точками. Был создан простой WaypointClass, который содержит значения долготы и широты. Затем создали WaypointClass для хранения маршрутных точек, и переменную currentWaypoint, чтобы отслеживать текущие маршрутные точки.
waypointClass.h
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
GPS работает отлично и подходит для предоставления точных данных о местоположении, но масштаб, на котором работает этот проект слишком мал для того, чтобы обеспечить точную информацию.
Использовался цифровой магнитометр (который предоставлен коде как «компас»). «Компас» выполняет быстрое считывание с текущего направления транспорта. С помощью GPS вычисляется курс и куда поворачивать (влево или вправо).
Можете использовать машинку с более широким размахом рулевого управления (то есть более маневренную). Здесь использовалась дешёвая игрушка и поэтому робот ограничен в управлении.
Магнитометр был установлен подальше от моторов и прочих элементов, поскольку он очень чувствителен к электрическим помехам.
Скорость автомобиля контролируется с помощью пульсовой волны модуляции (ШИМ), предоставленной Adafruit Motor Shield.
В приведенном выше фото, вы можете увидеть: (1) на задних колёсах приводной двигатель и (2) на передних колёсах рулевой двигатель.
Был добавлен инфракрасный датчик (с соответствующим дистанционным пультом), чтобы обеспечить удобную функциональность.
Как только будет подключено питание, робот сразу же начнёт движение и пульт позволяет сразу взять под контроль робота, чтобы он начал выполнять ваши команды.
Получилась очень интересная штука. Надеемся данный проект поможет вам познать больше о робототехнике. Удачи вам в ваших проектах.
До свидания.
Ардуино (англ. Arduino)- это такая популярная и всемирно известная платформа для получения базовых навыков в микроэлектронике. По сути — это очень маленький компьютер, для которого можно составлять программы, и управлять с помощью них различными устройствами, начиная светодиодом и заканчивая роботом.
Самая популярная версия платы — Arduino Uno R3Кроме образовательных целей, Ардуино подходит для создания небольших электронных проектов на скорую руку. Это могут быть элементы умного дома, автоматика квестов в реальности, роботы для соревнований, а также разные полезные в хозяйстве устройства. Вот лишь некоторые примеры Ардуино-проектов:
Наш курс состоит из очных уроков и домашних заданий, сгруппированных по темам. Хотя сами упражнения и описание к ним мы адаптировали специально для преподавания в школах, взрослому они тоже будет интересны 🙂 Каждый урок непременно заканчивается рабочей схемой или каким-то полезным устройством, будь то электронные часы, термометр, или целый робот.
Тема 1. Знакомство с платформой Arduino — Знакомимся со средой программирования Arduino IDE и с беспаечной макетной платой.
Тема 2. Работа с цифровыми сигналами — Подключаем светодиод, зуммер и кнопку.
Тема 3. Индикация — Знакомимся с сегментным индикатором и жидкокристаллическим дисплеем.
Тема 4. Работа с аналоговыми сигналами — Подключаем потенциометр, датчик температуры и фоторезистор.
Тема 5. Управление двигателями — Управляем двигателем с помощью ШИМ, и двигаем серводвигателем.
Тема 6. Связь
Продолжительность курса — 16 академических часов. По два часа на каждое занятие.
Получаемые знания:
Получаемые умения:
Вконтакте
Сводка по плате управления
Микроконтроллер | ATmega32u4 | ||
Рабочее напряжение | 5 В | ||
Входное напряжение | 5 В через плоский кабель | ||
Цифровые выводы ввода / вывода | 9000 9000 каналов | 9000 6 9000 P000 | 9000 P000 |
Каналы аналогового ввода | 4 (цифровых контактов ввода / вывода) | ||
Каналы аналогового ввода (мультиплексированные) | 8 | ||
Постоянный ток на каждый вывод ввода / вывода | 40 мА | ||
Флэш-память | 32 КБ (ATmega32u4), из которых 4 КБ используются загрузчиком | ||
SRAM | 2.5 КБ (ATmega32u4) | ||
EEPROM (внутренняя) | 1 КБ (ATmega32u4) | ||
EEPROM (внешняя) | 512 Кбит (I2C) | ||
Тактовая частота | 10 МГц | 5 клавиш | |
Ручка | потенциометр, прикрепленный к аналоговому контакту | ||
Полноцветный ЖК-дисплей | через интерфейс SPI | ||
Устройство чтения карт SD | для карт в формате FAT16 | ||
Цифровой компас | обеспечивает отклонение от географического севера в градусах | ||
Порты под пайку I2C | 3 | ||
Области прототипирования | 4 | ||
Радиус | 900685 мм |
Сводка по моторной плате
Микроконтроллер | ATmega32u4 |
Рабочее напряжение | 5 В |
Входное напряжение | 9 В для зарядного устройства |
Слот для батареек AA | |
4 | |
Каналы ШИМ | 1 |
Каналы аналогового ввода | 4 (такие же, как выводы цифрового ввода / вывода) |
Постоянный ток на вывод ввода / вывода | 40 мА |
Преобразователь постоянного тока | генерирует 5 В для питания всего робота |
Флэш-память | 32 КБ (ATmega32u4), из которых 4 КБ используются загрузчиком |
SRAM | 2.5 КБ (ATmega32u4) |
EEPROM | 1 КБ (ATmega32u4) |
Тактовая частота | 16 МГц |
Подстроечный резистор | для калибровки движения |
Порты для пайки I2C | 1 |
Области прототипирования | 2 |
Мощность
Память
Вход и выход
Назначение контактов платы управления
ARDUINO LEONARDO | ARDUINO ROBOT CONTROL | ATMEGA 32U4 | ФУНКЦИЯ | РЕЕСТР | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
D0 | RX | RX0007 | TX | TXD1 / INT3 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
D2 | SDA | PD1 | SDA | SDA / INT1 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
D3 # | SCL | SCL | SCL | SCL | SCL | INT0 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
D4 | MUX_IN A6 | PD4 | ADC8 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
D5 # | BUZZ | PC6 | ??? | OC3A / # OC4A | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
D6 # | MUXA / TKD4 A7 | PD7 | FastPWM | # OC4D / ADC10 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
INT8 R7 9000_ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
INT8 R7 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
D8 | CARD_CS A8 | PB4 | ADC11 / PCINT4 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
D9 # | LCD_CS A9 | PB5 | PWM12 OC7 | PWM16 | DC_LCD A10 | PB6 | PWM16 | OC1B / 0c4B / ADC13 / PCINT6 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
D11 # | MUXB | PB7 | PWM8 / 169107 | PWM8 / 169TSC | PWM8 / 16 | PWM8 / 16MUXC / TKD5 A11 | PD6 | T1 / # OC4D / ADC9 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
D13 # | MUXD | PC7 | PWM10 | AK0000 | CLK 7 | КЛЮЧ D18 | PF7 | ADC7 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
A1 | TKD0 D19 | PF6 | ADC6 | ADC6 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
A2 | A3 | TKD2 D21 | PF4 | ADC4 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
A4 | TKD3 D22 | PF1 | ADC1 | A5 | ADC1 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
A5 | MISO | MISO D14 | PB3 | MISO, PCINT3 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SCK | SCK D15 | PB1 | SCK, PCINTOS7 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SCK, PCINT1 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
MOSI, PCINT2 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SS | RX_LED D17 | PB0 | 9 0298 RXLED, SS / PCINT0 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
TXLED | TX_LED | PD5 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
HWB | PE2 | 43 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Схема контактов платы двигателя
|