Pololu 3pi
2011-01-30 11:21Для того, чтобы начать осваивать азы робототехники больше не нужно искать экзотическое оборудование или создавать его собственноручно. Основные комплектующие выпускаются серийно и доставляются на дом: вступить в ряды робототехников можно всего за 3-5 тысяч рублей. Один из таких наборов, Pololu 3pi, позволяет войти в мир робототехники любому программисту.
Pololu 3pi - основа для роботов
Я давно хотел изучить как работают микропроцессоры на низком уровне, но программировать мигание светодиодом (своеобразный "Hello world!" для микроконтроллеров) мне представлялось неинтересным занятием, хотя и полезным для изучения основ. Гораздо интереснее программировать движение, тренируясь на кошках. Домашних.
И, конечно, я знал о замечательной платформе Arduino и её клонах, но отпугивала необходимость самостоятельно собирать двигательную часть. Я уже начал откладывать в кубышку на дорогой Lego Mindstorm, как обнаружил то, что в точности подходило под мои задачи и стоило существенно дешевле: Pololu 3pi. Быстро нашелся поставщик в России и моей жене удалось сделать заказ, аккурат перед новогодними каникулами, купив тем самым последнего робота из предновогодней партии.
Робот обошелся в 3 тысячи и две недели ожидания, ещё рублей 900 программатор, 200 - доставка, пара дополнительных датчиков рублей по 500.
В комплекте

- Робот;
- Программатор;
- USB - miniUSB кабель;
- Бумажка с напоминанием о том, что робот без корпуса и что бы не пожечь электронику нужно её не трогать, либо снимать статическое напряжение перед работой;
- Дополнительно заказанные инфракрасные датчики: движения и расстояния до препятствия;
- Тестовая прошивка в роботе.
Начинка
Мозг 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.
Большая часть этого уже была в репозиториях

Ещё одна прелесть 3pi в том, что для него существует С/С++-библиотека libpololu-avr. В архиве, среди прочего в каталоге examples находится набор примеров, подобранных таким образом, что покрывают все области управления роботом:
- чтение аналогового ввода (напряжения батарей, температурных датчиков),
- управление пищалкой (buzzer),
- цифровой ввод-вывод процессора AVR,
- управление LCD-дисплеем,
- управление LED - индикаторами,
- двигателями,
- интерфейс к кнопкам,
- serial-порту,
- qtr-сенсорам.
Вскоре, весь набор готовых пакетов будет доступен в Sisyphus (репозитории
Ну и немного практики, как прошить готовый пример:
- Соединяем программатор с компьютером и роботом;
- Включаем робота;
- Выполняем в консоли: 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 поможет сделать обучение интересным, двигаясь от простого к сложному. Что получится в итоге, интеллектуальная игрушка для хорька или система навигации для ракеты.



