Arduino Robot
Arduino Robot поможет вам изучить электронику, механику и программирование. По сути это - маленький компьютер на колесах. С ним идет множество примеров программ, которые можно брать за основу при разработке своих проектов. Arduino Robot - это мощная роботизированная платформа для выполнения самых разных задач.
На роботе в качестве устройств ввода информации используются: два потенциометра, пять кнопок, цифровой компас, пять датчиков на днище робота и SD-кардридер. В качестве устройств вывода - динамик, два двигателя и цветной дисплей. Со всеми перечисленными устройствами можно работать с помощью библиотеки Robot.
Arduino Robot состоит из двух разных плат: верхней управляющей платы (Control Board) и нижней платы приводов (Motor Board). Тем, кто только начинает знакомиться с электроникой и программированием, лучше работать только с управляющей платой. Ну а в последствие, по мере накопления опыта, вам наверняка захочется поэкспериментировать и с платой приводов.
Управляющая плата робота
Плата приводов робота
Подготовка к работе
После сборки робота, перед тем, как запускать его "в дорогу" необходимо сделать две вещи.
Во-первых, нужно вставить SD-карту памяти в соответствующий разъем на обратной стороне TFT-экрана, после чего подсоединить сам экран к разъему на управляющей плате робота. При этом экран должен быть повернуть синей надписью "SD Card" к кнопкам и динамику.
После установки экрана, на дне робота нужно закрепить специальную пленку, которая поможет предотвратить повреждение нижней платы от различных предметов на дороге. Прикрепите защитную пленку так, как показано на рисунке:
Содержимое SD-карты
SD-карта используется для хранения информации, считываемой роботом. С завода карта поставляется не пустой - на нее уже записаны картинки и звуковые файлы, которые используются в примерах. После того, как вы освоитесь с основными функциями робота, можете легко добавлять на карту любые свои файлы. Если вы случайно удалили с карты ее стандартные файлы (используемые в примерах) - не волнуйтесь, их всегда можно восстановить из папки SDcontent, расположенной в библиотеке Robot, либо скачать с репозитория github'а.
Подключение робота к компьютеру
Arduino Robot содержит два микроконтроллера (по одному на каждой плате), каждый из которых программируется отдельно. Пока вы не ознакомитесь со всеми функциями робота, рекомендуется программировать только управляющую плату (верхнюю), поскольку штатная прошивка нижней платы и так подходит для большинства задач.
С помощью USB-кабеля соедините управляющую плату с компьютером.
После подключения платы должен загореться зеленый светодиод, обозначенный на управляющей плате как PWR. При этом светодиод LED1 (расположенный чуть ниже) должен мигнуть несколько раз. На плате приводов должны загореться красные светодиоды LED1 - LED5 (расположенные на противоположной стороне от переключателя питания).
Если светодиоды на обеих платах не загораются - проверьте плоский 10-проводный кабель возле переключателя питания и убедитесь, что он подключен к обеим платам.
Установка драйверов
- При первом подключении робота к компьютеру под управлением OSX, автоматически запустится программа "Keyboard Setup Assistant". Т.к. для робота настраивать здесь особо нечего, можно просто закрыть это окно, кликнув по красной кнопке в левом верхнем углу.
Нижеследующие инструкции, прежде всего, относятся к Windows 7, хотя они также подходят и для Windows XP (лишь с небольшими отличиями в диалоговых окнах).
- Подключите плату к компьютеру и дождитесь, пока Windows не запустит мастер установки драйверов. Если мастер не запустился автоматически, то вручную перейдите к Диспетчеру устройств (Пуск > Панель управления > Оборудование) и отыщите в списке строку Arduino Robot. Щелкните по ней правой кнопкой и выберите пункт "Обновить драйвер".
- В появившемся окне выберите "Выполнить поиск драйверов на этом компьютере" и жмите Далее.
- Жмите кнопку "Обзор...". В появившемся окне перейдите к папке с программным обеспечением Ардуино (которое вы предварительно скачали). Выберите папку drivers и нажмите ОК, а затем Далее.
- Возникнет сообщение о том, что устанавливаемое оборудование не проходило тестирование в Windows Logo. Жмите на кнопку Все равно продолжить.
- Через несколько секунд появится сообщение о том, что мастер завершил установку программного обеспечения для Arduino Robot. Теперь закройте окно.
Под Linux установка драйверов не требуется вообще. (Проверено на Ubuntu 12.04)
Первое приложение "Hello User!"
Arduino Robot поставляется с предустановленным приложением, которое после запуска запросит у вас ваше имя, название робота, которое вы хотели бы ему присвоить, а также ваше местоположение. Для ввода информации используются кнопки и потенциометр - на экране будут соответствующие подсказки.
Запитать робота можно от 4 батареек типа AAA, либо от USB, подключив любую плату к компьютеру.
После завершения процесса настройки робота можно переходить к написанию своих программ.
Прошивка тестовой программы
Чтобы прошить робота, подключите управляющую плату к компьютеру через USB. Затем в среде разработки Ардуино откройте скетч, расположенный в File > Examples > Robot_Control > learn > MotorTest.
В среде Ардуино нужно указать, какую именно модель Ардуино мы будем прошивать. Для этого откройте меню Tools > Board и выберите пункт Arduino Robot Control.
Помимо этого, среда должна знать, к какому именно USB-порту подключен робот. Список доступных портов отображается в меню Tools > Serial.
- если в этом списке только один пункт - можете смело выбирать его.
- если в списке несколько пунктов - тогда можно отключить плату и еще раз открыть это меню; тот пункт, который пропал после отключения устройства, и будет искомым USB-портом. Снова подключите плату и выберите его из списка.
Нажмите кнопку "Upload (Прошить)", расположенную в верхней левой части окна программы. Подождите несколько секунд - при этом на плате должны мигать светодиоды RX и TX. Если процесс прошивки прошел успешно, то в строке состояния программы появится сообщение "Done uploading". После этого можно отключать робота от USB-кабеля.
Вставьте батарейки, включите питание и поставьте его на пол. Робот должен продемонстрировать вам несколько базовых движений. Если это так - поздравляем! Вы успешно настроили и запустили робота.
Если же робот не двигается, выключите питание и подключите нижнюю плату к компьютеру через USB. В среде разработки откройте скетч File > Examples > Robot_Motor > Robot_Motor_Core sketch in и в меню Boards выберите плату Arduino Robot Motor. Затем прошейте программу, отключите робота от компьютера и попробуйте запустить его еще раз.
Примечание: если после подключения робота в меню Serial не появляется порт (при этом перезапуск IDE/переподключение робота не помогает), попробуйте следующее:
- Откройте самый простой скетч, например Blink или BareMinimum
- Нажмите кнопку для прошивки программы
- Когда в строке состояния отображается надпись "Uploading...", дважды нажмите кнопку сброса на управляющей плате
- После этого порт должен появится в программе.
Перемещение робота
Данная программа заставляет робота циклически перемещаться то вперед, то назад.
Когда пишете код для Arduino Robot, не забывайте добавлять строку include <ArduinoRobot.h> в самом начале программы. Эта строка необходима для подключения библиотек, необходимых для управления роботом.
Объект Robot в программе инициализировать не надо.
Чтобы привести колеса в движение, достаточно просто вызвать метод Robot.motorsWrite(). Функция motorsWrite() принимает 2 параметра: скорость вращения левого двигателя и скорость вращения правого двигателя. Передаваемые значения могут лежать в диапазоне от -255 до 255, где число -255 означает вращение назад на максимальной скорости, а число 255 - вращение вперед на максимальной скорости. Если передать функции число 0, то двигатель будет остановлен.
После прошивки программы отключите USB-кабель от робота. (Когда робот подключен к USB его двигатели автоматически отключаются). Включите питание и понаблюдайте за его движениями.
#include <ArduinoRobot.h> // импортируем библиотеку robot 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() инициализируем робота и LCD-экран.
void setup(){ Robot.begin(); Robot.beginLCD(); }
В основном цикле loop() опрашиваем состояние кнопок каждые 100мс. Если одна из них нажата, то выводим на экран соответствующее сообщение.
void loop(){ Robot.debugPrint(Robot.keyboardRead(), 10, 10); delay(100); }
В папке explore с примерами программ для Arduino Robot есть пример Logo, в котором используется эта и предыдущая программа.
Управление скоростью двигателя потенциометром
В этом примере показано, как управлять скоростью робота, движущегося по прямой линии. Вращением ручки потенциометра в диапазоне от -255 до 255 можно задавать скорость и направление движения робота (вперед или назад).
Для начала необходимо подключить библиотеку Robot.
#include <ArduinoRobot.h>
В блоке setup() необходимо вызвать метод Robot.begin() для инициализации робота, а также метод Robot.beginLCD() для инициализации LCD-экрана.
void setup(){ Robot.begin(); Robot.beginLCD(); }
В основном цикле loop() считываем напряжение на потенциометре с помощью функции Robot.knobread(). Возвращаемое ею значение (число от 0 до 1023) приводим к диапазону от -255 до 255 с помощью функции map(). Выводим это значение на экран и его же используем для изменения скорости вращения двигателей.
void loop(){ int val=map(Robot.knobRead(),0,1023,-255,255); Robot.debugPrint(val); Robot.motorsWrite(val,val); delay(10); }
При подключении робота к USB его двигатели автоматически отключаются. Поэтому, после прошивки программы отключите от робота USB-кабель и вставьте батарейки. Включите питание и понаблюдайте за его поведением. В любой момент можно поймать робота и изменить скорость его движения простым поворотом ручки потенциометра.
Немного пошумим
Существует два подхода для воспроизведения звуков роботом. Первый - это генерирование простого звукового сигнала заданной высоты. Второй - воспроизведение более сложных звуков и мелодий, записанных на SD-карту памяти. В этом примере разберем работу с простыми звуковыми сигналами. Если вы хотите разобраться с воспроизведением мелодий - см. пример Melody в папке learn.
Как вы уже догадались, для начала необходимо подключить библиотеку 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); }
Что дальше?
Arduino Robot позволяет воплощать самые разные проекты, и те несколько примеров, которые показаны на этой странице - всего лишь "верхушка айсберга". Более сложные примеры, демонстрирующие возможности робота, можно найти в папке Explore. Такие примеры наглядно показывают различные сферы применения робота.
Чтобы поподробнее ознакомится с функциональностью определенных входов и выходов робота, см. примеры в папке learn.
Не забудьте посетить страницы с описанием самого робота и библиотеки Robot для получения дополнительной информации о технических деталях устройства.