- Робот своими руками, или Сотвори себе друга
- Робонаборы Solarbotics
- SolarSpeeder. Быстрее скорости света
- PumLatern. Днем и ночью с фонарем
- Семейство MouseBot: Herbie и другие робогрызуны
- Sumovore. Робокоп в миниатюре
- Платформа EZ-Board. Искусство роботостроения
- Пробуйте!
- Создаем робота в домашних условиях
- Введение
- Что нам нужно
- Делаем плату с МК
- Управление двигателями
- Датчики препятствий
- Прошивка робота
- Заключение
- О моём роботе
Робот своими руками, или Сотвори себе друга
«Вставьте шплинт А в гнездо Б. »
Почитатели творчества Айзека Азимова, конечно же, узнали текст в кавычках в заголовке. Один из самых коротких рассказов автора трех законов робототехники повествует о горемыках-астронавтах, которым для сборки оборудования на станции прислали специального робота-сборщика в разобранном виде. И с невнятными инструкциями в виде пачки машинописных листов со смазанным текстом. Ирония Азимова вполне понятна. Сборка позитронного робота — процесс намного более сложный, чем, например, сборка шкафа или компьютера.
Ведь робот — самодостаточный, автономный механизм, который благодаря датчикам и сервоприводам способен ориентироваться и передвигаться в окружающем пространстве, а также принимать кое-какие самостоятельные решения.
Профессионалы в робототехнике, конечно же, создают удивительные экземпляры, но и стоят они соответственно. Например, знаменитого хондовского Asimo купить нельзя — желающие завести себе дома подобного робота могут взять его в аренду за «символические» $14 000 в месяц. Принято считать, что создание роботов сейчас под силу только крупным компаниям с многомиллионными бюджетами и дилетантам в этих вопросах и ловить нечего. Или это общественное мнение тоже устарело?
Сегодня благодаря энтузиастам-роботостроителям, превратившим свое хобби в бизнес, каждый из нас может попробовать свои силы в сотворении собственного Электроника. При этом процесс создания «робота из набора» не ударит сильно ни по карману, ни по затраченному времени и усилиям. Результат же принесет не только массу удовольствия, но и кучу знаний и умений в области электроники.
Разработчики робототехнических платформ сегодня не фанаты-одиночки. У них есть собственные сообщества — такие, к примеру, как KISS Institute for Practical Robotics, некоммерческая организация с благородными целями вовлечения в изучение электроники и робототехники учащихся школ и студентов. Под ее эгидой в рамках образовательной программы Botball Educational Robotics Program проводятся конференции по робототехнике и даже соревнования автономных роботов.
Соревнования, проводимые в рамках образовательной программы Botball, собирают десятки команд юных робототехников.Для любителей конструировать роботов существует свой DIY (Do It Yourself) журнал Make:, а для покупки комплектующих они могут обратиться к любой из множества компаний-производителей.
Имея в распоряжении столько доступной каждому информации и желание собрать собственного робота, остается ответить только на один вопрос: с чего же начать?
Робонаборы Solarbotics
Канадская компания Solarbotics, выросшая, как и большинство подобных стартапов, из увлечения ее создателей роботами, предлагает новичку-робототехнику целую россыпь готовых наборов, из которых можно создать и простенькую игрушку с зачатками роборазума, и сложный автономный механизм, который можно выставлять на соревнования роботов, наподобие Botball.
Наборы Solarbotics просты в освоении, но не думайте, что сборка робота с их помощью — спинномозговой процесс. Работая над собственным творением, вам придется и «паять-починять», и даже освоить азы программирования, чтобы вдохнуть в своего робота программу-жизнь. Впрочем, подробные пошаговые инструкции, прилагающиеся к каждому набору, позволят не оступиться на новой для вас робототехнической тропинке.
SolarSpeeder. Быстрее скорости света
Самым простым набором Solarbotics является SolarSpeeder — миниатюрный автомобиль, работающий от солнечных батарей. Тут бы логично возразить, что никаким роботом тут и не пахнет, но с чего-то же нужно начать. А в SolarSpeeder есть практически все, что затем можно встретить и в более серьезном роботе. Сервоприводы для вращения колес, солнечная батарея для получения энергии и контроллер для управления сервоприводами и батареей.
На крыше SolarSpeeder расположена солнечная батарея, которая делает эту машинку полностью автономной.
Соберите SolarSpeeder — и вы увидите, какой он шустрый. Стоит попасть на его спину солнечным лучам, как он ринется вперед. Три метра за сорок секунд безо всяких батареек.
В наборе SolarSpeeder есть монтажная плата, являющаяся по совместительству и шасси, сервомотор для передачи мощности колесам, солнечная батарея, пара транзисторов, диодов и конденсаторов. Конечно, с непривычки придется попотеть, чтобы собрать воедино «сложную» схему SolarSpeeder. Зато после успешной сборки можно устраивать с друзьями настоящие гонки с этими шустрыми солнечными машинками.
PumLatern. Днем и ночью с фонарем
В совершенстве освоили паяльник и отвертку, собирая SolarSpeeder? Прекрасно. Если вам не чуждо чувство прекрасного, соберите PumLatern — робофонарь.
C виду PumLatern выглядит как обыкновенный ночник. На самом деле — это робот-фонарь.
Роботизированный ночник весь день будет заряжать себя от установленной на его макушке солнечной батареи, а ночью порадует вас диковинной игрой света четырех ярких светодиодов, которые, включаясь хаотически, создадут на стенах вашей комнаты невиданные узоры.
В комплекте PumLatern имеются разнообразные трафареты.
А еще можно выбрать один их многих вариантов декора боковин PumLatern или создать свой собственный вариант. Микросхема-контроллер внутри робота-ночника заведует работой блока зарядки аккумуляторов от солнечной батареи и управлением, включением светодиодов. Собирая PumLatern, придется поработать побольше, чем с машинкой SolarSpeeder, но результат стоит того.
Семейство MouseBot: Herbie и другие робогрызуны
Хотите сказать, что SolarSpeeder и PumLatern — не настоящие роботы? Так, роботизированные вещи. Возможно. Но зато их сборка позволит вам набить руку для действительно серьезного проекта.
Обвинить семейство MouseBot в том, что они — не роботы, сложно. Ведь эти шустрые «мыши» имеют в воем составе датчики, которые позволяют им двигаться за лучом света и не заезжать под препятствия, куда путеводный луч попасть не может.
«Мышиное» семейство MouseBot.
В дружную мышиную робосемью входит красный Herbie, черный Horatio, синий Hamlet и белая Harriet. Инфракрасные датчики на их мордочках способны отличить свет от тьмы и сигнализировать об этом сервомоторам с колесами. А датчик-хвост, почувствовав, что мышь заезжает под препятствие, тут же даст команду на задний ход.
Sumovore. Робокоп в миниатюре
Конечно, мыши MouseBot умеют многое. Но не столько, сколько робот-боец Sumovore. Судя по названию, этот малыш виртуозно владеет искусством японской борьбы сумо — пусть и сражается он только с себе подобными.
Несмотря на простые правила, сумо требует быстроты, ловкости и изворотливости. Чтобы заполучить эти качества, в составе Sumovore имеются четыре оптических сенсора, позволяющих «видеть» обстановку вокруг, и два высокочастотных инфракрасных датчика, обеспечивающих мгновенную реакцию на приближающееся препятствие. Мощный мотор придает Sumovore не только скорость, но и силу, которая пригодится ему, чтобы вытолкать противника за пределы круга.
Робот Sumovore — один из вариантов обширного семейства SumoBot.
Микропроцессорный мозг робота-сумоиста имеет модульную конструкцию. В основной модуль вшиты базовые правила поведения Sumovore. Их можно расширить с помощью дискретных модулей: Anti Sumo-dance, предотвращающего бесконечный «танец» двух столкнувшихся Sumovore; Anti edge-ram, останавливающего робота в случае победы; и модуля, позволяющего переключить Sumovore из режима борца в режим исследователя.
Собирая Sumovore, придется много паять. «Мозг» робосумоиста представляет собой непростой перепрограммируемый микроконтроллер и несколько сенсоров.
В собранном виде робот Sumovore выглядит весьма грозно.
Впрочем, это далеко не все. Мозг-микроконтроллер Amtel Mega8L Sumovore можно перепрограммировать с помощью массы программных систем, таких, например, как WinAVR, для решения самых разнообразных задач, где требуется находить и толкать предметы и обходить препятствия.
Платформа EZ-Board. Искусство роботостроения
Конечно, как ни крути, а наборы Robot Kits все-таки являются готовыми к употреблению конструкторами. Следуя инструкции, с их помощью можно получить механизм, действие которого запрограммировано разработчиками набора.
Ну а если хочется отправить творчество и фантазию в свободный полет? Что же, тогда милости просим в компанию EZ-Robot. Ее платформа-микроконтроллер EZ-Board — tabula rasa для роботостроителей.
Платформа EZ-Board — уникальная во всех отношениях робототехническая платформа.
Во-первых, она обладает встроенными USB-портом и приемо-передатчиком Bluetooth, обеспечивающими реализацию дистанционного управления роботом «из коробки». Но главное — платформа EZ-B совместима с массой робототехнической периферии. Имея на борту более двадцати последовательных портов, восемь аналого-цифровых преобразователей и поддержку периферии такой широко известной open source платформы, как Arduino, к EZ-B можно подключать хоть датчики распознавания речи и систему голосового синтеза, хоть камеры распознавания цвета и движения. Туда же стоит записать температурные датчики, сенсоры вибрации, радары, измеряющие расстояние до объекта, интерфейсы для связи с беспроводными устройствами, работающими на частоте 2,4 ГГц, LCD-дисплеи, USB-джойстки, хабы и даже MIDI-интерфейс.
И чтобы запрограммировать работу со всем этим богатством, вовсе не требуется быть семи пядей во лбу. Программная среда EZ-Builder позволяет разрабатывать скрипты, управляющие роботом, без единой строчки кода. Точнее говоря, код, конечно же, есть, только вот от «программиста» он скрыт. А доступны ему простые в освоении инструменты подключения и изменения параметров многочисленных датчиков и приводов.
Используя платформу EZ-B, энтузиасты оживили игрушечных WALL-E.
Если же в программировании вы ас, то EZ-Robot предложит вам среду EZ-B SDK, основанную на Microsoft Visual Studio и работающую с компилятором .Net 3,5.
Благодаря своим аппаратным возможностям и разнообразным средам программирования, удовлетворяющим потребности как новичка, так и профессионала, платформа EZ-B широко используется энтузиастами-робототехниками. Посмотрите, какие интересные решения на ее основе сделал, например, канадский роботостроитель DJ Sures.
Пылесос Roomba сам по себе является роботом, но, дополненный платой EZ-B, он получает массу дополнительных возможностей.
Игрушки в его «лаборатории» в буквальном смысле слова оживают. Особое впечатление производит тюнингованный робот-пылесос Roomba от компании iRobot, получивший благодаря DJ Sures зрение и способность распознавать голосовые команды.
Пробуйте!
Рассмотренные робототехнические платформы — лишь малая часть того, что придумали любители роботов по всему миру.
Их, конечно, можно считать забавой, несерьезными игрушками. Но стоит помнить, что игрушки эти могут быть созданы вашими собственными руками. И в процессе их создания и отладки вы научитесь многим вещам, позволяющим вам упростить освоение более сложных проектов, связанных с электроникой, программированием контроллеров и созданием автономных интерактивных систем.
Именно эту цель и преследуют наборы Robot Kits и открытые аппаратные робоплатформы. Они, возможно, ваш первый шаг к будущему хобби на всю жизнь или даже любимой профессии.
Источник
Создаем робота в домашних условиях
Наверняка, насмотревшись фильмов про роботов, тебе не раз хотелось построить своего боевого товарища, но ты не знал с чего начать. Конечно, у тебя не получится построить двуногого терминатора, но мы и не стремимся к этому. Собрать простого робота может любой, кто умеет правильно держать паяльник в руках и для этого не нужно глубоких знаний, хотя они и не помешают. Любительское роботостроение мало чем отличается от схемотехники, только гораздо интереснее, потому что тут так же затронуты такие области, как механика и программирование. Все компоненты легкодоступны и стоят не так уж и дорого. Так что прогресс не стоит на месте, и мы будем его использовать в свою пользу.
Введение
Итак. Что же такое робот? В большинстве случаев это автоматическое устройство, которое реагирует на какие-либо действия окружающей среды. Роботы могут управляться человеком или выполнять заранее запрограммированные действия. Обычно на роботе располагают разнообразные датчики (расстояния, угла поворота, ускорения), видеокамеры, манипуляторы. Электронная часть робота состоит из микроконтроллера (МК) – микросхема, в которую заключён процессор, тактовый генератор, различная периферия, оперативная и постоянная память. В мире существует огромное количество разнообразных микроконтроллеров для разных областей применения и на их основе можно собирать мощных роботов. Для любительских построек широкое применение нашли микроконтроллеры AVR. Они, на сегодняшний день, самые доступные и в интернете можно найти много примеров на основе этих МК. Чтобы работать с микроконтроллерами тебе нужно уметь программировать на ассемблере или на Cи и иметь начальные знания в цифровой и аналоговой электронике. В нашем проекте мы будем использовать Cи. Программирование для МК мало чем отличается от программирования на компьютере, синтаксис языка такой же, большинство функций практически ничем не отличаются, а новые довольно легко освоить и ими удобно пользоваться.
Что нам нужно
Для начала наш робот будет уметь просто объезжать препятствия, то есть повторять нормальное поведение большинства животных в природе. Всё что нам потребуется для постройки такого робота можно будет найти в радиотехнических магазинах. Решим, как наш робот будет передвигаться. Самым удачным я считаю гусеницы, которые применяются в танках, это наиболее удобное решение, потому что гусеницы имеют большую проходимость, чем колёса машины и ими удобнее управлять (для поворота достаточно вращать гусеницы в разные стороны). Поэтому тебе понадобится любой игрушечный танк, у которого гусеницы вращаются независимо друг от друга, такой можно купить в любом магазине игрушек по разумной цене. От этого танка тебе понадобится только платформа с гусеницами и моторы с редукторами, остальное ты можешь смело открутить и выкинуть. Так же нам потребуется микроконтроллер, мой выбор пал на ATmega16 – у него достаточно портов для подключения датчиков и периферии и вообще он довольно удобный. Ещё тебе потребуется закупить немного радиодеталей, паяльник, мультиметр.
Делаем плату с МК
Схема робота
В нашем случае микроконтроллер будет выполнять функции мозга, но начнём мы не с него, а с питания мозга робота. Правильное питание – залог здоровья, поэтому мы начнём с того, как правильно кормить нашего робота, потому что на этом обычно ошибаются начинающие роботостроители. А для того, чтобы наш робот работал нормально нужно использовать стабилизатор напряжения. Я предпочитаю микросхему L7805 – она предназначена, чтобы на выходе выдавать стабильное напряжение 5В, которое и нужно нашему микроконтроллеру. Но из-за того, что падение напряжения на этой микросхеме составляет порядка 2,5В к нему нужно подавать минимум 7,5В. Вместе с этим стабилизатором используются электролитические конденсаторы, чтобы сгладить пульсации напряжения и в цепь обязательно включают диод, для защиты от переполюсовки.
Теперь мы можем заняться нашим микроконтроллером. Корпус у МК — DIP (так удобнее паять) и имеет сорок выводов. На борту имеется АЦП, ШИМ, USART и много другого, что мы пока использовать не будем. Рассмотрим несколько важных узлов. Вывод RESET (9-ая нога МК) подтянут резистором R1 к «плюсу» источника питания – это нужно делать обязательно! Иначе твой МК может непреднамеренно сбрасываться или, проще говоря – глючить. Так же желательной мерой, но не обязательной является подключение RESET’а через керамический конденсатор C1 к «земле». На схеме ты так же можешь увидеть электролит на 1000 мкФ, он спасает от провалов напряжения при работе двигателей, что тоже благоприятно скажется на работе микроконтроллера. Кварцевый резонатор X1 и конденсаторы C2, C3 нужно располагать как можно ближе к выводам XTAL1 и XTAL2.
О том, как прошивать МК, я рассказывать не буду, так как об этом можно прочитать в интернете. Писать программу мы будем на Cи, в качестве среды программирования я выбрал CodeVisionAVR. Это довольно удобная среда и полезна новичкам, потому что имеет встроенный мастер создания кода.
Плата моего робота
Управление двигателями
Не менее важным компонентом в нашем роботе является драйвер двигателей, который облегчает нам задачу в управлении им. Никогда и ни в коем случае нельзя подключать двигатели напрямую к МК! Вообще мощными нагрузками нельзя управлять с микроконтроллера напрямую, иначе он сгорит. Пользуйтесь ключевыми транзисторами. Для нашего случая есть специальная микросхема – L293D. В подобных несложных проектах всегда старайтесь использовать именно эту микросхему с индексом «D», так как она имеет встроенные диоды для защиты от перегрузок. Этой микросхемой очень легко управлять и её просто достать в радиотехнических магазинах. Она выпускается в двух корпусах DIP и SOIC. Мы будем использовать в корпусе DIP из-за удобства монтажа на плате. L293D имеет раздельное питание двигателей и логики. Поэтому саму микросхему мы будем питать от стабилизатора (вход VSS), а двигатели напрямую от аккумуляторов (вход VS). L293D выдерживает нагрузку 600 мА на каждый канал, а этих каналов у неё два, то есть к одной микросхеме можно подключить два двигателя. Но, чтобы перестраховаться, мы объединим каналы, и тогда потребуется по одной микре на каждый двигатель. Отсюда следует, что L293D сможет выдержать 1.2 А. Чтобы этого добиться нужно объединить ноги микры, как показано на схеме. Микросхема работает следующим образом: когда на IN1 и IN2 подаётся логический «0», а на IN3 и IN4 логическая единица, то двигатель вращается в одну сторону, а если инвертировать сигналы – подать логический ноль, тогда двигатель начнёт вращаться в другую сторону. Выводы EN1 и EN2 отвечают за включение каждого канала. Их мы соединяем и подключаем к «плюсу» питания от стабилизатора. Так как микросхема греется во время работы, а установка радиаторов проблематична на этот тип корпуса, то отвод тепла обеспечивается ногами GND — их лучше распаивать на широкой контактной площадке. Вот и всё, что на первое время тебе нужно знать о драйверах двигателей.
Датчики препятствий
Чтобы наш робот мог ориентироваться и не врезался во всё, мы установим на него два инфракрасных датчика. Самый простейший датчик состоит из ик-диода, который излучает в инфракрасном спектре и фототранзистор, который будет принимать сигнал с ик-диода. Принцип такой: когда перед датчиком нет преграды, то ик-лучи не попадают на фототранзистор и он не открывается. Если перед датчиком препятствие, тогда лучи от него отражаются и попадают на транзистор – он открывается и начинает течь ток. Недостаток таких датчиков в том, что они могут по-разному реагировать на различные поверхности и не защищены от помех — от посторонних сигналов других устройств датчик, случайно, может сработать. От помех может защитить модулирование сигнала, но пока мы этим заморачиватся не будем. Для начала, и этого хватит.
Первый вариант датчиков моего робота
Прошивка робота
Чтобы оживить робота, для него нужно написать прошивку, то есть программу, которая бы снимала показания с датчиков и управляла двигателями. Моя программа наиболее проста, она не содержит сложных конструкций и всем будет понятна. Следующие две строки подключают заголовочные файлы для нашего микроконтроллера и команды для формирования задержек:
Следующие строки условные, потому что значения PORTC зависят от того, как ты подключил драйвер двигателей к своему микроконтроллеру:
PORTC.0 = 1;
PORTC.1 = 0;
PORTC.2 = 1;
PORTC.3 = 0;
Значение 0xFF означает, что на выходе будет лог. «1», а 0x00 – лог. «0».
Следующей конструкцией мы проверяем, есть ли перед роботом препятствие и с какой оно стороны:
Если на фототранзистор попадает свет от ик-диода, то на ноге микроконтроллера устанавливается лог. «0» и робот начинает движение назад, чтобы отъехать от препятствия, потом разворачивается, чтобы снова не столкнуться с преградой и затем опять едет вперёд. Так как у нас два датчика, то мы проверяем наличие преграды два раза – справа и слева и потому можем узнать с какой стороны препятствие. Команда «delay_ms(1000)» указывает на то, что пройдёт одна секунда, прежде чем начнёт выполняться следующая команда.
Заключение
Я рассмотрел большинство аспектов, которые помогут тебе собрать твоего первого робота. Но на этом робототехника не заканчивается. Если ты соберёшь этого робота, то у тебя появится куча возможностей для его расширения. Можно усовершенствовать алгоритм робота, как например, что делать, если препятствие не с какой-то стороны, а прямо перед роботом. Так же не помешает установить энкодер – простое устройство, которое поможет точно располагать и знать расположение твоего робота в пространстве. Для наглядности возможна установка цветного или монохромного дисплея, который может показывать полезную информацию – уровень заряда аккумулятора, расстояние до препятствия, различную отладочную информацию. Не помешает и усовершенствование датчиков – установка TSOP (это ик-приёмники, которые воспринимают сигнал только определённой частоты) вместо обычных фототранзисторов. Помимо инфракрасных датчиков существуют ультразвуковые, стоят подороже, и тоже не лишены недостатков, но в последнее время набирают популярность у роботостроителей. Для того, чтобы робот мог реагировать на звук, было бы неплохо установить микрофоны с усилителем. Но по-настоящему интересным, я считаю, установка камеры и программирование на её основе машинного зрения. Есть набор специальных библиотек OpenCV, с помощью которых можно запрограммировать распознавание лиц, движения по цветным маякам и много всего интересного. Всё зависит только от твоей фантазии и умений.
Список компонентов:
Код прошивки:
Тип МК : ATmega16
Тактовая частота : 16,000000 MHz
Если у тебя частота кварца другая, то это нужно указать в настройках среды:
Project -> Configure -> Закладка «C Compiler»
*****************************************************/
void main(void)
<
//Настраиваем порты на вход
//Через эти порты мы получаем сигналы от датчиков
DDRB=0x00;
//Включаем подтягивающие резисторы
PORTB=0xFF;
//Настраиваем порты на выход
//Через эти порты мы управляем двигателями
DDRC=0xFF;
//Главный цикл программы. Здесь мы считываем значения с датчиков
//и управляем двигателями
while (1)
<
//Едем вперёд
PORTC.0 = 1;
PORTC.1 = 0;
PORTC.2 = 1;
PORTC.3 = 0;
if (!(PINB & (1
О моём роботе
В данный момент мой робот практически завершён.
На нём установлена беспроводная камера, датчик расстояния (и камера и этот датчик установлены на поворотной башне), датчик препятствия, энкодер, приёмник сигналов с пульта и интерфейс RS-232 для соединения с компьютером. Работает в двух режимах: автономном и ручном (принимает сигналы управления с пульта ДУ), камера также может включаться/выключаться дистанционно или самим роботом для экономии заряда батарей. Пишу прошивку для охраны квартиры (передача изображения на компьютер, обнаружение движений, объезд помещения).
По пожеланиям выкладываю видео:
UPD. Перезалил фотографии и сделал небольшие поправки в тексте.
Статья была опубликована мною в журнале «Хакер» за август 2009 года.
Источник