Статьи Моделирование поведения для составления списка рекомендуемых к использованию сайтов

Pololu 3pi

Сергей Алембеков  2011-01-30 11:21

Для того, чтобы начать осваивать азы робототехники больше не нужно искать экзотическое оборудование или создавать его собственноручно. Основные комплектующие выпускаются серийно и доставляются на дом: вступить в ряды робототехников можно всего за 3-5 тысяч рублей. Один из таких наборов, Pololu 3pi, позволяет войти в мир робототехники любому программисту.

Pololu 3pi - основа для роботов

Pololu 3pi - основа для роботов

Я давно хотел изучить как работают микропроцессоры на низком уровне, но программировать мигание светодиодом (своеобразный "Hello world!" для микроконтроллеров) мне представлялось неинтересным занятием, хотя и полезным для изучения основ. Гораздо интереснее программировать движение, тренируясь на кошках. Домашних.

И, конечно, я знал о замечательной платформе Arduino и её клонах, но отпугивала необходимость самостоятельно собирать двигательную часть. Я уже начал откладывать в кубышку на дорогой Lego Mindstorm, как обнаружил то, что в точности подходило под мои задачи и стоило существенно дешевле: Pololu 3pi. Быстро нашелся поставщик в России и моей жене удалось сделать заказ, аккурат перед новогодними каникулами, купив тем самым последнего робота из предновогодней партии.

Робот обошелся в 3 тысячи и две недели ожидания, ещё рублей 900 программатор, 200 - доставка, пара дополнительных датчиков рублей по 500.

В комплекте

3pi_content.jpg/smartimagecontainer/article/get
  1. Робот;
  2. Программатор;
  3. USB - miniUSB кабель;
  4. Бумажка с напоминанием о том, что робот без корпуса и что бы не пожечь электронику нужно её не трогать, либо снимать статическое напряжение перед работой;
  5. Дополнительно заказанные инфракрасные датчики: движения и расстояния до препятствия;
  6. Тестовая прошивка в роботе.

Начинка

Мозг 3pi - это микроконтроллер Atmega328p. Тот же, что используется в современной платформе Arduino и её клонах. Его RISC-процессор работает на частотах до 20Mhz, имеет 32Кб Flash памяти и 2 Kб RAM.

Подвижная часть 3pi состоит из двух моторчиков, двух шасси и одной пассивной шариковой опоры (по типу мышиного шарика), свободно вращающейся в 2-х измерениях. Соответственно повороты робот осуществляет за счёт разной скорости вращения шасси.

О внешнем мире 3pi узнаёт при помощи 5 инфракрасных сенсоров отражения (QTR_RC), расположенных снизу "на мордочке". Общается с хозяином посредством пищалки, двухстрочного LCD-дисплея и 5 светодиодов. управляется пятью кнопками: power, reset и 3 пользовательские кнопки.

Таким образом, базовое назначение 3pi - это "следование по линии". Да и соответствующая прошивка присутствует в наборе примеров с сайте производителя (подробности ниже). Пользователю предлагается упражняться, например, в алгоритмах прохождения лабиринтов и т.д. Однако, при оснащении дополнительными датчиками поле для фантазии существенно расширяется. А при необходимости в добавлении дополнительной периферии можно установить панель расширения вторым ярусом.

В отличие от Arduino, 3pi для прошивки дополнительно требуется программатор. Желающие могут спаять его самостоятельно, потратив на комплектующие в разы меньше, но мне, как новичку, хотелось свести все риски к минимуму. Кстати, о том, что программатор необходим, любезно напомнил продавец. Питается 3pi от 4-х батареек формата ААА (в комплект не входят).

Среда разработки

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

gcc-avr
компилятор исходных кодов C в машинный код контроллеров AVR,
avr-libs
библиотеки AVR для языка С,
avra
ассемблер,
binutils-avr
дополнительные утилиты для сборки программ
avrdude
утилита для записи собранного бинарного hex-файла через программатор в контроллеры AVR.

Большая часть этого уже была в репозиториях ALTLinux. Пакет с Avra пришлось собрать самому.

3pi_%D1%85%D0%BE%D1%80%D0%B5%D0%BA.jpg/smartimagecontainer/article/get

Ещё одна прелесть 3pi в том, что для него существует С/С++-библиотека libpololu-avr. В архиве, среди прочего в каталоге examples находится набор примеров, подобранных таким образом, что покрывают все области управления роботом:

  • чтение аналогового ввода (напряжения батарей, температурных датчиков),
  • управление пищалкой (buzzer),
  • цифровой ввод-вывод процессора AVR,
  • управление LCD-дисплеем,
  • управление LED - индикаторами,
  • двигателями,
  • интерфейс к кнопкам,
  • serial-порту,
  • qtr-сенсорам.

Вскоре, весь набор готовых пакетов будет доступен в Sisyphus (репозитории ALTLinux).

Ну и немного практики, как прошить готовый пример:

  • Соединяем программатор с компьютером и роботом;
  • Включаем робота;
  • Выполняем в консоли: gmesg | grep tty (в моём случае в Linux устройство выглядит как /dev/ttyUSB0);
  • В libpololu-avr идём в каталог examples/atmega328p/3pi-linefollower и редактируем в Makefile переменную PORT: PORT ?= /dev/ttyUSB0 (мне так же пришлось добавить с CFLAGS параметр -B/usr/lib/avr, если кто-нибудь знает как объяснить avr-gcc использовать этот каталог поиска всегда - welcome);
  • Выполняем make и наблюдаем как test.c (примерно 150 строк кода) компилируется в test.hex. У меня получился файл размером 24К (память контроллера 32КБ);
  • Чтобы прошить test.hex в контроллер выполняем make program и ждём успешного завершения;

Потом берём чёрную изоленту, клеим на пол и радуемся, наблюдая как 3pi проходит круг за кругом.

Теперь я смогу потратить долгие зимние вечера на изучение основ вычислительной техники, электроники, микроконтроллеров и С: 3pi поможет сделать обучение интересным, двигаясь от простого к сложному. Что получится в итоге, интеллектуальная игрушка для хорька или система навигации для ракеты.

Эпицентр Zope3 Учат тут DreamBot Репозиторий Статистика Редакторам
Официальный сайт Zope3 Московская группа изучения реактивного движения The Dream Bot Site