Arduino:Продукты/Продукты Arduino/Arduino Robot

Материал из Онлайн справочника
Перейти к навигации Перейти к поиску

Перевод: Максим Кузьмин (Cubewriter) Контакты:</br>* Skype: cubewriter</br>* E-mail: cubewriter@gmail.com</br>* Максим Кузьмин на freelance.ru
Проверка/Оформление/Редактирование: Мякишев Е.А.


ArduinoRobot.jpg

Arduino Robot[1]

Arduino Robot – это первый продукт Arduino на колесах. Робот состоит из двух плат, и у каждой из них имеется свой процессор. Моторная (нижняя) плата управляет моторами, а контрольная (верхняя) считывает данные с датчиков и решает, как действовать. Обе платы – это, по сути, те же платы Arduino, которые можно программировать при помощи IDE Arduino.

Кроме того, обе платы – это микроконтроллерные платы на базе ATmega32u4 (даташит). Робот оснащен множеством контактов, привязанных к различным датчикам и контроллерам. Программирование робота осуществляется примерно так же, как Arduino Leonardo. Оба процессора имеют функционал для коммуникации по USB, что устраняет необходимость во втором процессоре.

Благодаря этому Arduino Robot отображается на компьютере как виртуальный (CDC) последовательный / COM порт.

Как и в других продуктах Arduino, каждый элемент робота – оборудование, ПО и документация – распространяются по принципу «open-source». Это значит, что вы можете самостоятельно разобраться, как устроен Arduino Robot, а затем использовать эти знания, чтобы построить собственного робота.

Информацию о гарантии можно почитать тут.

С чего начать

На этой странице можно найти всю необходимую информацию о том, как настроить плату, использовать IDE Arduino и т.д.

Нужна помощь?

  • На этих форумах Arduino можно спросить о ПО
  • На этих – о проектах
  • Здесь можно запросить клиентскую поддержку о продуктах

Технические характеристики

Контрольная плата:

  • Микроконтроллер – ATmega32u4
  • Рабочее напряжение – 5 вольт
  • Входное напряжение – 5 вольт через ленточный кабель
  • Цифровые I/O контакты – 5 шт.
  • Каналы ШИМ – 6 шт.
  • Входные аналоговые каналы – 4 шт. (находятся на цифровых I/O контактах)
  • Входные аналоговые каналы (объединенные) – 8 шт.
  • Максимальная сила тока на один I/O контакт – 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 шт.
  • Радиус – 185 мм
  • Высота – 85 мм
RobotInputs.png

Моторная плата:

  • Микроконтроллер – ATmega32u4
  • Рабочее напряжение – 5 вольт
  • Входное напряжение – 9 вольт от зарядного устройства
  • Слоты для перезаряжаемых батареек типа AA – 4 шт. (для алкалиновых или никель-металлгидридных батареек)
  • Цифровые I/O контакты – 4 шт.
  • Каналы ШИМ – 1 шт.
  • Входные аналоговые каналы – 4 шт. (находятся на цифровых I/O контактах)
  • Максимальная сила тока на один I/O контакт – 40 миллиампер
  • Конвертер постоянного тока в постоянный – генерирует 5 вольт, с помощью которых питается весь робот
  • Flash-память – 32 Кб (ATmega32u4), из которых 4 Кб используются загрузчиком
  • SRAM – 2,5 Кб (ATmega32u4)
  • EEPROM – 1 Кб (ATmega32u4)
  • Тактовая частота – 16 МГц
  • Подстроечный потенциометр – для калибровки движения
  • ИК-датчики для слежения за линией – 5 шт.
  • Порты для I2C – 1 шт.
  • Области для прототипирования – 2 шт.
MotorBoardLabeled.png
LottieLemon figure hardware bottom back.png

Питание

Arduino Robot можно питать через USB-соединение или от батареек. Источник питания выбирается автоматически. Батарейный блок вмешает 4 перезаряжаемые никель-металлгидридных батарейки типа AA.

Примечание: Не используйте неперезаряжаемые батарейки.

Когда робот питается от USB, моторы находятся в выключенном состоянии (в целях безопасности). Робот оснащен встроенным зарядным устройством, который требует 9 вольт от внешнего источника питания вроде адаптера, конвертирующего переменный ток в постоянный. Адаптер подключается к разъему питания на моторной плате при помощи 2,1-миллиметрового коннектора с центральным положительным контактом. Если питание идет от USB, то зарядное устройство работать не будет. Контрольная плата питается от источника питания на моторной плате.

Память

