Первое, что приходит на ум при слове «робот», — это фантастические фильмы, промышленные манипуляторы и космическое оборудование. На самом деле роботы уже повсюду: они помогают нам в быту, используются в строительных работах и на транспорте, на производствах, в медицине и в армии. И это одно из наиболее перспективных и приоритетных направлений развития современной науки, без которого невозможно будущее. «Завтра будет сегодня!» — под этим девизом мы запускаем совместный проект журнала и ЦТПО «МГТУ «СТАНКИН», посвященный робототехнике, и надеемся, что он найдет своих читателей.
Термин «робот» был введен в обиход в 1920 году чешским писателем Карелом Чапеком в пьесе «Rossumovi univerzalni roboti (R.U.R)». Тем не менее, механические конструкции, послужившие прообразом современных роботов, появились намного ранее, еще много веков назад, поэтому первый урок нашей школы мы начнем с небольшого исторического экскурса.
МЕХАНИЧЕСКИЕ ИГРУШКИ ПРОШЛОГО
В эпоху расцвета Древней Греции Филон Византийский описал механическую женщину-слугу, которая наливала из кувшина вино в стакан. Архит Тарентский изобрел деревянного голубя, который запускался в небо с помощью паровой катапульты. В городе Александрия, на знаменитом Фаросском маяке громадные женские статуи могли указывать направление ветра, движение Солнца и Луны, показывать время и предупреждать моряков об опасности во время шторма или тумана громкими звуками трубы. А создателем первого боевого робота считается Архимед. Его «коготь», размещенный на крепостной стене, захватывал длинным крюком осаждавшие город римские корабли, приподнимал их и переворачивал.
Герон Александрийский автоматизировал очень популярный в Древней Греции театр. Его тележка вывозила на сцену механизированные марионетки. Она дистанционно управлялась с помощью хитроумной системы, состоящей из веревок и колышков, благодаря чему тележке можно было задавать любую траекторию движения.
Согласно свидетельствам, еще раньше, две тысячи лет до н.э., в Древнем Египте упоминалось о статуе, которая поднятием руки указывала на наследника фараона во время религиозных церемоний. А в записках великого мудреца Лао-Цзы сохранились описания механического человека при дворе китайского императора.
И даже мрак средневековья не помешал развитию технической мысли. По воспоминаниям современников тех времен, Альберт Великий (13 век н.э.) сконструировал «механическую служанку», способную самостоятельно двигаться и даже говорить. Виллара де Онекура (13 век н.э.) в своих записях рассказывает о механизмах в виде зверей, а также о фигуре ангела, поворачивающейся вслед за движением солнца. К тому же временному этапу относится и сад в поместье графа Роберта II Д’Артуа, где были автоматические обезьяны, птицы и фонтаны, меняющие режимы работы без участия человека.
Восток тоже не отставал. Известно, например, что в Византии возле царского трона стояли два металлических льва. Они издавали рев и били хвостами, а на деревьях сидели механические птицы, каждая из которых исполняла свою песню. В 9 веке н.э. братья Бану Муса создали механического флейтиста, а ученый Али ибн Халаф аль-Маради в своей «Книге тайн» описал около трех десятков подобных конструкций.
Средневековый арабский изобретатель Аль-Джазари спроектировал в 13 веке музыкальный автомат — четырех механических кукол, которые плавали в лодке по озеру, играя на цимбалах и барабанах.
Не «хлебали лаптем щи» и в России. Из писем голландского купца Йохана Вема известно, что при дворе Ивана Грозного был некий «железный мужик», созданный русскими мастерами, который подавал царю чашу с вином, кафтан, подметал пол, кланялся гостям и даже «побивал медведя».
Ну и нельзя, конечно, не вспомнить Леонардо да Винчи. Его механический рыцарь в латах, который умел двигать руками, поворачивать голову и садиться, был показан при дворе Людовика Сфорца, герцога Миланского, в 1495 году. Сохранилось также множество зарисовок, чертежей и описаний самых разнообразных автоматических устройств, созданных или разработанных на уровне проекта гениальным изобретателем.
А использование новых накопителей энергии — пружины и маятника — стало настоящим прорывом в миниатюризации автоматических механизмов. Наиболее прославился на этом поприще мастер Жак де Вокансон (18 век). Самые известные его работы — механическая утка, способная взмахивать крыльями, клевать зерно с руки и даже испражняться, и автоматический музыкант, наигрывающий различные мелодии на флейте и свирели.
Живший в то же время швейцарец Пьер Жаке Дро, основавший знаменитую часовую компанию Jaquet Droz, прославился не только своими хронометрами, но и множеством сложнейших механических устройств, среди которых особо стоит отметить три настоящих шедевра. «Писарь» — автоматическая фигура мальчика, содержащая более 4000 (!) деталей, была способна написать любой текст из 40 знаков, самостоятельно обмакивая перо в чернильницу. Похожий на него «художник» вместо текста наносил на бумагу различные рисунки, портреты людей и изображения животных. А «девушка-музыкант» — автомат в виде органистки — наигрывала на небольшом органе пять мелодий, при этом двигала головой и телом, а в конце выступления изящно кланялась.
Основная «изюминка» всех этих автоматических устройств — не внешний вид или набор функций, а возможность их программирования, для чего в то время использовались барабаны со штифтами, диски с насечками или отверстиями, определенным набором которых и кодировалась последовательность действий. Но даже эти впечатляющие автоматы еще не настоящие роботы, и они практически никак не взаимодействовали с внешней средой. Похожие игрушки изготавливались умельцами вплоть до начала прошлого столетия. Их главный недостаток заключался в ограниченном времени действия и слабости пружинного заводного механизма.
Но уже в начале 20 века применение электричества обеспечило все условия для создания более совершенных конструкций. Электрический ток стал не только источником энергии двигателей, которые приводили их в движение, но и использовался для получения, передачи и обработки информации. Сейчас вряд ли возможно точно сказать, когда появился самый первый робот в современном понимании этого слова. Многие компании и отдельные изобретатели вели работу в области создания подобных машин, и примерно 100 лет назад были разработаны первые механизмы, вполне отвечающие требованиям настоящей робототехники.
РОБОТОТЕХНИКА СЕГОДНЯ
А что же представляет собой современная робототехника? В общих словах, это наука, которая занимается разработкой автоматизированных технических систем, составляющих техническую основу развития производства. Она включает в себя такие дисциплины, как механика, электроника, информатика и кибернетика. Человек, работающий в этой сфере, должен обладать широким объемом знаний и нестандартным мышлением.
Современная робототехника используется в самых разных отраслях нашей жизни: в промышленности, в строительстве, в медицине, в военной области, в авиации и космической технике, и т.д., и т.п. Роботы сегодня уже повсюду! Оглянитесь, и вы встретите примеры их использования на производстве, на улице, дома. Эти устройства позволяют автоматизировать монотонную работу, выполнять действия в опасной среде, заменяя человека или помогая ему.
НЕОБХОДИМЫЙ ЛИКБЕЗ
Ну а теперь, закончив вступительную часть, перейдем к более практическим занятиям. И в качестве первого опыта научимся… мигать светодиодом! Это, конечно, еще не создание искусственного интеллекта, но тоже довольно интересно. Но для начала вам нужно вспомнить или узнать, что такое электричество, сила тока и напряжение, поскольку в основе любого современного робота находится электронная начинка. С этих базовых знаний и начнем. Не бойтесь, мы постараемся объяснить это на простом языке, уйдя от аксиом физики и понимания первооснов материи.
Как известно, ток — это направленное движение заряженных частиц. Хотя нет, давайте проще. Представьте обычный водопровод. Это тот же провод. По нему «бегут электроны» — это вода, которая течет по трубам. И еще пара важных определений из курса физики: сила тока и напряжение. В нашем наглядном примере, сила тока — это объем воды, протекший за секунду, а напряжение — это ее напор (тот самый поток электронов). Ток измеряется в амперах, напряжение в вольтах.
Напор воды в трубах мы можем увеличить с помощью насоса — это источник питания. В электрике у него есть два полюса, положительный и отрицательный, которые принято называть «плюсом» и «минусом». Считается, что ток течет от «плюса» к «минусу».
Следующий важный вопрос — как регулировать ток? Для этого используют различные элементы электрических цепей. Есть, например, резистор и диод. Резистор имеет такую способность, как сопротивление. Предположим, что электрический провод — это труба с нормальным диаметром, а резистор — это труба с меньшим диаметром. Очевидно, что за единицу времени через трубку резистора пройдет ровно столько воды, сколько позволяет ее диаметр. Соответственно, чем он меньше, тем больше сопротивление. В электронике сопротивление резистора измеряется в омах.
Еще есть диод. Проводя дальнейшую аналогию с сантехникой, это клапан, пропускающий ток (поток воды) в одном направлении. От анода к катоду. Это и есть те самые полюсы источника питания: анод — «плюс», катод — «минус».
Оглянитесь и поищите глазами светодиод, вы его наверняка увидите. Подсказка: это такая миниатюрная «лампочка». Они встречаются сейчас практически повсеместно. В пультах телевизоров, в светофорах, в стоп-сигналах автомобилей и сотовых телефонах, в фотокамерах и игрушках. Изобретение этого полупроводникового прибора было очень важным. Светодиод — это тот же диод, то есть клапан, пропускающий ток в одном направлении, но который при прохождении через него тока еще и светится.
Работа светодиода определяется силой тока. Чем больше ток, тем ярче горит светодиод. Но слишком высокий ток вызывает его перегрев, что может привести к выходу из строя. Также существует понятие пробойного напряжения, разрушающего светодиод. Так как этот элемент имеет незначительное сопротивление, то небольшое напряжение создаст большой ток. Чтобы решить эту проблему, к светодиоду подключают резистор, ограничивающий максимальный ток при некотором напряжении. Это обязательно! Если же через светодиод пройдет высокий ток, то он перестанет работать, попросту — перегорит. А с каким сопротивлением взять резистор — нам поможет закон Ома: сила тока в проводнике прямо пропорциональна напряжению и обратно пропорциональна сопротивлению (I = U / R, где I — сила тока, U — напряжение, R — сопротивление). Однако, высчитывать мы ничего, конечно же, не будем, а воспользуемся готовыми значениями. Для используемых нами светодиодов GNL-3012, GNL-3014 или подобных вполне подойдут резисторы с сопротивлением 220 Ом.
Кстати, если несколько электрических компонентов, тот же резистор, диод и светодиод, например, объединить в едином небольшом корпусе, пластиковом или керамическом, то получается микросхема.
ОТ СЛОВ — К ДЕЛУ!
Но вернемся к светодиоду. Чтобы он зажегся, на него необходимо подать ток. Источник питания определим чуть позже, а пока попробуем разобраться, какая ножка у него катод («минус»), а какая анод («плюс»). Если внимательно присмотреться, то можно увидеть чашечку, и от нее идет короткий провод, так вот это и есть катод.
Не забыли, что к светодиоду нужно обязательно подключить резистор? Но паяльник, флюс и припой нам не понадобятся. Все гораздо проще. Будем использовать специальную доску для прототипирования, еще ее называют макетной платой, или бредбордом. Как же она устроена? Слева и справа идут вертикальные ряды «плюсов» и «минусов», то есть под каждым вертикальным рядом гнезд по всей длине уложен провод, и если подать на одну из точек ряда напряжение 5 В, то оно будет на всех точках этого ряда. По центру же расположены горизонтальные ряды. Общий «минусовой» провод обычно называют «землей» схемы.
Итак, подаем электрический ток через одну ножку светодиода, и он должен «вытечь» через другую ножку обратно в «землю». Остается все подсоединить к макетной плате, как показано на приведенной схеме.
Важнейший компонент любого робота — его «мозг». В нашем случае его роль будет выполнять электронная плата Arduino, в основе которой находится микроконтроллер (на схеме это длинный горизонтальный темный прямоугольник).
Микроконтроллер — это небольшая микросхема, объединяющая процессор, оперативную память и флэш-память. По сути, микроконтроллер это и есть тот самый «мозг», на который поступают сигналы, там они обрабатываются, что приводит к выполнению какого-либо действия. Микроконтроллеры используются почти в любой электронике. Им можно задавать логику поведения, то есть программировать.
Наиболее удобный и доступный сегодня инструмент для знакомства с азами программирования и робототехники — платформа Arduino. Версий ее готовых плат существует несколько, отличающихся размерами и возможностями, мы же будем обучаться на Arduino Uno.
Опустим пока принципы работы платы Arduino, на данном этапе достаточно понимания, что у нее есть выходы и входы, которые называются пинами. Есть пины, которые могут подавать напряжение на другие пины по команде, или же считывать информацию, если на них подано напряжение. Эти пины пронумерованы от 0 до 13. На них в нужный момент подаются 5 вольт. А еще есть пин, на который всегда подается 5 вольт (5v), и пин «земля» (GND).
Переходим к самому интересному — запрограммируем нашу плату. Для этого используется видоизмененный язык C++. Чтобы написать программу (она называется скетчем), нам понадобится среда программирования — это приложение, в котором разрабатывается программное обеспечение. У Arduino она есть, и называется Arduino IDE. В ней мы и создадим программу мигания светодиодом.
Вот она:
void setup(){ pinMode(13, OUTPUT);
}
void loop(){ digitalWrite(13, HIGH); delay(lOOO); digitalWrite(13, LOW); delay(lOOO);
}
Пока просто перепишите ее в Arduino IDE, запущенную на компьютере, и подсоедините к нему плату. Прежде чем загрузить программу, ее нужно проверить. Кликните на галочку в верхнем левом углу среды программирования. Если у вас все правильно, то появится сообщение, что «компиляция завершена». В противном случае стоит проверить верность написания программы. Также перед загрузкой в меню «Инструменты» нужно выбрать нашу плату (Arduino Uno) и порт, к которому вы подключили плату. Далее для загрузки программы следует нажать на стрелочку в левом верхнем углу, и ваша программа окажется на плате. Что-то изменилось? На плате замигал светодиод? Значит, вы молодец!
ПРАКТИКА И ТЕОРИЯ
А теперь давайте разберем нашу программу для Arduino более подробно.
Совет: при работе с кодами «включите логику» и думайте, как машина. То, что вы напишите, а затем загрузите в микроконтроллер, предварительно будет скомпилировано на язык машины: ваш код будет считываться поэтапно сверху вниз, и выполняться тоже поэтапно.
Что такое void setup() и void 1оор()? Это процедуры, они выполняют функции, которые вы им укажите. Вот так выглядит процедура в общем виде:
void названиепроцедуры(){
}
Дойдя до процедур, микроконтроллер выполняет команды, указанные в фигурных скобках. Любая программа в Arduino состоит из двух процедур — setup и loop, которые микроконтроллер будет выполнять первым делом. Сначала — процедура setup. Arduino выполнит команды, записанные в setup один раз. Далее будут выполняться команды, написанные в процедуре loop. И это будет происходить бесконечно долго и сверху вниз, так как loop — цикличен.
В чем смысл нашей программы, предназначенной для управления морганием светодиода? Микроконтроллер должен некоторое время подавать напряжение на него, и некоторое время не подавать. То есть, получаем следующий алгоритм: 1 -включить светодиод (подать напряжение на пин); 2 — дать время светодиоду быть включенным; 3 — выключить светодиод (не подавать напряжение на пин); 4 — дать время светодиоду быть выключенным.
Чтобы реализовать такую программу нам понадобится рассмотреть некоторые функции.
Функция pinMode (номер пина, РЕЖИМ РАБОТЫ) — она настраивает режим работы пина. Очевидно, что номер пина — это пин, к которому вы подсоединили свой электронный компонент. А режимов работы всего три: OUTPUT, INPUT и INPUT_PULLUP. В нашем случае мы воспользовались только OUTPUT. Это означает, что пин будет работать на выход (на него будет подаваться 5 В). Функцию pinMode прописывают в setup, чтобы настроить пин один раз.
Функция digitalWrite (номер пина, ВЕЛИЧИНА НАПРЯЖЕНИЯ) — она подает напряжение на пин. В этой функции указываются такие аргументы, как номер пина и величина напряжения. Номер пина, понятно, тот, на который вы хотите подать напряжение (в нашей программе 13-й пин — это пин, идущий к светодиоду на плате). А величин напряжений всего две: HIGH (5В) и LOW (0В). Эту функцию обычно используют в loop.
И последняя функция — delay (время в мс) — она останавливает микроконтроллер. Это функция задержки, выполнив которую программа останавливается на месте на некоторое время, указанное в миллисекундах. Этой функции присваивается один аргумент — время.
Подведем итоги первого урока. Вы вспомнили азы электротехники, собрали схему, запрограммировали микроконтроллер и познакомились с основами составления программ для Arduino. Дабы убедиться, что материал усвоен, попробуйте самостоятельно написать программу для схемы с двумя светодиодами, которые должны мигать поочередно. Мы приведем ее в следующем номере журнала.
Антон ЛОМОНОСОВ,
Азизжон УЛЬМАСОВ,
Сергей МОТИН
(ЦТПО «МГТУ «СТАНКИН»)