Arduino:Знакомство с Arduino/Знакомство с Arduino Robot

Материал из Онлайн справочника
Версия от 03:34, 14 декабря 2016; Myagkij (обсуждение | вклад) (Замена текста — «<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS">» на «<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS" enclose="div">»)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигацииПерейти к поиску

{{#setlogo:ArduinoCommunityLogo.png}}

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


Знакомство с Arduino Robot[1]

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

Робот оснащен большим количеством компонентов ввода – двумя потенциометрами, цифровым компасом, ридером для SD-карты и пятью инфракрасными датчиками для слежения за напольной поверхностью. У него есть и компоненты вывода – динамик, два мотора и цветной экран. Всеми этими компонентами можно управлять при помощи библиотеки Robot.

Arduino Robot состоит из двух разных плат: контрольной (верхней) и моторной (нижней). Если вы новичок в электронике и программировании, то вам лучше начать с контрольной платы, а когда почувствуете себя более-менее уверенно, то можете приступать и к моторной.

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


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

Настройка робота

Перед тем, как начать использовать робота, вам нужно проделать пару подготовительных действий.

Сначала вам нужно вставить SD-карту в слот, находящийся с обратной стороны TFT-экрана, а затем вставить TFT-экран в сокет на контрольной плате. Экран должен быть расположен таким образом, чтобы надпись «SD CARD» была ближе к кнопкам и динамику.

После этого к нижней части моторной платы нужно прикрепить защитную крышку, которая призвана уберечь робота от лежащих на земле объектов. Сделайте это, как показано на рисунке ниже.

Содержимое SD-карты

SD-карта используется для хранения информации, которую будет считывать робот. На нее уже загружено несколько изображений и звуковых файлов, используемых для скетчей-примеров из раздела «explore». Более-менее разобравшись с тем, как работает робот, добавьте на нее какие-нибудь свои файлы. Если вы случайно удалили файлы, используемые в скетчах из раздела «explore», их можно найти в библиотеке Robot, а точнее – в папке SDcontent. Или их можно загрузить отсюда.

Подключение робота к компьютеру

Каждая плата робота имеет по отдельному микроконтроллеру, которые программируются независимо друг от друга. Пока вы не разберетесь в функциональности робота, мы советуем программировать только контрольную (верхнюю) плату.

Моторная (нижняя) плата уже оснащена прошивкой, необходимой для работы большинства стандартных приложений.

Далее подключаем контрольную плату к компьютеру при помощи USB-кабеля.

После того, как вы подключите плату, на контрольной плате загорится зеленый светодиод с надписью PWR. Кроме того, несколько раз моргнет светодиод с надписью LED1, расположенный ниже PWR-светодиода. Также на моторной плате должны загореться светодиоды с LED1 по LED5 (находятся с обратной стороны переключателя питания).

Если светодиоды на какой-либо из плат не заработали, проверьте, подключен ли к обеим платам толстый коммуникационный кабель на 10-ом контакте (рядом с переключателем питания).

Установка драйверов

OSX

  • Когда вы в самый первый раз подключите робота к компьютеру на OSX, запустится «Keyboard Setup Assistant». Для робота ничего настраивать не нужно, поэтому этот диалог можно спокойно закрыть, кликнув на красную кнопку, расположенную слева вверху.

Windows

Нижеследующие инструкции – для Windows 7. Ими можно пользоваться и для Windows XP, но с поправкой на различия в диалоговых окнах.

  • Подключите плату и подождите, пока Windows запустит процесс установки драйверов. Если установщик не запускается автоматически, откройте «Диспетчер устройств» («Пуск» > «Панель управления» > «Система») и найдите в этом списке Arduino Robot. Затем кликните по нему правой кнопкой мыши и выберите пункт «Обновить драйверы...»
  • В следующем окне выбираем пункт «Выполнить поиск драйверов на этом компьютере» и кликаем на «Далее»
  • Кликаем на кнопку «Обзор...» Появится еще одно окно – проходим к папке, куда был загружен IDE Arduino. Выбираем папку drivers и кликаем на «ОК», а затем на «Далее»
  • Вы получите уведомление, что устанавливаемое ПО не проверялось на совместимость с Windows. Кликните «Все равно продолжить»
  • Спустя несколько мгновений Windows скажет, что мастер закончил установку ПО для Arduino Robot. Нажимаем на кнопку «Закрыть»

Linux

Драйвера для Linux устанавливать не нужно (протестировано на Ubuntu 12.04).

Привет, пользователь!

Arduino Robot идет с предзагруженным скетчем, в задачу которого входит спросить имя пользователя, как он хочет назвать робота и то, в каком месте находится пользователь. Инструкции о том, как ввести эту информацию, смотрите на экране робота – это делается при помощи кнопок и потенциометра.

Робота можно питать от четырех AAA-батареек или от USB-кабеля, подключенного либо к моторной, либо к контрольной плате.

Теперь, когда пройден процесс настройки, мы можем приступить к написанию собственных скетчей.

Загрузка тестового скетча

Чтобы начать программировать робота, подключаем контрольную плату к компьютеру через USB. Открываем IDE Arduino и загружаем скетч, находящийся по маршруту Файл > Примеры > ВЫБЫТ > Robot Control > learn > MotorTest (File > Examples > RETIRED > Robot Control > learn > MotorTest).

Далее нам нужно сообщить IDE Arduino, на какую плату будет загружаться скетч. Для этого открываем меню Инструменты > Плата (Tools > Board) и выбираем там пункт Arduino Robot Control.

Кроме того, IDE Arduino должна знать, к какому из USB-портов подключен робот. Чтобы увидеть список доступных портов, откройте меню Инструменты > Порт (Tools > Port).

  • Если в этом меню показана только одна запись, кликаем на нее
  • Если записей две или более, отключаем контрольную плату, а затем снова открываем меню «Порт». Исчезнувшая запись и будет портом для робота. Переподключаем плату и выбираем этот порт.

Кликаем на кнопку «Загрузка» в левой верхней части окна IDE Arduino. Ждем несколько секунд – на плате должны замигать светодиоды RX и TX. Если загрузка пройдет успешно, на статусной панели IDE Arduino появится сообщение «Загрузка завершена». После этого USB-кабель от робота можно отсоединить.

Вставьте в робота батарейки, включите тумблер питания и поставьте робота на пол. Он должен сделать пару простых движений. Если сделал, поздравляем! Значит, все работает, как надо.

Если робот не двигается, выключите тумблер. Подключите моторную плату к компьютеру при помощи USB-кабеля. Загрузите в IDE Arduino скетч Файл > Примеры > ВЫБЫТ > Robot Motor > Robot_Motor_Core (File > Examples > RETIRED > Robot Motor > Robot_Motor_Core). Затем выберите в меню Инструменты > Плата (Tools > Board) пункт Arduino Robot Motor. Загрузите скетч, отключите робота от компьютера и снова включите его.

Примечание: Если после подключения робота в IDE Arduino не показывается никаких портов, а перезапуск IDE Arduino и присоединение/отсоединение робота не помогает, попробуйте следующее:

  • Откройте какой-нибудь простой скетч – вроде Blink или BareMinimum
  • Нажмите на кнопку «Загрузка»
  • Когда на статусной панели появится сообщение «Загрузка...», дважды нажмите на кнопку сброса на контрольной плате
  • Порт должен появиться

Как заставить робота двигаться

Этот скетч заставляет робота делать повторяющиеся движения вперед и назад.

Если вы пишите скетч для робота, в самом начале должен обязательно стоять фрагмент <ArduinoRobot.h>. Это подключает к скетчу библиотеку, необходимую для управления роботом.

Инициализировать объект Robot не нужно.

Чтобы заставить колеса двигаться, нужно вызвать функцию Robot.motorsWrite(). Она требует два аргумента: первый – скорость для левого мотора, а второй – для правого. Значения для этих аргументов варьируются в пределах от «-255» до «255», где «255» – это полная скорость вперед, а «-255» – это полная скорость назад. Если указать значение «0», мотор перестанет крутить колесо.

Загрузив скетч, отключите USB-кабель от робота. Когда подключен USB-кабель, колеса находятся в деактивированном состоянии. Теперь включите питание, и робот должен начать двигаться.

#include <ArduinoRobot.h> // подключаем библиотеку для управления роботом

void setup(){
  Robot.begin(); // инициализируем библиотеку
}

void loop(){
  // двигаемся вперед в течение одной секунды
  Robot.motorsWrite(255,255);
  delay(1000);

  Robot.motorsWrite(0,0); // останавливаемся
  delay(1000);

  // двигаемся назад в течение одной секунды
  Robot.motorsWrite(-255,-255);
  delay(1000);

  Robot.motorsWrite(0,0); // останавливаемся
  delay(1000);
}

Работа с кнопками

Теперь попробуем написать скетч, который будет показывать на экране робота информацию о нажатых нами кнопках.

Сначала подключаем библиотеку Robot.

#include <ArduinoRobot.h>

В блоке setup() запускаем робота и экран.

void setup(){
  Robot.begin();
  Robot.beginTFT();
}

В блоке loop() считываем нажатия на кнопки. Делаем это каждые 100 миллисекунд. Если какая-либо кнопка была нажата, отображаем ее название на экране.

void loop(){
  Robot.debugPrint(Robot.keyboardRead(), 10, 10);
  delay(100);
}

Среди скетчей, которые можно найти, кликнув в IDE Arduino пункт Файл > Примеры > ВЫБЫТ > Robot Control > explore (File > Examples > RETIRED > Robot Control > explore), есть скетч Logo, который сочетает в себе код из этого раздела, а также код из примера выше (тот, что заставляет робота двигаться вперед/назад).

Меняем скорость моторов при помощи потенциометра

Этот скетч позволяет управлять скоростью и направлением движения робота (правда, направление ограничено движением вперед и назад). Управление будет осуществляться при помощи потенциометра. На программном уровне нам понадобится подогнать значения потенциометра под диапазон значений для скорости моторов.

Сначала подключаем библиотеку Robot.

#include <ArduinoRobot.h>
В блоке setup() вызываем функцию Robot.begin()  она инициализирует функции для управления роботом. Далее инициализируем экран, и это делается вызовом функции Robot.beginTFT().
void setup(){

  Robot.begin();
  Robot.beginTFT();
}

В блоке loop() считываем значение потенциометра при помощи функции Robot.knobRead(). Подгоняем это значение (число в диапазоне от «0» до «1023») к диапазону от «-255» до «255». Выводим значение на экран, а затем используем его для изменения скорости моторов.

void loop(){
  int val=map(Robot.knobRead(),0,1023,-255,255);
  Robot.debugPrint(val);
  Robot.motorsWrite(val,val);
  delay(10);
}

Когда робот подключен к USB-кабелю, его колеса находятся в выключенном состоянии. Запрограммировав робота, отключаем USB-кабель и вставляем батарейки. Включаем тумблер питания – робот должен задвигаться. Ловим робота и крутим потенциометр – это должно поменять скорость робота.

Делаем шумно!

Робот имеет два разных устройства для генерации звуков. Он может просто пищать, а также генерировать более сложные звуки. К примеру, музыкальные треки, записанные на SD-карту. В этом примере мы изучим, как сгенерировать писк. О том, как проигрывать более сложные звуки, смотрите в примере Файл > Примеры > ВЫБЫТ > Robot Control > learn > Melody (File > Examples > RETIRED > Robot Control > learn > Melody).

Сначала нам нужно подключить библиотеку Robot.

#include <ArduinoRobot.h>

В блоке setup() вызываем функцию Robot.begin() – чтобы инициализировать функции для управления роботом. Также вызываем функцию Robot.beginSpeaker() – чтобы инициализировать динамик.

void setup(){
  Robot.begin();
  Robot.beginSpeaker();
}

В блоке loop() вызываем функцию Robot.beep() – это сгенерирует писк. Динамик робота может воспроизводить три разных писка: короткий, двойной и длинный.

void loop() {
  Robot.beep(BEEP_SIMPLE);
  delay(1000);
  Robot.beep(BEEP_DOUBLE);
  delay(1000);
  Robot.beep(BEEP_LONG);
  delay(1000);
}

Что дальше

С роботом можно проделать многое. Не судите о его возможностях по примерам в этой статье. Более сложные скетчи-примеры можно найти в IDE Arduino по маршруту Файл > Примеры > ВЫБЫТ > Robot Control > learn (File > Examples > RETIRED > Robot Control > learn).

Чтобы робот вращался более плавно, вам нужно отрегулировать его компас-модуль. Если вы используете старую модель робота (а точнее, Honeywell HMC 6352), то можете воспользоваться этим руководством.

Чтобы побольше узнать о функциональности отдельных компонентов ввода и вывода, смотрите скетчи в IDE Arduino по маршруту Файл > Примеры > ВЫБЫТ > Robot Control > learn (File > Examples > RETIRED > Robot Control > learn).

Кроме того, о технических характеристиках робота можно почитать на странице о библиотеке Robot и странице с аппаратным описанием Arduino Robot.

См.также

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