Arduino Robot
Robot - вид сверху | Robot - вид снизу |
Общие сведения
Arduino Robot - первая официальная версия Ардуино, в конструкции которого предусмотрены колеса. Робот состоит из двух плат, каждая из которых содержит свой микропроцессор. Плата приводов (Motor Board) контролирует работу двигателей, в то время, как управляющая плата (Control Board) считывает показания датчиков и принимает решения о дальнейших операциях. Каждая из двух плат представляет собой полноценное устройство Ардуино, программируемое с помощью среды разработки Arduino IDE.
Обе платы построены на базе микроконтроллера ATmega32U4 (datasheet), выводы которого связаны с различными приводами и датчиками на плате.
Процесс прошивки Arduino Robot полностью аналогичен Arduino Leonardo. Оба микропроцессора ATmega32U4 имеют встроенный USB-контроллер, что исключает необходимость в дополнительном процессоре. Благодаря этому, при подсоединении к компьютеру Robot может определяться как виртуальный (CDC) последовательный COM-порт.
По традиции, любой элемент платформы Ардуино - будь то аппаратные, программные средства либо документация - имеет открытый исходный код и полностью бесплатен. Благодаря этому у вас есть возможность не только детально изучить устройство Arduino Robot, но и создавать своих роботов на основе его проекта. Ардуино Robot - результат совместных усилий людей из разных стран, желающих сделать процесс познания науки доступным и захватывающим. Теперь Ардуино на колесах, поехали!
Характеристики управляющей платы (Control Board)
Микроконтроллер | ATmega32u4 |
Рабочее напряжение | 5В |
Напряжение питания | 5В через шлейф |
Цифровые входы/выходы | 5 |
Каналы ШИМ | 6 |
Аналоговые входы | 4 (на цифровых выводах) |
Аналоговые входы (мультиплексируемые) | 8 |
Максимальный ток одного вывода | 40 мА |
Flash-память | 32 КБ (ATmega32u4) из которых 4 КБ используются загрузчиком |
SRAM | 2.5 КБ (ATmega32u4) |
EEPROM (внутрення) | 1 КБ (ATmega32u4) |
EEPROM (внешняя) | 512 Кбит (I2C) |
Тактовая частота | 16 МГц |
Клавиатура | 5 кнопок |
Регулятор | Потенциометр, соединенный с аналоговым входом |
Полноцветный LCD-экран | через интерфейс SPI |
SD-кардридер | для карт, отформатированных в FAT16 |
Динамик | 8 Ом |
Цифровой компас | показывает отклонение от географического севера в градусах |
I2C распаечные площадки | 3 |
Области для прототипирования | 4 |
Характеристики платы приводов (Motor Board)
Микроконтроллер | ATmega32u4 |
Рабочее напряжение | 5В |
Напряжение питания | 9В для зарядного устройства |
AA батарейный отсек | 4 щелочных или NiMh-аккумуляторов |
Цифровые входы/выходы | 4 |
Каналы ШИМ | 1 |
Аналоговые входы | 4 (на цифровых выводах) |
Максимальный ток одного вывода | 40 мА |
DC-DC преобразователь | генерирует 5В для питания всего робота |
Flash-память | 32 КБ (ATmega32u4) из которых 4 КБ используются загрузчиком |
SRAM | 2.5 КБ (ATmega32u4) |
EEPROM | 1 КБ (ATmega32u4) |
Тактовая частота | 16 МГц |
Подстроечный резистор | для калибровки движения |
ИК датчики для отслеживания линии | 5 |
I2C распаечные площадки | 1 |
Области для прототипирования | 2 |
Схема и исходный проект
Файлы EAGLE для управляющей платы и платы приводов: arduino-robot-reference-design.zip
Питание
Arduino Robot может быть запитан от USB либо от 4 AA-аккумуляторов - тип источника выбирается автоматически.
Батарейный отсек рассчитан на 4 NiMh-аккумулятора формата AA.
Примечание: для питания робота используйте только перезаряжаемые аккумуляторы.
С целью безопасности, в системе предусмотрено автоматическое отключение двигателей во время питания робота от USB.
Помимо этого, в Arduino Robot встроено зарядное устройство для аккумуляторов. Питание зарядного устройства осуществляется от внешнего источника питания (сетевого AC/DC адаптера) с выходным напряжением 9В. Для включения зарядного устройства необходимо вставить штекер адаптера (диаметр - 2.1 мм, центральный контакт - положительный) в соответствующий разъем питания на плате Motor Board. Зарядное устройство не будет работать во время питания робота от USB.
От источников питания, расположенных на плате приводов (Motor Board), также запитывается и управляющая плата (Control Board) Arduino Robot.
Память
Объем памяти программ микроконтроллера ATmega32U4 составляет 32 КБ (из них 4 КБ отведены под загрузчик). Помимо этого, он имеет 2.5 КБ оперативной памяти SRAM и 1 КБ EEPROM (для взаимодействия с которой служит библиотека EEPROM.
На управляющей плате расположена дополнительная EEPROM-память объемом 512 Кбит, доступ к которой осуществляется по протоколу I2C.
В качестве дополнительного запоминающего устройства выступает внешний SD-кардридер (совмещен с GTFT-экраном), контролируемый микропроцессором управляющей платы.
Входы и выходы
Робот поставляется с несколькими впаянными разъемами. Вместе с тем, на плате Ардуино предусмотрено несколько областей, позволяющих при необходимости допаять в схему свои детали.
Все разъемы на плате промаркированы и с помощью библиотеки Robot ассоциированы с портами микроконтроллера, что обеспечивает программисту возможность работы со стандартными функциями Ардуино. Максимальный ток, который может отдавать или потреблять один вывод, составляет 40 мА при напряжении 5В.
Помимо основных, некоторые выводы Arduino Robot могут выполнять дополинтельные функции:
- Выводы TK0 - TK7 на управляющей плате: данные выводы соединены с общим аналоговым входом микроконтроллера через мультиплексор. Могут использоваться в качестве аналоговых входов для различных датчиков, таких, как дальномеры, аналоговые ультразвуковые датчики, механические переключатели для обнаружения столкновений и др.
- Выводы TKD0 - TKD5 на управляющей плате: это цифровые выводы, соединенные непосредственно с процессором. Для работы с данными выводами можно применять функции Robot.digitalRead() и Robot.digitalWrite(). С использованием функции Robot.analogRead() выводы TKD0 - TKD3 могут работать в качестве аналоговых входов.
Примечание: в первых версиях Arduino Robot выводы TKD* обзначены на плате как TDK*. Правильным названием является TKD* - именно оно используется при написании программ.
- Выводы TK1 - TK4 на плате приводов: на этапе программирования эти выводы следует называть B_TK1 - B_TK4 соответственно. Данные выводы могут работать как в качестве цифровых, так и в качестве аналоговых входов, и взаимодействуют с функциями Robot.digitalRead(), Robot.digitalWrite() и Robot.analogRead().
- Последовательная связь: обе платы взаимодействуют друг с другом по последовательному интерфейсу, контроллер которого встроен непосредственно в микропроцессор. Для соединения двух плат используется 10-выводной разъем, по которому передаются последовательные данные, питание и другая вспомогательная информация (например, текущий уровень заряда аккумуляторов).
- SPI на управляющей плате: интерфейс SPI используется для управления GTFT и взаимодействия с SD-картой памяти. Поэтому, для перепрошивки процессора с помощью внешнего программатора, необходимо вначале отсоединить экран.
- Светодиоды на управляющей плате: на управляющей плате расположено 3 светодиода. Один из них (PWR) показывает наличие питания, остальные два - процесс передачи данных через USB-порт (LED1/RX и TX). Помимо этого, состояние светодиода LED1 может изменяться программно.
- На обеих платах предусмотрены разъемы I2C: 3 - на управляющей плате и 1 - на плате приводов.
Расположение выводов управляющей платы (Control Board)
ARDUINO LEONARDO | ARDUINO ROBOT CONTROL | ATMEGA 32U4 | ФУНКЦИЯ | РЕГИСТР |
D0 | RX | PD2 | RX | RXD1/INT2 |
D1 | TX | PD3 | TX | TXD1/INT3 |
D2 | SDA | PD1 | SDA | SDA/INT1 |
D3# | SCL | PD0 | PWM8/SCL | OC0B/SCL/INT0 |
D4 | MUX_IN A6 | PD4 | ADC8 | |
D5# | BUZZ | PC6 | ??? | OC3A/#OC4A |
D6# | MUXA/TKD4 A7 | PD7 | FastPWM | #OC4D/ADC10 |
D7 | RST_LCD | PE6 | INT6/AIN0 | |
D8 | CARD_CS A8 | PB4 | ADC11/PCINT4 | |
D9# | LCD_CS A9 | PB5 | PWM16 | OC1A/#OC4B/ADC12/PCINT5 |
D10# | DC_LCD A10 | PB6 | PWM16 | OC1B/0c4B/ADC13/PCINT6 |
D11# | MUXB | PB7 | PWM8/16 | 0C0A/OC1C/#RTS/PCINT7 |
D12 | MUXC/TKD5 A11 | PD6 | T1/#OC4D/ADC9 | |
D13# | MUXD | PC7 | PWM10 | CLK0/OC4A |
A0 | KEY D18 | PF7 | ADC7 | |
A1 | TKD0 D19 | PF6 | ADC6 | |
A2 | TKD1 D20 | PF5 | ADC5 | |
A3 | TKD2 D21 | PF4 | ADC4 | |
A4 | TKD3 D22 | PF1 | ADC1 | |
A5 | POT D23 | PF0 | ADC0 | |
MISO | MISO D14 | PB3 | MISO,PCINT3 | |
SCK | SCK D15 | PB1 | SCK,PCINT1 | |
MOSI | MOSI D16 | PB2 | MOSI,PCINT2 | |
SS | RX_LED D17 | PB0 | RXLED,SS/PCINT0 | |
TXLED | TX_LED | PD5 | ||
HWB | PE2 | HWB |
Расположение выводов платы приводов (Motor Board)
ARDUINO LEONARDO | ARDUINO ROBOT CONTROL | ATMEGA 32U4 | ФУНКЦИЯ | РЕГИСТР |
D0 | RX | PD2 | RX | RXD1/INT2 |
D1 | TX | PD3 | TX | TXD1/INT3 |
D2 | SDA | PD1 | SDA | SDA/INT1 |
D3# | SCL | PD0 | PWM8/SCL | OC0B/SCL/INT0 |
D4 | TK3 A6 | PD4 | ADC8 | |
D5# | INA2 | PC6 | ??? | OC3A/#OC4A |
D6# | INA1 A7 | PD7 | FastPWM | #OC4D/ADC10 |
D7 | MUXA | PE6 | INT6/AIN0 | |
D8 | MUXB A8 | PB4 | ADC11/PCINT4 | |
D9# | INB2 A9 | PB5 | PWM16 | OC1A/#OC4B/ADC12/PCINT5 |
D10# | INB1 A10 | PB6 | PWM16 | OC1B/0c4B/ADC13/PCINT6 |
D11# | MUXC | PB7 | PWM8/16 | 0C0A/OC1C/#RTS/PCINT7 |
D12 | TK4 A11 | PD6 | T1/#OC4D/ADC9 | |
D13# | MUXI | PC7 | PWM10 | CLK0/OC4A |
A0 | TK1 D18 | PF7 | ADC7 | |
A1 | TK2 D19 | PF6 | ADC6 | |
A2 | MUX_IN D20 | PF5 | ADC5 | |
A3 | TRIM D21 | PF4 | ADC4 | |
A4 | SENSE_A D22 | PF1 | ADC1 | |
A5 | SENSE_B D23 | PF0 | ADC0 | |
MISO | MISO D14 | PB3 | MISO,PCINT3 | |
SCK | SCK D15 | PB1 | SCK,PCINT1 | |
MOSI | MOSI D16 | PB2 | MOSI,PCINT2 | |
SS | RX_LED D17 | PB0 | RXLED,SS/PCINT0 | |
TXLED | TX_LED | PD5 | ||
HWB | PE2 | HWB |
Связь
Arduino Robot предоставляет ряд возможностей для связи с компьютером, еще одним Ардуино или другими микроконтроллерами. В ATmega32U4 имеется приемопередатчик UART (уровень напряжения TTL 5В), позволяющий осуществлять связь по последовательному интерфейсу через цифровые выводы 10-контактного межплатного разъема. Микроконтроллер 32U4 поддерживает последовательную (CDC) связь через USB и при подключении к компьютеру может определяться как виртуальный COM-порт. При этом микросхема использует стандартные USB-COM драйвера и может работать в режиме USB 2.0 Full Speed. На платформе Windows необходим только соответствующий .inf-файл. В пакет программного обеспечения Ардуино входит специальная программа, позволяющая считывать и отправлять на Ардуино простые текстовые данные. При передаче данных компьютеру через USB на плате будут мигать светодиоды RX (LED1) и TX. (При последовательной передаче данных между платами данные светодиоды не задействуются).
Поскольку у каждой платы есть свой USB-идентификатор, то в среде разработки Arduino они будут отображаться под разными портами. Поэтому, перед прошивкой убедитесь, что вы выбрали именно ту плату, которую вам необходимо прошить.
В микроконтроллере ATmega32U4 также реализована поддержка последовательных интерфейсов I2C (TWI) и SPI. В программное обеспечение Ардуино входит библиотека Wire, позволяющая упростить работу с шиной I2C; для получения более подробной информации см. документацию. Для работы с интерфейсом SPI используйте библиотеку SPI.
Программирование
Arduino Robot программируется с помощью программного обеспечения Ардуино (скачать). Для этого из меню Tools > Board необходимо выбрать "Arduino Robot Control Board" или "Arduino Robot Motor Board". Для получения более подробной информации см. справку и примеры.
ATmega32U4 в Arduino Robot выпускается с прошитым загрузчиком, позволяющим загружать в микроконтроллер новые программы без необходимости использования внешнего программатора. Взаимодействие с ним осуществляется по протоколу AVR109.
Тем не менее, микроконтроллер можно прошить и через разъем для внутрисхемного программирования ICSP (In-Circuit Serial Programming), не обращая внимания на загрузчик; более подробно об этом см. соответствующие инструкции.
Автоматический (программный) сброс и запуск загрузчика
Чтобы каждый раз перед загрузкой программы не требовалось нажимать кнопку сброса, Robot спроектирован таким образом, который позволяет осуществлять его сброс программно с подключенного компьютера. Сброс срабатывает после закрытия виртуального COM-порта, который предварительно был открыт на скорости 1200 бод. При срабатывании этого условия, процессор сбросится, разорвав USB соединение с компьютером (при этом виртуальный COM-порт исчезнет). После перезагрузки процессора, запускается загрузчик, оставаясь активным на протяжение приблизительно 8 секунд. Помимо этого, инициировать загрузчик можно, нажав кнопку сброса на плате Arduino Robot. Обратите внимание, что при первом включении устройства вместо запуска загрузчика, контроллер сразу перейдет к выполнению пользовательской программы (если таковая есть).
Из-за особенностей механизма сброса Arduino Robot, рекомендуется предоставлять программному обеспечению Ардуино возможность осуществить сброс перед загрузкой программы, особенно, если вы привыкли нажимать кнопку сброса при прошивке других плат. Если же программное обеспечение не сможет сбросить устройство, вы всегда сможете запустить загрузчик, дважды нажав кнопку сброса вручную. Однократное нажатие кнопки приведет к перезапуску загруженной программы, двукратное - к запуску загрузчика.
Защита USB от перегрузок
В обеих платах Arduino Robot есть восстанавливаемые предохранители, защищающие USB-порты компьютера от коротких замыканий и перегрузок. Большинство компьютеров имеют собственную защиту USB от перегрузок, тем не менее, такие предохранители позволяют дополнительно повысить степень защиты. Если от USB-порта потребляется ток более 500 мА, предохранитель автоматически разорвет соединение до устранения причин короткого замыкания или перегрузки.
Физические характеристики
Диаметр Arduino Robot составляет 19 см, высота - до 10 см (с учетом колес, GTFT-экрана и различных разъемов).
Дополнительная информация
См. также: начинаем работу с Arduino Robot и описание библиотеки Robot.