Контроллер RealRobot — различия между версиями
=DeaD= (обсуждение | вклад) (Новая: == Контроллер RealRobot версии 1.0 - Применение == [[Изображение:RealRobotModule.jpg|thumb|200px|Внешний вид контроллера|right]...) |
=DeaD= (обсуждение | вклад) (→Формат обмена данными) |
||
Строка 45: | Строка 45: | ||
| <code>'''QFF00'''ppmm</code> | | <code>'''QFF00'''ppmm</code> | ||
| | | | ||
− | * '''pp''' - номер порта 00h..0Fh увеличенный на 20h (например, для порта 0Fh это будет 2Fh) | + | * '''pp''' - номер порта 00h..0Fh увеличенный на 20h (например, для порта 0Fh это будет 2Fh, порты 00h..07h - аналогов-цифровые, 08h..0Fh - только цифровые) |
* '''mm''' - режим работы (0 - цифровой вход, 1 - цифровой выход, 2 - управление сервоприводом, 3 - аналоговый вход - последний режим будет работать только для портов в которых есть эта возможность) | * '''mm''' - режим работы (0 - цифровой вход, 1 - цифровой выход, 2 - управление сервоприводом, 3 - аналоговый вход - последний режим будет работать только для портов в которых есть эта возможность) | ||
|- | |- |
Версия 13:55, 10 апреля 2008
Содержание
Контроллер RealRobot версии 1.0 - Применение
Назначение
Взаимодействие через радиоканал Bluetooth ПК\Ноутбука\КПК\Сотика с низкоуровневыми устройствами (двигателями постоянного тока, модельными сервоприводами, ИК-дальномерами, бамперами, сонарами, компасом и т.п.). Подключение контроллера к ПК выполняется через Bluetooth-порт, для этого потребуется Bluetooth-USB-Dongle (скорость обмена при этом 115200Кбит). Разумеется допустимо автономное использование контроллера без какой-либо связи с ПК, в этом случае непосредственно программируем его через стандартные средства разработки и прошивки МК. Модуль изначально разрабатывался для использовании в роботе RealRobot, однако полностью соответствует архитектуре OpenRobotics.
Основные параметры
- Габариты: 65х65мм
- МК: ATMega128
Возможности
- 8 цифровых входов-выходов (доступны 3 режима работы - цифровой вход, цифровой выход, управление сервоприводом);
- 8 аналоговых входов / цифровых выходов (доступны 4 режима работы - аналоговый вход, цифровой вход, цифровой выход, управление сервоприводом);
- 4 выхода для управления двигателями;
- 2 вход от энкодеров для обратной связи с двигателями;
- i2c шина (взаимодействие с любыми i2c устройствами с ПК);
Распиновка разъемов
- Программатор - стандартный IDC6 описанный в AVR910;
- i2c шина - 2-пиновый (SCL,SDA);
- enc-1, enc-2 - 4-пиновые разъемы для энкодера (?);
Формат обмена данными
При обмене данными ПК и контроллера, ПК считается управляющим, а контроллер управляемым устройством. Единственное сообщение отсылаемое по инициативе контроллера - сообщение "Ready!\n"
о готовности выполнять команды при включении, все остальные сообщения контроллера являются ответами на команды ПК.
Команды, отдаваемые ПК все имеют одну и ту же форму Q{AA}{RR}[{WW}*]
, в которой {AA} - адрес, {RR} - сколько байт хотим получить обратно, {WW}* - отсылаемые нами байты.
Ответ приходит в формате R[{EE}*], где {EE}* - байты ответа, которые мы запрашивали. В случае ошибки возвращается X{EE}{Description}, где {EE} - код ошибки, а {Description} - её текстовое описание.
Подробнее использование этой универсальной команды расписано ниже:
Команда | Формат | Входные параметры |
---|---|---|
Отправить по i2c несколько байт и получить несколько байт в ответ | Qaarr{w}
|
|
Установить режим работы порта ввода-вывода | QFF00ppmm
|
|
Установить значение на выходе порта | QFF00ppvv
|
|
Получить значение со входа порта | QFF01pp
|
обратно получим 1 байт - 0/1, если цифровой вход, либо 00h..FFh - если аналоговый (00h соответствует 0V, FFh соответствует 5V), либо если тип порта - выход - получим то, что туда отправляли. |
Установить направление вращения двигателя | QFF00mmdd
|
|
Установить скорость вращения двигателя | QFF00mmss
|
|
Управление очередью команд для шасси (одновременное управление левым и правым двигателем) | QFF0014[ttaabbccdd]*
|
Способ задания скорости с направлением - 0x00 - стоим, 0x01..0x7F - малый..полный вперед, 0xFF..0x80 - малый..полный назад. Максимально можно отправить одновременно 7 команд (иначе переполнится буфер приёма UART - легко расширить до 15-20 команд). Если нужно сбросить очередь команд - отправляем просто QFF0014 без команд. |
Расположение разъемов на модуле
Прошивка контроллера (актуальная версия)
Файл прошивки версии 0.60 реализующий указанные выше в протоколе функции работы с двигателями, портами ввода-вывода и шлюза i2c:
Ссылки
- ↑ Статья в AvrFreaks Wiki: Documentation:AVR_GCC/Winavr