Чип ATmega32u4 оснащен 32 Кб памяти для хранения кода (из них 4 Кб используются загрузчиком). Кроме того, у него есть 2,5 Кб памяти типа SRAM и 1 Кб памяти типа EEPROM. Запись и считывание на EEPROM осуществляется при помощи библиотеки EEPROM. Контрольная плата оснащена дополнительными 512 Кбит памяти типа EEPROM, которая доступна через I2C. Кроме того, к GTFT-дисплею подключен внешний кардридер для SD-карты – он подсоединен к процессору контрольной платы и может быть использован в качестве дополнительного запоминающего устройства.

Входные и выходные контакты

Робот имеет несколько коннекторов, которые устанавливаются на него еще на стадии производства и предназначены для подключения дополнительных компонентов. Определить месторасположение этих портов просто, т.к. рядом с каждым из них есть соответствующая надпись. Управление этими контактами осуществляется при помощи библиотеки Robot. Каждый из этих контактов может давать/принимать не более 40 миллиампер при 5 вольтах.

Некоторые из этих контактов имеют специальные функции:

  • От TK0 до TK7 (на контрольной плате): эти контакты объединены в один аналоговый контакт на микропроцессоре контрольной платы. Их можно использовать в качестве входных аналоговых контактов для устройств вроде датчиков расстояния, ультразвуковых аналоговых датчиков или механических переключателей (для определения столкновений).
  • От TKD0 до TKD5 (на контрольной плате): эти цифровые I/O контакты подключены напрямую к процессору, и работа с ними выполняется при помощи функций Robot.digitalRead() и Robot.digitalWrite(). Контакты с TKD0 по TKD3 можно также использовать в качестве входных аналоговых контактов при помощи функции функции Robot.analogRead().

Примечание: В ранних версиях Arduino Robot контакты «TKD» обозначены на плате как «TDK». Правильное название – это именно «TKD», и это то, как к этим контактам нужно обращаться в программном коде.

LottieLemon figure ref top1.png
  • От TK1 до TK4 (на моторной плате): в программном коде эти контакты называются B_TK1, B_TK2 и т.д. Они могут быть и цифровыми, и входными аналоговыми контактами, и работа с ними осуществляется при помощи функций Robot.digitalRead(), Robot.digitalWrite() и функции Robot.analogRead().
LottieLemon figure ref bottom1.png
  • Последовательная коммуникация: Платы «общаются» друг с другом при помощи последовательного порта, и это осуществляется при помощи 10-контактного коннектора. Кроме того, этот коннектор обеспечивает питание и передает дополнительную информацию вроде данных о заряде батареек.
  • Интерфейс SPI на контрольной плате: шина SPI используется для управления GTFT-дисплеем и SD-картой. Если вы хотите перезаписать процессор при помощи внешнего программатора, то сначала отключите дисплей.
  • Светодиоды на контрольной плате: всего их три. Один сообщает, подается ли на плату питание (PWR), а два других сообщают о коммуникации по USB-соединению (LED1/RX и TX). Кроме того, доступ к LED1 можно получить через код.
  • Порты I2C на обеих платах: три на контрольной плате и один на моторной плате.

Распиновка на контрольной плате

Arduino Leonardo Контрольная плата на Arduino Robot ATmega32u4 Функция Регистр
D0 RX PD2 RX RXD1/INT2
D1 TX PD3 TX TXD1/INT3
D2 SDA PD1 SDA SDA/INT1
D3# SCL PD0 8-битная ШИМ/SCL OC08/SCL/INT0
D4 MUX_IN A6 PD4 ADC0
D5# BUZZ PC6 ??? OC3A/#OC4A
D6# MUXA/TKD4 PD7 FastPWM #OC4D/ADC10
D7 RST_LCD PE6 INT6/AIN0
D8 CARD_CS A8 PB4 ADC11/PCINT4
D9# LCD_CS A9 PB5 16-битная ШИМ OC1A/#OC4B/ADC12/PCINT5
D10# DC_LCD A10 PB6 16-битная ШИМ OC1B/0c4B/ADC13/PCINT6
D11# MUXB PB7 8-битная и 16-битная ШИМ 0C0A/OC1C/#RTS/PCINT7
D12 MUXC/TKD5 A11 PD6 T1/#OC4D/ADC9
D13# MUXD PC7 10-битная ШИМ 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

Распиновка на моторной плате

