«Мозги» робота, также как и мозги человека, служат для достижения Основной цели этих разных и одновременно одинаковых субъектов. В случае с сумороботом Основная цель проще – достичь победы в поединке. (В случае, если робота будет проектировать девушка – вероятно еще и красиво достичь победы J).
В нашем роботе и книге в качестве «думающего органа» используется открытая микропроцессорная платформа Arduino, включающая в себя «железную» и программные части. Основными преимуществами данной платформы является ее широкая распространенность, относительная дешевизна, огромное количество «клонов» (DFRduino, SeeDuido, Lillipad и многие прочие), огромное сообщество последователей в сети интернет, применимость платформы во вполне серьезных «взрослых» проектах автоматизации в «умных» домах, промышленности, быту.
Для построения нашего робота мы выбрали микропроцессорную плату A-Star 32U4 Micro за ее миниатюрность и отличный функционал, соотношение цены и качества.
Как работают мозги нашего будущего робота?
Что же могут наши «мозги»? Очень многое для столь миниатюрной платы. Получать и обрабатывать информацию от «органов чувств» робота – датчиков дистанции, управлять исполнительными устройствами робота – «ногами и руками» (двигателями). Датчики и управляемые устройства подключаются к контактам платы A-Star 32U4 Micro. Внутри микропроцессора уже есть программа, которая позволяет подключить плату к компьютеру или планшету с установленным программным обеспечением – интегрированной средой разработки Arduino (подробная информация на сайте www.arduino.cc) для «загрузки» сценариев обработки сигналов с датчикой и реакции на них Ваших исполнительных устройств. Данные сценарии называются программами и мы научимся их писать.
Начинаем разбираться с контактами A-Star 32U4 Micro. Официальная документация содержит картинку, которая дает возможность понять, как подключить контакты датчиков исполнительных устройств к плате.
Все просто. Желтые цифры на сером фоне – номера цифровых контактов, которые могут быть использованы в Вашей программе. Зеленые цифры с буквой «А» на сером фоне – номера аналоговых контактов.
Резонный вопрос — цифровой контакт 19 и аналоговый контакт А1 совпадают. Ответ также прост – решите, что будет подключено к данному контакту и программно задайте данному контакту либо цифровой либо аналоговый статус.
Питание от батарейки подключается с контакту VIN – плюс (от 5.5 до 15 вольт) и контакту GND – минус.
5V output и 3.3V output – контакты для питания датчиков нашего робота. Контакты ISP и SCL SDA TXD1 и RXD1 – искатели приключений сами смогут найти информацию в документации.
Обратите внимание – на плате есть светодиоды – одним из которых (LED) мы сейчас помигаем миру с целью заявить о своих правах на будущие победы на рингах.
Надеюсь, у Вас получилось установить среду разработки Arduino с сайта www.arduino.сс на Ваш компьютер или планшет. Подробные инструкции для установки последней версии среды, ссылки для скачивания среды для различных операционных систем, вся последняя информация о Arduino есть на этом сайте.
Итак, открываем интегрированную среду разработки Arduino на вашем компьютере (планшете) и выбираем из примеров скетч Blink. [Скетчем в сообществе Arduino называется программа или сценарий поведения Вашего робота, который будет записан в микропроцесссор и затем исполнен.]
Давайте разберемся в структуре скетча. Все что представлено серым цветом – это комментарии к скетчу для Вас – не для «мозгов» платы.
Для «мозгов» платы в теле скетча мы объявляем что переменной led будет соответствовать 13 вывод платы, который имеет тип «int» от слова integer – целое число.
int led = 13;
В теле скетча есть две процедуры setup() и loop(). Процедура setup() исполняется один раз при включении питания платы и обычно в ней содержится объявление контактов платы и инициализация этих контактов). В частности в теле процедуры (между фигурными скобками { и }) расположена следующая строка:
pinMode(led, OUTPUT);
Эта строка инициализирует контакт 13 на вывод данных – т.е. к данному контакту будет присоединено исполнительное устройство (светодиод в нашем случае).
Процедура loop() интересна тем, что все, что мы располагаем в ее теле будет исполненяться «по кругу» — от первой до последней строки и затем опять от первой до последней строки и так пока ваши батарейки не «сядут». В теле нашей процедуры loop() расположены 4 строки с командами для микропроцессора платы:
digitalWrite(led, HIGH);
delay(1000);
digitalWrite(led, LOW);
delay(1000);
Команда digitalWrite(led, HIGH) указывает нашему микропроцессору дать на контакт 13 (переменная led) высокий уровень напряжения (HIGH)
Следующая за ним команда delay(1000); задерживает все действия микропроцессора на 1000 милисекунд или 1 секунду.
Следующая команда digitalWrite(led, LOW) снижает напряжение на контакте 13 до низкого (почти 0 вольт) и после нее опять по команде delay(1000); опять ожидаем секунду. Затем исполнение опять передается первой строке в теле процедуты loop и программа повторяется.
Загрузим данную программу (круглая кнопка со стрелкой вправо в панели меню) в нашу плату предварительно подключив ее кабелем в USB разъем порта и посмотрим, что получилось. Перед загрузкой обязательно убедитесь, что Вы выбрали именно плату Pololu A-Star 32U4 [По умолчанию, драйверов этой платы пока нет в стандартной установке Ардуино. Для ее установки необходимо скачать драйверы USB и установить их на Ваш компьютер (пункт 6 по порядку — драйверы, затем директорию в ардуино — Успеха!)
Выбрали COM – порт
Выполнили загрузку:
После окончания загрузки плата начинает мигать светодиодом с частотой 1 секунда. – мы научились «подмигивать» миру!!!
Вопросы для проверки:
- Какие основные типы контактов на микропроцесссорной плате A-Star 32U4 Вы знаете? Для чего они используются?
- Что такое скетчи? Для чего они нужны?
- Какая интегрированная среда разработки используется для создания скетчей для Arduino роботов? Как загрузить программу в Вашу микропроцессорную плату?
- Какие основные процедуры должны обязательно быть в скетче для Arduino?