В нашем хакспейс Существует множество разных Raspberry Pi, с помощью которых мы учим детей программировать на Python, делать роботов и разные полезные гаджеты.
Конечно, то же самое мы делаем и на Arduino. За три года жизни в душах с этими чрезвычайно разными платформами мы придумали несколько идей, как правильнее сделать обучающего робота, учитывая плюсы и минусы каждой железки.
Все эти мысли материализовались в новом устройстве, о котором пойдет речь дальше.
По сути, мы разработали Arduino-совместимый модуль расширения для RPi, который содержит драйвер двигателя и регулятор мощности.
Понятно, что этот модуль является самодостаточным контроллером для учебного робота, но именно сэндвич RPi+Arduino демонстрирует идеологически правильный подход к созданию роботов.
Читайте дальше, чтобы узнать, как выглядит эта штука, какими характеристиками она обладает и где ее можно использовать.
Немного истории Прошло уже 4 года с момента выпуска серии Raspberry Pi Model B. В свое время именно шумиха вокруг RPi отчасти подтолкнула нас к созданию своего хакспейса.
Ведь первое, чем мы начали заниматься, — это обучать детей робототехнике на RPi. После первых занятий со старшеклассниками Уральской компьютерной школы имени Н.
Н.
Красовского, мы задумались о собственной мастерской-лаборатории, открытой для всех страждущих.
Наши уроки превратились в базовый курс, который позже был адаптирован под Arduino. Продолжением этого курса должны были стать конкретные проекты, в которых студенты могли бы применить полученные знания о работе микроконтроллеров и различных полезных компонентов.
Целый класс таких образовательных проектов мы посвятили созданию мобильных роботов как на базе Raspberry Pi, так и на базе Arduino. Наш первый робот на базе RPi создавался специально как инструмент для работы со школьниками.
Это был двухколесный робот, на котором ребята тренировались в работе с двигателями и разного рода датчиками, попутно готовясь к соревнованиям.
В качестве шасси использовался мотор-редуктор Tamiya. Драйвер мотора был drv8833 от TI. Версия для робота LineFollower включала в себя два самодельных датчика отражения.
На верхней палубе робота была установлена 400-точечная беспаечная макетная плата.
Робот показал себя хорошо, поэтому со временем платформу примерили разные обвесы.
Помимо LineFollower, который мы, кстати, по-своему называем трекером, робот носил оптические датчики отражения, ультразвуковые дальномеры, рисовал фломастером на ватмане и, наконец, управлялся через Wi-Fi, передавая изображение с веб-камеры.
Со временем стало ясно, что выбранный мотор-редуктор оказался не самым популярным, а также очень шумным.
Корпус робота не учитывал всех пожеланий и не был совместим с обычными конструкторами.
А самое главное, возникла идея сделать модуль расширения для RPi, который избавил бы робота от ненужных «рутинных» коммуникаций и устройств.
Так начался проект колесного робота под кодовым названием MR-K-1, за которым последовал MR-K-2. С самого начала мы начали предусматривать отверстия для крепления обеих платформ, а ниже представлена модель робота с Arduino на борту.
Это модификация для боя, в которой школьники, управляя роботом по Bluetooth, пытаются лопнуть воздушные шары, прикрепленные к машине противника.
Раму увеличили, мотор-редуктор заменили на обычный желтый (а иногда и белый) китайский двигатель.
Корпус был адаптирован к дизайну multiplo, так что теперь он был покрыт квадратными отверстиями.
Все это заняло несколько недель.
А вот работа над модулем расширения затянулась.
И проблема была не столько в сложности реализации, сколько в нехватке времени, усугубленной перфекционизмом :) Модуль расширения RPiDuino Главным разработчиком модуля выступил Александр Васильев, ведущий чрезвычайно полезный блог.
К моменту старта проекта он уже имел большой опыт разработки драйверов двигателей, стабилизаторов мощности и многих других устройств, интересных для робототехники.
Плату было решено назвать RPiDuino, поскольку она должна была обеспечить симбиоз Raspberry Pi и Arduino. Итак, что мы решили разместить на доске.
Модуль должен был взять на себя непосредственное управление драйвером двигателя, сервоприводами и датчиками.
Все это предполагает наличие микроконтроллера.
А так как мы делаем образовательного робота и этот контроллер должен легко прошиваться нашими школьниками, то выбор пал на небезызвестный atmega328 с ардуино-загрузчиком на борту.
Наличие Atmega делает модуль самодостаточным контроллером для управления небольшими учебными роботами.
Поскольку на плате появилась Atmega, понадобился и мост USB-UART, для чего мы установили CP2102. Еще одним признаком совместимости с Arduino являются знакомые разъемы по бокам платы, позволяющие монтировать модули расширения сверху.
Модуль должен управлять моторами, поэтому появился соответствующий драйвер.
Современные драйверы стали совершенно микроскопическими по размеру, благодаря чему легко помещаются на плате без особого ущерба соседним компонентам.
Мы выбрали DRV8833 от Pololu, так как уже имели с ними некоторый опыт. Драйвер двухканальный, с рабочим током канала 1А.
Наконец, на плате просто был необходим стабилизатор напряжения.
Изначально планировалось иметь отдельное питание вычислительной части и сервоприводов, но с компоновкой возникли небольшие проблемы.
Таким образом, остался только один регулятор, LM2596, который питает RPi, микроконтроллер, логику драйвера двигателя и датчики.
Также на плате нашлось место кнопке включения питания и зуммеру, с помощью последнего робот жалуется на свои проблемы.
RPiDuino вставляется в разъем GPIO Raspberry Pi, как и все подобные модули.
Связь между atmega328 и RPi осуществляется через UART.
Остальные ножки GPIO проложены, поэтому вы можете использовать их по своему усмотрению.
Таблица основных характеристик RPiDuino
Питание | |
Напряжение питания | 7,5–24 В (без драйвера двигателя) 7,5–10,5 В (с драйвером двигателя) |
Входной ток | От 0,5 до 4А, в зависимости от нагрузки, напряжения питания, драйвера двигателя |
Регулятор напряжения | |
Выходное напряжение | 5В |
Выходной ток: рабочий/максимальный/пиковый | 1,5 А/2 А/3 А |
Пульсации выходного напряжения | 1% |
Разъем питания | 5,5x2,1 мм и клеммная колодка |
Водитель двигателя | |
Напряжение питания | 2,7-10,5 В |
Ток на канал рабочий/пиковый | 1А/2А |
Частота ШИМ | 50 кГц |
Размеры | |
Размеры | 85х56х22мм 85х56х33мм (с разъемом для RaspberryPi) |
Масса | 49 г |
Он может продемонстрировать слаженную работу RPi и Arduino, где старшая платформа занимается обработкой видеосигнала и пользовательским интерфейсом, а вторая выполняет свои рутинные роботизированные задачи.
Теперь у робота есть веб-камера с аппаратной поддержкой сжатия mjpg, подключенная к Raspberry по USB. Робот подключается к Wi-Fi через USB-маршрутизатор TL-WN722N. Двигатели усиленные, в соотношении 1:120. Большие колеса с мягкой резиной позволяют цепляться за линолеум в нашем рабочем пространстве.
Энкодеры на двигателях помогают нивелировать колебания тяги двигателя.
Все это питается от двух LiIon аккумуляторов 18650. Как все это работает RPiDuino запускает программу, которая прослушивает команды движения от UART и отправляет обратно телеметрические данные.
Я использую библиотеку в своих проектах Серийный поток , написанное для моего первого квадрокоптера.
Программный код для RPiDuino также можно найти на github. На стороне Raspberry Pi все немного сложнее.
Во-первых, управление роботом осуществляется через веб-интерфейс, поэтому нам пришлось настроить небольшой веб-сервер на Python. Кран управления имеет стрелки для задания направления движения, регулятор скорости, телеметрию и окно для отображения потока с веб-камеры.
Для трансляции видео я традиционно использую mjpg-стример.
Если вы хотите повторить что-то подобное на своем роботе, алгоритм установки будет следующим.
1) Установите mjpg-стример и настройте передачу видеопотока по http. 2) Установите пакет pyserial. 3) Скачайте и распакуйте архив с серверной частью управляющей программы.
4) Загрузите скетч управления в RPIDuino. 5) Настраиваем wifi на RPi. 6) Настроить автозапуск управляющей программы на RPi. RPiDuino и ROS Еще одна причина, по которой нам понадобился этот модуль расширения, — показать нашим студентам правильное представление о роботах.
Сейчас это звучит примерно так: «Смотрите, ребята, у робота есть главный компьютер, который управляет сложными вычислениями.
Он может распознавать изображения, строить карту с помощью лидара и SLAM. Все это отнимает у него много ресурсов, поэтому он уже не может чутко управлять колесами наземного робота и не дай бог стабилизировать квадрокоптер в полете.
Для этих операций на уровне спинного мозга существует другой компьютер, который специализируется на конкретных простых задачах и ни на что другое не отвлекается.
«Эти два компьютера соединены шиной данных, через которую они общаются друг с другом и другими модулями».
Именно здесь в игру вступает концепция ROS. В этом случае ядро системы работает на RPi, а RPiDuino является узлом ROS. Кстати, мы уже сделали небольшой пакет для управления RPIDuino через ROS. Скоро мы опубликуем отдельную статью на эту тему.
Что дальше? Бета-версия модуля показала себя хорошо.
Теперь небольшое количество досок можно приобрести у нас.
хакспейс , пишите в личное сообщение кому интересно.
Мы планируем создать следующую версию, с новыми драйверами моторов, дополнительным дисплеем и некоторыми другими вкусностями.
Исходный код платы обязательно будет опубликован.
Мы приветствуем любую критику и участие! Теги: #Электроника для начинающих #сделай сам #Raspberry Pi #Робототехника #образование #arduino
-
Выбирайте Java С Умом…
19 Oct, 24 -
Семь «Нельзя» Мониторинга Ит-Инфраструктуры
19 Oct, 24 -
Твой Дизайн Отстой
19 Oct, 24 -
Как Заработать На Виртуальных Проектах?
19 Oct, 24 -
40 «Глупых» Вопросов О Crm
19 Oct, 24 -
Обучение Silverlight В Москве
19 Oct, 24 -
«Соло Клавиатуры» Для Linux
19 Oct, 24 -
Компьютер Из 10 000 Домино
19 Oct, 24