Arduino Leonardo Моторная плата на Arduino Robot ATmega32u4 Функция Регистр
D0 RX PD2 RX RXD1/INT2
D1 TX PD3 TX TXD1/INT3
D2 SDA PD1 SDA SDA/INT1
D3# SCL PD0 8-битная ШИМ/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 16-битная ШИМ OC1A/#OC4B/ADC12/PCINT5
D10# INB1 A10 PB6 16-битная ШИМ OC1B/0c4B/ADC13/PCINT6
D11# MUXC PB7 8-битная и 16-битная ШИМ 0C0A/OC1C/#RTS/PCINT7
D12 TK4 A11 PD6 T1/#OC4D/ADC9
D13# MUXI PC7 10-битная ШИМ 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 оснащен несколькими средствами для коммуникации с компьютером, а также с другими Arduino и микроконтроллерами. Во-первых, ATmega32u4 поддерживает последовательную UART TTL (5-вольтовую) коммуникацию – она осуществляется через коннекторы с 10 цифровыми контактами, которые обеспечивают связь между контрольной и моторной платами. Во-вторых, чип Atmega32u4 поддерживает последовательную коммуникацию через USB (типа CDC), благодаря которой компьютер видит плату как виртуальный последовательный порт. Кроме того, используя стандартные USB/COM драйверы, чип может работать в качестве устройства типа USB 2.0 в режиме full-speed. На Windows понадобится файл формата *.inf.

В IDE Arduino встроен монитор порта, который позволяет отправлять простые текстовые данные – и на Arduino Robot, и от него. Также на Arduino Robot имеются светодиоды RX (LED1) и TX, которые загораются при передаче данных по USB-соединению с компьютером (но не при последовательной коммуникации между платами).

Примечание: Контрольная и моторная платы имеют разные идентификаторы, поэтому в IDE Arduino будут отображаться как разные порты; программируя, убедитесь, что выбрали правильный порт.

Чип ATmega32u4 также поддерживает коммуникацию через I2C (TWI) и SPI. Для упрощения работы с шиной I2C в IDE Arduino имеется библиотека Wire. Для шины SPI используется библиотека SPI.

Программирование

Arduino Robot программируется при помощи IDE Arduino. Зайдите в программу, кликните по Инструменты > Плата > Arduino Robot Control или Arduino Robot Motor (Tools > Board > Arduino Robot Control или Arduino Robot Motor). О языке программирования читайте тут, а руководства ищите здесь.

Процессоры ATmega32u4, установленные на платах Arduino Robot, идут с уже записанными загрузчиками, которые позволяют загружать новый код без использования внешнего аппаратного программатора.

Этот загрузчик коммуницирует через протокол AVR109. Вы можете обойти этот загрузчик и запрограммировать микроконтроллер при помощи ICSP-гребешка; инструкции читайте тут.

Автоматический (программный) сброс и инициация загрузчика

Arduino Robot устроен так, что вам необязательно вручную нажимать на кнопку сброса перед загрузкой, потому что сброс можно выполнить программно – при помощи ПО, установленного на подключенном компьютере.

Сброс активируется при помощи виртуального (CDC) последовательного/COM порта, который открывается для Arduino Robot на скорости 1200 бод, а затем закрывается. Когда это происходит, процессор сбрасывается, прерывая соединение с компьютером (это значит, что виртуальный последовательный/COM порт исчезнет). После сброса процессора запускается загрузчик и остается активным в течение примерно 8 секунд. Загрузчик также можно инициировать двойным нажатием на кнопку сброса на Arduino Robot. Обратите внимание, что если на плату загружен скетч, то она перепрыгнет сразу к нему, игнорируя загрузчик.

Из-за того, как в Arduino Robot устроена система сброса, лучше позволить IDE Arduino инициировать сброс перед загрузкой скетча – особенно если вы, работая с другими платами, привыкли делать это сами. Если у IDE Arduino не получится сбросить плату, вы всегда можете запустить загрузчик, самостоятельно дважды нажав на кнопку сброса на плате. Одно нажатие на кнопку сброса перезапустит скетч, двойное нажатие запустит загрузчик.

Защита от перегрузок

Обе платы Arduino Robot оснащены самовосстанавливающимся предохранителем, который защищает USB-порты вашего компьютера от коротких замыканий и перегрузок. Хотя у большинства компьютеров есть собственная защита от подобных неприятностей, этот предохранитель добавляет к ней еще один слой. Если на USB-порт будет подано более 500 миллиампер, этот предохранитель автоматически прервет соединение, пока короткое замыкание или перегрузка не будут устранены.

Физические характеристики

Диаметр Arduino Robot составляет 19 см. Вместе с колесами, GTFT-дисплеем и другими коннекторами высота Arduino Robot должна составить около 10 см.

Что дальше

Если вы используете старую модель Arduino Robot (где используется Honeywell HMC 6352), и вам нужно откалибровать компас-модуль, читайте это руководство. Кроме того, здесь можно почитать ознакомительную информацию об Arduino Robot, а здесь – о библиотеке Robot.

Документация

Arduino Robot – это устройство, изготовленное по принципу «open-source». Вы можете создать на его основе собственного робота (или другое устройство), используя файлы ниже:

См.также

Внешние ссылки