/
Теги: искусственный интеллект кибернетика
ISBN: 978-5-93700-311-9
Текст
Риди Ричард, Бренда Шивананда,
Энди Форест, Дензел Эдвардс
Создаем
умных роботов
Make:
AI Robots
CREATE AMAZING ROBOTS
WITH ARTIFICIAL INTELLIGENCE
USING MICRO:BIT
By Reade Richard, Brenda Shivanandan,
Andy Forest, and Denzel Edwards
Foreword by Lorrie Ann Smith
Создаем
умных роботов
С ИСКУССТВЕННЫМ ИНТЕЛЛЕКТОМ
НА ОСНОВЕ КОНТРОЛЛЕРА
MICRO:BIT
Риди Ричард, Бренда Шивананда,
Энди Форест, Дензел Эдвардс
Предисловие Лорри Энн Смит
Москва, 2024
УДК 004.896micro:bit
ББК 32.816
Р56
Р56
Ричард Р., Шивананда Б., Форест Э., Эдвардс Д.
Создаем умных роботов / пер. с англ. В. С. Яценкова. – М.: Books.kz, 2024. –
308 с.: ил.
ISBN 978-5-93700-311-9
Эта книга укажет вам путь в захватывающий мир робототехники и искусственного интеллекта. Вашими проводниками в этом приключении станут блестящие
умы Steamlabs – некоммерческой организации, помогающей детям осваивать
передовые технологии через игры и творческие проекты. Более 32 увлекательных
и вдохновляющих проектов объединяют механику, электронику, простое программирование и обучение. Каждая глава построена таким образом, чтобы помочь
новичкам решить ряд задач с постепенно нарастающей сложностью.
Издание адресовано любознательным детям, стремящимся раскрыть тайны
ИИ, и их родителям, желающим развить творческие таланты детей.
УДК 004.896micro:bit
ББК 32.816
Copyright © 2024, Books.kz Limited Liability Partnership. Authorized Russian translation of
the English edition of Make: AI Robots ISBN 9781680457292 © 2023 FutureMakers.
This translation is published and sold by permission of O’Reilly Media, Inc., which owns or
controls all rights to publish and sell the same.
Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения
владельцев авторских прав.
ISBN 978-1-68045-729-2 (англ.)
ISBN 978-5-93700-311-9 (рус.)
Copyright © 2023 by FutureMakers
© Перевод, оформление, издание,
Books.kz, 2024
ОТ ИЗДАТЕЛЬСТВА
Отзывы и пожелания
Мы всегда рады отзывам наших читателей. Расскажите нам, что вы думаете
об этой книге – что понравилось или, может быть, не понравилось. Отзывы
важны для нас, чтобы выпускать книги, которые будут для вас максимально
полезны.
Вы можете написать отзыв на нашем сайте www.dmkpress.com, зайдя на страницу книги и оставив комментарий в разделе «Отзывы и рецензии». Также
можно послать письмо главному редактору по адресу dmkpress@gmail.com;
при этом укажите название книги в теме письма.
Если вы являетесь экспертом в какой-либо области и заинтересованы в написании новой книги, заполните форму на нашем сайте по адресу http://
dmkpress.com/authors/publish_book/ или напишите в издательство по адресу
dmkpress@gmail.com.
Список опечаток
Хотя мы приняли все возможные меры для того, чтобы обеспечить высокое качество наших текстов, ошибки все равно случаются. Если вы найдете
ошибку в одной из наших книг, мы будем очень благодарны, если вы сообщите о ней главному редактору по адресу dmkpress@gmail.com. Сделав это,
вы избавите других читателей от недопонимания и поможете нам улучшить
последующие издания этой книги.
Нарушение авторских прав
Пиратство в интернете по-прежнему остается насущной проблемой. Издательство «ДМК Пресс» очень серьезно относится к вопросам защиты авторских прав
и лицензирования. Если вы столкнетесь в интернете с незаконной публикацией
какой-либо из наших книг, пожалуйста, пришлите нам ссылку на интернет-ресурс, чтобы мы могли применить санкции.
Ссылку на подозрительные материалы можно прислать по адресу элект
ронной почты dmkpress@gmail.com.
Мы высоко ценим любую помощь по защите наших авторов, благодаря которой мы можем предоставлять вам качественные материалы.
СОДЕРЖАНИЕ
ОТ ИЗДАТЕЛЬСТВА..........................5
ПРЕДИСЛОВИЕ............................... 10
ЗНАКОМСТВО С МИРОМ
УМНЫХ РОБОТОВ.......................... 16
1
ШАРНИРЫ, КРЫЛЬЯ…
КАК ЭТО ЛЕТАЕТ?......................... 36
НАШИ ЦЕЛИ.............................................37
МЕХАНИКА...............................................38
Нам понадобятся..............................38
Что дальше?........................................41
ЭЛЕКТРОНИКА........................................42
Нам понадобятся..............................42
Что дальше?........................................45
MICRO:BIT.................................................46
Нам понадобятся..............................46
Библиотека кода...............................46
Скачивание..........................................49
Что дальше?........................................51
ИИ................................................................52
Нам понадобятся..............................52
Обучение..............................................52
Код..........................................................55
Запуск проекта..................................57
Что дальше?........................................59
Завершение........................................60
6 Создаем умных роботов
2
ОСИ И КОЛЕСА................................ 62
Наши цели................................................63
Механика..................................................64
Нам понадобятся..............................64
Простая тележка................................65
Что дальше?........................................68
Электроника............................................70
Нам понадобятся..............................70
Машина с мотором..........................70
Что дальше?........................................74
Micro:bit.....................................................76
Нам понадобятся..............................76
Библиотека кода...............................76
Что дальше?........................................81
ИИ................................................................82
Нам понадобятся..............................82
Обучение..............................................83
Код..........................................................85
Запуск проекта..................................87
Что дальше?........................................88
Заключение.........................................90
3
ШАРИКИ И ЛУНКИ......................... 92
Наши цели................................................93
Механика..................................................94
Нам понадобятся..............................94
Игра «Шары и лунки».....................95
Что дальше?........................................97
Электроника............................................98
Нам понадобятся..............................98
Что дальше?..................................... 103
Micro:bit.................................................. 104
Нам понадобятся........................... 104
Библиотека кода............................ 105
Счет на табло................................... 107
Что дальше?..................................... 110
ИИ............................................................. 112
Нам понадобятся........................... 112
Обучение........................................... 112
Кодирование................................... 114
Запуск проекта............................... 116
Что дальше?..................................... 117
Заключение...................................... 119
4
ШАРИКИ, ВПЕРЕД!......................120
Наши цели............................................. 121
Механика............................................... 122
Гонка шариков................................ 122
Нам понадобятся........................... 123
Стартовые ворота.......................... 124
Что дальше?..................................... 128
Нам понадобятся........................... 130
Спираль.............................................. 130
Электроника......................................... 132
Нам понадобятся........................... 133
Переключатель направления..... 133
Micro:bit.................................................. 136
Нам понадобятся:.......................... 136
Библиотека кода............................ 137
Подключение сервомашинки.... 139
Что дальше?..................................... 140
Настройка кода ИИ....................... 143
ИИ............................................................. 146
Нам понадобятся........................... 146
Обучение........................................... 147
Кодирование................................... 148
Оживляем проект.......................... 151
Что дальше?..................................... 153
Заключение...................................... 155
5
РЫЧАГИ И ТЯГИ..........................156
Наши цели............................................. 157
Механика............................................... 158
Нам понадобятся........................... 158
Механический леопард............... 160
Что дальше?..................................... 164
Электроника......................................... 166
Сервопривод ног............................ 166
Нам понадобятся........................... 166
Что дальше?..................................... 170
Micro:bit.................................................. 172
Нам понадобятся........................... 172
Библиотека кода............................ 173
Что дальше?..................................... 177
ИИ............................................................. 182
ИИ-питомцы..................................... 182
Обучение........................................... 182
Код....................................................... 184
Запуск проекта............................... 187
Что дальше?..................................... 188
Заключение...................................... 192
Содержание
7
6
7
ТОРГОВЫЙ АВТОМАТ................194
КОСТЮМЫ СУПЕРГЕРОЯ..........234
Наши цели............................................. 195
Механика............................................... 196
Диспенсер......................................... 196
Нам понадобятся........................... 197
Что дальше?..................................... 201
Электроника......................................... 204
Нам понадобятся........................... 204
Вращение.......................................... 204
Что дальше?..................................... 209
Нам понадобятся........................... 209
Micro:bit.................................................. 212
Нам понадобятся........................... 212
Библиотека кода............................ 213
Сервопривод.................................... 214
Сервомашинка................................ 215
Защита паролем............................. 216
Создание строчных
переменных..................................... 217
Что дальше?..................................... 222
ИИ............................................................. 224
Обучение........................................... 224
Кодирование................................... 225
Запуск проекта............................... 228
Что дальше?..................................... 228
Нам понадобятся........................... 229
Кормушка для питомцев............. 232
Заключение...................................... 233
Наши цели............................................. 235
Механика............................................... 236
Идеи для маски и щитов............ 236
Нам понадобятся........................... 237
Маска с подвижной
челюстью........................................... 238
Нам понадобятся........................... 238
Сборка маски.................................. 241
Что дальше?..................................... 243
Электроника......................................... 244
Наручный щит................................. 244
Нам понадобятся........................... 245
Micro:bit.................................................. 250
Нам понадобятся........................... 250
Светодиодная перчатка.............. 250
Библиотека кода............................ 251
Подключение NeoPixel............... 254
ИИ............................................................. 260
Обучение........................................... 261
Код....................................................... 263
Запуск проекта.................................... 268
Что дальше?......................................... 268
8 Создаем умных роботов
8
РОБОТЫ-ДРУЗЬЯ........................272
АВТОРЫ...........................................306
Наши цели............................................. 273
Роботы-марионетки...................... 274
Нам понадобятся........................... 274
Ваш первый аниматроник......... 275
Механика............................................... 276
Оживляем проект............................... 280
Обучение ИИ................................... 280
Программирование...................... 282
Библиотека кода............................ 283
Аниматронные животные........... 286
Обучение ИИ................................... 287
Программирование...................... 287
Идеи проектов..................................... 290
Сортировочная машина.............. 290
Нам понадобятся........................... 291
Обучение ИИ................................... 293
Программирование...................... 294
Механизм.............................................. 298
Нам понадобятся........................... 298
Танцевальный конкурс
роботов.............................................. 298
Оживляем проект............................... 302
Программирование...................... 303
Содержание
9
ПРЕДИСЛОВИЕ
ОБРАЩЕНИЕ К ПРЕПОДАВАТЕЛЯМ
И РОДИТЕЛЯМ
Лорри Энн Смит
Вице-президент по обучению и взаимодействию c обществом,
Научный центр Онтарио
Мы уверены, что изучение передовых технологий открывает перед детьми
безграничные возможности. В эпоху, когда технологии меняют нашу жизнь
с удивительной скоростью, мы – преподаватели и родители – имеем возможность отправиться за новыми знаниями вместе с нашими детьми.
Обучение с использованием таких технологий, как робототехника и искусственный интеллект (ИИ), способствует развитию любознательности, творческих способностей и навыков решения проблем. Это означает, что мы
можем подготовить детей к будущему, в котором эти навыки будут пользоваться все большим спросом, но, что более важно, это можно делать весело,
в творческой обстановке, помогая ученикам раскрыть свой потенциал через
собственные инновации и изобретения. Речь идет не только о создании машин; речь идет о молодых умах, которым предстоит стать создателями новых
продвинутых технологий.
Преподавателям выпала честь подготовить этих юных творцов будущего
к предстоящим вызовам и возможностям. Но первые и самые влиятельные
учителя, которые когда-либо будут у ваших детей, – это вы, их родители.
Вместе мы можем создать безопасное пространство, где можно учиться рис
ковать, преодолевать неудачи, играть и исследовать. Вместе мы должны создать условия для того, чтобы дети имели свободу выбора, чувствовали себя
успешными, а также проявляли любопытство и способности.
Меня познакомили с Энди и командой Steamlabs в 2017 г., когда мы встретились, чтобы обсудить возможное партнерство с организацией, в которой
я работаю, – Научным центром Онтарио. Мы искали партнеров, которые
помогли бы нам реализовать экспериментальный и амбициозный проект
под названием Inventorium – среду неформального обучения, призванную
вдохновлять детей и родителей на совместное творчество, стирая границы между наукой и искусством. Я даже не подозревала, что это знакомство
станет началом многолетнего сотрудничества между Steamlabs и Научным
центром Онтарио, включая выставки и программы для тысяч детей, родителей и педагогов.
10 Создаем умных роботов
Благодаря этим проектам и нашему невероятному партнерству со Steamlabs
мы смогли экспериментировать и учиться вместе, развивая игровую среду
обучения. Эта уникальная среда позволяет детям раскрыть свои таланты
бесконечно разными способами, учит преодолевать неудачи и поощряет активное творческое сотрудничество.
Steamlabs – это некоммерческая организация, созданная для развития творческих навыков детей путем воспитания их любознательности, креативности
и критического мышления в сфере науки и техники. Их миссия – создать инклюзивную и благоприятную среду обучения, которая способствует свободе
действий, взаимопомощи и сотрудничеству между детьми из разных слоев
общества. Развивая необходимые навыки в области науки, технологий, инженерии, искусства и математики (STEAM), а также ИИ, Steamlabs стремится
дать молодым умам прочные знания для внедрения инноваций и активного
участия в формировании более справедливого, этического и ответственного
общества.
Проект Steamlabs начался в 2010 г. с первых летних лагерей, в которых детей
учили создавать удивительные вещи с помощью технологий. С тех пор сотни
тысяч детей создали невероятные проекты в рамках программ Steamlabs
в научных центрах, библиотеках, школах и мастерских по всему миру. С годами миссия Steamlabs вышла за рамки простого технического творчества и теперь направлена на поддержку будущих создателей передовых технологий.
Steamlabs помогает детям вырасти способными и думающими гражданами,
давая им возможность освоить навыки работы с ИИ и осознанно выступать
за разумное и справедливое применение технологий.
В этой книге Рид, Бренда, Энди и Дензел собрали некоторые из лучших проектов, которыми они могут поделиться, – проектов, проверенных и вдохновленных многими другими сотрудниками и слушателями курсов Steamlabs на
протяжении многих лет.
Работая вместе над заданиями, описанными в этой книге, не упускайте советы от команды Steamlabs, которые помогут облегчить и улучшить процесс
обучения.
Увлеките детей познавательной игрой
Постарайтесь сделать так, чтобы дети изучали проекты ИИ и робототехники
с любопытством, энтузиазмом и радостью. Создайте образовательное прост
ранство, основанное на игре, мотивируйте детей задавать вопросы, искать
ответы и исследовать мир искусственного интеллекта и робототехники.
Предисловие 11
Создайте безопасную и благоприятную среду, в которой дети смогут рисковать, совершать ошибки и учиться на них.
Рассматривайте проекты как отправную точку для развития воображения
учащихся. Вместе вы придумаете много увлекательных идей. Только от вас
зависит их воплощение в жизнь! Например, в проекте по распознаванию выражений лица или звуков предложите детям в игровой форме исследовать,
как робот может реагировать на различные гримасы. Помогите им провести мозговой штурм и предложить творческие идеи по использованию этой
функции, например создать робота, который отображает шутки и реагирует
на смех людей, или робота, который отображает утешительные слова, когда
распознает грустное лицо.
Сосредоточьтесь на процессе и поощряйте размышления
Уделяйте особое внимание процессу обучения, развитию навыков, творчест
ву и критическому обдумыванию конечной цели каждого проекта. Научите
детей разбивать задачи на этапы, размышлять и учиться на своем опыте,
потому что так у детей развивается мышление, нацеленное на рост.
Например, в проекте «Гонка шариков» дайте рекомендации, но позвольте детям самостоятельно принимать решения относительно конструкции
и функциональности робота. Поощряйте их дорабатывать свой дизайн и размышлять над тем, чему они научились в результате каждой итерации, например над повышением точности ИИ в обнаружении шариков или над стабильностью и позиционированием камеры во время гонки.
Поддерживайте обучение и поощряйте разнообразие
Предлагайте рекомендации и поддержку, когда это необходимо, но позволяйте детям делать собственные открытия и находить решения. При необходимости корректируйте свою поддержку, ведь путь обучения каждого
ребенка уникален. Поощряйте разнообразные идеи и решения, отмечая их
сильные стороны и перспективы, которые дети привносят в проекты.
Работайте вместе с детьми, чтобы направлять и поддерживать их творческий
путь, не навязывая решения. Например, обсуждая проект по распознаванию
монет, предложите им поделиться своими уникальными идеями – допустим,
создать робота, который собирает монеты для копилки, или робота, который
вознаграждает монетами ответы на вопросы викторины. Наблюдая разно
образие идей и решений, дети будут учиться друг у друга и глубже понимать
ИИ и робототехнику.
12 Создаем умных роботов
В ходе тестирования этих проектов дети часто придумывали инновационные
идеи, которые мы даже не знали, как реализовать. Поэтому в промежутках
между занятиями нам приходилось искать информацию и придумывать новые решения, чтобы поддержать энтузиазм детей.
Поощряйте самостоятельность и тягу к изучению мира
Укажите детям путь, но предоставьте им возможность делать собственные
открытия и самостоятельно решать проблемы. Помогите детям осознать
значение ИИ и робототехники в повседневной жизни, вдохновляя их использовать вновь обретенные навыки на благо нашего общества.
В проектах по распознаванию изображения и звука будьте готовы давать
советы, но позвольте детям принимать собственные решения о том, что ИИ
должен «видеть» и «слышать», а также о конструкции и функциональности
физического робота. Предложите им подумать о реальных сценариях, в которых распознавание объектов может быть полезным, например при сортировке вторсырья для утилизации отходов или определении видов растений
для экологических исследований. Связывая свои проекты с реальными ситуациями, дети лучше поймут важность своих навыков в области ИИ и робототехники и почувствуют себя способными создавать решения, которые
сделают этот мир лучше.
Воспитывайте ответственное и этичное отношение к ИИ
Вовлекайте детей в беседы об этических соображениях и ответственном
использовании ИИ в их проектах. Помогите детям принимать обоснованные решения относительно проектирования и применения ИИ, воспитывая
у них чувство ответственности, когда они погружаются в мир ИИ и робототехники.
Например, в проекте по распознаванию выражений лица предложите детям
обсудить этические последствия распознавания выражений лица с помощью
ИИ. Всегда ли ваш внешний вид соответствует тому, что вы чувствуете внут
ри? Какие еще последствия возможны, если ИИ будет относиться к людям
исключительно на основании того, как они выглядят? Существуют также
проблемы конфиденциальности и искажения обучающих данных ИИ. Помогите детям принять продуманные решения о том, как их робот собирает,
обрабатывает и хранит данные, а также о том, как его можно использовать
справедливо и беспристрастно. Изучая этические аспекты ИИ и робототехники, дети будут глубже понимать свою социальную ответственность как
создателей и пользователей технологий.
Предисловие 13
Мы старались сделать проекты в этой книге творческими и увлекательными. Они также позволяют учащимся развивать навыки продуктивной работы и уверенно чувствовать себя в области науки и передовых технологий.
Полученные навыки могут послужить отправной точкой в более глубоком
изучении творчества и инноваций, а также способствовать развитию навыков логического и абстрактного мышления, сбора и обработки информации.
Рассматривайте ИИ как вспомогательный инструмент, помогающий детям
воображать, творить и проектировать. Вместе с другими инструментами
и материалами он создает для детей игровую и неформальную среду обуче
ния, в которой они имеют свободу действий при вашей поддержке. Ваши
возможности безграничны!
Поддерживая своих детей или учеников в освоении ИИ и робототехники,
помните, что вы играете ключевую роль в формировании их будущего и прививаете им на всю жизнь тягу к творчеству и инновациям.
Давайте вместе отправимся в захватывающее приключение и приготовимся
стать участниками создания невероятных роботов с искусственным интеллектом!
Вперед, к бесконечным просторам творчества!
14 Создаем умных роботов
Лорри Энн Смит – вице-президент
по обучению и взаимодействию с обществом в Научном центре Онтарио,
одном из первых интерактивных научных музеев в мире. Она курирует
создание и реализацию всех мероприятий на местах. Лорри Энн ранее
работала менеджером по привлечению и обучению молодой аудитории
в Художественной галерее Онтарио,
а также преподавала курсы в Колледже дизайна Университета Онтарио,
Бостонском университете и Университете Торонто.
Предисловие 15
ЗНАКОМСТВО С МИРОМ
УМНЫХ РОБОТОВ
Вам интересно, как устроен мир
вокруг вас? Вам нравится возиться
с гаджетами и электроникой? Если
да, то нам с вами по пути! Эта книга
посвящена исследованию захватывающего мира простых электронных
устройств и контроллера micro:bit,
но она делает шаг вперед, используя
искусственный интеллект (ИИ) как
уникальный способ дальнейшего
развития проектов.
Если вы никогда раньше не имели
дела с электроникой, эта книга познакомит вас с основами схемотехники и программирования, чтобы вы
могли создавать свои собственные
инновационные и увлекательные
проекты. Хотите ли вы создать робота, который сможет перемещаться
по комнате, игру, реагирующую на
ваши движения, или гаджет, распо
знающий ваш голос, – в этой книге
есть все, что вам нужно для начала.
Так что приготовьтеь раскрыть свой
творческий потенциал и погрузиться в захватывающий мир электроники с ИИ!
ЧТО ВАС ЖДЕТ
Мы приготовили для вас несколько
замечательных проектов, и все они
имеют одну общую черту: они созданы, чтобы помочь вам учиться на
практическом опыте. Создавая собственных ИИ-роботов, вы исследуете захватывающий мир электроники,
программирования и ИИ, одновременно получая удовольствие и развивая ценные навыки.
Каждый проект в этой книге разделен на четыре части:
1) м
еханика: создайте надежную
основу для своего проекта, используя картон и другие перерабатываемые материалы;
2) э
лектроника: добавьте интересные электронные компоненты,
такие как светодиоды, двигатели
и звукоизлучатели, чтобы улучшить свои проекты;
3) m
icro:bit: используйте простое
программирование и контроллер
micro:bit для управления элект
роникой и воплощения вашего
проекта в жизнь;
4) И
И: обучите модель ИИ, чтобы
у вашего творения появилась способность реагировать на окружающий мир.
Каждый раздел развивается на основе предыдущего, медленно, но
неуклонно обучая вас и помогая отработать новые навыки. Проекты
созданы таким образом, чтобы вы
могли работать в удобном для вас
темпе и переходить к более продвинутым этапам, когда будете готовы
бросить себе вызов. Вы также можете смешивать и сочетать различные
этапы в соответствии со своими интересами и способностями.
Так что не бойтесь настраивать, экс
периментировать и давать волю
своему воображению; все дело в процессе и навыках, которые вы получаете, а не только в конечном результате!
Знакомство с миром умных роботов
17
ПРИГОТОВЬТЕ
МАТЕРИАЛЫ
И ИНСТРУМЕНТЫ
Прежде чем приступить к созданию потрясающих роботов с ИИ,
приготовьте все необходимые материалы и инструменты. Мы стараемся максимально использовать
вторичное сырье, поэтому внимательно осмотр итесь у себя дома.
Вот несколько идей:
18 Создаем умных роботов
•• трехслойный гофрированный
картон;
•• тонкий картон, например
коробка от хлопьев;
•• ролик от туалетной бумаги;
•• трубочки для напитков;
•• деревянные стержни,
например шпажки или
палочки для еды.
Применение перерабатываемых материалов не только бережет природу,
но и означает, что вы можете легко
повторно использовать их для других проектов в будущем.
Теперь приготовьте дополнительные
материалы, которые помогут нам собрать проект:
•• резиновые кольца;
•• скрепки и другой крепеж;
•• палочки от мороженого;
•• тонкий картон;
•• карандаши;
•• чистая бумага.
Для работы над проектами очень
важно иметь правильные инструменты. Вот они:
•• ножницы;
•• клей;
•• липкая лента;
•• дырокол.
Под присмотром взрослых вы можете использовать такие инструменты:
•• клеевой пистолет;
•• нож-скальпель.
Знакомство с миром умных роботов
19
Для работы вам понадобится ровное
и свободное от вещей место, например письменный стол, обеденный
стол или даже пол. Убедитесь, что
у вас достаточно места для передвижения, ваши материалы и инст
рументы находятся в пределах досягаемости, а рядом находится
взрослый, который может помочь
в случае необходимости. Даже если
вы неряшливый человек, постарайтесь поддерживать свое рабочее
пространство организованным и аккуратным, чтобы избежать разочарований из-за испорченных или потерянных деталей.
НАБОР
ТРАФАРЕТОВ
Чтобы помочь в реализации этих
проектов, мы создали несколько
трафаретов, или шаблонов, для
компонентов проекта. Они доступны в виде бесплатно загружаемых PDF-файлов по адресам:
•
•
•
•
•
•
•
•
makeairobots.com/chapter1;
makeairobots.com/chapter2;
makeairobots.com/chapter3;
makeairobots.com/chapter4;
makeairobots.com/chapter5;
makeairobots.com/chapter6;
makeairobots.com/chapter7;
makeairobots.com/chapter8.
Эти трафареты можно распечатать и приклеить на картон, а затем вырезать. Так вам будет легче повторять проекты из данной
книги.
20 Создаем умных роботов
Заметки:
Знакомство с миром умных роботов
21
ЭЛЕКТРОНИКА
ОСНОВНЫЕ ЭЛЕКТРОННЫЕ
КОМПОНЕНТЫ
Прежде чем приступить к созданию
наших крутых роботов с ИИ, давайте
немного изучим основы электроники.
Батареи и электрические цепи
Батарея – это сердце вашего проекта:
она дает энергию, необходимую для
работы! Когда вы соединяете два полюса батареи проводом или устройством, которому требуется питание,
электричество течет от положительной клеммы через устройство и обратно к отрицательной клемме батареи по пути, называемому цепью.
Если цепь не замкнута, ваше устройство не получит необходимую для
работы энергию.
Провода и медная лента
Медь является отличным провод
ником электричества, поэтому ее
используют для изготовления проводов. В этой книге мы будем использовать тонкие провода для создания
соединений между нашими элект
ронными компонентами. Иногда
они имеют разные концы: это может
быть штырек, гнездо или даже металлический зажим с зубцами. (Последний тип называется зажимом
«крокодил».) Эти провода можно
подключать к проектам разными
способами, и все они очень просты
в использовании.
22 Создаем умных роботов
Медная лента – это другая разновидность проводника тока. Это
просто плоская версия медных проводов, которую мы можем использовать при создании тонких гибких соединений для наших цепей (можно
также использовать толстую прочную алюминиевую фольгу).
Светодиоды
Светодиоды превращают электрическую энергию источника питания
в свет. В зависимости от материалов,
из которых изготовлен светодиод,
мы можем видеть свечение разных
цветов.
При работе со светодиодами важно
помнить, что они проводят электрический ток только в одном направлении: от более длинного положительного вывода к более короткому
отрицательному. Если светодиод не
работает, проверьте, не перепутали
ли вы полярность подключения выводов – это частая ошибка.
Звукоизлучатели
Эти устройства превращают электрическую энергию в звуковые волны,
позволяя нашим проектам издавать
шум и даже воспроизводить звуки
и музыку! Зуммеры-«пищалки» издают однотонные звуковые сигналы,
а динамики могут издавать более
сложные звуки.
Знакомство с миром умных роботов
23
Сервомашинки
Сервомашинки содержат маленький
чип, который позволяет управлять
вращением вала с помощью сигналов компьютера или платы micro:bit.
Эти маленькие механизмы отлично
подходят для точных движений и небольших нагрузок, но могут оказаться недостаточно мощными для перемещения тяжелых предметов.
Двигатели
и мотор-редукторы
Основанные на магнитах двигатели
постоянного тока, которые можно
использовать для вращения различных компонентов (например, колес).
Мотор-редуктор дополнительно содержит шестерни для увеличения
силы вращения за счет скорости, что
делает их полезными для более тяжелых задач, которые выполняются
медленнее. Эти шестерни обычно
находятся внутри защитного пластикового корпуса.
24 Создаем умных роботов
Итак, у вас появилось первое представление об электронике, и вы стали на шаг ближе к созданию потрясающих роботов с ИИ!
Заметки:
Знакомство с миром умных роботов
25
MICRO:BIT
MICRO:BIT И ПРОГРАММИРОВАНИЕ
В наших проектах мы будем использовать крошечный, но мощный компьютер под названием micro:bit. Это маленькое устройство идеально подходит
для экспериментов с программированием, и оно очень простое в использовании!
micro:bit – это микроконтроллер, т. е. миниатюрный компьютер, который
можно запрограммировать для управления другими электронными компонентами, такими как светодиоды, двигатели и датчики.
Он идеально подходит для изобретения крутых гаджетов и одновременного
изучения программирования!
ЗНАКОМСТВО С MICRO:BIT
Если вы внимательно посмотрите на свой micro:bit, то заметите несколько
важных вещей:
26 Создаем умных роботов
•• квадрат из маленьких точек на
передней панели на самом деле
представляет собой сетку из
25 крошечных светодиодов. Вы
можете легко приказать micro:bit
включить или выключить каждый
светодиод и отобразить цифры,
буквы и даже простые картинки;
•• две маленькие кнопки по обе
стороны – это простые сигналы
управления, которые позволяют
дать команду micro:bit выполнить
действие, например воспроиз
вести мелодию или сбросить счетчик;
•• пять металлических отверстий
внизу называются выводами и позволяют подключить разные элект
ронные устройства:
выводы 0, 1 и 2: это отдельные
«каналы» micro:bit, где вы можете использовать разные строки
кода для управления всем, что
к ним подключено;
3V и GND: это выводы питания. При подключении устройства положительный провод
подключается к контакту 3V
(3 вольта), а отрицательный
провод подключается к контакту GND (земля), чтобы создать
цепь питания.
Это маленькое электронное устройство станет мозгом ваших проектов.
Вы будете использовать его для самых разных задач: от управления
моторами до отслеживания времени
и результатов.
Знакомство с миром умных роботов
27
Для программирования micro:bit мы
будем использовать бесплатный вебсайт MakeCode, который можно посещать с любым браузером.
На этом сайте применяется язык ко
дирования Blockly, позволяющий
создавать код, объединяя красочные
блоки, как кусочки пазла. Благодаря
этому научиться программировать
очень легко, даже если вы никогда
раньше не пробовали это делать.
Веб-сайт MakeCode находится по
адресу makecode.microbit.org.
В этой книге мы покажем вам, как
использовать веб-сайт MakeCode для
программирования micro:bit и воплощения в жизнь проектов роботов
с искусственным интеллектом. Вы
узнаете, как создавать код, который
28 Создаем умных роботов
реагирует на различные входные
данные, например нажатия кнопок
или голосовые команды, и управляет
различными устройствами, такими
как светодиоды и двигатели.
В каждой главе показано, как создать
код для конкретного проекта, и прилагается библиотека кода, помогающая визуально различать блоки кода,
чтобы вы точно знали, какой фрагмент использовать.
Умение программировать – это потрясающий навык, который открывает новый мир творческих возможностей. К концу этой книги у вас
будут знания и уверенность в том,
что вы сможете создавать всевозможные крутые проекты с использованием micro:bit и Blockly.
Заметки:
Знакомство с миром умных роботов
29
ИИ
ЗНАКОМСТВО
С МИРОМ ИИ
Приготовьтесь погрузиться в увлекательный мир ИИ! После того
как вы создали свои проекты, подключили электронные компоненты
и запрограммировали micro:bit для
управления разными устройствами, наступает время применить ИИ,
чтобы сделать эти проекты умнее
и интерактивнее. Разобравшись, что
такое ИИ и как можно использовать
его в ваших проектах, вы получите
новый инструмент с бесконечными
возможностями для творчества.
Итак, что же такое ИИ? «Искусственный интеллект» означает способность компьютера выполнять задачи,
30 Создаем умных роботов
обычно связанные с человеческим
интеллектом, например распознавание изображений и закономерностей, а также понимание звуков
и произнесенных слов. Системы ИИ
могут анализировать данные, проводить наблюдения и делать выводы,
взаимодействуя с окружающим миром, как и мы!
ИИ уже стал важной частью нашей
повседневной жизни. Он помогает
рекомендовать музыку на платформах потокового вещания, дает нам
пошаговые инструкции в телефонных приложениях и даже помогает
нам в таких важных областях, как
здравоохранение и охрана окружающей среды. Поскольку ИИ продолжает развиваться и становиться все
более распространенным, людям
важно понимать, как он работает,
а также знать его потенциальные
преимущества и ограничения. Эти
знания помогут вам использовать
ИИ в качестве инструмента в своей жизни и критически задуматься
о его этических и социальных последствиях.
В проектах этой книги вы будете объединять ИИ с картонными механизмами, чтобы вдохнуть в них жизнь.
Вы сделаете это, используя инструменты искусственного интеллекта, такие как Teachable Machine от
Google, и ваш контроллер micro:bit.
Вы научите своих роботов распо
знавать объекты, звуки и даже выражения лица, чтобы сделать ваши
проекты интерактивными и реагирующими на окружающую среду.
Teachable Machine (обучаемые машины) – это веб-платформа, которая позволяет обучать модели искусственного интеллекта с помощью
веб-камеры и микрофона вашего
компьютера. С помощью этого инст
румента вы можете научить свой ИИ
распознавать различные объекты,
звуки или позы тела, которые затем
можно использовать для управления
вашими роботами через micro:bit.
Например, если вы хотите, чтобы
ваш проект распознавал машину
скорой помощи, вы будете использовать веб-камеру, чтобы сделать
множество снимков машины скорой
помощи под разными углами и расстояниями.
Эти данные научат ИИ, как выглядит
машина скорой помощи, и помогут
вашей модели ИИ более точно отличать машину скорой помощи от других транспортных средств, таких как
грузовик или фургон с мороженым.
После обучения вашей модели ИИ
вы подключите ее к вашему micro:bit
через специальный сайт Make AI Robots по адресу makeairobots.com.
Этот сайт действует как переводчик
между ИИ и micro:bit, показывая вам,
что ИИ видит через вашу веб-камеру,
и его наиболее точные прогнозы. Что
Знакомство с миром умных роботов
31
еще более важно, он также отправляет эту информацию на ваш micro:bit.
С помощью некоторых специальных
строк кода (которые вы можете найти на стр. 34 и 143) вы сможете использовать этот сайт для управления
сервомашинками и светодиодами
в своих проектах, создавая машины,
оснащенные ИИ.
Интегрируя ИИ в свои проекты, вы
не только вдохнете жизнь в свои творения, но и получите более глубокое
представление о принципах работы
ИИ и его применении. Этот практический опыт поможет вам получить
ценные навыки, связанные с ИИ,
и лучше подготовить вас к будущему, в котором ИИ будет играть все
более важную роль в нашей жизни
и работе.
32 Создаем умных роботов
ВАЖНЫЕ
САЙТЫ
Запишите в закладки браузера
адреса этих трех бесплатных
сайтов, потому что вы будете
использовать их в каждой главе!
• MakeCode
Программирование вашего
micro:bit:
makecode.microbit.org.
• Teachable Machine
Создание и обучение
вашего ИИ:
teachablemachine.withgoogle.
com.
• Make AI Robots
Загрузка вашего обученного
ИИ в micro:bit:
makeairobots.com.
ВЫ ГОТОВЫ?
НАЧИНАЕМ!
Прежде чем вы приметесь за проекты, нужно запомнить кое-что очень
важное: сталкиваться с трудностями
и даже терпеть неудачу – это совершенно нормально. На самом деле
иногда вы должны терпеть неудачу – это означает, что вы пробуете
что-то новое. А пробовать что-то
новое – вот что делает это приключение таким увлекательным!
Возможно, ваш робот движется не
так, как вы хотите, или ваш код прос
то не работает. Частью процесса изобретения являются тестирование,
переделка и улучшение ваших проектов.
Все лучшие изобретения проходят
стадию проб и ошибок, и это возможность поразмышлять о своей работе
и извлечь уроки из своего опыта. Не
бойтесь совершать ошибки – именно
так вы растете как творец!
Вот несколько полезных советов, которые следует иметь в виду каждому
читателю:
•• Сделайте шаг назад: если вы
зашли в тупик, сделайте перерыв
и вернитесь к проекту позже. Возможно, вы найдете новое решение
«на свежую голову»!
•• Попросите о помощи: помните,
вы не одиноки! Если вам нужен совет или новый взгляд, обратитесь
к родителям, учителю или другу.
•• Учитесь на своих ошибках: решение проблем – это навык, который совершенствуется с практикой. Сделать ошибку? Подумайте,
как избежать ее повторения. Воспользуйтесь этой возможностью,
чтобы стать еще лучшим изобретателем!
•• Продолжайте экспериментировать: не бойтесь пробовать разные подходы или менять конст
рукцию. Мы хотим, чтобы вы не
просто повторили наши проекты,
но и сделали их еще лучше!
Дети: всегда помните, что взрослые
готовы помочь, когда это необходимо, но вы здесь главные – если вы
хотите отклониться от инструкций
проекта, смело пробуйте. Если не получится, вы всегда можете вернуться
к исходной инструкции!
Родители: это прекрасная возможность увидеть удивительные вещи,
которые может делать ваш ребенок.
Замечательно, если он повторит проект, но еще лучше, если он доработает его по-своему. Постарайтесь быть
ненавязчивыми и дать волю их творчеству!
Знакомство с миром умных роботов
33
ПОДКЛЮЧЕНИЕ
MICRO:BIT –
НЕ ПРОПУСКАЙТЕ
ЭТУ ЧАСТЬ!
Важно помнить, что хотя micro:bit
и AI – потрясающие технологии, это
разные вещи, и для их совместной
работы требуется ваша помощь. Чтобы ваш micro:bit и ИИ могли общаться друг с другом, нужно загрузить
в плату небольшой стартовый код.
Этот стартовый код позволяет
micro:bit понимать данные, отправляемые с веб-сайта Teachable
Machine, на котором вы будете создавать и обучать свой ИИ для конкретных проектов.
В главах 1–3 вы займетесь изучением основ программирования и будете использовать этот предварительно подготовленный стартовый код,
чтобы ваши проекты ИИ могли работать без дополнительных усилий
с вашей стороны.
34 Создаем умных роботов
К главе 4 вы овладеете основами
программирования и поймете, как
работают блоки кода, а мы покажем
вам, как создать стартовый код самостоятельно.
А пока просто скачайте готовый
стартовый код и скорее присоединяйтесь к нашей веселой компании!
Скачайте стартовый код здесь:
bit.ly/AIStarterCode
Заметки:
Знакомство с миром умных роботов
35
1
ШАРНИРЫ,
КРЫЛЬЯ…
КАК ЭТО
ЛЕТАЕТ?
М
ы начнем наше путешествие по
миру изобретений с предмета,
которым вы пользуетесь почти каждый день, – с петлевого шарнира.
Шарнир соединяет два объекта и помогает им вращаться. Взгляните на
ближайшую дверь: эта штука между
стеной и дверью позволяет ей поворачиваться туда-сюда, открываться
и закрываться. При создании робота
нам не обойтись без шарниров, потому что это самый простой способ
обеспечить подвижность и превратить скучный статичный объект во
что-то интересное.
В этой главе нам понадобятся шарниры, чтобы создать двух наших любимых существ, машущих крыльями:
бабочек и летучих мышей. Сначала
мы создадим простые машущие крылья, используя липкую ленту и плотную бумагу. После этого мы добавим
в конструкцию батарейку, медную
ленту и светодиоды, чтобы создать
простую схему, которая добавит нашему творению светящиеся антенны
или глаза!
Шарнир
НАШИ ЦЕЛИ:
•• сделать бабочку или летучую
мышь, которая машет
крыльями;
•• добавить нашему существу
светящиеся глаза или усикиантенны;
•• добавить нашему существу
смешное «лицо» с помощью
micro:bit;
Шарнир
•• применить ИИ, чтобы научить
существо показывать эмоции.
Глава 1. Шарниры, крылья… Как это летает?
37
МЕХАНИКА
НАМ ПОНАДОБЯТСЯ:
•• трафареты*;
•• гофрированный картон;
•• клей;
•• палочки для еды или
деревянные стержни;
•• дырокол;
•• плотный картон.
Перед началом работы обязательно убедитесь, что у вас под рукой
есть все необходимые материалы
и инструменты.
Затем мы добавим micro:bit к нашему творению и соединим искусство
и технологии на светодиодном экране устройства, чтобы получилось
лицо, способное выражать эмоции.
Наконец, мы добавим в наше творение ИИ, чтобы по-настоящему
вдохнуть в него жизнь. Мы научим
ИИ слушать и понимать то, что вы
говорите, и это позволит вашему
творению реагировать на ваши эмоции: вы можете сказать «Счастье»
или даже просто громко рассмеяться,
и ваше существо улыбнется в ответ,
а если вы скажете «Грусть» или начнете плакать, у него появится хмурое выражение. Придумайте для ИИ
свои собственные выражения лица,
например удивление или восторг, –
вы ограничены только своим воображением!
Осмотритесь вокруг – возможно,
у вас уже есть несколько идей относительно материалов, из которых
можно изготовить шарниры. Вероятно, проще всего сделать шарнир из
скотча, но если вы пробовали этот
материал, то уже знаете, что он не
очень надежный.
Шарниры* (4)
Основание*
* Скачайте шаблон на сайте Makeairobots.com/chapter1.
38 Создаем умных роботов
Мы можем сделать кое-что получше.
В этом проекте вы воспользуетесь готовыми трафаретами (стр. 20), чтобы
построить тело робота, а затем создадите несколько шарниров, которые позволят ему махать крыльями!
1. Первый шаг в этом проекте – и во
всех будущих проектах – напечатать трафареты на бумаге, приклеить их на картон и вырезать.
Если вы используете палочки
для еды, трубочки для напитков
и деревянные стержни в качест
ве осей шарнира, обрежьте их по
длине основания; они понадобятся позже (рис. 1 ).
1
2. Возьмите четыре сделанные ва
ми прямые петли и вставьте их
в четыре прорези на боковой стороне основания. Если они плохо
держатся, используйте немного
клея (рис. 2 ).
Когда все петли установлены, это
должно выглядеть примерно так,
как показано на изображении
в правом нижнем углу (рис. 3 ).
3. Теперь возьмите ось, которую вы
сделали ранее, и проденьте ее через отверстия в петлях. Чтобы оси
не выскальзывали обратно через
отверстия, оберните скотчем их
концы; так получатся утолщения, которые не позволят осям
случайно выскочить из петель
(рис. 4 и 5 ).
2
3
Глава 1. Шарниры, крылья… Как это летает?
39
4
4. Наконец, придумайте и вырежьте крылья для своего творения.
Независимо от того, какими они
будут, не забудьте сделать длинные полоски на концах крыльев:
оберните их вокруг осей и приклейте скотчем к нижней стороне
крыла, скрепляя в один шарнир.
Вырежьте крылья и прикрепите
их к осям. Если у вас нет скотча,
воспользуйтесь клеем – только дождитесь, пока он высохнет
(рис. 6 и 7 )!
5
6
7
40 Создаем умных роботов
ЧТО ДАЛЬШЕ?
Вы можете придать проекту
индивидуальность с помощью
плотной бумаги и других материалов! Конечно, это всего
лишь один из способов сделать шарнир. Осмотрите свое
рабочее место – возможно,
у вас найдутся другие мате
риалы, из которых можно сделать хорошие шарниры.
Глава 1. Шарниры, крылья… Как это летает?
41
ЭЛЕКТРОНИКА
НАМ ПОНАДОБЯТСЯ:
•• тело существа, которое вы
сделали;
•• тонкий картон (коробка от
хлопьев);
•• медная лента*;
•• светодиоды (любого размера;
мы использовали диаметром
5 мм);
•• батарейка-«таблетка» CR2032
или CR2025.
* Можно заменить прочной алюминиевой фольгой для выпечки
и крепить ее скотчем. – Прим.
перев.
Теперь, когда у нас есть тело сущест
ва, давайте добавим искру элект
ричества, чтобы оживить его. Как
видите, мы изготовили более изящное тело. Оно основано на обычном
трафарете, но с плавными изгибами, чтобы получить немного более
реалистичные голову и тело, а также
с длинными усиками для развлечения.
1. Первым делом изготовим из
тонкого картона кнопку на теле
вашего существа, которая будет
включать и выключать свет. Вам
понадобится длинная полоска
тонкого картона, которую можно
обернуть от верхней части тела
до нижней.
Переверните тело нижней частью
вверх. Приклейте половину тонкой картонной полоски к верхней части тела (кнопка будет
спрятана в нижней части тела),
но пусть она выходит назад. Позже вы сложите ее, чтобы прижать
батарею (рис. 8 ).
2. Нанесите медную ленту на большую площадь с обеих сторон головы – только убедитесь, что стороны не соприкасаются. Здесь мы
будем крепить светодиоды. Если
ваша медная лента узкая, можно
взять несколько полосок; только
убедитесь, что они слегка перекрывают друг друга (рис. 9 ).
42 Создаем умных роботов
3. Завершите нижнюю часть, вырезав небольшой кружок из медной
ленты для установки батареи рядом со спиной (там, где тонкий
картон будет сгибаться и прижимать батарею). Соедините этот
кружок с местом установки светодиода полоской медной ленты
(рис. 10 и 11 ).
Если лента порвется, не волнуйтесь – можно использовать более
короткие полоски и соединить их
так, чтобы кончики перекрывались. Помните: самоделки редко
бывают безупречными, особенно
когда вы экспериментируете!
4. Пришло время установить светодиоды; вы можете использовать
разные цвета, но помните, что
светодиоды разного цвета нуждаются в немного разном напряжении питания, поэтому выбор
цвета будет влиять на яркость.
Имейте в виду, что электричест
во течет в одном направлении
(см. раздел «Батареи и цепи» на
стр. 22), поэтому убедитесь, что
короткий вывод светодиода (–)
находится на той же стороне,
где будет находиться батарея,
а длинный вывод (+) – на противоположной батарее стороне
(рис. 12 и 13 ).
8
9
10
11
Глава 1. Шарниры, крылья… Как это летает?
43
Короткий
Длинный
12
14
15
16
44 Создаем умных роботов
13
Установив светодиоды, накройте
их выводы медной лентой с каждой стороны, чтобы получить
надежное соединение. Можно
использовать более одного куска
медной ленты и поместить ее
на оба вывода с одной и той же
стороны – только убедитесь, что
кромки верхней и нижней медных лент не перегибаются через
край и не касаются другой стороны (рис. 14 )!
5. Теперь пришло время добавить
батарею. Сделайте небольшую
петлю из медной ленты и помес
тите ее на круглую площадку;
она нужна, чтобы удерживать
батарею на месте. Убедитесь, что
батарея лежит отрицательной
(шероховатой) стороной вниз
(рис. 15 и 16 ).
6. Последний шаг – завершить
электрическую цепь на другой
стороне. Переверните тело су
щества батарейкой вниз. Наклейте длинную полоску медной ленты, которая начинается
от места установки светодиодов
и продолжается по всей длине
корпуса, поверх картонной по
лоски и до другой стороны тонкого картона (рис. 17 ).
Теперь сложите тонкий картон
поверх батареи так, чтобы медная
лента могла касаться ее верхней
части (+) и замыкать цепь. Если
возникают проблемы с контактом, просто добавьте еще медной
ленты в том месте, где она будет
касаться верхней части батареи
(рис. 18 и 19 ).
Когда картон согнут и медная лента касается батареи, через цепь
движется непрерывный поток
электронов. Отпустите самодельную кнопку, и цепь разомкнется,
отключится питание, и свет погаснет. Поздравляем, вы создали
простую схему и добавили в свое
творение управляемые огни!
17
18
19
ЧТО ДАЛЬШЕ?
На минутку отойдите назад и полюбуйтесь светящимся существом,
которое вы только что сделали. Медная лента – замечательный материал, который подходит для создания
простых схем в подобных проектах.
В следующих главах мы рассмотрим
еще несколько интересных способов
использования ленты, так что если
вы хотите потренироваться, почему
бы не создать еще несколько уникальных существ, чтобы похвастаться ими?
Глава 1. Шарниры, крылья… Как это летает?
45
MICRO:BIT
НАМ ПОНАДОБЯТСЯ:
•• micro:bit;
•• USB-кабель;
•• компьютер с доступом
в интернет.
Скачайте начальный и полный
код micro:bit на сайте makeairobots.com/chapter1.
БИБЛИОТЕКА КОДА
A
B
C
D
20
46 Создаем умных роботов
Вот и настало время первого урока
программирования! В этом проекте
вы освоите простой способ придать
проекту индивидуальность, снабдив
его выразительным «лицом»! Мы
разработаем код для вывода лица
на экран, прикрепим плату micro:bit
к роботу, а затем загрузим лицо
в micro:bit. На самом деле это сделае
те вы – а мы покажем вам, как!
Но сначала познакомьтесь с базовыми элементами кода (блоки A , B , C
и D на рис. 20 ). Вы увидите один из
них в начале каждого раздела про
micro:bit. Это удобный способ показать каждый блок кода, используемый в конкретном проекте, а также указать, как его найти на сайте
MakeCode, где мы будем создавать
наш код.
Блоки кода – это инструменты, выполняющие конкретные задачи.
Они аккуратно разложены на сайте
makecode.microbit.org по виртуальным ящикам. Например, блок кода A
Show Icon (Показать значок) лежит
в ящике Basic (Основные), а другие
блоки кода находятся в ящиках Input
(Ввод), Music (Музыка) и прочих, которые мы рассмотрим в последующих главах.
На самом деле ваш micro:bit – это
миниатюрный компьютер с процессором и крошечными светодиодами
на передней панели для отображения информации. Мы будем использовать эти маленькие огоньки, чтобы
создать лицо робота, но сначала нам
нужно сказать micro:bit, как это сделать.
Чтобы начать программировать,
войдите на сайт makecode.microbit.
org (стр. 26). Нажмите большую фиолетовую кнопку New Project (Новый
проект), и вы попадете на новую
страницу с двумя блоками, ожидающими кода; теперь все готово к работе (рис. 21 )!
1. Эти два блока на экране послужат
основой для большинства ваших
будущих проектов. Какой бы код
мы ни поместили в блок Forever
(Навсегда), он будет работать…
да, вечно! Эта команда будет запускать ваш код в цикле снова
и снова после запуска.
21
22
(Команда On Start (При запуске)
тоже запустит ваш код при включении micro:bit, но только один
раз. Перетащите блок On Start
в боковое меню, чтобы удалить
его – для этого урока он нам не
понадобится.)
2. С левой стороны нажмите на
ящик Basic в верхней части спис
ка, чтобы открыть его и увидеть
там все остальные блоки кода
(рис. 22 ).
Глава 1. Шарниры, крылья… Как это летает?
47
3. Теперь перетащите третий блок
с надписью Show Icon A (показать
значок) и поместите его в гнездо
блока Forewer.
Если вы случайно потеряли или
удалили блок, не волнуйтесь –
вы всегда можете взять другой
в ящике блока (рис. 23 ).
23
4. Вы должны увидеть, как небольшой тестовый экран слева оживает через секунду; это виртуальная версия экрана micro:bit для
проверки вашего кода.
Но… это еще не лицо; по умолчанию это сердце. Если вы щелкнете по маленькому перевернутому
треугольнику рядом с изображением сердца в блоке кода, вы обнаружите целый ряд доступных
вариантов лица (рис. 24 , 25 , 26
и 27 ).
24
25
26
Happy
Surprised
28
48 Создаем умных роботов
27
Fabulous
5. Если вы настроены творчески,
возьмите блок Show LEDs (Показать светодиоды) B вместо блока
Show Icon A и создайте собственное лицо, щелкая отдельные точки блока Show LEDs B (рис. 28 )!
СКАЧИВАНИЕ
Готовы ли вы скачать код с сайта?
Если вас устраивает то, как он работает, дайте ему имя и сохраните на
своем компьютере, используя значок
диска рядом с кнопкой Download
(Загрузить) внизу веб-страницы.
код в определенную папку на вашем
micro:bit каждый раз, когда вы ме
няете свой код.
Теперь вы готовы загрузить код
в свой micro:bit. Это можно сделать
одним из двух способов.
Подключите micro:bit к компьютеру
с помощью USB-кабеля. Нажмите на
маленький значок шестеренки в правом верхнем углу окна, и вы увидите
опцию Connect Device (Подключить
устройство) (рис. 29 ).
Сопряжение
Прямая загрузка
Первый способ – соединить ваш
micro:bit с веб-сайтом. Так вы сможете легко отправлять информацию
туда и обратно. Сопряжение избавляет от необходимости загружать
Некоторые интернет-браузеры не
поддерживают сопряжение, но это
нормально – мы можем использовать метод прямой загрузки.
Подключите ваш micro:bit…
Сначала подключите ваш micro:bit
к компьютеру при помощи USB-кабеля.
Подключите ваш micro:bit…
Свяжите ваш micro:bit с компьютером,
выбрав опцию BBC micro:bit CMSIS-DAP
или DAPLink CMSIS-DAP
во всплывающем окне, которое
появится после нажатия на кнопку Next
(Далее) внизу.
29
Глава 1. Шарниры, крылья… Как это летает?
49
30
31
Нажмите на значок из трех точек рядом с кнопкой Download (Загрузить)
в левом нижнем углу веб-страницы
и следуйте инструкциям по загрузке, чтобы сохранить код на свой
компьютер. Когда все будет готово,
откройте окно на своем компьютере и найдите диск или накопитель
с надписью MICROBIT.
в micro:bit – это просто добавочный
шаг по сравнению с методом сопряжения.
На компьютере с Windows это будет
выглядеть так, как показано на рисунке слева вверху (рис. 30 ).
Осталось только
прикрепить
micro:bit к нашему творению. Вы можете использовать все, что есть под
рукой, например скотч, резиновые
ленты или даже скрепку либо зажим
для бумаг – только будьте осторожны, чтобы не повредить micro:bit!
На компьютере Apple это будет выглядеть так, как показано на рисунке
справа вверху (рис. 31 ).
Найдя это место, просто перетащите файл, который вы скачали с вебсайта (он будет иметь окончание
«.hex»), в папку MICROBIT на своем
компьютере. Перетаскивание загрузит файл с вашего компьютера
50 Создаем умных роботов
Вы увидите, как индикаторы сзади
очень быстро замигают в течение
нескольких секунд; когда они погаснут, ваш файл кода будет загружен
в micro:bit. Все готово!
И помните, что мы собираемся использовать micro:bit снова, поэтому
не используйте клей или другие методы крепления, которые помешают
отделить плату обратно.
ЧТО ДАЛЬШЕ?
Помимо лиц, мы можем использовать небольшой полезный блок кода
для отображения слов на экране.
Блок Show String (Показать строку)
в ящике Basic дает нам возможность
вводить слова или предложения,
которые будут медленно прокручиваться по экрану. (Строка – это прос
то название последовательности
символов или букв, которые код использует в качестве информации.)
Попробуйте добавить блок Show
String С и ввести текст в белое по
ле блока*. Вы также можете добавить блок Clear Screen (Очистить
экран) В между блоками Show Icon A
и Show String С , чтобы переключаться между лицом и словами. Блок
Clear Screen В заставит экран гаснуть перед переходом к следующему
экрану и предотвратит смешивание
изображений.
* Используйте только латинские символы. Кириллица не поддерживается. – Прим.
перев.
Глава 1. Шарниры, крылья… Как это летает?
51
ИИ
НАМ ПОНАДОБЯТСЯ:
•• micro:bit;
•• USB-кабель;
•• микрофон;
•• компьютер с доступом
в интернет.
Ссылки на инструменты ИИ доступны на сайте makeairobots.com/
chapter1.
Сначала мы построили существо,
которое машет крыльями. Затем мы
использовали электронику, чтобы
добавить забавные огни, и micro:bit,
чтобы добавить выразительное лицо.
Вы готовы к последнему шагу? Теперь мы добавим нашему творению
немного искусственного интеллекта,
чтобы по-настоящему оживить его!
Мы научим модель ИИ распознавать
такие слова, как счастье и грусть,
и показывать соответствующее выражение на экране micro:bit. Специальный код позволит вашему роботу
слышать слова, которые вы говорите, и определять, какое выражение
«лица» нужно принять.
ОБУЧЕНИЕ
Наша первая задача – дать этому ИИ
данные для изучения. Обучение будет происходить на веб-сайте Google
Teachable Machine (стр. 30), располо52 Создаем умных роботов
32
женном по адресу teachablemachine.
withgoogle.com.
Нам нужно, чтобы существо реагировало на голос, поэтому после нажатия кнопки Get Started (Начать) на
сайте нажмите кнопку Audio Project (Аудиопроект). Откроется новый учебный модуль, в котором вам
нужно будет расположить микрофон
спереди и по центру и приготовиться к записи (рис. 32 ).
1. Первое, что просит от нас этот
сайт, – это записать 20 секунд
фонового шума. Это означает,
что вам придется вести себя тихо
и позволить компьютеру узнать,
как звучит фон «никто не говорит». Это позволит обучаемой
машине узнать, как звучит ваша
комната, и сосредоточиться непосредственно на ваших словах,
а не на фоновом шуме комнаты.
2. Нажмите кнопку Microphone
(Микрофон), а затем кнопку Re
cord 20 Seconds (Записать 20 секунд) и тихо подождите. Когда
запись тишины будет готова, вы
увидите кнопку Extract Sample
(Извлечь образец). Она добавит
к ИИ образец фонового шума,
и у него будет первый фрагмент
данных, который ему необходимо изучить.
3. Чуть ниже этого раздела нажмите кнопку с надписью Class 2
(Класс 2) и назовите ее в честь
эмоции, которую должно отра
зить существо; пусть это будет
Happy (Счастливый)*.
Для этого класса (группы похожих данных) нужны гораздо более короткие примеры, чем ваши
20 секунд фонового шума, но зато
их понадобится довольно мно-
33
го – помните, чем больше примеров вы добавляете, тем умнее
становится ваш ИИ.
Так что проверьте свои актерские
способности и произнесите слово «счастье» разными способами:
скажите его забавным голосом,
медленнее обычного, произнесите как вопрос и т. д. – и нажимайте кнопку Extract Sample после
каждой записи. Когда у вас будет
записано около восьми-девяти
вариантов, можно переходить
к добавлению другого класса звуков (рис. 33 ).
4. Нажмите серую кнопку Add a
Class (Добавить класс) в нижней
части веб-страницы, чтобы добавить дополнительные наборы
данных для вашего ИИ, например
Surprised (Удивленный) или Fa
bulous (Мечтательный). Добавьте
* Вы можете произносить слова на русском языке, но названия классов должны быть
написаны только латинскими буквами! – Прим. перев.
Глава 1. Шарниры, крылья… Как это летает?
53
столько классов, сколько захотите, – просто не забудьте дать каждому классу свое имя и повторите инструкции из шага 2, чтобы
записать их (рис. 34 ).
5. Когда все классы будут записаны,
начните процесс обучения, нажав
кнопку Train Model (Обучитьмодель) в среднем столбце (рис. 35 ).
(Если в каком-то классе не хватает данных для обучения, вам
будет предложено добавить примеры.)
Приложению Teachable Machine
потребуется несколько минут,
чтобы изучить и усвоить информацию, которую вы ему предоставили (стр. 30). Когда модель
будет готова, вы увидите, что ИИ
ожил и появился третий столбец
с подписью Preview (Просмотр).
Если вы произнесете слово в мик
рофон, то увидите число, показывающее, насколько уверенно ИИ
распознал это слово.
34
35
С какой уверенностью ИИ распознает ваши слова? 50 %? 79 %?
100 %? При низкой уверенности
у ИИ может не хватить достоверной информации, чтобы распознать ваши слова. Добавьте
больше данных в каждый класс
и снова обучите его (рис. 36 ).
6. Когда вы будете довольны результатами обучения ИИ, сохраните его: нажмите кнопку Export
Model (Экспортировать модель)
в столбце Preview, после чего
появится окно, затем выберите
Upload Model (Загрузить модель). (При этом ваша модель ИИ
сохраняется в облаке, но аудио
записи остаются только на вашем
компьютере.) Скопируйте предо54 Создаем умных роботов
36
ставленную ссылку на интернетадрес, чтобы использовать ИИ
после настройки кода micro:bit.
Откройте новое окно браузера (чтобы легко вернуться на эту страницу,
если понадобится переобучить ИИ)
и перейдите по адресу makecode.
micro:bit.org, чтобы начать работу
(рис. 37 ).
37
КОД
Теперь, когда ваш ИИ достаточно
умен, чтобы выбирать эмоцию, нам
нужно дать ему способ выражения
этой эмоции: всего за два коротких
шага вы создадите разные светодиодные «лица», отображающие классы
эмоций, а затем закодируете алгоритм выбора нужного лица.
1. Откройте сохраненный файл ко
да ИИ, который мы создали на
стр. 34 (рис. 38 ).
Этот код, который мы описали
во введении, позволяет запрограммировать ИИ и micro:bit на
общение друг с другом. Здесь мы
сможем добавить несколько знакомых блоков для создания лиц.
38
39
2. Но куда нам девать эти лица?
Помните, какая часть этого кода
сообщает вашему micro:bit, что
делать, когда ИИ выдает прогноз
(рис. 39 )?
Помните, как нарисовать лицо
светодиодами (стр. 48)? Вы можете либо выбрать готовое лицо,
уже созданное с помощью Show
Icon A , либо использовать инструмент Show LEDs В и нарисовать собственный вариант. Выберите лицо для каждого класса,
который вы создали на сайте
обучения ИИ.
Глава 1. Шарниры, крылья… Как это летает?
55
Этот блок оператора If считывает
данные, которые мы сохранили
от ИИ. Если вы введете в пустое
текстовое поле « » одно из названий классов, которые вы создали
(например, Happy), то всякий раз,
когда ИИ отправляет этот сигнал
на micro:bit, он активирует тот
код, который мы добавим под
ним. Поместите светодиодный
блок с улыбающимся лицом в это
место, и все почти готово (рис. 40
и 41 )!
3. Теперь повторите это для каждого класса, который вы научили
распознавать ИИ. Чтобы получить больше операторов If для работы, нажмите значок + в кружке в левом нижнем углу блока
(рис. 42 ). Скопируйте (или про
дубл ируйте) блок SerialData =,
чтобы использовать его снова.
Вот и все, что нужно для создания
кода проекта. Если вы создали много
эмоций для своего ИИ, ваш код может получиться довольно длинным.
Это нормально – у micro:bit достаточно памяти, чтобы справиться
с ним. Только убедитесь, что имена,
которые вы вводите на веб-сайте
Make: AI Robots, точно соответствуют
именам классов, которые вы обучили
(и написаны латинскими буквами).
Теперь, когда все настроено, можно
перейти на https://makeAIRobots.com,
чтобы посмотреть, как это работает.
56 Создаем умных роботов
40
41
42
ЗАПУСК ПРОЕКТА
Подключив micro:bit к компьютеру
с помощью USB-кабеля, мы окажемся на пороге веб-сайта Make: AI Robots – моста, который поможет ИИ
общаться с micro:bit!
1. Нажмите большую кнопку Con
nect Your Micro:bit to Your AI
(Подключите свой Micro:bit к ИИ)
в центре страницы. Появится небольшое окно с просьбой подключить ваш micro:bit аналогично
тому, как мы это сделали на вебсайте Make: AI Robots (рис. 43 ).
43
44
В этом списке может быть несколько строк в зависимости от
того, что подключено к вашему
компьютеру, но вам нужна такая
строка:
Как только ваш micro:bit будет
успешно подключен, вы перей
дете на следующую страницу
(рис. 44 ).
2. Помните ссылку, которую мы
получили на сайте Teachable Machine? Скопируйте и вставьте
ее сюда, выберите веб-камеру
и микрофон, которые вы хотите
использовать. Затем нажмите
кнопку Ready! (Готово!).
Теперь все готово к запуску. Поскольку в этой главе мы используем аудиопроект, на экране показан полезный визуализатор,
который меняется в соответствии с вашим голосом (рис. 45 ).
45
3. Слева показаны все классы, которые вы обучали, и маленькие полоски, которые движутся в ответ
на звуки в комнате. Это реакция
ИИ, который пытается определить, что он слышит, сравнивая
звуки со всеми данными, которые вы ему предоставили. Попробуйте проверить несколько
своих слов! Вы можете наблюдать, как полоски меняются, по
мере того как ИИ думает, а также
увидите на экране отметку, когда
он сделает выбор (рис. 46 ).
Глава 1. Шарниры, крылья… Как это летает?
57
Ну как, сработало? Вы видите изменение лица на micro:bit? ИИ всегда
прослушивает звуки, поэтому если он
смог узнать класс, он должен был отправить это имя класса в micro:bit –
и, если наш код верен, он должен был
активировать действие, которое вы
туда поместили.
Если код не сработал или работает
лишь иногда, попробуйте отрегулировать пороговый уровень Input
(Вход). Эту панель можно найти,
щелкнув значок шестеренки Open
Settings (Открыть настройки) в правом верхнем углу (рис. 47 ).
Это проект распознавания речи, где ИИ
должен узнавать созданные ранее классы
по звукам, поступающим на вход!
46
Уменьшение порога позволит ИИ
выбирать класс, не будучи на 100 %
уверенным в том, что он слышит. Это
все равно, что разрешить ИИ больше
рисковать в своих предположениях.
Эта настройка помогает ИИ решить,
насколько он уверен в своем
прогнозе. Сдвиньте указатель до
упора, если хотите, чтобы ИИ был
абсолютно уверен в своем решении,
или только наполовину для более
быстрого решения.
Также имеется полезное окно жур
нала сообщений, которое сообщит
вам, что ИИ отправляет на micro:bit
(рис. 48 ).
Если вы не видите сообщений
с надписьюAI predicted… (ИИ предполагает…), то вам нужно отрегу
лировать настройку точности или
заново обучить свой ИИ, используя
еще больше данных.
Если есть сообщение AI predicted…,
но ваш micro:bit ничего не сделал,
убедитесь, что он подключен к вебсайту. Повторите шаги из начала этого раздела, а затем проверьте свой
код на наличие ошибок.
Проявив немного терпения и упорного труда, вы очень быстро научитесь управлять своим творением.
Удивите свою семью и друзей, сделав
первый шаг на пути к ИИ. Вы начали
с очень простого программирова58 Создаем умных роботов
47
48
ния и взаимодействия с ИИ, чтобы
облегчить погружение в этот новый
и захватывающий мир. Следующие
несколько проектов добавят еще
больше интересных способов взаи
модействия ИИ с людьми. Так что
берите картон и приготовьтесь!
ЧТО ДАЛЬШЕ?
Итак, вы создали существо с движущимися крыльями и электрическим
светом, способное выражать эмоции
на лице, но не останавливайтесь на
достигнутом: подумайте, как можно
добавить ему индивидуальность.
Например, измените дизайн корпуса, применив разные формы и шарниры, покройте тело темной краской,
чтобы придать ему внушительный
вид, или сделайте крылья из папиросной бумаги, чтобы придать им
нежный вид. И помните: светящиеся
глазки – всегда забавное дополнение
к любому проекту!
А как насчет добавления зуммера
вместо светодиодов, чтобы пчела
могла жужжать? Или попробуйте
49
добавить сервомашинку с рычажными механизмами (стр. 190), чтобы сущ еств о само махало крыльями
(рис. 49 ).
Изучение других блоков и ящиков
кода на сайте Make: AI Robots может дать впечатляющие результаты.
Даже такая простая вещь, как добавление блока Show String С в ящике
Basic, дает нам возможность вводить
слова или предложения, которые
будут медленно прокручиваться по
экрану. Попробуйте использовать
один из блоков, чтобы заставить
micro:bit переключаться между лицом и словами.
Глава 1. Шарниры, крылья… Как это летает?
59
Простая бабочка
Бабочка с крыльями
на скотче
Бабочка
с крыльями
на шарнирах
Бабочка с micro:bit
ЗАВЕРШЕНИЕ
Это было забавное приключение, не
так ли? Начав с простых картонных
деталей, мы построили существо
с механическими крыльями, добавили искру жизни с помощью светодиодных усиков и использовали лицо
micro:bit для выражения эмоций.
Затем мы обучили ИИ распознавать
60 Создаем умных роботов
Электронная бабочка
слова и выражать эмоции – вы можете поздравить себя с хорошо выполненной работой!
Мы будем часто встречать похожие
механизмы по мере работы над другими проектами, поэтому всегда
ищите способы их улучшить. Когда
вы закончите работу над своим проектом, переходите к следующей главе, где мы возьмемся за дело всерьез!
Заметки:
Глава 1. Шарниры, крылья… Как это летает?
61
2
ОСИ
И КОЛЕСА
Простой
Автомобиль автомобиль
с шипами
Автомобиль
с резинкой
Фургон
мороженого
с ИИ
Скорая с ИИ
Электромобиль
Автомобиль с фарами
Е
сли мы хотим завести больше друзей-роботов, нам следует найти
способ быстро добраться из пункта А
в пункт Б. Это означает, что нам нужно поговорить об еще одном простом
механизме, который вы видите каждый день: колесах и осях.
Мы весело проведем время, создавая
легковые и грузовые машины, которые становятся все сложнее, по мере
того как мы добавляем в них больше
электроники и кода.
Мы начнем с создания простой картонной тележки с осями, позволяющими ей катиться, а затем добавим
резинку в качестве двигателя. Мы
применим наш новый навык использования медной ленты, чтобы
сделать светящиеся фары, и установим более мощные двигатели,
чтобы автомобиль мог двигаться
самостоятельно. Затем мы научим
micro:bit издавать звуки наподобие
автомобильного гудка. Наконец, добавим в проект ИИ, чтобы наделить
автомобиль разумом и научить ИИ
различать дорожные ситуации. Застряли в пробке? Сигнальте громче!
НАШИ ЦЕЛИ:
•• построить простую тележку;
•• добавить к тележке двигатели;
•• запрограммировать micro:bit
издавать автомобильный
гудок;
•• добавить ИИ, чтобы научить
машину реагировать на
дорожную ситуацию.
Глава 2. Оси и колеса
63
МЕХАНИКА
НАМ ПОНАДОБЯТСЯ:
•• трафареты*;
Колесо
•• трубочки для напитков;
•• палочки для еды или
деревянный стержень;
Вал
•• опоры осей (по желанию)*.
Ось
Средняя опора
оси (4)
Среднее основание
Среднее колесо (4)
* Загрузите полноразмерный PDFфайл на сайте makeairobots.com/
chapter2.
64 Создаем умных роботов
Самое очевидное место, где вы видели колесо, – это автомобиль или
велосипед, но вы, возможно, не обратили внимания на ось, стержень
или вал, который удерживает колесо и позволяет ему вращаться. Эти
механизмы окружают нас повсюду,
например в вентиляторе, чтобы
лопасти могли вращаться, и даже
в дверной ручке, чтобы она могла
поворачиваться, когда мы открываем дверь. Хотя ручка совсем не
похожа на колесо, оба механизма
используют скрытые оси для вращения. В роботах, которых вам предстоит создать, эти оси будут соединять два колеса вместе, позволяя им
вращаться одновременно.
Но как мы можем прикрепить ось
к нашей машине, чтобы она вращалась? Если ось не крутится, значит,
не крутятся колеса, и тогда у нас получится кучка картона в форме автомобиля. Итак, нам нужен вал или
полый цилиндр, чтобы удерживать
ось во время ее вращения.
В качестве полого вала может служить трубочка для напитков, если
она достаточно велика, чтобы внутрь
поместилась ось, но вместо нее вы
также можете использовать опоры
оси из библиотеки трафаретов.
Первая машина, которую сделаем,
движется за счет приложенной
силы – это причудливый способ сказать, что вам придется ее толкать.
Затем вы узнаете, как заставить эту
машину двигаться самостоятельно,
не добавляя ничего, кроме скрепки
и резинки.
ПРОСТАЯ
ТЕЛЕЖКА
1. Напечатайте трафареты на бумаге, затем приклейте их на картон
и вырежьте.
2. Если вы используете трубочку,
разрежьте ее на две части той же
длины, что и ширина основания.
Затем аккуратно приклейте одну
трубочку снизу в передней части
тележки, а другую – в задней.
Глава 2. Оси и колеса
65
1
2
3
4
5
Если у вас нет трубочки, вы можете прикрепить опоры осей к пазам в основании и закрепить их
на месте с помощью скотча или
клея (рис. 1 – 3 ).
4. Проденьте эту ось через трубочку
(или опору оси) и убедитесь, что
ваша ось может плавно вращаться, прежде чем приклеивать второе колесо с другой стороны.
3. Теперь нужно прикрепить оси
к колесам: проткните палочкой
для еды или деревянным стержнем центр колеса и закрепите его
на месте небольшим количеством
клея (рис. 4 и 5 ). Когда клей затвердеет, ось и колесо должны
вращаться как одно целое.
Повторите то же самое для другой пары колес тележки (рис. 6
и 7 ).
66 Создаем умных роботов
Вот и все (рис. 8 )! Вы можете приложить силу, чтобы заставить тележку
двигаться – толчок руки служит источником энергии для ее перемещения. Немного подтолкните тележку
и посмотрите, как она катится!
6
7
8
Глава 2. Оси и колеса
67
ЧТО ДАЛЬШЕ?
9
Попробуйте использовать тонкую
резинку, чтобы добавить энергию
пружины, высвобождаемую, когда
сжатая или растянутая пружина возвращается в свою нормальную форму: постройте еще одну тележку, используя держатели осей (рис. 9 – 11 ),
но сделайте прорезь в основании,
чтобы показалась ось. Проткните
согнутую скрепку для бумаг через
верхнюю часть корпуса (рис. 12 и 13 )
и закрепите ее, согнув снизу и добавив клея (рис. 14 ).
10
12
11
13
68 Создаем умных роботов
14
15
16
17
Завяжите один конец резинки вокруг оси (рис. 15 ), а затем зацепите другой
конец за скрепку (рис. 16 и 17 ). Прокатите автомобиль назад; резинка должна обернуться вокруг оси и растянуться, запасая потенциальную энергию,
которая приведет в движение вашу тележку, когда вы ее отпустите.
Глава 2. Оси и колеса
69
ЭЛЕКТРОНИКА
НАМ ПОНАДОБЯТСЯ:
•• трафареты*;
•• мотор-редукторы постоянного
тока (2);
•• провода;
•• кусачки или ножницы;
•• батарея (рекомендуется 9 В ти
па «Крона»);
•• клей (рекомендуется
термоклей).
Большие опоры
осей (4)
Большое основание
МАШИНА
С МОТОРОМ
Тележка с резиновым приводом – это
здорово, но автомобиль с мотором –
это намного круче. Небольшие двигатели постоянного тока типоразмера 130, которые мы используем,
очень популярны среди любителей
самоделок. Внутри желтого пластикового корпуса находятся шестерни, которые вращают внешнюю
ось – небольшой белый выступ сбоку. Эти двигатели вращают внутреннюю центральную ось, соединенную
с шестернями, через которые вращение передается на внешнюю ось.
Особенность этого двигателя в том,
что вы можете легко изменить направление вращения, изменив направление тока, проходящего через
него, – поэтому если вы перевернете
батарею, двигатель будет вращаться
в обратном направлении!
Прежде чем приклеить эти двигатели на свою машину, убедитесь, что
они исправны и готовы к использованию:
•• к ним должны быть прочно присоединены провода, идущие от передней части каждого двигателя.
Если их нет, подсоедините провод
к каждому из металлических контактов, выступающих из корпуса;
Большие колеса (4)
* Загрузите полноразмерный PDFфайл на сайте makeairobots.com/
chapter2.
70 Создаем умных роботов
•• проверьте двигатели с помощью
батареи, чтобы убедиться, что
они работают – нет ничего хуже,
чем завершить проект, а затем
обнаружить, что какая-то деталь
сломана! Подсоедините провода
к положительной и отрицательной
клеммам батареи 9 В и посмотрите, начнут ли они вращаться. Если
вращения нет, проверьте подключение проводов к двигателю
(рис. 18 и 19 ).
Когда двигатели заработают, можно
подготовить кузов машины. Найдите в библиотеке трафаретов большое
основание (Large Body) и большие
опоры осей (Large Axle Holder). Это
будет скелет вашей машины, к которому мы прикрепим двигатели. (Мы
используем кузов большего размера,
чем у предыдущих машин, потому
что двигателям нужно немного больше места.)
18
19
Глава 2. Оси и колеса
71
1. После сборки машины с большим
кузовом ваша первая задача –
прикрепить два двигателя к нижней части основания. Убедитесь,
что маленькие белые выступы на
оси двигателей направлены наружу, а затем закрепите двигатели на основании (рис. 20 ). (Лучше
всего для этого подойдет горячий
клей.)
2. Теперь спрячьте эти надоедливые провода: сделайте небольшую выемку на боковой стороне
кузова автомобиля, чтобы протянуть провода на верхнюю сторону. Теперь они не запутаются
в колесах и не будут волочиться
по земле (рис. 21 ).
3. Для выполнения этого шага вам
может понадобиться помощь
взрослого: вам необходимо соединить провода так, чтобы питание от аккумулятора могло
поступать на оба двигателя. Это
означает, что вам придется использовать ножницы или кусачки, чтобы удалить пластиковую
изоляцию с кончиков проводов
и обнажить медные жилы внутри.
Лучшим инструментом для этого являются специальные кусачки, поскольку они имеют лезвия
с точными отверстиями, которые разрезают только пластиковую изоляцию, оставляя медный
провод неповрежденным (рис. 22
и 23 ). Если у вас нет кусачек, вы
можете аккуратно надрезать изоляцию с помощью ножниц, пока
она не соскользнет с медного
провода.
20
21
22
23
72 Создаем умных роботов
4. Итак, вы зачистили изоляцию
всех четырех проводов, идущих
от двигателей. Теперь нужно правильно соединить их между собой: возьмите красный провод от
одного двигателя и черный провод от другого двигателя и скрутите их (рис. 24 ).
Скрутите их как можно плотнее,
чтобы казалось, что они стали одним проводом.
24
5. Сделайте то же самое с оставшимся красным проводом одного
двигателя и оставшимся черным
проводом другого двигателя. Теперь у вас должно быть два набора проводов для подключения
к аккумулятору, состоящих из одного красного провода и одного
черного провода от каждого двигателя (рис. 25 ).
6. Теперь подключите эти скрученные провода к батарее, один
к положительному выводу, а другой к отрицательному.
25
Помните, что изменение направления тока, проходящего через
двигатели, изменит направление
вращения. Если ваши двигатели
вращаются в неправильном направлении, просто поменяйте
местами выводы батареи.
7. Сначала проверьте провода. Когда вы добились правильного направления вращения двигателей,
подключите батарею к скрученным проводам (рис. 26 ), но на
этот раз оберните каждое соединение кусочком скотча, чтобы
сделать его надежнее.
26
Глава 2. Оси и колеса
73
Напряжение питания машины
зависит только от вашего выбора.
Мы рекомендуем использовать
батарею на 9 В – она обеспечит
максимальную скорость вращения колес, но разные двигатели
вращаются с разной скоростью,
поэтому вы можете предпочесть
батарею с более низким напряжением, например батарею AA
или AAA на 1,5 В, чтобы замедлить вращение.
8. Наконец, добавьте к машине другую ось и колеса, которые будут
свободно вращаться. Большинство настоящих автомобилей
устроены так же: одна пара колес
соединена с двигателем, а другая просто катится. В полноприводных автомобилях обе пары
колес соединены с двигателем,
но нужно, чтобы они вращались
с одинаковой скоростью.
74 Создаем умных роботов
В нашем примере мы используем
большие держатели осей из библио
теки трафаретов, чтобы удерживать
колеса, но вы также можете использовать в качестве держателя оси
трубочку для напитков. Проявите
воображение и попробуйте сделать
машины с разным устройством осей.
ЧТО ДАЛЬШЕ?
Вы можете добавить фары в свой автомобиль так же, как вы это делали
в главе 1: с помощью медной ленты
создайте простую цепь с аккумулятором и светодиодными фарами.
Не забудьте проверить, что выводы
светодиодов подключены к правильной стороне батареи – в отличие от
двигателя, электрический ток может
идти через светодиоды только в одном направлении.
Глава 2. Оси и колеса
75
MICRO:BIT
Нам понадобятся:
Библиотека кода
•• компьютер с доступом
в интернет;
•• micro:bit и USB-кабель;
•• одна из ваших готовых
машин.
A
Если ваш micro:bit не имеет
встроенного динамика, вам
также понадобятся (стр. 80):
•• небольшой динамик или
проводные наушники
с дополнительным кабелем;
В
•• провода с зажимами типа
«крокодил».
Начальный и готовый код micro:bit
можно найти на сайте makeairobots.
com/chapter2.
76 Создаем умных роботов
С
Всего за несколько коротких проектов мы прошли путь от простой
картонной тележки, которую нужно было толкать рукой, до машины
с мотором, которая может промчаться по вашему рабочему столу. Но как
насчет других машин и препятствий,
которые могут встать на пути? Как
наша машина может привлечь внимание других водителей? Настоящие
автомобили сигналят, и наш тоже
сможет!
Сначала вы узнаете, как при помощи блоков кода можно создать звуки (и музыку!), а затем мы покажем
на примере, как запрограммировать
micro:bit, чтобы он издавал определенный звук при каждом нажатии
его кнопки, например автомобильный сигнал.
27
этих двух частей кода, ваш звук
будет воспроизводиться сам по
себе; но нам нужен контроль над
звуками в этом проекте, и мы
воспользуемся кнопками на передней панели micro:bit (рис. 27 ).
Как и в предыдущем проекте, для
работы с кодом нужно перейти на
сайт makecode.microbit.org. Создайте
новый проект и дайте ему имя, например Cars.
2. Чтобы добавить кнопку, найдите второй ящик с надписью Input
(Ввод). Вверху вы можете увидеть
блок с названием On Button [A]
Pressed A (При нажатии кнопки).
Перетащите этот блок на рабочее
пространство.
1. На экране вы должны увидеть
блоки кода On Start и Forever. Удалите их! (Достаточно перетащить
их в левый столбец с ящиками
кода.) Если вы поместите блоки
кода для звука внутрь одной из
После того как вы загрузите свой
код в micro:bit, любой код, помещенный в этот блок, будет активироваться при каждом нажатии
физической кнопки A на плате
micro:bit.
Глава 2. Оси и колеса
77
Ввод – это способ, которым мик
роконтроллер будет получать
информацию из внешнего мира –
в нашем случае мы вводим нажатие кнопки, чтобы получить чтото в ответ: вывод в виде звуков
(рис. 28 ).
3. Но какие звуки мы можем воспроизвести? MakeCode предоставляет нам обширный выбор
в ящике Music (Музыка). Верхний
блок в этом ящике – Play Melody
В (Воспроизвести мелодию) –
похож на мелодию песни. Перетащите этот блок в только что
размещенный блок кода Button
Press – если нажать на пустые полоски посередине, вы сможете
написать небольшую мелодию.
Каждая вертикальная колонка
может воспроизводить одну музыкальную ноту, при этом верхняя ячейка колонки дает самый
высокий тон, а каждая ячейка
ниже – более низкий тон.
28
29
У вас есть восемь колонок, в которых ноты воспроизводятся последовательно, а затем повторяются (рис. 29 ).
4. В верхней части блока Play Melody
вы видите, что находитесь в режиме Editor (Редактор). Если вы
нажмете кнопку Gallery (Галерея), то переключитесь на биб
лиотеку для выбора ранее созданных мелодий (рис. 30 ).
30
78 Создаем умных роботов
5. Теперь вы знаете, какие блоки
кода можно использовать для
воспроизведения звука, и можете
создать автомобильный сигнал.
Удалите блок кода Play Melody
и замените его блоком Play Tone
[Middle C] for 1 Beat С из ящика
Music. Этот блок позволяет играть
одну ноту за одну долю.
Если вы нажмете зеленую треугольную кнопку воспроизведения на виртуальном micro:bit
веб-сайта (слева от ящиков кода),
она активирует ваш виртуальный
код и превратит его из черно-белого в цветной. Нажмите кнопку
A виртуального micro:bit, и вы
должны услышать один звуковой
сигнал.
Вернувшись к блокам кода, нажмите на элемент Middle C, чтобы
вызвать клавиатуру фортепиано
и выбрать другую ноту для воспроизведения. Нажав на кнопку
Beat, вы сможете выбрать продолжительность воспроизведения ноты.
Теперь вы можете скачать свой
код и протестировать автомобильный сигнал. Если вам нужно
вспомнить процесс скачивания,
вернитесь к разделу micro:bit
главы 1 (стр. 49) (рис. 31 ).
31
Динамик
32
6. Возможно, у вас более новый
micro:bit, в который уже встроен
динамик. Если да, вы можете нажать кнопку A на своем micro:bit
и сразу же услышать звуки (рис. 32 )!
7. Если у вас более старый micro:bit,
такой как описан в этой книге,
вам придется выполнить следующие дополнительные шаги, чтобы подключить к нему динамик
или наушники с небольшим металлическим штекером для воспроизведения звуков.
Глава 2. Оси и колеса
79
Возьмите провод с зажимами
типа «крокодил» на каждом конце, прикрепите один из зажимов
к кончику металлического штекера на кабеле наушников (рис. 33 ),
а другой конец этого провода подключите к контакту 0 на
micro:bit (рис. 34 ).
33
8. У второго провода прикрепите
один зажим «крокодил» возле
основания штекера наушников
и подключите другой конец к отверстию GND (рис. 35 и 36 ).
Вот и все! Теперь вы сможете нажать
кнопку A, чтобы включить звуковой
сигнал автомобиля. Прикрепите плату micro:bit к корпусу машины любым удобным способом. Вы можете
добавить его к одной из уже созданных вами машин или спроектировать новую, чтобы пополнить свой
автопарк.
34
35
36
80 Создаем умных роботов
ЧТО ДАЛЬШЕ?
С помощью трех кнопок ввода:
кнопки A, кнопки B и комбинации
A+B – вы можете управлять не только обычным автомобильным гудком.
Создайте новые звуки и назначьте
их кнопкам B и A+B: добавьте дружелюбный звуковой сигнал, если
одиночный низкий звуковой сигнал
звучит слишком грозно; добавьте необычный музыкальный сигнал в ви
де песни из музыкальной библиотеки или сочините собственную песню,
как будто она звучит из крошечного
автомобильного радиоприемника!
Глава 2. Оси и колеса
81
ИИ
Нам понадобятся:
•• micro:bit и USB-кабель;
•• компьютер с доступом
в интернет;
•• цифровая фотокамера;
•• веб-камера с длинным
USB-кабелем.
Ссылки на инструменты искусственного интеллекта можно найти на сайте makeairobots.com/chapter2.
Когда мы говорим об ИИ, нужно помнить, почему людям следует его использовать. Для нас ИИ полезен тем,
что он может систематизировать
данные и помогать нам принимать
решения на основе этой информации. Сейчас мы экспериментируем
с машинами, которые издают звук,
поэтому давайте создадим автомо82 Создаем умных роботов
биль, который сам выбирает, какой
сигнал воспроизвести, основываясь
на окружающей обстановке.
Мы начнем с модели самого важного транспортного средства в любом
городе, которое все знают и рады
встретить: фургона с мороженым!
Возьмите кусок картона и дайте во
лю своим художественным способностям, чтобы создать фургон с мороженым. Когда вы создаете новые
вещи, опираясь только на собственное воображение, не бойтесь сделать
что-то не так! Возможно, у вашего
взрослого помощника тоже найдутся интересные идеи. Попробуйте
вместе придумать что-то особенное
и переходите к обучению ИИ.
Обучение на основе изображений
из файлов или веб-камеры.
ОБУЧЕНИЕ
Как вы думаете, когда вашему фургону потребуется издавать различные
звуки? Что, если он не сможет добраться до места назначения? Когда
нужно включить музыку? Может ли
он включать разные песни для разных праздников, таких как Хэллоуин
или новогодние каникулы?
Прежде чем запрограммировать
micro:bit реагировать на различные
ситуации, необходимо научить наш
ИИ распознавать их. Мы будем работать с изображениями, поэтому
перейдите на веб-сайт Teachable Machine и создайте новый Image Project.
1. Как и в случае с проектом ИИ
в главе 1 (стр. 52), нам нужно сначала показать образцы базовой
сцены, чтобы ИИ мог узнать, как
37
выглядит «ничто». Назовите свой
первый класс Background (фон)
и сделайте не менее 20 снимков,
чтобы показать ИИ, как выглядит
ваша пустая сцена. Мы сделали
нашу сцену похожей на город, но
у вас это может быть спальня или
кухонный стол (рис. 37 ).
Глава 2. Оси и колеса
83
2. Теперь можно обучить ИИ распознавать уникальные ситуации. Начните с того, что научите
грузовик сигналить каждый раз,
когда у него на пути оказались
предметы или он стоит в пробке. Обучите его узнавать разные
предметы, мешающие движению: коробки, мягкие игрушки,
миски с хлопьями, другие автомобили и прочие вещи у вас
под рукой. Давайте назовем этот
класс Blocked и добавим различные снимки, показывающие ИИ,
как выглядят эти препятствия
(рис. 38 ).
38
3. В следующем классе ваш ИИ решит, когда грузовик будет играть
музыкальную тему. Создайте
класс Theme и приготовьте образцы фотографий. Музыкальная
тема должна звучать всякий раз,
когда камера грузовика видит
человека, поэтому для изучения
класса нужно приготовить целую
кучу фотографий с людьми или
игрушечными фигурками, стоящими впереди (рис. 39 ).
Вам понадобится много разных
фотографий для каждого из этих
классов, чтобы дать ИИ достаточно информации для понимания
разницы между людьми и препятствиями. Обязательно перемещайте объекты на снимках,
чтобы предоставить данные под
разными углами.
84 Создаем умных роботов
39
4. Помимо воспроизведения музыкальной темы для человека,
давайте сделаем так, чтобы наш
фургон с мороженым играл специальную музыку в особых случаях: если фургон с мороженым
видит атрибуты Хэллоуина, такие
как фонарики из тыквы, скелеты,
черные кошки или шляпы ведьм,
он будет играть жуткую мелодию.
Создайте класс Spooky (жуткий)
и добавьте фотографии жутких
объектов. Это не обязательно
должен быть настоящий черный кот или даже игрушечный
черный кот: подойдет рисунок
черного кота – просто предметы
должны быть теми же, что увидит
грузовик с мороженым.
Вы можете выбрать собственную
мелодию для класса. Праздники?
НЛО? Каждая дополнительная
песня должна принадлежать отдельному классу, и вам понадобится несколько фотографий различных предметов для каждой
темы, чтобы ИИ хорошо научился
понимать, какую тему он видит
(рис. 40 ).
Возможно, вам пришли в голову
другие звуки или ситуации, на которые может реагировать фургон
с мороженым. Вы можете добавить
их сколько угодно – просто помните,
что вам также нужно запрограммировать micro:bit, поэтому будьте готовы добавлять блоки кода для каждого класса.
Нажмите кнопку Train Model на сайте, когда вы будете довольны своей
40
моделью ИИ, и не забудьте нажать
Export Model (стр. 54), сохранить ее
в облаке и записать ссылку для дальнейшего использования.
КОД
Хотя мы использовали много эталонных фотографий и создали несколько классов, код этого проекта
ИИ очень прост. В этом проекте задача ИИ – автоматизировать включение сигналов и музыки, так что
мы можем повторно использовать
код, который недавно создали в разделе micro:bit (стр. 76). Еще немного
усилий, и ваш рабочий стол станет
напоминать шумную городскую
улицу!
Глава 2. Оси и колеса
85
1. Создайте на веб-сайте MakeCode
новый файл под названием AI
Car и скопируйте стартовый код
ИИ из введения (стр. 34).
Рекомендуем создать файл, в котором хранится код AI Connector
Code, и просто копировать его
каждый раз, когда вы хотите создать новый проект ИИ (рис. 41 ).
2. Нажмите на маленький значок
+ в операторе If, чтобы добавить
больше мест для каждого созданного вами класса (Blocked, Theme,
Spooky, Winter) – и убедитесь, что
вы меняете имя класса в каждой
строке, где видите кавычки " ". Не
забывайте следить за правописанием: этот код ищет именно то,
что мы ввели на веб-сайте Teachable Machine, иначе он не активирует код мелодии.
Ваш грузовик ничего не делает,
пока видит начальный класс Background, то есть пустую улицу, поэтому здесь не нужен код – если
только вы не хотите добавить
звук едущего грузовика (рис. 42 ).
(Хм, это может быть весело.)
3. Теперь вам осталось только выбрать звуки и мелодии для каждого класса. Вернитесь к разделу
micro:bit (стр. 76), где говорится
о том, как выбирать ноты для
гудка или как использовать блок
Play Melody B для создания разных мелодий (рис. 43 и 44 ).
Загрузка кода в micro:bit (стр. 49) –
это последний шаг, после которого
все будет готово. Настройте сцену
своего города перед веб-камерой
и зайдите на сайт Make: AI Robots.
86 Создаем умных роботов
41
42
43
ЗАПУСК ПРОЕКТА
Теперь, когда обучение и кодирование завершены, мы наконец можем
расслабиться и насладиться забавным поведением нашей машины.
Скопируйте и вставьте ссылку с сайта Teachable Machine, на которой
есть все ваши данные о классах ИИ,
на сайт Make: AI Robots, и вы окажетесь на главной странице проекта,
где представлены все классы, распознаванию которых вы обучили ИИ
(рис. 45 и 46 ).
45
44
Нажмите на значок шестеренки
в правом верхнем углу веб-страницы,
чтобы открыть меню Settings, и убедитесь, что для каждого класса указана настройка always listening (всегда
слушаю); она означает, что ваш ИИ
будет сообщать micro:bit реакцию на
каждую новую ситуацию, которую он
видит через веб-камеру, а не только
первую.
Перемещайте веб-камеру по городу
и останавливайтесь перед добавленными вами объектами.
46
Глава 2. Оси и колеса
87
Если изображение на экране похоже
на какой-то из классов, которым вы
обучали свой ИИ, вы увидите прог
нозы сбоку на веб-сайте Teachable
Machine. ИИ ищет изображения,
похожие на те, которым вы его научили. Протестируйте различные
сценарии перед веб-камерой, чтобы
увидеть, насколько хорошо реагирует ваш грузовик: сигналит ли он,
когда перед камерой препятствие?
Включает ли он веселую музыку для
людей? А жуткую музыку при виде
фонарей из тыквы?
Если вашему ИИ трудно распознавать объекты, снова нажмите на
значок шестеренки и отрегулируйте
свободу принятия решения ИИ, как
вы это делали в главе 1 (рис. 47 ). (См.
стр. 58.)
47
48
ЧТО ДАЛЬШЕ?
Вас интересуют новые способы оживить свой автомобиль? Хороший
способ улучшить сцепление автомобиля с землей – использовать кусок
картона для изготовления зубчатого
протектора. Если вы возьмете полос
ку картона и разорвете ее на части,
у вас получится неровная, но гибкая
полоска. Склейте пару колес вместе
и окружите их новым материалом
протектора, чтобы ваш автомобиль
мог передвигаться по бездорожью
(рис. 48 и 49 ).
Надоели светодиодные фары? Подключите вместо них зуммер, чтобы
ваша машина подавала звуковой
сигнал без помощи micro:bit.
88 Создаем умных роботов
49
И помните, на вашем micro:bit есть
и другие кнопки, которые вы можете использовать. Поставьте перед
собой задачу активировать какое-то
действие, когда вы нажимаете кнопку B или когда обе кнопки нажаты
одновременно – у вас есть три входа
кнопок для кодирования звуков.
50
Используйте команды в ящике Music,
чтобы написать собственную песню.
Нажимая ноты в правильной последовательности, можно сыграть прос
тую мелодию типа «В траве сидел
кузнечик» (рис. 50 ).
Вы приобрели новый опыт обучения
ИИ и теперь сможете создать целый
автопарк транспортных средств,
которые будут реагировать на различные ситуации: машины скорой
помощи и пожарные машины с мигалками и сиренами, строительные
машины с движущимися деталями
и звуками или даже троллейбус, который может останавливаться на
остановках общественного транспорта.
Глава 2. Оси и колеса
89
ЗАКЛЮЧЕНИЕ
Великолепно! Всего за несколько коротких уроков вы освоили базовые
навыки, необходимые для приведения роботов в движение: вы узнали,
как заставить колеса вращаться на
оси, вы использовали двигатели для
движения, а также научились программировать поведение машины
и обучили ИИ распознаванию зрительных образов.
А еще вы должны гордиться каждым
отличием ваших творений от описа-
90 Создаем умных роботов
ний в книге. Любое отличие никогда
не является «ошибкой» – это пример
творческого вклада в собственный
проект. Независимо от того, используете ли вы разные цвета, формы,
методы или идеи, и не важно, намеренно это было или случайно, все отличия придают проекту бесценную
уникальность. Проекты в этой книге – всего лишь обучающие примеры, и мы надеемся, что вы примените свои новые навыки необычными
и удивительными способами!
Заметки:
Глава 2. Оси и колеса
91
3
ШАРИКИ
И ЛУНКИ
56
Make: AI Robots
М
ы хорошо потрудились, создавая
крылатых роботов и машины.
Давайте сделаем перерыв и поиграем – только сначала построим игровой автомат!
Как и в настоящем игровом автомате, цель нашей игры – закатить мяч
по пандусу в лунку и набрать очки.
Все, что нам нужно, – это немного
картона и клея, несколько металлических шариков и гравитация!
Начнем с небольшой версии автомата с одним отверстием и сделаем
корпус из обычного и тонкого картона. Затем мы добавим медную ленту,
чтобы активировать светодиод или
звуковой сигнал при попадании
и добавить немного азарта. Дальше
мы добавим лунки с разными значениями баллов, что усложняет ведение счета – поэтому micro:bit будет
считать очки за нас! Наконец, мы
сделаем настоящую аркадную игру,
для которой нужны монеты. ИИ будет распознавать монеты и включать
игру, только когда наберется нужная
сумма.
НАШИ ЦЕЛИ:
Так что начинайте копить монеты –
скоро ваш игровой зал откроется!
•• сделать небольшую
настольную игру с шариками;
•• добавить свет и звуки;
•• сделать табло на основе
micro:bit;
•• научить ИИ распознавать
монеты.
Глава 3. Шарики и лунки
93
МЕХАНИКА
Мы начнем с простого проекта, который станет полезным уроком по использованию тонкого картона в ка
честве сгибаемой поверхности.
Хотя малые боковины, задняя стенка и поперечина должны быть изготовлены из толстого картона, для
дорожки следует использовать тонкий картон. Тонкий картон обладает
большей жесткостью, чем обычная
бумага, но не ломается при сгибании, как толстый картон. У пандуса
из тонкого картона будет плавный
изгиб, необходимый для этого проекта.
Нам понадобятся:
•• трафареты*;
•• толстый картон;
Перекладина
Задняя стенка
•• тонкий картон, как
коробка от хлопьев;
•• ножницы;
•• нож-скальпель (по
желанию);
•• клей или термоклей;
•• металлический шарик.
Лунка
Пандус
Малые боковины
* Загрузите полноразмерный PDF-файл на сайте makeairobots.com/chapter3.
94 Создаем умных роботов
ИГРА «ШАРЫ
И ЛУНКИ»
1. Начните с того, что обведите трафарет пандуса на куске тонкого
картона и вырежьте его (рис. 1 ).
Определите, где вы хотите видеть
цель, нарисуйте ее на переулке
и вырежьте. Если вы хотите сделать в картоне простое отверстие,
подойдет что-нибудь размером
с небольшую монетку (рис. 2 ).
Вы также можете использовать
трафарет лунки, чтобы сделать распашные дверки, которые пригодятся позже в разделе
«Электроника». Тонкий ножскальпель – лучший инструмент
для точных разрезов, но он очень
острый и может потребоваться
помощь взрослых. Обязательно
разрезайте только пунктиры и не
трогайте красные линии – эта
часть загибается и будет служить
шарнирами (рис. 3 ).
1
2
3
Глава 3. Шарики и лунки
95
2. Обведите и вырежьте две боковины, а потом сделайте в них прорези, в которые можно вставить
края пандуса из тонкого картона.
Они должны выступать через прорезь примерно на 1 см (рис. 4 ).
4
3. Вырежьте заднюю стенку и проделайте прорези в задней части
обеих боковин. В отличие от прорезей для тонкого пандуса, прорези для задней стенки должны быть
шире, чтобы вошел более толстый
картон задней стенки. Вставьте
заднюю стенку в пазы, чтобы обе
боковины оставались на расстоянии друг от друга (рис. 5 ).
4. Установите вторую боковину,
убедившись, что задняя стенка и дорожка плотно прилегают
к своим местам (рис. 6 ).
5
6
96 Создаем умных роботов
5. Чтобы шарик не взлетел ввысь
(и, возможно, не разбил ближайшее окно), обведите перекладину
на толстом картоне, вырежьте ее
и приклейте к верхушкам боковин, чтобы она служила ограничителем (рис. 7 ).
После того как клей высохнет, ваша
игра готова. Попробуйте издалека
закатить металлический шарик по
пандусу в лунку. Если у вас нет металлического шарика, вы можете использовать шарик из другого материала, например стеклянный.
7
ЧТО ДАЛЬШЕ?
Потренируйтесь, чтобы понять,
с какой силой нужно толкнуть шарик, чтобы он закатился по пандусу в лунку. Если вам сложно попасть
в цель, помните, что в этом смысл
игры! Если попасть в цель слишком
легко, попробуйте приклеить на дорожку несколько препятствий, как
в автомате для игры в пинбол.
Глава 3. Шарики и лунки
97
ЭЛЕКТРОНИКА
Нам понадобятся:
•• трафареты*;
•• толстый картон;
•• тонкий картон, как коробка
от хлопьев;
•• ножницы;
•• нож-скальпель;
•• клей или термоклей;
•• медная лента;
•• батарейка типа «таблетка»
напряжением 1,5 В, например
CR2032 или CR2025;
Большой пандус
Большая
задняя стенка
•• светодиоды;
•• электрический зуммер
и соединительные провода
(по желанию);
•• металлический шарик.
Большие боковины (2)
Лунка
Большая перекладина
* Загрузите полноразмерный PDF-файл на сайте makeairobots.com/chapter3.
98 Создаем умных роботов
Глава 3. Шарики и лунки
99
Как и в наших предыдущих проектах,
для создания цепи мы будем использовать медную ленту. Только на этот
раз мы создадим разомкнутую цепь,
чтобы электрический ток не протекал постоянно. Мы создадим зазор,
заклеив дверки лунки медной лентой, но слегка приоткрыв их – элект
ричество не потечет через цепь, потому что не может преодолеть зазор
между дверками.
Вот почему мы используем металлический шарик. Когда он попадает
в лунку через отверстие и касается
обеих дверок, электричество протекает через шарик и на короткое время создает замкнутую цепь, которая
активирует наш индикатор.
100 Создаем умных роботов
Возможно, шарик проскакивает
слишком быстро, чтобы получить заметную вспышку светодиода. Попробуйте приклеить полоску скотча за
дверками, чтобы скрепить их ближе
друг к другу, создав небольшую чашку, которая удержит шарик на месте
немного дольше, прежде чем он упадет.
1. Вырежьте части игры с помощью
библиотеки трафаретов и сделайте контакты цепи с обратной
стороны большого пандуса.
Используйте трафарет лунки
с дверками, чтобы создать две
мишени в большом пандусе, но
будьте осторожны, чтобы не разрезать их полностью. (Если вы
случайно вырезали весь круг,
прикрепите дверки обратно с помощью обычного скотча.) Обклейте распашные дверки медной лентой и добавьте выступы
из медной ленты к задней части
большого пандуса в качестве
контактов для построения схемы
(рис. 8 ).
2. Сделайте из тонкого картона
кнопку (стр. 43), поместите под
нее батарейку-таблетку и приклейте ее в центре над распашными дверцами, чтобы можно
было выключать игру, когда она
не используется. Помните, что
отрицательный вывод батареи
должен лежать на медной ленте,
закрывающей основание кнопки
(рис. 9 ).
3. Теперь можно сделать электрическую цепь. С помощью медной
ленты проложите проводник от
левой распашной дверки к положительному (более длинному)
выводу светодиода.
Затем проложите проводник от
правой распашной дверки через
верхнюю часть кнопки к другой
стороне кнопки, чтобы, когда вы
нажимаете кнопку, медная лента
касалась положительного вывода
батареи.
8
9
10
Наконец, используйте медную
ленту, чтобы создать короткий
путь от отрицательного вывода
батареи к отрицательному (более
короткому) выводу светодиода
(рис. 10 ).
Когда кнопка включена, а распашные дверки закрыты и соприкасаются, цепь должна замк
нуться и зажечь светодиод.
Глава 3. Шарики и лунки
101
(Если светодиод не включается, вспомните, что электричест
во течет в одном направлении,
и убедитесь, что отрицательный
полюс батареи подключен к отрицательному выводу светодиода, а положительный полюс батареи – к положительному.)
Слегка нажмите на распашные
дверки, чтобы разделить их и разомкнуть цепь.
11
4. Теперь, когда у вас есть одна полная схема, довольно легко добавить в нее еще одну лунку, сделав
отвод от батареи в другом направлении. Ко второй лунке мы
подключили электронный зуммер, но вы можете подключить
еще один светодиод (рис. 11 ).
(Вместо того чтобы строить новый проводник к батарее, можно
использовать часть готового –
в нашем примере мы сделали
новый проводник от «минуса»
батареи, но подключились к существующему обратному пути,
по сути создавая две перекрывающиеся цепи.)
5. После подключения цепей проверьте их, протолкнув металлический шарикоподшипник через
распашные дверки и проверив,
загорается ли светодиод. Возможно, вам придется отрегулировать дверки, чтобы найти оптимальное начальное расстояние
друг от друга (рис. 12 ).
102 Создаем умных роботов
12
Соберите игру так же, как вы это
делали в первый раз, но обратите
внимание, что мы добавили деталь
возврата шарика внизу, которая
вставляется во вторую прорезь больших боковин. Эта деталь заставляет
шарик прикатиться обратно к вам
после того, как он пройдет через
лунку, поэтому вам не придется гоняться за ним, когда он укатится со
стола (рис. 13 )!
ЧТО ДАЛЬШЕ?
Усвоив этот урок, вы можете создать
больше цепей или добавить несколько светодиодов в одну цепь; просто
помните, что каждый источник света
потребляет электричество батареи,
поэтому три светодиода в одной
цепи могут быть намного тусклее,
чем один.
Вашим цепям не обязательно работать от одной и той же батареи –
прост о будьте осторожны, чтобы
проводники соединялись там, где
вам нужно, и не мешали друг другу.
Проявите творческий подход!
Попробуйте подключить что-нибудь
еще к этой цепи. Мы подключили
к одной из лунок зуммер, но вы можете попробовать подключить светодиоды разного цвета или даже моторчик.
13
Глава 3. Шарики и лунки
103
MICRO:BIT
Нам понадобятся:
•• игра «Шарики и лунки»
(большая);
•• зажимы типа «крокодил»;
•• micro:bit и USB-кабель;
•• компьютер с доступом
в интернет;
•• медная лента;
•• светодиод (5 или 10 мм).
Начальный и готовый код micro:bit
можно найти на сайте makeairobots.
com/chapter3.
104 Создаем умных роботов
Имея за плечами несколько проектов micro:bit, вы откроете для себя
новые возможности. Самое интересное в продвинутых технологиях – это
придумать им творческое применение. Например, почему бы нам не
использовать mirco:bit для ведения
счета в игре?
С этим проектом мы еще больше погрузимся в программирование micro:bit,
откроем новые ящики с блоками кода
и изучим новые приемы.
Библиотека кода
A
B
C
D
E
F
G
H
I
Глава 3. Шарики и лунки
105
В большой игре, которую мы создали
в разделе «Электроника», о попадании в лунку сообщала вспышка света,
но нам все равно приходилось считать очки. В этом проекте мы подключим лунки к micro:bit, который
будет считать за нас.
Мы создадим новую большую игру,
но вы можете повторно использовать
части нашего предыдущего проекта,
например боковины, заднюю стенку
и возврат шарика.
1. Разрежьте распашные дверки
и оклейте их медной лентой, как
в предыдущем проекте, затем
проложите медную ленту прямыми линиями к верхней части
панели и слегка заведите ее на
другую сторону (рис. 14 ).
14
15
Убедитесь, что обе распашные
дверки соединены одним куском
медной ленты.
Это будет общий провод, или
«земля», – обратный путь для нашего электрического тока.
2. Подключите зажим «крокодил»
к средней полосе «земли», а другой конец – к выводу GND на плате micro:bit (рис. 15 ).
Подключите второй провод
между одной из оставшихся полос и контактом 1 на micro:bit,
а третьим проводом соедините
последнюю полоску и контакт 2
на micro:bit (рис. 16 ).
Теперь наше цифровое табло готово
к кодированию!
106 Создаем умных роботов
16
Вместо питания от батарейки-таб
летки micro:bit подает электрический ток от разъема USB через контакты 1 и 2, но цепь прерывается
распахнутыми дверками.
Когда шарик попадает в лунку, он
замыкает цепь обратно к плате mic
ro:bit в качестве входного сигнала.
СЧЕТ НА ТАБЛО
Наша первая игра проста – мы присвоим каждой лунке разное количество точек и заставим micro:bit
отображать эту информацию. Это
потребует от нас использования переменных или информации, которая
может быть изменена либо нами,
либо кодом, чтобы micro:bit запомнил, сколько у нас очков. Давайте посмотрим, сколько очков вы сможете
получить!
1. Как всегда, начните с новой пус
той страницы кода и дайте проекту запоминающееся название,
например Super Scoreboard.
2. Создайте код, позволяющий
micro:bit взаимодействовать со
схемами, которые мы подключили к контактам 1 и 2.
Глава 3. Шарики и лунки
107
Открыв ящик Input, вы увидите
элемент кода On Pin [P1] Pressed A .
Этот блок активирует код всякий
раз, когда на выбранном контакте обнаруживается электрический ток или сигнал (рис. 17 ).
Перетащите два таких блока
кода в рабочую область и задайте
в раскрывающемся меню контакты – в данном случае P1 и P2, –
к которым вы подключили цепи.
Теперь код внутри этих элементов будет активирован, когда металлический шарик замкнет цепь
на распашных дверках.
3. Откройте ящик Figure и нажмите
кнопку Make a Variable (Создать
переменную) (рис. 18 ).
17
18
4. Эта переменная будет хранить
текущий счет, поэтому назовем
ее Score.
Примечание. Давать вещам глупые имена забавно, но лучше,
чтобы имя переменной отражало ее назначение. Когда ваш код
очень длинный и в нем много
функций, понимание назначения
каждой переменной облегчит работу.
5. После нажатия кнопки Make a Va
riable в этом ящике появятся два
новых элемента: Set Score to (0)
(Установить счет на 0) и Change
Score by (1) (Изменить счет на 1).
Перетащите блок Change Score by
(1) B в отверстие кода P1 (рис. 19 ).
108 Создаем умных роботов
19
Изменяя число в текстовом поле,
можно задать, сколько очков мы
получим за каждую лунку. Используйте один и тот же блок
в обеих частях кода, но пусть они
меняют счет на разную величину. Если вам нравится баскетбол,
задайте для первой переменной
одно очко, а для другой – два (или
даже три).
6. Теперь, когда micro:bit ведет подсчет очков, давайте заставим его
отображать счет. Одна из самых
крутых функций светодиодного
экрана micro:bit – возможность
отображать цифры и буквы, а это
значит, что он может отображать
нашу переменную Score!
20
В ящике Basic перетащите элемент Show Number C (Показать
число) в нишу блока Forever. Эта
команда укажет micro:bit постоянно отображать наш результат
на экране (рис. 20 ).
Но этот блок кода в настоящее
время настроен на отображение
постоянного числа, в данном случае 0. Снова откройте ящик Variable и найдите небольшой блок
с надписью Score D .
Мы можем перетащить этот мини-
блок в разные места нашего кода,
чтобы вызвать или активировать
переменную. Перетащите этот
блок на ноль и посмотрите, что
произойдет.
В предварительном просмотре
сбоку вы можете видеть, что на
экране теперь отображается нулевой результат.
21
7. Последний блок кода, который
может пригодиться в проекте, – это кнопка сброса текущего
счета до нуля. Просмотрите наш
предыдущий урок, посвященный
автомобильному гудку, где мы
добавили кнопку (стр. 78), и попытайтесь добавить кнопку, чтобы изменить переменную Score
обратно на ноль с помощью блока Set [Variable] to E (рис. 21 ).
Вот и все! Теперь сделайте небольшую рамку для табло, поместите
в нее micro:bit, и все готово к игре.
Глава 3. Шарики и лунки
109
ЧТО ДАЛЬШЕ?
Вторая игра позволяет нам создавать
сообщения или изображения, которые будут отображаться, когда вы
наберете определенное количество
очков.
1. Используя блок if [True] Then E
из ящика Logic, мы можем задать выполнение действия, когда переменная Score достигнет
определенного числа. Поместите
блок if [True] Then E внутрь блока
Forever, потому что нам нужно,
чтобы код постоянно проверял,
соответствует ли оценка выбранному нами условию (рис. 22 ).
2. Замените маленький шести
угольник True (истина) шести
угольником 0 = 0 G из ящика
Logic (рис. 23 ).
110 Создаем умных роботов
22
23
3. Теперь нам нужно кое-что изменить в этом маленьком блоке.
Перетащите еще один мини-блок
Score из ящика Variable на место
первого 0 и измените второй 0
на нужный вам счет победы, при
котором игра завершается.
Если вы играете до 10 очков, там
будет написано If Score ≥ 10 Then
(рис. 24 ).
Важно использовать символ ≥
вместо просто =, потому что значение Score может превысить
счет окончания игры.
24
Вы можете проверить, как работает оператор If (если), прочитав
его вслух: «Если счет больше или
равен 10, то сделать …».
4. Теперь, когда оператор If настроен и ожидает выполнения
заданного условия, любой код,
вложенный внутрь блока If, активируется, когда вы набираете
выигрышный балл: отобразите
на светодиодном экране любые
изображения, или используйте
блок Show String H , чтобы отобразить сообщение типа «You win!»
(Вы выиграли!) (рис. 25 ).
Не забудьте добавить код для сброса вашего счета на 0, возможно,
подключенный к одной из кнопок
micro:bit, чтобы можно было начать
новую игру.
25
А как насчет музыки? Если вы подключите динамик к контакту 0, то
сможете вернуться к блоку мелодий
из главы 2 (стр. 78) и посмотреть,
сможете ли вы найти «выигрышную»
мелодию.
Глава 3. Шарики и лунки
111
ИИ
Нам понадобятся:
•• большая игра с двумя
лунками;
•• провода с зажимами типа
«крокодил»;
•• веб-камера;
•• micro:bit и USB-кабель;
•• компьютер с доступом
в интернет;
•• различные монеты.
Ссылки на инструменты ИИ можно
найти на сайте makeairobots.com/
chapter3.
Теперь у нас есть игра, в которой
можно проявить свои навыки, с настоящим работающим табло и, возможно, светом или музыкой. За такое
развлечение стоит платить – и сейчас мы добавим такую возможность.
112 Создаем умных роботов
Мы научим ИИ распознавать и различать монеты и напишем небольшой код, который будет сообщать
игре, что нужно включиться, когда
игрок вставляет нужную монету.
ОБУЧЕНИЕ
Как и во всех других наших проектах с ИИ, мы начнем с его обучения.
Перейдите на сайт Teachable Machine
(стр. 31) и нажмите Image Project
(Проект с изображением) (рис. 26 ).
26
Мы сделали изящную небольшую
подставку для размещения монет,
но вы можете использовать что угодно – даже чистый лист бумаги, – при
условии что ИИ может четко видеть
монеты через веб-камеру. Мы собираемся научить ИИ распознавать монету, поэтому лучше всего подойдет
несложный визуальный фон (рис. 27 ).
27
1. Первому классу соответствует
база данных изображений No
Coin, показывающих, как выглядит подставка без монет. (Этапы создания класса описаны
на стр. 83.) Сделайте несколько
снимков сцены без монет под
разными углами, чтобы ИИ знал,
как она выглядит, когда монеты
отсутствуют (рис. 28 ).
2. Как только все будет готово,
создайте новый класс и назовите его Quarters («четвертаки»,
а у нас вместо них будет любая
российская монета). Положите
на подставку монету (например,
2 рубля) и сделайте несколько
снимков в разных положениях на
подставке и под разными углами
(рис. 29 ).
Не забудьте сфотографировать
обе стороны монеты, чтобы ее
можно было распознать независимо от того, какой стороной она
лежит. Чтобы двигаться дальше,
вам понадобится как минимум
восемь снимков, но чем их больше, тем лучше обучен ИИ.
28
29
Глава 3. Шарики и лунки
113
30
3. Вы можете добавить другие средства оплаты – крышки от бутылок, картонные диски, шайбы
или что-то еще, что вы готовы
принимать, – путем создания дополнительных классов с изображениями, настроенными так же,
как вы это делали для монет. Не
забудьте назвать каждый класс!
4. Убедившись, что у ИИ достаточно данных для распознавания
ваших классов, нажмите кнопку
Train Model и подождите немного, пока ИИ научится (рис. 30 ).
Через несколько секунд окно
тестирования оживет. Если вы
научили свой ИИ распознавать
монеты разного номинала, убедитесь, что он различает каждую
монету (рис. 31 ).
Если вы довольны своим ИИ
и уверены, что он может отличить монету от шайбы, экспортируйте его и нажмите кнопку
Upload to Website на следующей
странице. Сохраните эту ссылку
(или оставьте эту страницу открытой), пока вы переходите на
makecode.microbit.org, чтобы закодировать поведение micro:bit.
114 Создаем умных роботов
31
КОДИРОВАНИЕ
ИИ готов распознать монету, но вам
нужно сказать ему, что делать дальше, когда это произойдет.
1. Давайте немного усовершенствуем предыдущий проект – прос
тую игру, которая показывает
ваш счет. С помощью блока кода
On Pin [P1] Pressed A добавьте
эту короткую программу в стартовый код (стр. 34), который мы
используем для подключения
к веб-сайту ИИ (рис. 32 ).
2. Если вы создаете простую версию, которая узнает только одну
монету, замените текстовую область в операторе If словом Quarters (if [SerialData] [=] («Quarters»)
then) (рис. 33 ).
Убедитесь, что название класса
написано точно так же, как на
сайте Teachable Machine, – это
важно.
32
Теперь, когда ИИ распознает монету через веб-камеру, он сможет
что-нибудь сделать. Создайте новую переменную с именем Coin
и добавьте внутри этого оператора If новый элемент Change [Coin]
by 1 B .
Не забудьте добавить элемент Set
[Coin] to 0 в блок On Start, чтобы
подсчет монет всегда начинался
с нуля.
33
3. Теперь вам нужно указать коду
запускаться всякий раз, когда он
знает, что Coin = 1. Создайте еще
один оператор If, который постоянно проверяет, выполняется ли
условие Coin = 1 (рис. 34 ).
34
Этот оператор If должен окружать
блок Show Number C , вложенный
в блок Forever. Благодаря этому
цифры на табло не появятся до
тех пор, пока игрок не положит
на подставку нужную монету
(рис. 35 ).
Взгляните на код, который мы
создали ранее для увеличения
счета. Есть ли что-нибудь, что
мешает увеличить счет, если нет
монеты?
35
Глава 3. Шарики и лунки
115
Нам также необходимо помес
тить дополнительные операторы If вокруг этих блоков, чтобы
предотвратить изменение счета
до получения денег.
Наконец, после блока обнуления
счета нужно добавить блок Set
[Coin] to 0. Когда игра возобновится с очищенным табло, она
потребует еще одну монету для
продолжения (рис. 36 ).
36
Теперь загрузите свой код в micro:bit
и посмотрите, как он работает.
ЗАПУСК ПРОЕКТА
Что ж, пора разбить копилку, чтобы
наконец увидеть, насколько хорошо
работает игра. Перейдите на сайт
Make: Al Robots, скопируйте и вставьте код, который нам предоставил
сайт Teachable Machine. Откроется
страница проекта, которая работает
аналогично проекту «фургон с мороженым» из главы 2 (рис. 37 ).
Установите подставку для монет перед веб-камерой и нажмите кнопку
Start. Если вы правильно обучили
ИИ, он не должен реагировать на
пустую подставку, и ваша игра вообще не будет работать. Теперь положите монету и удивите своих друзей
и семью аркадной игрой с монетоприемником (рис. 38 )!
116 Создаем умных роботов
37
38
ЧТО ДАЛЬШЕ?
В проект этой главы можно добавить
много интересных усовершенствований. Например, вы можете использовать картон, резинку и ось из
главы 2, чтобы сделать «толкатель»
из палочек от мороженого, который
будет запускать шарик (рис. 39 и 40 ).
39
Или вместо светодиодов попробуйте подключить небольшой зуммер;
его можно прикрепить на то же мес
то. Теперь ваша игра будет издавать
звуковой сигнал каждый раз, когда
будет набрано очко (рис. 41 ).
Если вы хотите сделать игру более
сложной, можно подсчитать, сколько
времени потребовалось, чтобы достичь выигрыша. Используйте переменные, чтобы micro:bit работал как
часы, которые могут отсчитывать
время.
Вам понадобится блок Event I (Событие) из ящика Loops (Циклы), который дает возможность повторить
действие через определенный интервал времени. Измените число
в раскрывающемся меню с 500 до
1000 миллисекунд (что составляет
одну полную секунду!), а затем создайте новую переменную с именем
Time (Время), и пусть она увеличивается на 1 каждую секунду, пока игра
работает, с помощью блока Change
[Time] by 1 B (рис. 42 ).
40
41
42
Глава 3. Шарики и лунки
117
Этот код будет работать в фоновом
режиме, но вам нужен способ записать время выигрыша; в противном
случае оно продолжит меняться. Используйте второй блок Variable, чтобы
сохранить переменную Time именно
тогда, когда вы забьете победный гол.
В нашем примере мы также играем
победную песню (рис. 43 )!
Вы можете создать игру, в которой
будет видно, сколько очков вы успели
набрать до того, как истечет таймер,
установив время начала, а затем задав для переменной Time изменение
–1, чтобы начался обратный отсчет.
43
А если у вас только мелкие монетки,
вы можете усовершенствовать свой
ИИ, научив его распознавать другие
монеты, и создать код, позволяющий вашему micro:bit складывать их
значения, пока не получится нужная
сумма (рис. 44 ).
44
118 Создаем умных роботов
ЗАКЛЮЧЕНИЕ
Даже самые веселые карнавалы должны закрываться на ночь. Вы можете
гордиться собой, потому что всего
за три главы ваши творческие навыки значительно улучшились. Вы
создавали все более сложные схемы
и начали исследовать более сложные элементы кода. Если вы пробовали решать задачи из раздела «Что
дальше?», значит, теперь у вас есть
опыт работы с более сложным кодом
и функциями.
Вы используете навыки и механизмы, полученные из предыдущих
глав, и умножаете свои знания. Как
и в случае с ИИ, чем больше вы учитесь, тем увереннее применяете свои
навыки, а значит, сможете создать
еще больше удивительных вещей!
Глава 3. Шарики и лунки
119
4
ШАРИКИ,
ВПЕРЕД!
120 Создаем умных роботов
П
оследняя игра, которую мы сделали, была очень веселой, так что
давайте продолжим – в буквальном
смысле! Мы построим целую гоночную трассу – длинную конструкцию,
по которой можно скатывать шарики
разными способами. Если у вас есть
стеклянные или металлические шарики, картон и воображение, то все
получится!
Сначала вы построите несколько
участков трассы для шариков и несколько дорожек для соединения
этих частей. Затем вы воспользуетесь знаниями в области электроники, чтобы создать секцию, которая
будет случайным образом изменять
траекторию шарика. Вы узнаете, как
с помощью micro:bit задать путь, по
которому будет следовать шарик.
И наконец, вы создадите ИИ, который сможет сказать, какой шарик
первым пересек финишную черту
и выиграл гонку!
В этой главе встречаются элементы,
которые вам знакомы: шарниры,
оси, пандусы, медные проводники
и электронные компоненты. Если
предыдущие главы вызвали у вас
затруднения, сейчас самое время
вернуться к ним и отточить свои навыки!
НАШИ ЦЕЛИ:
•• придумать несколько простых
участков для гонки шариков;
•• добавить сервомашинку
в новую конструкцию трассы;
•• применить micro:bit для
управления трассой;
•• научить ИИ определять
победителя гонки!
Глава 4. Шарики, вперед!
121
МЕХАНИКА
ГОНКА ШАРИКОВ
Для нашей гоночной трассы можно
придумать множество интересных
вещей – способ подсчета очков, толкатели для шариков и т. д. Ваши возможности безграничны. Почему бы
нам не начать с самого начала – со
старта трассы?
Мы будем использовать ИИ, чтобы
превратить простое скатывание шариков в настоящую гонку. А чтобы
она была честной, нам нужны стартовые ворота.
122 Создаем умных роботов
Итак, мы создадим устройство, которое будет выпускать все наши шарики одновременно. Было бы проще
всего сделать заслонку и вынимать
ее вверх, но потом это будет немного сложнее автоматизировать. Поэтому мы вернемся к шарнирам из
главы 1 – это важная деталь нашего
проекта.
Нам понадобятся:
••
••
••
••
••
••
трафареты*;
картон;
ножницы;
термоклей;
трубочка;
коробки и контейнеры для
сборки (по желанию);
•• зубочистка или тонкий прочный
стержень;
•• шарики.
Стенка А (4)
Стенка В (5)
Стенка D (3)
Стартовые ворота
Стенка Е (1)
* Загрузите полноразмерный PDF-файл на сайте makeairobots.com/chapter4.
Глава 4. Шарики, вперед!
123
1
СТАРТОВЫЕ
ВОРОТА
1. Обведите и вырежьте все детали. Возьмите две части стенки D
и с помощью термоклея соедините их с краями платформы, чтобы
создать внешние стенки (рис. 1
и 2 ).
2. Установите дорожки для шариков из разных команд. Приклейте пять частей стены B на доску,
создав шесть равномерно расположенных дорожек. (Если вы
не нарисовали линии разметки
3
124 Создаем умных роботов
2
по трафарету, сделайте между
стенками расстояние около 2 см,
чтобы там свободно помещался
шарик (рис. 3 ).
3. Склейте два комплекта деталей
стенок А вместе, чтобы получить
две детали двойной толщины
(рис. 4 ).
4. Приклейте эти детали двойной
толщины вертикально на небольшую площадку сбоку от стартовых дорожек так, чтобы они располагались на расстоянии чуть
больше ширины последней стенки D (рис. 5 ).
5. Отрежьте небольшой кусок трубочки, который поместится
между двумя деталями двойной
толщины. Он будет служить шарниром и пригодится на шаге 8
(рис. 6 ).
4
5
6
Глава 4. Шарики, вперед!
125
7
6. Деталь стенки D имеет достаточную длину, чтобы заблокировать
все шесть дорожек и предотвратить скатывание шариков, поэтому она будет створкой стартовых
ворот. Приклейте стенку D перпендикулярно к детали E, начиная с одного конца (рис. 7 ).
8. Прикрепите шарнир к деталям
двойной толщины, вставив зубочистку через волнистую внутреннюю часть картона, через трубочку и вторую деталь. Нанесите
на концы зубочистки немного
клея, чтобы она не выскользнула
(рис. 9 и 10 ).
7. Поместите деталь E поперек дорожек, чтобы стенка D блокировала все дорожки, но ниже шарнира из трубочки.
На самом деле мы только что создали
рычаг – простой механизм, который
использует жесткую балку (E), прикрепленную к шарниру для перемещения объекта (D).
Измерьте место, где створка соприкасается с шарниром. При
правильном размещении стенка D будет перекрывать стартовые дорожки, а деталь Е должна выходить за пределы частей
двойной толщины.
Как только деталь E окажется
в правильном положении, приклейте ее к трубочке (рис. 8 ).
126 Создаем умных роботов
У вас получились очень простые
стартовые ворота. Добавьте ручку
или подушечку большего размера,
на которую можно нажимать, и, возможно, несколько ярких знаков или
флажков, а затем похвалите себя: вы
только что завершили первый компонент гоночной трассы!
8
9
10
Глава 4. Шарики, вперед!
127
ЧТО ДАЛЬШЕ?
Присмотритесь к другим материалам,
имеющимся в доме. Они могут пригодиться, чтобы соединить секции
и продолжить работу. Такие предметы, как картонные коробки изпод сока, бутылки из-под газировки
и ролики от бумажных полотенец, отлично подходят, потому что их легко
найти и разрезать – только сначала
убедитесь, что коробки пусты!
У вас, вероятно, есть много идей, как
соединить секции вашей трассы, но
все равно лучше продумать заранее
способ соединения на основе материалов, которые вы нашли.
128 Создаем умных роботов
Заметки:
Глава 4. Шарики, вперед!
129
СПИРАЛЬ
Когда вы делаете трассу, по которой
будут следовать шарики, довольно
трудно изготовить дорожку, которая
плавно меняет направление. Увы,
толстый картон при сгибании ломается или рвется. Попробуйте другой
способ согнуть картон так, как вам
нужно:
1. Измерьте длину каждой спиральной дорожки и отрежьте две
прямые полоски картона такой
длины и шириной 2,5 см. Начиная с одного конца полоски, возьмитесь за одну сторону картона
и медленно отделите ее от гофрированных «волн». Отрежьте
оставшиеся волокна, если они не
отделяются аккуратно (рис. 11 ).
Без подложки с одной стороны
картонные полоски теперь должны быть гибкими.
2. Осторожно приклейте полоски по
краям спирали, создавая гладкие
перила, чтобы шарики не падали
с дорожки (рис. 12 ).
3. Обведите и вырежьте четыре копии малых опор и приклейте по
одной к каждой стороне обеих
больших опор, совместив их отверстия (рис. 13 ).
4. Используя заштрихованные области на трафарете «Спиральная
дорожка» в качестве ориентира,
приклейте готовые опоры к нижней части дорожки. Две детали
должны быть обращены друг
к другу, а отверстия должны почти перекрываться (рис. 14 и 15 ).
130 Создаем умных роботов
Нам понадобятся:
••
••
••
••
трафареты*;
картон;
термоклей;
карандаш или палочка для
еды.
Спиральная дорожка
Малая опора (4)
Большая опора (2)
* Загрузите полноразмерный PDFфайл на сайте makeairobots.com/
chapter4.
5. Проденьте в эти отверстия карандаш или палочку для еды и вертикально разведите дорожки
(рис. 16 ). (Возможно, вам понадобится немного клея, чтобы закрепить их.)
11
12
13
14
15
16
6. Прикрепите спиральную дорожку к общему основанию. И пусть
сила тяжести перемещает шарики через вашу игровую машину
(рис. 17 ).
17
Глава 4. Шарики, вперед!
131
ЭЛЕКТРОНИКА
Сервомашинки, о которых мы говорили во введении, идеально подходят
для ваших проектов: они маленькие,
их легко прикрепить к поверхности
и даже подключить к micro:bit после
небольшого кодирования. (Скоро мы
этим займемся!)
Сервомашинки отличаются от двигателей постоянного тока, которые мы
использовали в наших автомобильных проектах: кроме шестерней,
внутри у них есть датчик положения
и схема управления. Они вращаются
132 Создаем умных роботов
медленнее, зато более точны в своих движениях и настраиваются с помощью сервотестера – небольшого
устройства, которое может управлять сервомашинкой.
Интересный способ разнообразить
вашу гоночную трассу – создать несколько путей для перемещения шариков. Просто добавив сервопривод
и кусок картона в конец дорожки, мы
получим возможность случайным
образом направлять шарики по разным маршрутам.
Нам понадобятся:
••
••
••
••
••
••
••
••
термоклей;
трафареты*;
сервомашинка;
сервотестер;
держатель для трех батарей;
батареи напряжением 1,5 В;
провода;
палочки для мороженого (по
желанию).
Большая развилка
Верх клина
Стенка Е (2)
Середина клина
Низ клина
Стенка C (4)
* Загрузите полноразмерный PDF-файл на сайте makeairobots.com/chapter4.
ПЕРЕКЛЮЧАТЕЛЬ
НАПРАВЛЕНИЯ
1. Обведите и вырежьте детали для
этого этапа. С помощью термоклея (при необходимости попросите взрослых) приклейте две
части стенки C к внешним сторонам переключателя движения
(рис. 18 ).
18
Глава 4. Шарики, вперед!
133
2. Приклейте две другие части стенки C в форме буквы V рядом
с внутренним разрезом развилки
трассы (рис. 19 ).
3. Приклейте две части стенки E
к оставшимся сторонам, чтобы
получились направляющие, разделяющие трассу на два пути
(рис. 20 ).
19
4. Приклейте верхнюю и нижнюю
части клина с двух сторон средней части. Убедитесь, что края деталей точно совмещены (рис. 21 ).
После склеивания трех частей
клина в нем останется небольшая
выемка.
5. Чтобы бока клина были ровнее,
приклейте к ним палочки от мороженого, чтобы скрыть три сложенных слоя картона (рис. 22 ).
20
6. Как только клей высохнет, вам
понадобится так называемая качалка – небольшой рычаг, прикрепленный к сервомашинке
и используемый для перемещения другого объекта (рис. 23 ).
21
22
134 Создаем умных роботов
7. Смажьте качалку сервомашинки
небольшим количеством горячего клея и вставьте его в середину
выемки клина. Позже мы прикрепим его к валу сервомашинки
(рис. 24 ).
8. Переверните развилку и вставьте
сервомашинку в отверстие снизу. Маленький белый кружок (вал
машинки) должен быть рядом
с вершиной развилки (рис. 25 ).
23
9. Отрегулируйте положение сервопривода так, чтобы выступали
только синяя круглая часть и белый вал, а остальная часть сервопривода была почти вровень
с картоном (рис. 26 ).
Осталось надеть отверстие качалки
клина на вал сервомашинки, и все
готово. Подсоедините сервомашинку к сервотестеру и держателю трех
батарей и установите тестер в автоматический режим. Ваш клин будет
раскачиваться туда и обратно, как
стеклоочиститель, готовый направить ваши шарики в случайном направлении.
Куда приведет каждый путь? Будет
ли один путь длиннее, а другой короче? Один пойдет прямо к финишу, а другой пойдет по причудливой спиральной дороге? Или, может
быть, он заведет в тупик? Зависит
только от вас!
24
25
26
Глава 4. Шарики, вперед!
135
MICRO:BIT
Нам понадобятся:
•• готовый переключатель
направления;
•• сервомашинка;
•• зажимы типа «крокодил»
(можно со штыревым
разъемом на втором конце);
•• кусачки и изолента (по
желанию);
•• micro:bit и USB-кабель;
•• компьютер с доступом
в интернет;
•• кнопка (по желанию).
Начальный и готовый код micro:bit
можно найти на сайте makeairobots.
com/chapter4.
136 Создаем умных роботов
Хотя сервотестер – интересный способ управлять движением сервомашинки (стр. 132), micro:bit позволяет
запрограммировать серию движений
и активировать их нажатием кнопки.
В этом проекте кнопки на плате
micro:bit применяются для управления клином, который отправляет
шарики по тому или другому пути
развилки. Мы создадим код для точного позиционирования клина, а затем активируем его.
Прежде чем приступить к кодированию, нужно освоить процесс подключения сервомашинки к вашему
micro:bit. Поначалу это может показаться немного сложным, но к тому
времени, как вы прочтете эту книгу, вы станете таким экспертом, что
сможете обучать своих друзей.
Библиотека кода
A
B
C
D
E
F
G
H
I
J
Глава 4. Шарики, вперед!
137
Мы настоятельно рекомендуем использовать зажимы типа «крокодил»
со штырем на конце (рис. 27 ), которые можно легко приобрести в интернете или в магазинах электроники. Штыревая часть вставляется
в разъем на конце провода сервомашинки. Если у вас есть разъем такого
типа, перейдите к шагу 3; в противном случае шаги 1 и 2 показывают,
как подготовить стандартные зажимы-крокодилы для этого проекта.
27
1. С помощью взрослых кусачками
снимите пластиковую изоляцию
проводов сервопривода, обнажая
металлическую сердцевину внут
ри (рис. 28 ).
2. Подсоедините зажим «крокодил»
к каждому из оголенных проводов. У вас должно быть три провода: один положительный провод
питания, один провод «земли»
и один сигнальный провод для
связи с micro:bit.
Немного раздвиньте провода,
чтобы зажимы «крокодил» не соприкасались – иначе сервопривод перестанет работать (рис. 29 ).
28
29
3. Каждый провод необходимо подключить к определенному контакту вашего micro:bit. Схема
подключения показана на рисунке справа (рис. 30 ).
30
138 Создаем умных роботов
Подключение
сервомашинки:
• коричневый/черный провод
подключается к GND;
• красный подключается к 3 В
(питание);
• оранжевый подключается
к контактам 0, 1 или 2
(сигнал); мы подключим к 0.
После подключения сервомашинки
к micro:bit нужно написать код, который скажет ей, что делать. Зайдите
на makecode.microbit.org и создайте
новый проект под названием Servo
Gate.
В этом проекте нам нужно, чтобы
сервопривод перемещался в одну
сторону, когда мы нажимаем кнопку A, и в другую, когда мы нажимаем
кнопку B, что дает нам контроль над
траекторией шарика. Мы уже знаем,
как подключить кнопки micro:bit для
управления действиями (стр. 78),
осталось лишь научиться управлять
сервомашинкой.
Числовое поле в конце блока задает угол, на который повернется
наш сервопривод. Чтобы определить лучшее число для вашей
трассы, может потребоваться
несколько попыток. Наши тесты
показывают, что числа 67 и 117
задают правильные углы поворота клина, чтобы аккуратно направить шарики по намеченному
пути, но вам следует протестировать разные числа, чтобы определить лучшие углы для вашего
механизма. Выбор одного из чисел приведет к тому, что клин отклонится в сторону при подключении питания.
2. После добавления сервомашинки в проект MakeCode вы увидите micro:bit, сервомашинку и ее
провода в окне тестирования
(рис. 32 ).
1. Нажмите на ящик Advanced (Дополнительно) внизу, а затем нажмите на ящик Pins (Выводы),
и внизу вы увидите блок Servo
Write Pin [P0] to A (Вывод сервомашинки [PO]). Перетащите его
в поле блока On Start и введите
номер контакта, подключенного к сервомашинке (контакт 0)
(рис. 31 ).
31
32
Глава 4. Шарики, вперед!
139
33
34
Эта анимация не только помогает
запомнить схему соединений, но
также позволяет протестировать
сервомашинку в окне без необходимости загрузки кода в micro:bit
после каждого внесения изменений.
3. Используйте блок кода On Button [ ] Pressed B для активации
кнопок: назначьте кнопку A для
перемещения клина на противоположную сторону с помощью
другого блока Servo Write Pin [P0]
to A , а затем назначьте другую
кнопку еще одному блоку On
Button [ ] Pressed B и используйте блок Servo Write Pin [P0] to A ,
чтобы вернуть клин в начальное
положение (рис. 33 ).
Теперь загрузите свой код в micro:bit
(стр. 49), и ваш клин должен перекрывать одну полосу движения, если
нажата кнопка A, и другую, если нажата кнопка B. Возможно, вам придется проверить и отрегулировать
значения углов, которые вы назначили для сервомашинки в коде, чтобы убедиться, что полоса движения
полностью заблокирована и нет никаких щелей, через которые мог бы
140 Создаем умных роботов
проскользнуть шарик, – независимо
от того, насколько хорошо работает тестирование в окне просмотра,
в реальном мире всегда требуется
точная настройка!
ЧТО ДАЛЬШЕ?
Кнопки micro:bit классные, но очень
маленькие. Иногда приятно просто
нажать на большую кнопку, не боясь промахнуться. Существует очень
много разных типов кнопок: от крошечных до огромных; мы воспользуемся любимой кнопкой от аркадной
игры (рис. 34 ).
В предыдущей главе вы уже узнали, как подключить эту кнопку – это
так же просто, как написать код для
любого устройства, подключенного
к выводу!
Мы воспользуемся изящным приемом кодирования, когда сервомашинка поворачивается, пока кнопка
нажата, и возвращается при отпускании, и все это с помощью всего лишь
нескольких строк кода.
1. С помощью зажимов типа «крокодил» подключите кнопку
к micro:bit. Один контакт кнопки
должен подключаться к выводу
GND micro:bit (рис. 35 ).
Это нормально, если отрицательный провод сервопривода
и вывод кнопки оба подключены к контакту GND. Один из них
можно соединить с другим, если
два зажима не помещаются на
контакте платы.
35
2. Соедините второй контакт кнопки со свободным контактом, который не занят сервомашинкой
(рис. 36 ).
3. Вернитесь на makecode.microbit.
org.
В блок Forever поместите оператор If [True] Then D из ящика Logic.
Если вы заглянете в ящик Input,
то увидите специальный блок
в форме шестиугольника с именем Pin [ ] Is Pressed E , который
можно поместить поверх параметра [True] в операторе If [True]
Then D .
36
4. Укажите в операторе номер контакта, к которому вы подключили
второй вывод кнопки.
Поместите блок Servo Write Pin
[P0] to A в выемку вашего оператора If и задайте угол так, чтобы
клин перемещался в одну сторону (рис. 37 ).
37
Глава 4. Шарики, вперед!
141
38
Оператор If должен сообщать
micro:bit: «Если кнопка нажата,
поверни сервомашинку сюда».
5. Нажмите маленькую кнопку +
внизу оператора If, чтобы добавить еще одно условие; теперь
у него также должен быть оператор else (иначе) – это означает,
что все, что не делает оператор If
истинным, вместо этого активирует код внутри else.
142 Создаем умных роботов
Поместите блок servo в выемку
else, чтобы вернуть клин в исходное положение. Теперь ваш
micro:bit знает, что делать, если
кнопка не нажата (рис. 38 ).
Загрузите код в micro:bit. Теперь
у вас есть работающая кнопка, которая будет направлять шарики по
определенному пути – пока вы не отпустите кнопку!
НАСТРОЙКА
КОДА ИИ
Вы немного попрактиковались в разработке проектов ИИ в первых трех
главах и успешно использовали готовый начальный код, чтобы ваш
micro:bit мог понимать данные, отправленные с веб-сайта. Но загрузка
и использование предварительно собранного стартового кода – это короткий путь. Теперь, когда вы освоились на сайте MakeCode, вы узнаете,
как создать свой собственный начальный код с нуля!
1. Первым делом нужно открыть
канал для доступа micro:bit к ИИ.
Для этого воспользуйтесь блоком
Serial Redirect to USB (перенаправить последовательный порт
в USB) в ящике Serial (Последовательный порт), который по
явится, если вы нажмете на ящик
Advanced. В ящике Serial хранятся
блоки, позволяющие управлять
отправкой данных в micro:bit
и обратно (рис. 39 ).
2. Перетащите блок Serial Redirect
to USB в блок On Start, и он должен остаться там. Это заставит
micro:bit прослушивать информацию, передаваемую с вашего
компьютера через USB-кабель на
ваш micro:bit каждый раз, когда
вы включаете micro:bit. Так будут
«разговаривать» сайт Micro:bit of
AI и ваш micro:bit (рис. 40 ).
39
40
41
3. Снова откройте ящик Serial, найдите блок Serial on Data Received
(New Line ( )) (Последовательный
порт при получении данных (Новая строка ()) и перетащите его
в рабочее пространство (рис. 41 ).
Блок Serial on Data Received (New
Line ()) сообщает micro:bit, что делать при отправке информации.
Он ожидает специальный сигнал
New Line ( ), который веб-сайт
Micro:bit of AI добавляет к каждому имени класса, отправляемому
на ваш micro:bit. Когда блок обнаружит этот сигнал, он активирует
остальную часть кода, которую
нам предстоит добавить.
Глава 4. Шарики, вперед!
143
42
43
44
45
4. Как мы говорили в главе 3, отправляемую информацию можно
сохранить в переменной, чтобы
использовать позже. Откройте
ящик Variable и нажмите кнопку
Make a Variable. Мы назвали эту
переменную SerialData, потому
что она хранит данные, которые
будут передаваться по последовательной линии (рис. 42 ).
5. После создания переменной SerialData в ящике Variable появятся
несколько новых блоков, включая блок Set (SerialData) to (0).
Перетащите блок Set (SerialData)
to (0) в блок Serial On Data Received
(New Line ()), который вы только
что разместили в своем рабочем
пространстве (рис. 43 ).
6. Теперь нам просто нужно указать
этой переменной, какую информацию сохранять.
144 Создаем умных роботов
Вернувшись в ящик Serial, найдите блок Serial Read Until New Line ()
(Читать данные до появления
New Line()). Перетащите его и поместите над цифрой «0» в только
что добавленном блоке Set (SerialData) to (0) – он должен зафиксироваться и заменить цифру «0»
(рис. 44 ).
Теперь при отправке имени класса с веб-сайта Make: AI Robots
этот блок кода получит информацию и сохранит ее в переменной
SerialData.
7. И наконец, понадобится небольшой код, который сообщает
micro:bit, что делать, когда он получает определенное имя класса.
Для этого добавим несколько
операторов If.
Откройте ящик Logic, возьмите
блок If (True) Then и поместите
его чуть ниже кода переменной
в блоке Forever (рис. 45 ).
8. Вернувшись в ящик Logic, найдите шестиугольник с кавычками
и знаком равенства и поместите
его поверх слова True в операторе
If – он должен заменить шести
угольник True (рис. 46 ).
9. Вернувшись в ящик Variable, перетащите пузырь SerialData, чтобы заменить первое поле с кавычками блока «(=)». Когда вы
перетащите его рядом с первым
полем, появится маленькая красная точка и линия, указывающие,
куда он попадет (рис. 47 ).
65
47
10. Второе поле с кавычками мы уже
редактировали в каждом проекте. Это название одного из
обученных вами классов.
Когда вы замените пустое поле
переменной для одного из ваших
обученных классов, значение SerialData будет сравниваться с именем созданного вами класса. Если
две текстовые строки совпадают,
будет активирован заданный код
в операторе If (рис. 48 ).
В нашем примере, если SerialData совпадает со строкой «Class
name», micro:bit отобразит на
светодиодах контур сердца.
Нажмите маленький + в нижней
части оператора If, чтобы добавить дополнительные парамет
ры, и повторите код для каждого
класса, который вы обучили для
своего проекта.
48
Вот и все!
Теперь вы создали свой собственный
стартовый код с нуля и можете использовать остальные проекты из
этой книги для практики, чтобы вам
больше не приходилось полагаться
на наш предварительно записанный
стартовый код. Создание кода с нуля
может занять больше времени, но это
сделает вас более подготовленным
программистом и даст вам больше
контроля над вашими роботами.
Возможно, сначала вам придется
возвращаться к этому разделу, но
после небольшой тренировки вы ин
туитивно поймете, что делать!
Глава 4. Шарики, вперед!
145
ИИ
Нам понадобятся:
•• трасса для шариков
и финишная черта;
•• зажимы типа «крокодил»;
•• micro:bit и USB-кабель;
•• веб-камера;
•• компьютер с доступом
в интернет;
•• шарики разных цветов.
Ссылки на инструменты искусственного интеллекта можно найти на сайте makeairobots.com/chapter4.
146 Создаем умных роботов
Можем поспорить, что к настоящему
времени ваш рабочий стол превратился в одну гигантскую гоночную
трассу. Вы уже пробовали устроить
соревнование шариков и посмот
реть, кто первым придет к финишу?
Они могут катиться так быстро, что
иногда бывает сложно точно определить, кто из них первым пересек
финишную черту. Похоже, это работа, требующая точности компьютера
или нашего помощника – ИИ.
В этом проекте мы научим ИИ распознавать все ваши шарики, а затем
использовать эти данные, чтобы решить, какой из них первым пересек
финишную черту.
ОБУЧЕНИЕ
Сделайте финишную черту, чтобы определять победивший шарик.
Именно здесь ИИ ищет победителя,
распознавая, что произошло изменение, когда черту пересекает шарик. Установите над ней веб-камеру,
чтобы ваш компьютер мог получать
необходимые данные.
49
1. На веб-сайте Teachable Machine
(teachablemachine.withgoogle.
com) создайте новый проект Image Project и сделайте несколько
фотографий пустой финишной
линии под разными углами и положениями. Постарайтесь, чтобы на снимках было видно как
можно больше деталей. Это будут эталонные изображения «до
события», которые изменятся
после того, как шарик пересечет
финишную линию (рис. 49 ).
2. Добавьте классы для всех шариков-участников. В этом примере
для простоты мы покажем гонку
только между двумя шариками –
с именами Butterscotch (Ириска)
и Galaxy (Галактика), но вы можете создать классы для каждого
используемого шарика (рис. 50 ).
50
3. Когда вы сделаете не менее 20 фо
тографий каждого шарика на финишной прямой в разных мес
тах, обучите ИИ и проверьте его
в окне предварительного просмотра, чтобы увидеть, насколько хорошо он их распознает.
Глава 4. Шарики, вперед!
147
Вы заметили, что ИИ не может
дать правильный ответ, если
в области находится более одного шарика? Это нормально, потому что на сайте Make: AI Robots
есть способ обойти эту проблему.
Просто убедитесь, что у ИИ есть
достаточно эталонных изображений, чтобы четко определить,
когда один шарик пересекает линию (рис. 51 ).
Когда вы будете довольны результатом обучения, сохраните его.
Нажмите кнопку Export Model
в столбце Preview, после чего
откроется новое окно; выберите
Upload My Model, чтобы сохранить модель ИИ в браузере. Скопируйте общедоступную ссылку,
чтобы использовать ее в качестве
базы данных после создания кода
micro:bit.
КОДИРОВАНИЕ
Искусственный интеллект и веб-сайт
Make: AI Robots проделают всю работу по определению шарика-победителя, а наша задача – найти применение этой информации. В этом
проекте мы сделаем так, чтобы
micro:bit вел счет гонок и определял
победителя конкурса «два лучших из
трех».
Для этого мы возьмем код распо
знавания монет из главы 3 (стр. 112)
и изменим его, чтобы отслеживать
победителей.
148 Создаем умных роботов
51
1. Откройте новое окно браузера
и перейдите на сайт makecode.
microbit.org, чтобы создать новый
проект micro:bit. Начните со стартового кода, который мы используем для подключения к нашему
веб-сайту ИИ (стр. 143), а также
кода, который мы использовали
для распознавания монет из главы 3 (стр. 115).
Добавьте новые переменные для
представления каждого отдельного класса шариков, а также их
оценок. В нашем случае мы создали переменные с именами Butterscotch и Galaxy, а также ButterscotchScore и GalaxyScore (рис. 52 ).
52
Из ящика Variables перетащите
блок Change [Variable] by (1) F
в оператор If каждого класса. Выберите правильную переменную,
соответствующую имени класса
шарика.
2. Из ящика Basic возьмите блок
Show String G и измените текстовую строку на имя класса шарика.
Также из ящика Basic добавьте
блок Show Number H под блоком
Show String G . Из ящика Variables
перетащите созданную вами соответствующую переменную счета шарика в блок Show Number H .
Этот код работает так: если SerialData показывает, что Butter
scotch – первый шарик на финише,
то переменная ButterscotchScore
должна увеличиться на единицу.
Затем должна отобразиться текс
товая строка Butterscotch, за которой следует число ButterscotchScore (рис. 53 ).
Сделайте то же самое для других классов шариков, чтобы имя
и счет победившего шарика можно было отобразить независимо
от того, какой из них выиграет.
53
Помните: если у вас более двух
классов шариков, просто нажмите на символ + в операторе If,
чтобы создать еще один вариант
выбора.
3. Но как узнать, что у нас есть победитель? Код должен проверить
все переменные, чтобы увидеть,
достиг ли хоть один шарик победного счета. Обычно в программировании существует несколько
способов решения любой задачи;
в наших проектах мы стараемся
быть эффективными и использовать тот, который требует наименьшего количества строк.
Глава 4. Шарики, вперед!
149
54
55
Вместо добавления дополнительного оператора If в каждый раздел
класса, чтобы проверить, достиг
ли счет каждого шарика целевого
значения, добавьте один оператор If D под существующим – он
будет проверять все переменные
одновременно (рис. 54 ).
4. Из ящика Logic перетащите шес
тиугольник сравнения (0) = (0) I
на поле True оператора If, заменив его. Оставьте на время первый ноль в покое, но измените
второй ноль на значение нужного
вам выигрышного счета; в нашем
примере мы выбрали 2 (рис. 55 ).
5. Вернитесь в ящик Logic и перетащите элемент 0 or 0 J на первый
ноль оператора If, чтобы заменить его (рис. 56 ).
56
57
58
150 Создаем умных роботов
6. Откройте ящик Variables и помес
тите каждую переменную оценки шарика в пустой слот вашего
оператора If. В нашем примере
этот код теперь проверяет, равно
ли значение ButterscotchScore или
GalaxyScore числу 2, и если хотя
бы в одном случае это так, он выполняет действие (рис. 57 ).
Осталось только добавить код
действия, которое будет выполнено при обнаружении победителя. Мы использовали блок Show
String G , перетащили маленький
блок SerialData из меню переменных и поместили его в поле
(text field), чтобы отобразить имя
победившего шарика и объявить
его победителем.
Но вы можете использовать навыки программирования, которые изучили в предыдущих главах, чтобы создать собственный
индикатор выигрыша. Как насчет
изображения на светодиодном
экране вместо текстового сообщения? Или как насчет победной
мелодии?
7. Наконец, добавьте код для сброса
всех ваших переменных до нуля,
чтобы можно было сыграть снова. В этом случае мы используем
кнопку A, чтобы сбросить счет
шариков до нуля (рис. 58 ).
ОЖИВЛЯЕМ
ПРОЕКТ
Чтобы подготовить гоночную трассу
к первому старту, зайдите на вебсайт Make: AI Robots, подключите
свой micro:bit и вставьте ссылку на
Teachable Machine, которую вы скопировали из раздела Training. Вы
даже можете позаимствовать идею
табло из главы 3 для более впечатляющего вида.
Глава 4. Шарики, вперед!
151
59
На самом деле есть небольшая проб
лема с тем, как сайт ИИ оценивает
победителя. Устройте гонку и постарайтесь понять, что мы имеем в виду.
Вы заметили проблему (рис. 59 )?
Запустите гонку еще раз и посмотрите экран ИИ и журнал сообщений. ИИ
четко узнает первый шарик, пересекший линию, но как только шарики начинают накапливаться у финиша, ИИ немного сбивается с толку,
поскольку мы никогда не учили его
узнавать более одного шарика. ИИ
может даже выбрать победителем
игрока, занявшего второе или третье
место, сразу после выбора первого
(рис. 60 ).
Так нельзя! Чтобы исправить проб
лему, нажмите на значок шестеренки в правом верхнем углу экрана.
Рядом с каждым классом вы увидите
переключатель. Его можно переключить из режима ALWAYS WATCHING
(всегда следить) в режим ONE WINNER (один победитель). Это заставит
ИИ остановиться после того, как он
обнаружит один класс, и ждать, пока
вы его не сбросите. Включите этот
режим для каждого из ваших гонщиков, и первый шарик, прошедший
финишную черту, будет определен
152 Создаем умных роботов
60
как победитель, даже если потом
остальные шарики пересекут черту
(рис. 61 ).
Если вы проверите журнал сообщений, то увидите, что теперь ИИ отправляет название только одного
класса, и оно должно запустить код
на вашем micro:bit.
Теперь все готово! Запускайте шарики с любого расстояния, а компьютер
скажет вам, кто победил!
61
ЧТО ДАЛЬШЕ?
Вам нужно больше идей для развития вашего проекта? Попробуйте
некоторые из этих усовершенствований, чтобы сделать вашу гонку более
сложной.
Мы разработали стартовые ворота,
но как насчет способа завершить
забег? Используя трафареты для
стенок, попробуйте создать что-то
вроде финиша, показанного выше,
применяя небольшие деревянные
колышки, от которых ваши шарики
будут отскакивать в разные стороны. Вы по-прежнему можете научить
свой ИИ определять, какой шарик
пришел первым, но бонусы помогут определить, какой шарик самый
удачливый!
Можно придумать и другие препятствия – спиннеры (вертушки)
идеально подходят для того, чтобы
внести немного хаоса на финише. Их
можно построить с осью из главы 2,
используя трубочку, установленную
Глава 4. Шарики, вперед!
153
62
63
64
65
внизу в качестве основы, и тонкую
деревянную палочку, вклеенную
в середину спиннера, которая действует как ось внутри трубочки (рис.
62 – 65 ).
Если у вас есть металлические шарики нужного размера, вы можете создать несколько разомкнутых цепей,
как вы делали в игре из главы 3, чтобы добавить необычные световые
эффекты. Когда металлический шарик попадает на контакты из медной
ленты, он замыкает цепь и на мгновение включает свет (рис. 66 ).
Используйте трафареты для стен
и постройте из них своеобразные
рельсы, по которым будут двигать-
154 Создаем умных роботов
ся металлические шарики. Если вы
сделаете расстояние между стенками
немного меньше, чем диаметр шарика, он будет катиться по рельсам, на
мгновение замыкая цепь через контакты и создавая последовательно
мигающие огни по мере движения
(рис. 67 ).
И не забывайте, как мы хотели автоматизировать стартовые ворота!
Замените самодельный шарнир на
привод от сервомашинки, приклеив
заслонку к ее качалке (рис. 68 ). (Возможно, будет проще отсоединить качалку перед приклеиванием, а затем
надеть готовую конструкцию на вал
после застывания клея.
ЗАКЛЮЧЕНИЕ
66
67
Вот и пришло время подвести итоги нашего проекта гоночной трассы
для шариков. Но это не значит, что
нужно прекратить строительство!
Помните, что это всего лишь основа, которую вы можете использовать
при создании собственных трасс.
И не переживайте, если у вас возникли трудности с каким-либо этапом проекта. Мы постепенно переходим к более сложным конструкциям,
которые бросят вам новые вызовы.
Даже ваши неудачные проекты принесут вам навыки, которые пригодятся позже. Помните: настоящая
гонка должна быть с препятствиями!
Глава 4. Шарики, вперед!
155
5
РЫЧАГИ
И ТЯГИ
156 Создаем умных роботов
Опора
Опора
Средняя опора
Вы когда-нибудь задумывались, как
работают качели? Или почему такие
маленькие объекты, как настольная
лампа, или большие, как строительная техника, имеют более одной
движущейся части? Их объединяет
простой механический узел, называемый рычагом.
Рычаг – это механизм, который использует опору, чтобы увеличить
сил у для перемещения объекта.
Кроме перемещения предметов,
мы можем создать более сложную
машину, соединяя рычаги тягами.
Рычаги меняют направление движения с помощью обычных концевых
и центральных шарниров, а вместе
они образуют сложные механизмы.
Мы воспользуемся тягами, чтобы
создать леопарда с движущимися
ногами, а потом автоматизируем
движения ног с помощью сервомашинок. Затем подключим micro:bit
для управления этими движениями одним нажатием кнопки. Наконец, мы создадим ИИ, который будет управлять леопардом, имитируя
наши собственные движения.
Опора
НАШИ ЦЕЛИ:
•• сделать модель леопарда
с движущимися ногами;
•• добавить сервопривод для
автоматизации движений
ног;
•• использовать micro:bit
в качестве контроллера;
•• обучить ИИ, который будет
управлять леопардом
с помощью движений нашего
тела.
Глава 5. Рычаги и тяги
157
МЕХАНИКА
Нам понадобятся:
••
••
••
••
••
••
••
••
трафареты*;
картон;
дырокол;
пистолет для термоклея
и клеевые стержни;
скотч;
трубочки;
ножницы и нож-скальпель;
картон.
Мы начнем с пояснения, как использовать трафарет рычажной тяги
из библиотеки трафаретов. На этом
трафарете отмечено несколько отверстий, поэтому вы можете использовать его для изготовления рычажных тяг разной длины и с разным
расположением отверстий – просто
обведите его до нужного размера
и отметьте, где должны быть необходимые отверстия. Когда мы просим
вас проделать отверстия в тяге, мы
отмечаем их расположение, считая
от отверстия 1 слева.
Две рычажные тяги с 15 отверстиями и отверстиями
в 5 и 8 (тяга A)
Но не проделывайте каждое отверстие; чем больше отверстий вы пробиваете, тем слабее становится тяга.
Две рычажные тяги с 8 отверстиями
и отверстиями в 1 и 2 (тяга B)
Стандартный дырокол должен прорезать картон, хотя из-за его толщины вам может понадобиться помощь
взрослого. А если отверстия недостаточно велики, воткните в них кончик
карандаша и покачивайте его, чтобы
расширить отверстие.
Одна тяга с 8 отверстиями и отверстиями в 1 и 8
(тяга C)
Тело
* Загрузите полноразмерный PDFфайл на сайте makeairobots.com/
chapter5.
158 Создаем умных роботов
Глава 5. Рычаги и тяги
159
МЕХАНИЧЕСКИЙ
ЛЕОПАРД
1
2
1. Напечатайте, приклейте на картон и вырежьте детали: две тяги
на 15 отверстий с отверстиями
в 5 и 8 (тяга A), две тяги на 8 отверстий с отверстиями в 1 и 2
(тяга B) и одну тягу на 8 отверстий с отверстиями в точках 1 и 8
(тяга C).
Отмерьте и разрежьте трубочку
для напитков на четыре части по
3,5 см. Это будущие оси, которые
будут скреплять тяги, позволяя
им вращаться (рис. 1 ).
2. Плотно оберните скотчем один
конец каждой оси. Как и в случае
с шарнирами из главы 1, скотч
предотвратит выскальзывание
осей из отверстий (рис. 2 ).
3. Вставьте ось в отверстие 5 тяги А,
убедившись, что слой скотча достаточно толстый, чтобы помешать оси выпасть (рис. 3 ).
3
160 Создаем умных роботов
4
6
4. Прикрепите тягу C к шарниру рычажной тяги A, используя отверстие 1 тяги C (рис. 4 ).
5. Прикрепите вторую тягу А к оси,
используя отверстие 5 этой детали, так чтобы тяга С оказалась
между двумя частями тяги А
(рис. 5 – 7 ).
5
7
Закрепите тяги на оси, обернув
скотч вокруг другого ее конца,
оставив достаточно места для
свободного вращения.
Глава 5. Рычаги и тяги
161
8
9
10
11
6. С помощью оси прикрепите одну
из двух частей рычажной тяги B
с каждой стороны рычажной тя
ги C, используя отверстие 1 тяги
B. Конструкция должна напоминать цифру 4 (рис. 8 – 10 ).
Обмотайте скотчем другой конец
оси, чтобы закрепить ее на месте.
7. Обведите, приклейте на картон
и вырежьте туловище леопарда
из библиотеки трафаретов.
162 Создаем умных роботов
Для этой тонкой работы может
понадобиться помощь взрослых:
слегка надрежьте красные линии
на заготовке туловища. (Нужно
разрезать только верхний слой
картона, а не полностью до другой стороны, чтобы картон мог
легко гнуться.)
Вырежьте в заготовке туловища
длинные прорези – именно здесь
будет выступать верхняя часть
рычагов для управления тягами
(рис. 11 ).
8. Согните стороны от надреза под
углом 90 градусов и нанесите на
края термоклей, чтобы зафиксировать угол (рис. 12 ).
9. Отмерьте и отрежьте от соломинки две заготовки оси длиной 8 см.
Совместите отверстие 2 в более
короткой тяге B с отверстиями
на боковой части заготовки тела.
Вставьте заготовку оси через одну
сторону заготовки тела, через отверстие 2 рычажной тяги B и через другую сторону туловища. Добавьте скотч на концы оси, чтобы
она не выпала (рис. 13 и 14 ).
13
12
14
Глава 5. Рычаги и тяги
163
10. Совместите отверстие 8 на более
длинной тяге А и закрепите его
с помощью другой оси длиной
8 см, так чтобы длинный конец
стержня просовывался в прорези в верхней части заготовки
туловища. Намотайте скотч на
концы оси, чтобы закрепить ее
на месте (рис. 15 ).
Просуньте длинный конец рычажной тяги А через пазы в верхней части заготовки туловища
и совместите отверстие 8 в более
длинной рычажной тяге А с отверстиями на боковой части
(рис. 16 ).
Вставьте другую ось длиной 8 см
через одну сторону туловища,
через отверстие 8 тяги А и через
другую сторону туловища. Намотайте скотч на концы оси, чтобы
закрепить ее на месте (рис. 17 ).
Скелет вашего леопарда готов! Благодаря осям, фиксирующим рычаги,
вы можете перемещать выступающие вверх части рычагов и видеть,
как ноги совершают прыгающие
движения, словно у настоящего лео
парда.
15
16
ЧТО ДАЛЬШЕ?
Используйте плотную бумагу, фломастеры и другие художественные
принадлежности, чтобы добавить
голову и украсить леопарда, придав
ему индивидуальности. И не забудьте дать ему имя!
17
164 Создаем умных роботов
Глава 5. Рычаги и тяги
165
ЭЛЕКТРОНИКА
Нам понадобятся:
Вы можете применить свои навыки
в электронике разными способами:
например, добавить светящиеся глаза из светодиодов или зуммер, чтобы
ваш леопард рычал. Но в нашем следующем проекте мы воспользуемся
тягами и установим сервомашинку
для привода ног.
•• трафареты*;
•• леопард из предыдущего
проекта;
•• сервомашинка с одной
качалкой;
•• дырокол;
•• пистолет для термоклея
и клеевые стержни;
•• ножницы и нож-скальпель;
•• трубочки для напитков;
•• лента;
•• сервотестер;
•• батарейки и провода.
СЕРВОПРИВОД
НОГ
Если бы мы искали легкие пути, то
отрезали бы часть заготовки туловища, приклеили сервомашинку к одной из ног и считали проект завершенным – это сработало бы. Но мы
собираемся добавить вторую тягу
к существующей системе, чтобы продемонстрировать, что сложные системы рычагов и тяг на самом деле
не так уж и сложны.
Планка тяги с 3 отверстиями
Планка тяги с 6 отверстиями
* Загрузите полноразмерный PDFфайл на сайте makeairobots.com/
chapter5.
1. Размещение сервомашинки будет первой важной задачей. Для
этого примера мы выбрали мес
то рядом с головой леопарда, но
позже вы увидите, что тяги позволяют разместить ее практически где угодно.
Установите сервомашинку так,
чтобы ее качалка могла вращаться в направлении хвоста (рис. 18 ).
18
166 Создаем умных роботов
Глава 5. Рычаги и тяги
167
19
2. Обведите на бумаге, приклейте
на картон и вырежьте две рычажные тяги на 3 отверстия с отверстием в 1 (тяга D) и две рычажные
тяги на 6 отверстий с отверстиями в 1 и 6 (тяга E).
Вырежьте отверстие в заднем рычаге и с помощью оси прикрепите свободный конец частей тяги
D к хвостовому рычагу. Закрепите ось скотчем на концах.
Возможно, вам придется отрегулировать место соединения
тяги D и хвостового рычага в зависимости от углов и положения
вашего сервопривода. Чем выше
вы подключите рычажную тягу D,
тем меньше придется двигаться
сервомашинке для перемещения
ног (рис. 20 и 21 ).
Поместите тягу D между двумя
частями тяги E и совместите отверстия. Вырежьте и вставьте ось
в отверстия, закрепив ее концы
скотчем.
Приклейте другой конец тяги D
к качалке сервомашинки (рис. 19 ).
3. Подсоедините качалку (и новую
систему тяг) к сервомашинке.
Направив качалку серводвигателя как можно дальше к голове
(или прямо вверх, в зависимости
от того, как вы настроили положение и диапазон движения
серводвигателя), нажмите рычаг
в задней части также в направлении головы (чтобы задние ноги
вытянулись назад). Вытяните
част и тяги D по направлению
к заднему рычагу и поставьте
метку на рычаге в том месте, где
они перекрываются.
168 Создаем умных роботов
20
4. Подсоедините сервопривод к сервотестеру, а тот – к батарейке.
Включите сервопривод и оживите своего леопарда (рис. 22 и 23 )!
21
22
23
Глава 5. Рычаги и тяги
169
ЧТО ДАЛЬШЕ?
Теперь у вас есть работающие модели рычагов и тяг. Как видите, сервомашинку можно установить практически где угодно – при условии что
вы создадите механическую систему,
которая соединяет ее с главным зад
ним рычагом.
170 Создаем умных роботов
Вы даже можете установить сервопривод на задней части леопарда,
чтобы скрыть провода. Попробуйте экспериментировать с длиной
и устройством связей, чтобы открыть
новые возможности в этом и других
проектах.
Заметки:
Глава 5. Рычаги и тяги
171
MICRO:BIT
Нам понадобятся:
•• micro:bit и USB-кабель;
•• компьютер с доступом
в интернет;
•• леопард с сервомашинкой;
•• кабели с разъемами типа
«крокодил-штекер».
Начальный и готовый код micro:bit
можно найти на сайте makeairobots.
com/chapter5.
172 Создаем умных роботов
Библиотека кода
A
B
C
D
E
F
G
H
Наш леопард может двигаться, но
следующий шаг – заставить его двигаться по команде.
В качестве контроллера мы будем
использовать micro:bit, но его нужно
подключить к сервомашинке. У вас
уже есть опыт такого подключения,
но если вам нужно освежить знания,
вернитесь к проекту из главы 4 «Гонка шариков» (стр. 136).
Переключатель направления шариков двигался только на одной скорости, но животные, подобные нашему
леопарду, должны иметь возможность бегать с разной скоростью.
Этот проект покажет, как можно
запрограммировать micro:bit для
управления скоростью сервомашинки, что позволит нашему леопарду
бегать и ходить.
Глава 5. Рычаги и тяги
173
Как и в предыдущих проектах, пе
рейдите на сайт makecode.microbit.
org, чтобы создать код, и создайте
новый проект под названием Living
Leopard.
1. Поскольку сервомашинка уже
прикреплена к заднему рычагу,
нужно создать код, который будет сообщать micro:bit, в какие
положения перемещать сервомашинку при каждом шаге.
Из ящика Input переместите два
блока On Button (A) Pressed A в рабочее пространство. Откройте
ящик Advanced, затем откройте
ящик Pin и поместите блок Servo
Write Pin (P0) to (180) B в каждый
из блоков On Button (A) Pressed A .
2. Установите значение угла сервомашинки для кнопки А 125 и загрузите код в micro:bit (стр. 49).
Отсоедините качалку сервомашинки от вала и затем нажмите
кнопку А; маленький белый вал
должен повернуться до конечного положения. Снова наденьте качалку на вал так, чтобы она была
направлена к макушке головы
174 Создаем умных роботов
леопарда: теперь вы откалибровали сервопривод по отправной
точке (рис. 24 и 25 ).
3. Нам нужно, чтобы сервопривод
поворачивался в сторону задней
части леопарда, но это число на
данный момент остается загадкой – мы знаем только, что оно
должно быть меньше 125 градусов.
24
25
26
Настройте другой блок On Button
(A) Pressed A на кнопку B и задавайте поворот сервомашинки на
разные градусы, пока не найдете
угол, при котором ваш леопард
будет стоять прямо вверх, – в нашем проекте лучше всего работал угол 45, но ваше число может
быть другим (рис. 26 ).
После нескольких проб и ошибок
вы сможете заставить леопарда бегать, поочередно нажимая
кнопки A и B.
4. Теперь, когда вы выяснили, с какими углами можно заставить
леопарда бегать, мы добавим код
для выполнения нескольких шагов одним нажатием кнопки.
Откройте ящик Pin (он является
частью ящика Advanced) и добавьте еще один блок Servo Write
Pin (P0) to (180) B под блоком
Servo Write Pin (P0) to (125) B . Он
должен встать на место прямо
под первым.
Поскольку первая сервокоманда – «Ноги вытянуты» (125), установите второй блок в положение
«Ноги стоя» (45) (рис. 27 ).
5. Если вы нажмете кнопку А, похоже, она должна переместить сервопривод на 125 градусов, а затем вернуть на 45. Но это не так.
Дело в том, что micro:bit выполняет команды быстрее, чем
может двигаться сервомашинка. Нам нужно, чтобы micro:bit
сделал паузу после первой команды – чтобы механизм мог завершить свое движение – и затем
перешел ко второй команде.
27
Глава 5. Рычаги и тяги
175
К счастью, в ящике Basic есть блок
Pause C (пауза). Поместите блок
Pause C после каждой из двух
сервокоманд, чтобы код перемещал механизм на 125°, делал
паузу, перемещал на 45, а затем
снова делал паузу.
В виртуальном micro:bit на вебсайте MakeCode опытным путем
подберите, сколько миллисекунд
(мс) нужно для того, чтобы сервопривод делал шаги. (Мы обнаружили, что хорошо подходит число в диапазоне от 250 до 500 мс.)
См. рис. 28 .
28
6. Теперь нужно, чтобы код указал
нашему леопарду сделать несколько шагов после нажатия
кнопки A.
В ящике Loops поместите блок Repeat (4) Times Do D в блок On Button (A) Pressed A , затем добавьте
в него команды сервопривода
и Pause. Настройте блок Repeat
(4) Times Do D , чтобы повторять
блоки внутреннего кода столько
раз, сколько вы хотите (рис. 29 )!
176 Создаем умных роботов
29
ЧТО ДАЛЬШЕ?
Теперь, когда наш леопард может
бегать, кажется, его будет легко заставить ходить. Но на самом деле это
немного сложнее – и требует гораздо
больше кода.
1. Откройте ящик Basic и возьмите
блок On Start.
Откройте ящик Variables, нажмите кнопку Make a Variable и назовите ее Degrees (градусы). Поместите вновь созданный блок
Set (Degrees) to (0) E в блок On
Start и задайте исходное положение сервомашинки 125 (рис. 30 ).
(Блок On Start может находиться
за пределами остального кода; он
просто служит для установки начальной позиции.)
Проблема в том, что сервомашинки
движутся с одной скоростью и не существует блока кода, который мог бы
изменить эту скорость.
Так что нам придется проявить творческий подход: мы разделим длинный шаг леопарда на множество
крошечных движений с небольшой
паузой между каждым из них. В совокупности все эти микродвижения
и микропаузы создадут впечатление
замедленного движения.
Нам понадобится способ прибавлять
или вычитать текущее положение
сервомашинки, но вы уже узнали,
как это сделать, в главе 3 (стр. 108).
Используя переменную, мы можем
хранить и изменять число – в данном случае положение сервопривода.
30
Глава 5. Рычаги и тяги
177
31
32
2. У
далите код ходьбы в блоке On
Button (B) Pressed A .
Нам нужно, чтобы сервопривод
поворачивался на один градус
за раз, поэтому придется выполнить расчеты, чтобы выяснить,
насколько далеко он должен поворачиваться.
В нашем примере положения ног
составляют 125° и 45°. Поскольку
125° – 45° = 90°. Значит, нужно,
чтобы сервомашинка повернулась на 1° и сделала паузу, а затем
повторила это движение в цикле
90 раз.
Откройте ящик Loops, возьмите
блок Repeat (4) Times Do D и поместите его в блок On Button (B)
Pressed A . Если вы измените число повторов на 90, любой код, который мы поместим внутрь, будет запущен 90 раз, прежде чем
программа продолжит работу
(рис. 31 ).
178 Создаем умных роботов
3. Наша первая задача – перемес
тить сервопривод, поэтому откройте ящик Pins (внутри ящика
Advanced), возьмите блок Servo
Write Pin (P0) to (180) B и помес
тите его в цикл.
Поскольку вы уже настроили переменную Degrees, перетащите
этот мини-блок кода из ящика
Variable и поместите его в блок
Servo Write Pin (P0) B (рис. 32 ).
4. Теперь нам нужно изменить значение этой переменной с шагом
в 1°. Мы идем от большего числа
(125) к меньшему (45), а это означает, что нам нужно вычитать 1
из Degrees. Снова откройте ящик
Variable, возьмите блок Change
Degrees by 1 G и поместите его
в свой код.
Если вы измените 1 в текстовом
поле на –1, то при каждом повторении цикла число градусов
будет уменьшаться на 1 (рис. 33 ).
33
5. Теперь нам осталось добавить
небольшую паузу между каждым
движением на 1°. Откройте ящик
Basic, поместите блок Pause (ms)
(100) C под блоком Change Degrees by (–1) G и измените продолжительность паузы со 100 мс
на 10 мс (рис. 34 ).
Примерно столько же времени
требуется пчеле, чтобы дважды
взмахнуть крыльями – слишком
быстро, чтобы это можно было
заметить, но достаточно медленно, чтобы дать сервомашинке небольшую передышку.
34
35
Окно тестирования должно показать, что ваш сервопривод
движется намного медленнее,
когда вы нажимаете кнопку B, –
но только один раз и в одном направлении.
6. Чтобы ноги медленно двигались
в противоположном направлении, мы могли бы собрать аналогичный код, но есть более простой
способ. Нажмите правой кнопкой
мыши на блок Repeat (90) Times
Do D и выберите в меню пункт
Duplicate (Дублировать), чтобы
получить копию фрагмента кода
(рис. 35 ).
Глава 5. Рычаги и тяги
179
7. Нам нужно, чтобы эта команда
перемещала ноги в противоположном направлении, поэтому
в копии блока Change Degrees by
(–1) G замените значение –1 на
1, чтобы угол поворота увеличивался, а не уменьшался.
Перетащите этот новый цикл чуть
ниже исходного и добавьте между
ними блок Pause (ms) (10) C , чтобы дать сервоприводу 10 мс для
перемещения на место (рис. 36 ).
36
180 Создаем умных роботов
37
8. Наконец, добавьте еще один гигантский блок Repeat (4) Times Do
D вокруг двух меньших циклов,
чтобы повторить всю последовательность шагов (рис. 37 ).
Поздравляем: вы только что освоили
прием использования переменных
для создания счетчика, который вы
можете творчески применить в других проектах!
Глава 5. Рычаги и тяги
181
ИИ
ИИ-ПИТОМЦЫ
Домашнее животное можно научить
реагировать на визуальные команды человека, например переворачиваться при вращении руки или
садиться при опускании. Но наш лео
пард тоже может это сделать!
Мы уже научились использовать
проект Audio на сайте Teachable Machine для распознавания произносимых слов в главе 1 и проект Image
для распознавания таких объектов,
как монеты, в главе 3. В проекте Pose
(поза) мы научим нашего механического питомца распознавать жесты
и реагировать на них.
182 Создаем умных роботов
Изучив основные понятия и инструкции по обучению ИИ, вы сможете применить новые навыки, чтобы построить уникальное личное
общение со своим питомцем!
ОБУЧЕНИЕ
В проекте Pose ИИ создает очень
простой скелет вашего тела вдоль линий рук и ног и использует эти линии
для определения вашего положения
и позы. Он игнорирует все остальное
в поле зрения камеры, кроме этих
линий и точек (рис. 38 ).
Если вы научите его распознавать
разные позы, ваши творения смогут
реагировать на движения рук и тела,
точно так же, как когда вы хотите
дрессировать своего настоящего питомца.
38
Однако движения тела сложны: ИИ
потребуется больше образцов данных, чем обычно. Стоя перед камерой, чтобы фотографировать свои
движения, убедитесь, что вы находитесь достаточно далеко, чтобы были
видны все линии скелета, включая
ваши руки, ноги и туловище.
1. Перейдите на сайт Teachable
Machine и создайте новый проект Pose. Пусть первым классом
изображений будет пустой фон
(рис. 39 ).
39
2. Выберите команды, которые вы
хотите связать с конкретными
движениями, и создайте дополнительные классы с разными
именами (рис. 40 ).
Придумайте позу для каждой команды Walk (Ходьба), Run (Бег),
Heart Eyes (Глаза-сердечки), Angry
Eyes (Злые глаза) и всего остального, что вы придумали. Только
убедитесь, что каждая поза отличается от других, иначе у ИИ
могут возникнуть проблемы с их
различением.
40
Глава 5. Рычаги и тяги
183
3. После того как вы подготовили
классы и запаслись целой кучей фотографий для каждого из
них, можно начинать обучение
ИИ (стр. 30). Потратьте немного больше времени на тестирование, чтобы убедиться, что все
ваши позы четко распознаются, добавив больше фотографий
к плохо узнаваемым классам.
Обязательно добавьте много изображений каждой позы в разных положениях (рядом с камерой, вдали от
камеры, вверху экрана, внизу экрана
и т. д.). Благодаря этому у ИИ будет
достаточно данных для изучения
каждой позы. Экспортируйте модель
ИИ и скопируйте ее ссылку (рис. 41 ).
КОД
Перейдите на сайт makecode.microbit.
org, создайте новый файл и соберите свой стартовый код из введения
(стр. 143). Добавьте ссылку на сайт
Teachable Machine, которую вы только что создали, со своими классами
поз и настройте каждую позу. Прос
то будьте готовы к очень длинному
оператору If!
Если вам нужны идеи для дополнения кода, оглянитесь на предыдущие
проекты и посмотрите, чем вы можете воспользоваться. В нашем файле
мы создали три действия: Run, Walk
и Lie Down (Лежать). Мы также создали Angry Eyes и Heart Eyes, которые
показывают два лица с помощью
крошечного светодиодного экрана
micro:bit, аналогично тому, как мы
делали в главе 1 (стр. 46).
184 Создаем умных роботов
41
Мелодия погони
В ящике Music есть блок, управляющий встроенным динамиком
micro:bit v.2, или же вы можете подключить динамик, как вы это делали
в главе 2 (стр. 143). Помните: динамик должен быть подключен к контакту 0 micro:bit, поэтому вам может
потребоваться изменить подключение сервомашинки.
42
1. В ящике Music найдите блок Start
Melody (Dadadum) Repeating (Once)
К (Начать мелодию (Dadadum)
Повторение (один раз)) и помес
тите его вверху оператора If,
управляющего движениями бега.
2. Щелкните первое раскрывающееся меню блока Start Melody
(Dadadum) Repeating (Once) К
и измените (dadadum) на (Chase)
(погоня) – эта мелодия лучше
подходит для бега (рис. 42 )!
3. Нажмите на второе раскрывающееся меню блока Start Melody (Dadadum) Repeating (Once)
К и измените (Once) на (Once in
Background) (один раз в фоновом
режиме) (рис. 43 ).
43
Но опция (Once in Background) позволяет программе прочитать и запус
тить первую строку, а затем прочитать следующую строку и начать это
действие, пока первая команда еще
выполняется.
Этот хитрый прием позволит добавить в ваш проект немного музыки!
Обычно код считывается и выполняется по одной строке, при этом
программа переходит к следующей
строке только после завершения предыдущей, поэтому две команды не
выполняются одновременно.
Глава 5. Рычаги и тяги
185
Хотите услышать рев своего леопарда? Ваши возможности ограничены
только классами, которые вы создали, и вашими творческими способностями. Здесь мы создали класс Roar
(рычание), поэтому, когда ИИ распознает эту позу, micro:bit воспроизводит тон, имитирующий рычание
(рис. 44 ).
44
Лежание
Что, если леопард устал и ему нужно вздремнуть? Вы можете обучить
новый класс Lie Down и взять уже написанный фрагмент кода, чтобы ваш
питомец растянулся на солнце.
45
1. Леопард часто вытягивает передние и задние ноги, что является первым движением нашей
команды Walk.
Нажмите значок + в постоянно
растущем операторе If, чтобы
добавить новую строку, и для SerialData задайте строку «Lie Down»
(рис. 45 ).
(Если вам нужно вспомнить, как
создать блок SerialData = " ", перечитайте стр. 143.)
2. Леопарды потягиваются медленно, поэтому вам нужно точно
имитировать это движение. Нажмите правой кнопкой мыши
на первую часть цикла ходьбы,
который сочетает в себе крошечные движения и паузы, выберите
Duplicate и добавьте копию в оператор If (рис. 46 ).
186 Создаем умных роботов
46
47
3. Чтобы перед началом этого кода
леопард гарантированно стоял,
добавьте блок Set (variable) to
(0) B над циклом потягивания
и измените имя переменной на
Degrees и 0 на 45 – поза «стоя»
(рис. 47 ).
Хотя вы продублировали весь
цикл ходьбы, убедитесь, что блок
Change (Degrees) by (1) содержит
значение +1, а не –1; иначе ваш
леопард не вытянет ноги наружу.
Используйте просмотр на сайте,
чтобы проверить, работает ли ваш
код правильно, и просмотрите блоки кода, если что-то не так. Иногда
неполадки могут быть вызваны нарушением последовательности кода
в блоке или неправильной настройкой. Метод проб и ошибок – часть
нашей работы!
ЗАПУСК ПРОЕКТА
Теперь можно загрузить код
в micro:bit, поэтому зайдите на
сайт Make: Al Robots. Подключите
micro:bit как обычно (стр. 57), скопируйте и вставьте ссылку с веб-сайта
Teachable Machine, чтобы добавить
наборы данных вашего класса.
Запустите проект на сайте Make: Al
Robots, и вы должны увидеть, как ИИ
распознает вашу позу и активирует
micro:bit для выполнения соответствующей команды. Если вы обнаружите, что ИИ с трудом распознает позу или делает выбор слишком
быстро, попробуйте настроить ползунки рядом с классами.
Глава 5. Рычаги и тяги
187
ЧТО ДАЛЬШЕ?
Возможно, вам нравятся другие животные. Вы можете построить множество других моделей, используя
тяги, рычаги и ваше новое понимание того, как настраивать сервомашинки, создавать код действий
и обучать ИИ. Взгляните на этого
краба, который использует несколько рычагов, образующих настоящие
цепкие клешни!
Можете вообще обойтись без животного. Посмотрите внимательно на
мир вокруг вас; рычаги можно использовать для создания каких угодно удивительных машин. При умелом использовании тяг и рычагов вы
сможете создавать весы, выдвижные
платформы и даже катапульты!
Развлечение не ограничивается
только сервомашинками. Еще в первом проекте micro:bit вы использовали светодиодный экран, чтобы
создавать «лица» летучим мышам
и бабочкам. На этот раз вы можете
нарисовать глаза леопарда на экране, а затем применить свои навыки,
чтобы заставить их моргать!
188 Создаем умных роботов
1. В
ящике Basic возьмите блок Show
LEDs H, чтобы нарисовать глаза
вашего питомца, и поместите его
в блок On Start.
Затем возьмите блок Every (500)
ms I (Каждые (500) мс) из ящика
Loops и поместите внутрь пустой
блок Show LEDs H, а потом копию
только что созданных светодиодных глаз (рис. 48 ).
Установите время цикла (мы использовали 6000 мс) и взгляните на
боковое окно просмотра, чтобы наблюдать, как глаза вашего творения
оживают.
48
Эти светодиодные глаза пригодятся,
чтобы добавить эмоции вашему творению. Вы даже можете использовать
функцию On Shake (При встряхивании) из ящика Input, которая срабатывает, если micro:bit встряхнули.
Мы почти уверены, что ваш леопард
рассердится, если вы его встряхнете,
поэтому нарисуйте сердитое лицо на
светодиодном экране и свяжите его
с событием Shake (рис. 49 ).
49
Глава 5. Рычаги и тяги
189
50
А что, если вы ласково возьмете лео
парда на руки? Есть ли способ показать, что ваше животное радо этому? Блок On (Screen Up) определяет,
когда светодиодный экран micro:bit
направлен вверх, и может активировать функцию Show Icon (heart) (Показать значок сердечка) (рис. 50 ).
Цикл, который вы создали для анимации мигания, в конечном итоге будет
использовать эти команды, поэтому
вам не нужно беспокоиться о необходимости использовать дополнительный код для их отключения.
190 Создаем умных роботов
Помните проект «Бабочка» из первой главы? Рычаги и тяги – отличный
способ автоматизировать взмахи
крыльями. Вам просто нужно прикрепить сервомашинку к нижней
части бабочки, оставив достаточно
места для вращения качалки. Затем
сделайте небольшую трехрычажную
тягу, приклейте центральную тягу
к качалке и прикрепите другие концы тяг к шарнирам на крыльях.
Соединив рычаги, тяги и ИИ, можно
воплотить в жизнь множество других уникальных моделей животных.
Посмотрите, какую сову мы сделали!
Мы использовали тот же механизм,
что и раньше, чтобы заставить крылья взмахивать, и добавили вторую
сервомашинку, чтобы поворачивать
голову, имитируя осмотр окрестностей в поисках врагов и добычи.
Вы даже можете научить эту сову
сопровождать вас глазами по комнате, обучив модель распознавания изображений с тремя классами:
одно ваше изображение находится
в правой части экрана, другое – посередине и последнее – слева. Затем
добавьте небольшой код, заставляющий сервомашинку поворачиваться
в нужном направлении, когда ИИ обнаружит изменение.
Добавьте еще немного кода, чтобы
время от времени взмахивать крыльями, и вы получите любопытную
сову, которая осматривает комнату
и может реагировать на посетителей
(рис. 51 )!
51
Глава 5. Рычаги и тяги
191
Механическая сова
Леопард
с micro:bit
Весы
Рычажный
подъемник
Катапульта
Прыгающий леопард
Порхающая
бабочка
Клешни краба
ЗАКЛЮЧЕНИЕ
Это все, что мы хотели сказать о рычагах и тягах на данный момент.
Но благодаря знаниям, которые вы
здесь получили, у вас не должно возникнуть проблем с воспроизведением механизмов, которые вы наблюдаете в своей повседневной жизни.
Мы переходим к более сложным проектам, в которых становится больше
движущихся частей, и иногда их
192 Создаем умных роботов
может быть слишком много, чтобы
разобраться сразу. Не торопитесь
и не паникуйте. Если вы чувствуете,
что зашли в тупик, попросите совета
у взрослых или даже просто сделайте перерыв; иногда нам нужно дать
мозгу перерыв, прежде чем мы сможем решить проблему. Действуйте
с настроем на успех и помните, что
ошибки – и обучение на этих ошибках – необходимая часть творчества!
Заметки:
Глава 5. Рычаги и тяги
193
6
ТОРГОВЫЙ
АВТОМАТ
194 Создаем умных роботов
В
ы реализовали несколько интересных проектов и развили ценные творческие навыки, среди которых есть особенно важный – это
ваше воображение.
Уметь мастерить очень полезно, но
это всего лишь инструмент. Настоящее волшебство творчества – это
когда вы добавляете блестки к бабочке или спиннер к гоночной трассе
либо учите ИИ перемещать механического леопарда, чтобы копировать
движения вашей собаки. Это замечательные вещи, которые вы придумываете самостоятельно, используя
полученные навыки необычными
способами.
В этой главе мы продолжим тренировать воображение, пока будем
строить автомат с шариками жевательной резинки! От механизма выдачи шариков зависит внешний вид
машины, а также ее функционирование. Затем мы добавим двигатель
вместо рукоятки и запрограммируем
micro:bit, чтобы добавить пароль, который известен только вам и вашим
друзьям. Наконец, мы научим ИИ
выдавать угощение всякий раз, когда
вы входите в комнату.
НАШИ ЦЕЛИ:
•• создать механизм для
автомата с жевательной
резинкой;
•• добавить двигатель для
вращения механизма;
•• запрограммировать micro:bit,
чтобы добавить защиту
паролем;
•• научить автомат
распознавать лица
и выдавать шарики
жевательной резинки.
Глава 6. Торговый автомат
195
МЕХАНИКА
Вместо того чтобы разрабатывать
весь проект от начала до конца,
в этой главе мы покажем вам механизмы, необходимые для вашего
автомата с жевательной резинкой,
а творческую часть оставим для вашего воображения. Вам предстоит изготовить упрощенную модель
устройства для выдачи жевательной
резинки (диспенсера), которая поможет вам понять, что происходит
внутри автомата. Затем мы обсудим
различные способы доработки этого
устройства в соответствии с разными целями проекта.
196 Создаем умных роботов
ДИСПЕНСЕР
Перед вами корпус диспенсера. Это
простой механизм, в котором шарики жевательной резинки располагаются в верхней части машины,
а когда вы поворачиваете ручку,
колесо внутри захватывает шарики
во время вращения, выбрасывая их
снизу. Ничего сложного, хотя сборка
механизма займет несколько шагов.
Давайте займемся этим!
Нам понадобятся:
••
••
••
••
••
••
трафареты*;
картон;
клеевой пистолет и термоклей;
ножницы;
дырокол;
деревянная палочка, палочка для
еды или карандаш;
•• шарики жевательной резинки
или круглые конфеты;
•• подходящие материалы (коробки
из-под молока, коробки из-под
салфеток и т. д.).
Отверстие для сервомашинки
Отверстие
для
мотора
Стенка А (2)
Ограничитель
(много!)
Малое колесо (4)
Рукоять (2)
Стенка В (2)
Простое колесо диспенсера (2)
* Загрузите полноразмерный PDF-файл на сайте makeairobots.com/chapter6.
Глава 6. Торговый автомат
197
1
2
3
1. Напечатайте, приклейте на картон и вырежьте следующие детали: две части стенки A, две части
стенки B, два простых колеса диспенсера и четыре маленьких колеса. Склейте четыре маленьких
колеса между собой (рис. 1 ).
Шарики жевательной резинки,
которые не упадут прямо в лунку
диспенсера, могут провалиться
между колесом и стенками коробки, высыпаясь из диспенсера
в разные стороны (рис. 4 )!
Поместите колесо диспенсера
с каждой стороны стопки маленьких колес, убедившись, что
центральные отверстия совпадают, а овальные отверстия колес
диспенсера совмещены (рис. 2 ).
(Это будет лунка-ловушка для
шариков.)
2. Возьмите деревянную палочку,
палочку для еды или карандаш
и вставьте в центральное отверстие – это будет ось. Если ось проворачивается, добавьте немного
клея, чтобы вся деталь вращалась
как единое целое (рис. 3 ).
Взгляните на две стенки A и две
стенки B, которые образуют коробку, окружающую колесо диспенсера. Что произойдет, если вы
просто бросите туда несколько
шариков?
198 Создаем умных роботов
4
Для этого проекта нужно, чтобы
шарики каждый раз выпадали
в одном и том же месте. Понимание того, как работает механизм, прежде чем склеить детали, – ценный навык мастера. Он
позволяет предвидеть проблему
и придумать решение. В нашем
случае добавление нескольких
направляющих помешает шарикам выпасть и улучшит работу
автомата (рис. 5 ).
3. Вот тут-то и пригодятся все эти
изогнутые ограничители. Начните со склеивания двух или трех
ограничителей вместе (в зависимости от толщины картона и размера шариков) в две группы по
четыре штуки (для каждого угла
стенки А) (рис. 6 ).
5
4. Совместите эти сложенные друг
с другом ограничители с углами
частей стенки А, прежде чем приклеивать их на место (рис. 7 ).
5. Ограничители образуют направляющую, которая не дает шарикам провалиться мимо колеса.
Соберите стенки вокруг колеса
с помощью скотча, временно
скрепив их, пока вы проверяете,
как это работает.
6
7
Глава 6. Торговый автомат
199
8
Если вы заметили, что шарики
продолжают выскальзывать пос
ле того, как вы все собрали, добавьте еще ограничителей с каждой стороны – только убедитесь,
что колесо диспенсера может
свободно вращаться (рис. 8 ).
9
6. Когда вы отрегулируете механизм, сделайте небольшой корпус для колеса диспенсера. Удалите скотч, которым временно
скрепили детали, и приклейте
стенку B к обоим концам стенки
А (рис. 9 ).
7. Установите колесо диспенсера,
пропустив ось через отверстие.
Далее установите и приклейте на
место вторую стенку А, оставив колесо диспенсера внутри (рис. 10 ).
8. Склейте две детали рукоятки для
толщины и наденьте их на один
выступающий конец оси (рис. 11 ).
10
Закрепите рукоятку на оси небольшим количеством клея, и у вас получится работающий диспенсер.
Осталось только добавить еще один
кусок палочки для еды, вклеенный
в оставшееся отверстие, чтобы облегчить вращение рукоятки!
11
200 Создаем умных роботов
ЧТО ДАЛЬШЕ?
У нас готов механизм, который будет размещен внутри автомата, и вы
знаете, как он работает. Теперь вы
можете придумать, как будет выглядеть автомат.
Вместо того чтобы создавать корпус
машины по трафаретам, постарайтесь пустить в ход подручные материалы и свое воображение. Для этого
проекта идеально подойдет небольшая коробка, так что посмотрите вокруг, что у вас есть под рукой.
12
Вот пример автомата для жевательной резинки, который мы сделали из
коробки от сока. Обратите внимание,
что мы проделали сбоку отверстие
для оси, а затем приклеили рукоятку
(рис. 12 ).
А вот версия с коробкой для салфеток со «смотровым окном», позволяющим продемонстрировать внут
реннюю механику (рис. 13 )!
13
И не позволяйте размерам колеса
диспенсера сдерживать вас – задайтесь целью использовать все пространство внутри коробки из-под
хлопьев и построить гигантский механизм диспенсера. Ведь теперь вы
знаете, как он работает!
Вы также можете придумать деталь
для выдачи шариков. Картонная
трубка от рулона бумажных полотенец прекрасно работает как пандус: вырежьте большое отверстие на
одном конце трубки и еще одно отверстие в передней части автомата
для жевательной резинки и вставьте
трубку внутрь (рис. 14 ).
14
Глава 6. Торговый автомат
201
Убедитесь, что отверстие, которое
вы вырезали в трубке, расположено
точно под колесом, чтобы ловить падающие шарики (рис. 15 ).
15
Даже после того, как шарики жевательной резинки выданы, с ними
можно делать забавные вещи. Например, можно добавить гоночную
трассу из главы 4, чтобы шарики испытали приключения, прежде чем
доберутся до вас (рис. 16 )!
А можно поступить наоборот и добавить колесо диспенсера в игру «Гонка
шариков», чтобы оно постоянно добавляло новые шарики на трассу.
16
202 Создаем умных роботов
Заметки:
Глава 6. Торговый автомат
203
ЭЛЕКТРОНИКА
Нам понадобятся:
•• трафареты*;
•• колесо диспенсера из
предыдущего проекта;
•• клеевой пистолет
и термоклей;
•• редукторный двигатель
постоянного тока;
•• электрическая кнопка или
переключатель;
•• провода и зажимы типа
«крокодил»;
•• батарейки и держатель
батарей.
Опорный диск
мотора
Опорный диск
сервомашинки
17
Есть что-то привлекательное во вращении рукоятки механизма. Но иног
да приятно, когда всю работу за нас
делает электроника.
Сначала мы воспользуемся редукторным двигателем постоянного
тока, чтобы быстро запустить механизм и во всем разобраться. Но поскольку двигатель этого типа сложно подключать к micro:bit, потом мы
установим сервомашинку, которая
будет вращать колесо диспенсера,
и подготовим ее к подключению
micro:bit (рис. 17 ).
ВРАЩЕНИЕ
Отверстие
для сервомашинки
Отверстие
для мотора
* Загрузите полноразмерный PDFфайл на сайте makeairobots.com/
chapter6.
204 Создаем умных роботов
Двигатель постоянного тока с редуктором идеально подходит для этой
работы. У него гораздо больший
крутящий момент – сила вращения, которую создает двигатель, что
позволяет ему вращать диспенсер
с большей мощностью.
Конструкция похожа на диспенсер,
который мы построили раньше, но
с двумя небольшими изменениями. Вы можете либо разобрать механизм, созданный в предыдущем
разделе, либо сделать новые детали
и начать с нуля (рис. 18 ).
1. Сделайте колесо диспенсера, но
на этот раз склейте два диска
опоры двигателя из библиотеки трафаретов и прикрепите их
к одной стороне колеса. Получится глубокое отверстие, в которое
вы вставите белый вал двигателя
(рис. 19 ).
18
Важно совместить небольшой
прямоугольный вырез на диске
(для вала двигателя) с осевым отверстием на стенке А. Убедитесь,
что внутри механизма ничего не
перекошено.
2. Прежде чем добавлять детали
стенки A, воспользуйтесь трафаретом «Отверстие для двигателя»
из библиотеки трафаретов, чтобы обвести и вырезать место для
двигателя, который будет вставлен на задней стороне корпуса
диспенсера.
19
Вставьте двигатель и зафиксируйте его горячим клеем (рис. 20 ).
20
Глава 6. Торговый автомат
205
3. Колесо диспенсера должно соединиться с маленьким белым валом
двигателя. Слегка нажмите на
картон, чтобы вал вошел в диск
опоры двигателя, который вы
приклеили ранее (рис. 21 ).
Между двигателем и колесом
должен быть небольшой зазор.
Если колесо болтается, добавьте
в отверстие несколько капель горячего клея, чтобы закрепить его.
Однако будьте осторожны, чтобы
горячий клей не прилип к двигателю, иначе вал не сможет вращаться.
4. Деревянную ось следует устанавливать в последнюю очередь.
Вставьте ее через отверстие спереди и как можно глубже в колесо
диспенсера.
21
Ось должна упереться в вал двигателя на другой стороне. Добавьте немного термоклея, чтобы
закрепить ось на месте (рис. 22 ).
Теперь колесо диспенсера закреп
лено с обеих сторон – со стороны
двигателя и оси – и если подключить провода к батарее, оно будет
вращаться и вращаться… Но как его
остановить?
22
Давайте добавим управление двигателем с помощью выключателя. Что
вам больше нравится?
Может, вам нужно что-то типа выключателя света (рис. 23 )?
23
206 Создаем умных роботов
Или вы предпочитаете кнопку, которая подает напряжение на двигатель
только до тех пор, пока нажата? Мы
использовали ее в «Гонке шариков»
(рис. 24 ).
В нашем примере мы будем использовать такую же кнопку, но большего
размера и прикрепленную к простому основанию, которое мы сделали
из картона и термоклея.
24
Снаружи эта желтая кнопка может
выглядеть иначе, чем синяя, но переверните ее, и вы увидите, что она
имеет те же контакты, которые вы
видели раньше (рис. 25 и 26 ).
Эта кнопка удобна тем, что когда вы
нажимаете на нее, контакты внутри
соединяются и замыкают цепь, позволяя току течь через двигатель.
Когда вы отпустите кнопку, цепь
снова разомкнется, и ток не сможет
течь – точно так же, как в цепи из
медной ленты, которую вы сделали
в начале этой книги.
25
5. Для работы этого двигателя требуется напряжение от 3 до 9 В,
поэтому подойдет любой из использованных вами ранее источников питания.
26
Глава 6. Торговый автомат
207
27
28
Но помните, что эти двигатели
работают лучше, когда на них
подается напряжение выше 3 В,
которое дают две батарейки АА,
поэтому мы рекомендуем использовать блок из трех или четырех батареек или держатель
батареи на 9 В (рис. 27 ).
6. Выбрав источник питания, проследите за путем электрического тока, покидающего батарею.
Подключите положительный
красный провод батареи к одному из выводов двигателя. Просто
скрутите провода вместе, следя
за тем, чтобы они не касались отрицательного провода (рис. 28 ).
7. Теперь, когда двигатель может
получать питание, нужно вернуть электрический ток обратно
к батарее, по пути пройдя через
кнопку.
29
Второй провод двигателя подсоедините к металлическому контакту, торчащему из передней
части кнопки. Мы использовали
зажимы типа «крокодил», но вы
также можете намотать оголенный провод на контакт (рис. 29 ).
8. К другому концу кнопки подсоедините отрицательный черный
провод батареи (рис. 30 ).
30
208 Создаем умных роботов
Теперь, когда вы подсоедините
батарею и нажмете кнопку, цепь
замкнется. Благодаря протеканию
тока двигатель оживает, пока вы
удерживаете кнопку, и останавливается, когда вы ее отпускаете!
ЧТО ДАЛЬШЕ?
Вы можете использовать сервомашинку, но важно определить тип машинки, который у вас есть.
Если вы используете обычную позиционную сервомашинку, колесо сможет поворачиваться только примерно на 180 градусов. За раз оно будет
выбрасывать лишь один шарик, и вам
придется вернуть сервомашинку назад, чтобы взять следующий.
Если вы используете сервопривод непрерывного действия, колесо сможет
совершать полный оборот. Это позволит ему загрузить шарик, выдать
его и продолжить цикл.
Нам понадобятся:
•• трафареты*;
•• картон;
•• клеевой пистолет
и термоклей;
•• ножницы;
•• сервомашинка или
сервопривод;
•• большая качалка
сервомашинки с крепежным
винтом;
•• сервотестер;
•• провода и зажимы типа
«крокодил»;
•• батарейки и держатель
батареек.
Прежде чем перейти к сборке автомата для жевательной резинки с сервоприводом, вам необходимо внести
несколько изменений (рис. 31 ).
1. В
озьмите трафарет «Отверстие
для сервомашинки» из библиотеки трафаретов, чтобы обвести отверстие в одной из частей стенки А. Убедитесь, что пунктирный
круг на трафарете совпадает с отверстием для оси на стенке А,
чтобы колесо диспенсера было
установлено ровно (рис. 32 ).
Опорный диск сервомашинки
* Скачайте полноразмерный PDF на
сайте makeairobots.com/chapter6.
Отверстие
для сервомашинки
31
32
Глава 6. Торговый автомат
209
33
34
35
36
2. Вам также нужно вырезать и приклеить один опорный диск сервомашинки к новому колесу
диспенсера, убедившись, что он
совмещен с серединой колеса
(рис. 33 ).
3. Чтобы соединить сервомашинку
с колесом, вам понадобится большая качалка сервомашинки с рычагами на обоих концах, а также
крошечный винт, который должен был идти в комплекте с качалкой (рис. 34 ).
4. Наденьте качалку на вал сервомашинки и закрепите ее, осторожно затянув винт.
210 Создаем умных роботов
Вставьте качалку в опорный диск
сервомашинки и добавьте немного термоклея, чтобы закрепить
ее там. Будьте осторожны, чтобы
клей не попал между качалкой
и корпусом сервомашинки, иначе он может помешать вращению
качалки (рис. 35 ).
5. Вставьте сервомашинку в отверстие в стенке А, которое вы переделали, и закрепите ее термоклеем (рис. 36 ).
37
6. В завершение вставьте деревянную палочку, палочку для еды
или карандаш как можно глубже
в колесо диспенсера и закрепите
колесо внутри коробки-дозатора
(рис. 37 ).
Теперь вам не понадобится кнопка; просто подключите сервотестер
и источник питания и поместите дозатор в коробку автомата для раздачи жевательной резинки.
Сервомашинки имеют меньший
крутящий момент, чем наши желтые
двигатели постоянного тока, и, следовательно, меньшую мощность,
поэтому будьте осторожны и не подвергайте их большой нагрузке. Выберите двигатель, который лучше всего
подходит для вашего проекта.
Глава 6. Торговый автомат
211
MICRO:BIT
Нам понадобятся:
•• micro:bit и USB-кабель;
•• компьютер с доступом
в интернет;
•• сервомашинка – позиционная
или непрерывного вращения;
•• кабели с разъемами типа
«крокодил» и «вилка».
Начальный и готовый код micro:bit
можно найти на сайте makeairobots.
com/chapter6.
212 Создаем умных роботов
Теперь мы будем объяснять проекты
менее подробно, чем в предыдущих
главах, поэтому просмотрите предыдущие разделы про micro:bit, если
вам нужно вспомнить, как определенные блоки работают в процессе
программирования вашего micro:bit.
Изучая предыдущие проекты, вы
подготовитесь к более масштабным
идеям!
Хотя вы, возможно, получили массу
удовольствия от использования желтых двигателей постоянного тока,
перед программированием micro:bit
необходимо приготовить диспенсер
с сервомашинкой.
Библиотека кода
A
B
C
D
E
F
G
H
I
J
K
L
Глава 6. Торговый автомат
213
38
Раньше мы использовали в проектах micro:bit только обычную сервомашинку, а теперь у нас появилась
прекрасная возможность применить
сервопривод непрерывного вращения1. Но для подключения сервопривода к micro:bit необходимо внести
в проект небольшое дополнение.
Создайте новый проект на сайте
makecode.microbit.org и нажмите на
Extensions (Расширения) в списке
ящиков (рис. 38 ).
Появится новый экран со множест
вом дополнительных функций кода,
которые можно мгновенно добавить в ваш проект. Большинство из
них бесполезны без специального
комплекта деталей. Выберите пункт
Servo. В вашей библиотеке кода появится новый ящик под названием
Servos.
Эти блоки функционируют так же,
как уже знакомые вам в ящике Pins,
1
Подойдет недорогой DS04-NFC. – Прим.
перев.
214 Создаем умных роботов
за исключением того, что теперь для
каждого типа сервоприводов есть отдельные блоки.
(Ящик Servos необходимо добавлять
вручную каждый раз, когда вы начинаете новый проект, запомните это
на будущее!)
СЕРВОПРИВОД
Чтобы запрограммировать вращение колеса диспенсера, возьмите
блок Continuous Servo (P0) Run at A из
ящика Servos и добавьте его к команде кнопки из ящика Input или к любому другому входу, который вы хотите
использовать.
Число, подставленное в поле ввода
в конце, определяет, насколько быст
ро вращается сервопривод и в каком
направлении:
•• Если вы выберете положительное
число (от 1 до 100), сервопривод
будет вращаться вправо.
•• Если вы выберете отрицательное
число (от –1 до –100), сервопривод
будет вращаться влево.
•• Чем больше число, тем быстрее
вращается двигатель. Подберите
опытным путем нужную скорость
вращения.
39
•• Если вы хотите, чтобы сервопривод остановился, используйте
блок Stop Servo (PO) В или введите
0 в поле скорости (рис. 39 ).
При тестировании кода вы заметите вращение колеса, но, возможно,
результат окажется не совсем таким,
как вы надеялись. Ничего страшного – просто измените код и загрузите его заново. Проверьте различные
комбинации скорости сервопривода
и времени паузы, чтобы найти подходящую именно вам!
СЕРВОМАШИНКА
Если захотите, можете использовать
обычную сервомашинку. Как и в других ваших проектах, вам понадобится содержимое ящика Pin.
Позиционные сервомашинки отлично подходят, если вы хотите, чтобы
ваш дозатор медленно выдавал по
одной жевательной резинке за раз.
Он может совершить только половину оборота – на 180°, – а затем должен вернуться за новым шариком.
40
1. Начните с калибровки сервопривода в 0 в блоке On Start. Возможно, вам придется отсоединить колесо диспенсера и повернуть его
так, чтобы лунка была обращена
к точке загрузки жевательной резинки.
2. Прикажите сервомашинке повернуться на 180°, используйте блок
Pause C , чтобы остановить ее на
некоторое время, пока шарик
выпадет из автомата, а затем используйте другой блок управления, чтобы вернуть колесо в исходное положение (рис. 40 ).
Это общий принцип подключения
диспенсера к вашему micro:bit, независимо от того, какой тип сервопривода у вас есть!
Глава 6. Торговый автомат
215
ЗАЩИТА
ПАРОЛЕМ
Сохраняем символы пароля
при каждом нажатии кнопки
Вы научились управлять сервоприводами, а теперь узнае
те, как защитить свои конфеты от воришек. Вы сможете
задать активацию привода
диспенсера только после ввода
правильного четырехзначного пароля с помощью кнопок
micro:bit.
Проверьте, достаточно ли длинный пароль
Да?
Продолжаем
Хотя это звучит сложно, если
разбить эту задачу на более
мелкие части, вы увидите,
что основных задач всего три
(рис. 41 ).
41
216 Создаем умных роботов
Нет?
Ожидаем продолжения ввода
Проверьте, правильный ли пароль
Нет?
Попробуйте еще раз
Да?
КОНФЕТА!
СОЗДАНИЕ СТРОЧНЫХ
ПЕРЕМЕННЫХ
Поскольку MakeCode по умолчанию создает все переменные
в виде чисел, вам нужно будет
поменять поле с нулем в конце
на поле с кавычками, чтобы сохранить пароль в виде текстовой
строки. При этом каждый раз при
запуске micro:bit переменная
PasswordGuess будет пустой.
Это выглядит немного странно,
но, даже несмотря на то что пароль состоит из цифр, нам все
равно необходимо сохранить его
как текстовую строку, чтобы блоки кода могли анализировать его
по одному символу за раз.
Нажмите на ящик Advanced, и вы найдете там ящик Text. В нем вы можете
взять разные блоки, которые позволяют читать, проверять и редактировать любые строковые переменные,
которые вы создаете. (Строки – это
просто данные, состоящие из букв
и символов.)
1. Начните с ящика Variables и создайте новую переменную. Дайте
ей понятное имя – в нашем примере мы использовали PasswordGuess (угадывание пароля).
42
После создания переменной поместите вновь созданный блок
Set (PasswordGuess) to (0) в блок
On Start.
Поскольку MakeCode автоматически создает все переменные
в виде чисел, вам необходимо
заменить поле с нулем в конце
на поле с кавычками D , которое
находится в ящике Text. Это пус
тое поле D позволяет сохранить
пароль в виде текстовой строки;
при этом переменная PasswordGuess будет пустой каждый раз
при запуске micro:bit (рис. 42 ).
2. Теперь переходим к кнопкам:
кнопка А добавит к предполагаемому паролю 1, а кнопка B – 2.
Из ящика Input перетащите блок
On Button (A) Pressed в рабочую
область, а внутрь него добавьте блок Set (PasswordGuess) To из
ящика Variables.
Глава 6. Торговый автомат
217
43
44
Из ящика Text возьмите блок Join
(“Hello”) (“World”) E (Объединить
(“Hello”) (“World”)) и добавьте его
к блоку Set (PasswordGuess) to (" ")
(рис. 43 ).
3. Теперь вам нужно указать, какую
информацию объединить, чтобы
составить пароль.
Из ящика Variables возьмите элемент PasswordGuess и вставьте
его вместо слова Hello. Измените
World на 1 (рис. 44 ).
218 Создаем умных роботов
4. Каждый раз, когда этот код выполняется, он берет текущее значение PasswordGuess и сразу же
помещает 1 в конец этой строки.
Настройте кнопку B, чтобы сделать то же самое, только на этот
раз добавляйте к строке 2.
Вот почему нам нужно, чтобы эта
переменная была строкой, а не
числом. В случае строки новая
информация помещается в конец
переменной (A + A = AA), а в случае с числом происходит математическое вычисление суммы
(1 + 1 = 2) (рис. 45 ).
45
46
5. Чтобы видеть, какой пароль введен к текущему моменту, помес
тите блок Show String из ящика
Basic внутрь блока Forever и добавьте к нему элемент PasswordGuess из ящика Variables (рис. 46 ).
6. Теперь можно перейти к задаче 2 блок-схемы, где мы указываем micro:bit проверить, сколько
цифр или букв уже введено.
Из ящика Logic поместите оператор If в блок Forever, а шестиугольник сравнения 0 = 0 F –
в оператор If.
Из ящика Text возьмите блок
Length of (“Hello”) G (Длина (“Hello”)) и добавьте его в первую
ячейку шестиугольника сравнения 0 = 0 F . Замените поле (“Hello”) элементом PasswordGuess из
ящика Variables.
Глава 6. Торговый автомат
219
Измените второе поле в шестиугольнике сравнения на число 4
(или любую другую длину, которую вы выберете для своего пароля).
Теперь, какой бы код вы ни поместили в этот оператор If, он
активируется только тогда, когда
в PasswordGuess есть четыре числа.
Обратите внимание, что мы нажали маленький символ + и переместили блок Show String в оператор Else в самом конце. При
чтении кода вслух он звучит так:
«Если длина предполагаемого
пароля состоит из четырех цифр,
сделайте это...; иначе покажите
предполагаемый пароль на экране» (рис. 47 ).
7. Последняя задача – проверить,
совпадает ли введенная строка
с вашим сверхсекретным паролем. Здесь мы используем 2112,
но вы сами определяете, какой
пароль активирует ваш код.
Вернитесь в ящик Logic и добавьте новый оператор If внутрь
только что созданного оператора If. Откройте ящик Text и найдите шестиугольник с надписью
(“This”) Includes “(" ")” H ((“Это”)
Содержит “(" ")”). Используйте
этот шестиугольник, чтобы заменить (“True”) в нашем новом
операторе If (рис. 48 ).
220 Создаем умных роботов
47
48
49
8. Теперь ваш код проверит первый
элемент (“This”) и определит, совпадает ли он со строкой во втором элементе (" ").
Вам осталось заменить элемент
(“This”) на элемент PasswordGuess
из ящика Variables и ввести 2112
(или другой пароль) во второй
элемент (рис. 49 ).
9. Эта проверка – последняя задача,
которую вам нужно было выполнить. Если пароль правильный,
то будет активирован ваш код
в этом операторе If. Если пароль
неверен, код не сработает.
Вернитесь на несколько страниц
назад и скопируйте ранее составленный код сервопривода
в оператор If, чтобы повернуть
колесо и получить приз! И раз
уж вы так хорошо разбираетесь
в программировании, почему бы
не оживить процесс? Вы можете
добавить небольшую победную
мелодию или даже анимацию
(рис. 50 ).
10. Последнее, что нужно сделать, –
это добавить строку после запуска сервопривода, которая
сбросит PasswordGuess обратно
в пустую строку. Используйте
блок Set (PasswordGuess) to (0) из
ящика Variables с элементом (" ")
из ящика Text. Это вернет автомат в исходное состояние до ввода пароля (рис. 51 ).
50
51
Глава 6. Торговый автомат
221
ЧТО ДАЛЬШЕ?
Если вы хотите запрограммировать
действие на случай, если пароль будет неправильным, нажмите второй,
самый внутренний + в операторе If,
чтобы создать раздел else. Как насчет
тихого жужжания или большого знака X на светодиодном экране, чтобы
сообщить, что пароль неверен?
222 Создаем умных роботов
Только не забудьте добавить ниже
еще один блок Set (PasswordGuess)
to (" "), чтобы сбросить переменную
PasswordGuess перед следующей попыткой ввода пароля.
Если вы спроектируете для своего защищенного паролем автомата раздачи жевательных резинок крутой
корпус, это поднимет его на новый
уровень!
Заметки:
Глава 6. Торговый автомат
223
ИИ
Хотя мы защитили наш сверхсек
ретный автомат паролем, можно
придумать, как использовать ИИ
для повышения сохранности лакомства. Пароли безопасны, но рано или
поздно кто-нибудь их узнает.
Может быть, это хитрый брат или
сестра, которые хотят украсть вашу
жевательную резинку, или родители,
которые покушаются на ваши конфеты. Но если мы воспользуемся проектом распознавания изображений,
то сможем научить ИИ распознавать
только ваше лицо!
ОБУЧЕНИЕ
Поскольку вы уже настраивали проект распознавания изображений на
веб-сайте Teachable Machine, мы не
будем повторять описание этапов;
если вам нужно освежить знания,
просто загляните в раздел ИИ в предыдущих главах. Мы сосредоточимся
на самой важной части – сделать так,
чтобы ИИ знал, кто вы, и имел много
качественных данных для работы.
Вот несколько полезных напоминаний:
•• не забудьте создать пустой фоновый класс, чтобы ваш ИИ знал, как
выглядит пустая комната. Убедитесь, что в этом классе есть только
фотографии сцены позади вас –
и никаких людей;
•• класс, который распознает вас,
должен содержать много фотогра224 Создаем умных роботов
фий. Начните с крупного плана
и отходите все дальше и дальше.
(Для фотографирования вам, вероятно, понадобится чья-то помощь.) Поворачивайтесь влево
и вправо, прыгайте вверх и вниз
и двигайтесь из стороны в сторону,
чтобы камера точно отобразила,
как вы выглядите в разных местах
комнаты, – можно даже скорчить
гримасу, чтобы никто не обманул
ИИ, используя вашу фотографию!
•• если несколько человек имеют
право использовать ваш автомат
для жевательной резинки, создайте отдельный класс для каждого
человека и добавьте его фотографии;
•• что происходит, когда посторонний человек проходит перед камерой? Пытается ли ИИ думать,
что это вы? Попробуйте создать
дополнительный класс под названием Other People (другие люди)
и сфотографировать разных людей в разных местах комнаты,
чтобы ИИ было на что обратить
внимание. Это облегчит вам кодирование реакции на событие,
когда не тот человек пытается использовать автомат.
КОДИРОВАНИЕ
Возможно, это самый простой проект
ИИ, который вы встретите в данной
книге. Если вы не хотите добавлять
дополнительные функции к автомату, единственная работа, которую
должен выполнить ваш код, – это повернуть сервопривод, когда ИИ распознает вас. Этот код может немного отличаться в зависимости от того,
какой сервопривод вы используете
в своем проекте (позиционную сервомашинку с поворотом на 180° или
сервопривод непрерывного вращения на 360°), но вы уже достаточно
работали с сервоприводами, чтобы
хорошо понимать, что нужно сделать.
1. Начните с нового проекта на сайте makecode.microbit.org и дайте
этому новому проекту имя. Не
забудьте открыть ящик Extension
и добавлять расширение Servos
каждый раз, когда вы начинаете
новый проект (рис. 52 ).
52
53
2. Добавьте все обученные вами
классы в оператор If (рис. 53 ).
3. Внутри каждого блока кода добавьте код для сервоприводов.
Мы уже рассказывали об этом
в разделе про micro:bit, поэтому
перелистните несколько страниц назад, чтобы найти там урок
и уточнить, как должен работать
ваш автомат для раздачи жевательной резинки.
Глава 6. Торговый автомат
225
Нажмите
Сервопривод
54
Используйте блок Continuous Servo
(P0) Run at (50) A , чтобы заставить
колесо вращаться так быстро, как
вам нужно.
Сервомашинка
Если вы хотите, чтобы колесо диспенсера выдавало только один шарик жевательной резинки, сначала
измерьте, сколько времени требуется колесу, чтобы сделать один полный оборот.
Поместите блок Set Servo (P0) Angle to
(90) I из ящика Servo в выемку блока
On Start и установите его на 0 градусов – теперь сервомашинка всегда
будет обращена вверх при включении устройства.
Затем введите эту продолжительность в добавленный блок Pause (ms)
(100) C из ящика Basic и добавьте блок Stop Servo (P0) B из ящика
Servos. (Блок Pause задерживает выполнение команды Stop на время,
достаточное для того, чтобы колесо
диспенсера завершило вращение.)
Затем в операторе If добавьте несколько блоков, которые заставят
сервомашинку повернуться на 180°,
чтобы выдать жевательную резинку,
сделать паузу примерно на одну секунду, чтобы жевательная резинка
выкатилась, а затем вернуться в исходное положение (рис. 54 ).
226 Создаем умных роботов
Больше шариков!
Добавьте светодиоды/зуммер!
Светодиодная лента Neopixel!
Покажите,
сколько осталось!
Музыка!
Не забудьте нажать + в операторе If,
чтобы добавить оператор else, и вставить код, который будет предупреж
дать вас, когда кто-то посторонний
пытается использовать автомат. Вы
можете подключить громкий зуммер
или светодиоды, чтобы подать сигнал тревоги.
вас узнает? Ведь вы выполнили всю
работу и заслужили вознаграждение!
Или, может быть, добавить счетчик,
показывающий, сколько жевательных резинок осталось в автомате?
Вы даже можете добавить распознавание монет, как в главе 3, и открыть
собственный бизнес!
Как можно придать автомату индивидуальность?
Когда вы закончите, загрузите код
в свой micro:bit и перейдите на сайт
Make: Al Robots, чтобы начать последний этап.
Может быть, вам стоит запрограммировать автомат, чтобы он выдавал
две жевательные резинки, когда ИИ
Глава 6. Торговый автомат
227
ЗАПУСК ПРОЕКТА
Как и во всех наших проектах, загрузите свою модель ИИ с сайта Teachable Machine на сайт Make: Al Robots
по адресу makeairobots.com и подключите свой micro:bit.
После запуска вашего проекта вся
необходимая работа будет выполняться автоматом для раздачи жевательной резинки – сервопривод,
распознавание лиц и любые другие
функции, которые вы добавили. Этот
проект довольно прост, поэтому нет
необходимости заходить в настройки и менять параметры ИИ на One
Winner или что-то в этом роде, если
только вам не нужно настроить чувствительность вашего ИИ (рис. 55 ).
55
ЧТО ДАЛЬШЕ?
Ваш автомат для жевательной резинки открывает массу возможностей,
помимо основных идей, о которых
мы рассказали в этом разделе!
Бункер
Для начала вы можете добавить над
диспенсером бункер, в котором будут храниться все ваши шарики жевательной резинки и поступать оттуда в диспенсер по одному. Если вы
ищете подходящее сырье, то верхушка коробки из-под сока представляет
собой идеальную форму для подачи
жевательных шариков в механизм –
только не забудьте сначала ее вымыть (рис. 56 )!
228 Создаем умных роботов
56
Нам понадобятся:
•• трафарет*.
57
Стенка бункера (4)
* Загрузите полноразмерный PDFфайл на сайте makeairobots.com/
chapter6.
58
Мы добавили трафарет стенки бункера в библиотеку трафаретов, поэтому вы можете создать его с нуля,
если у вас не нашлось подходящей
пустой коробки (рис. 57 ).
Склейте четыре стенки бункера
вместе, чтобы сформировать воронку (рис. 58 ).
Если у вас есть трубка от рулона бумажных полотенец, прикрепите ее
к нижней части бункера в качестве
ствола, ведущего в емкость диспенсера (рис. 59 ).
59
Глава 6. Торговый автомат
229
60
Для подключения потенциометра
вам понадобятся три зажима «крокодил». Если на вашем потенциомет
ре нет маркировки, контакты имеют
стандартное расположение слева
направо, если направлены на вас:
VCC, который подключается к источнику питания 3 В; сигнал для подключения к контактам 0–2 вашего
micro:bit; и GND, который будет подключаться к GND на вашем micro:bit
(рис. 61 ).
Если вы перейдете к новому проекту
MakeCode, поместите блок Set Servo
Angle I из ящика Pins в выемку кода
Forever. Вам нужно будет составить
небольшую математическую формулу, чтобы преобразовать информацию потенциометра в числа, понятные вашему сервоприводу.
61
Потенциометр
Знаете ли вы, что можно создать
собственную версию сервотестера
с помощью micro:bit и хитроумного
маленького устройства, называемого
потенциометром? Потенциометр –
это особый регулятор, с помощью которого можно управлять автоматом
для раздачи жевательной резинки
(рис. 60 ).
230 Создаем умных роботов
1. Откройте ящик Math (Математика) и найдите элемент Round (0)
J . Поместите его в поле в конце
блока Set Servo Angle I .
2. Вернитесь в ящик Math, возьмите
элемент 0 ÷ 0 K и поместите его
в блок Round (0) J .
3. Откройте ящик Pins в ящике Advanced, возьмите там блок Analog
Read Pin (P0) L (Читать аналоговый сигнал вывода) и поместите его в первый слот блока Round
(0) J .
62
63
4. Содержимое второго поля блока
Round (0) J зависит от того, какой
сервопривод вы используете.
Для непрерывного сервопривода установите значение 10.24 1
(рис. 62 ).
и получаем 10,24. Итак, мы задали
деление на 10,24 и – та-дам! – ваш
сервопривод знает, что делать! Мы
сделали сигнал управления простым
и понятным для робота – он сможет
обойтись без уроков математики!
Для позиционной сервомашинки
установите значение 6 (рис. 63 ).
Раскроем секрет: почему
эти числа?
Почему мы предложили эти числа?
Это очень просто! Ваш потенциометр может генерировать сигнал,
который вход micro:bit превращает
в числа от 1 до 1024. Но ваш сервопривод говорит на другом языке, где
применяются числа от 1 до 100 для
непрерывных сервоприводов. Чтобы
он понимал команды, мы проделаем
простую математическую операцию:
1024 (максимум потенциометра) делим на 100 (максимум сервопривода)
1
В программировании вместо десятичной запятой всегда применяется точка. – Прим. перев.
Глава 6. Торговый автомат
231
КОРМУШКА
ДЛЯ ПИТОМЦЕВ
Может быть, вам нужен умный механизм, чтобы вовремя кормить своего
питомца? Воспользовавшись системой распознавания изображений, вы
можете научить ИИ узнавать вашего
питомца и сделать автоматическую
кормушку!
Сначала вам нужно будет немного
переделать колесо диспенсера, добавив больше ограничителей, чтобы
мелкие кусочки корма не выпадали.
Что касается кодирования, то для
этого конкретного проекта лучше
всего подойдет сервопривод непре232 Создаем умных роботов
рывного действия. Возможно, вам
придется провернуть колесо несколько раз, чтобы выдать нужное
количество корма, поэтому вы можете добавить переменную обратного отсчета, которая уменьшается
каждый раз, когда выдается порция
корма, и автоматически останавливает колесо после выдачи нужного
количества порций.
ЗАКЛЮЧЕНИЕ
Возможно, вы заметили, что новые
проекты начинают сочетать в себе
разные фрагменты из предыдущих
глав.
Например, в этой главе вы смогли
объединить свои знания осей и опыт
работы с сервоприводами, чтобы
открыть мир механизированных
устройств.
Робототехника и ИИ могут показаться сложными, но они основаны
на фундаментальных идеях и навыках – тех навыках, которые вы сейчас
изучаете. И чем больше вы практикуетесь, тем понятнее будут новые
проекты.
Создавать мощные и сложные проекты становится намного легче, если
разбить их на более простые задачи,
которые вы уже умеете решать.
Глава 6. Торговый автомат
233
7
КОСТЮМЫ
СУПЕРГЕРОЯ
В
этой главе мы не будем знакомить
вас с новым картонным механизмом, а рассмотрим носимые устройства – электронные устройства, которые носят на теле или одежде.
Возможно, они даже есть на вас прямо сейчас – умные часы или фитнестрекер считаются носимыми устройствами, потому что они анализируют
сигналы вашего тела и окружающей
среды и могут отображать их на экране. Модная светящаяся обувь также
является носимым устройством, как
и гарнитуры виртуальной реальности.
Мы сделаем свои носимые устройства, но в стиле супергероев!
Сначала изготовим маску с движущимися частями, чтобы скрыть свою
тайную личность. Затем мы построим компактный щит, приводимый
в действие двигателем. Вы узнаете,
как использовать micro:bit, чтобы
активизировать светодиодную перчатку, и, наконец, научите ИИ работать с тренировочной мишенью.
Чего же вы ждете? Пришло время
брать ситуацию в свои руки!
НАШИ ЦЕЛИ:
•• создать подвижные маски;
•• создать вращающийся
наручный щит;
•• закодировать micro:bit, чтобы
включать светодиодную
перчатку;
•• использовать ИИ для работы
с тренировочной мишенью.
Глава 7. Костюмы супергероя
235
МЕХАНИКА
Сигнал тревоги
Светодиодная
маска
Маска с подвижной челюстью
и клыками
Гипнотическая
спираль
Маска с подвижной
челюстью
Силовая перчатка
Посох силы
ИДЕИ ДЛЯ МАСКИ
И ЩИТОВ
Мы добавили несколько шаблонов
для вашего костюма в библиотеку
трафаретов. Это всего лишь рекомендации, которые помогут вам
приступить к разработке костюма.
Возможно, вам придется сделать их
немного больше или меньше, или
изменить их очертания, чтобы они
соответствовали вашему лицу.
236 Создаем умных роботов
Маска для глаз
Наручный щит
Хотя эти элементы костюма можно
носить отдельно, они также пригодятся в следующих разделах в ка
честве платформы для создания новых проектов.
1. Обведите, приклейте и вырежьте трафареты маски и наручных
пластин (наручей) из тонкого
картона так, чтобы они могли
сгибаться по форме вашего лица
и запястий.
Нам понадобятся:
••
••
••
••
••
••
••
трафареты*;
тонкий картон;
клей;
ножницы;
дырокол;
веревка или резинки;
резинка.
1
Маска
2
Проделайте отверстия в маске
и закрепите ее на лице с помощью
шнурков или резинки (рис. 1 ).
Наруч
* Загрузите полноразмерный PDFфайл на сайте makeairobots.com/
chapter7.
2. Пропустите резинку через прорези наруча так, чтобы он плотно
обхватывал запястье. Закрепите
резинку на наруче горячим клеем
или скрепками; резинка должна
достаточно растягиваться, чтобы
ее можно было снять и надеть обратно (рис. 2 ).
Теперь у вас есть с чего начать, чтобы
стать супергероем!
Глава 7. Костюмы супергероя
237
МАСКА
С ПОДВИЖНОЙ
ЧЕЛЮСТЬЮ
Маска для глаз пригодится, чтобы
скрыть вашу личность, но вам может
потребоваться более выразительный
вид. Опираясь на знания о шарнирах
и эластичных резиновых лентах, мы
можем создать маску, которая не
только скроет все лицо, но и будет
иметь движущиеся части!
В этом проекте вы возьмете несколько листов тонкого картона и сделаете
две части маски, которая будет закрывать большую часть вашей головы: одна часть будет закрывать голову от волос до верхней губы, а другая
закроет большую часть вашей головы в области подбородка и челюсти.
Для этого проекта идеально подойдут одна или две большие коробки
из-под хлопьев.
Нам понадобятся:
•• трафареты*;
•• тонкий картон
(коробка от
хлопьев);
•• ножницы;
•• резиновые ленты;
•• латунные
крепления;
•• деревянная
палочка или
палочки для еды.
* Загрузите полноразмерный PDF-файл на
сайте makeairobots.
com/chapter7.
238 Создаем умных роботов
Поворотное
отверстие
2
3
4
Поворотное
отверстие
Разрежьте по всем черным линиям.
Используйте красные линии
в качестве ориентира, где можно
растянуть и склеить клапаны
1
Поворотное
отверстие
Подвижная маска – лицо
Поворотное
отверстие
Подвижная маска – челюсть
1
2
3
4
1. Скопируйте на картон подвижную маску – лицо из библиотеки
трафаретов. Сплошные черные
линии показывают, где разрезать, а красные пунктирные линии – ориентиры для склеивания.
(Мы объясним подробнее, когда
доберемся до них.)
Используйте ранее созданную
маску, чтобы правильно расположить отверстия для глаз и носа
(рис. 1 ).
2. Вырезав отверстия для глаз и но
са, разрежьте две черные линии,
идущие вертикально вниз по
лбу, – это поможет отрегулировать изгиб маски в соответствии
с изгибом вашей головы (рис. 2 ).
3. Слегка согните одну сторону
внутрь, пока она не совпадет
с пунктирными линиями. (Возможно, вам придется сделать более короткие или длинные надрезы и изгибы, чтобы подогнать
изгиб под себя.) С помощью термоклея закрепите ее на месте.
Повторите то же самое с другой
стороной (рис. 3 ).
4. С помощью термоклея закрепите другую сторону, чтобы верхняя
часть маски изогнулась (рис. 4 ).
5. Используйте ту же технику изгиба на линиях разреза с левой
и правой сторон. Сделайте разрез
по сплошной черной линии и согните верхнюю половину вниз
Глава 7. Костюмы супергероя
239
5
6
7
8
над разрезом. Отрегулируйте раз
резы и изгибы и приклейте их по
пунктирной линии (рис. 5 ).
6. Используйте термоклей, чтобы
закрепить изгибы (рис. 6 ).
7. Скопируйте трафарет челюсти
подвижной маски на другой кусок тонкого картона, достаточно
широкий, чтобы закрыть ваше
лицо от уха до уха, и достаточно
высокий, чтобы закрыть его от
нижней губы до нижней части
подбородка.
Сделайте разрезы по черным линиям и согните стороны к пунк
тирным линиям, как вы это делали раньше, образуя изгиб, который
заходит под подбородок (рис. 7 ).
240 Создаем умных роботов
8. В области чуть ниже уха будет
расположен шарнир нижней челюсти, поэтому убедитесь, что
ваша заготовка челюсти достаточно широка, чтобы доставать
от края до края маски (рис. 8 ).
9. Когда вы подгоните части лица
и челюсти так, чтобы они изгибались по форме вашей головы, соедините их между собой
(рис. 9 ).
Используя дырокол и эти фотографии в качестве руководства,
проделайте несколько отверстий
на маске там, где на шаблоне есть
метка X. Вам понадобятся следующие отверстия:
9
СБОРКА МАСКИ
Верхняя часть
• П
о одному отверстию с обеих сторон в нижнем углу для шарниров.
•
Одно отверстие с левой стороны,
рядом с тем местом, где вы только
что сделали отверстие для шарнира, для крепления резиновой
ленты.
Нижняя часть
• П
о одному отверстию с каждой
стороны в задней части челюсти
для шарнира.
• Д
ва отверстия на расстоянии примерно 2,5 см друг от друга на левой
стороне маски, чтобы натянуть резинку.
• О
дно отверстие для крепления резиновой ленты с левой стороны,
рядом с отверстием для шарнира.
Глава 7. Костюмы супергероя
241
10
11
12
13
8. Совместите отверстия для шарнира и соедините две детали
маски латунными застежками
(рис. 10 ).
маски. Кусок деревянной палочки предотвратит выскальзывание резиновой ленты через отверстие (рис. 12 ).
9. Возьмите небольшой кусок деревянной палочки и привяжите
к нему резинку (рис. 11 ).
11. В
озьмите резинку изнутри верхней части маски и проденьте ее
в отверстие 4, затем проденьте
обратно внутрь через отверстие 3,
как будто вы шьете (рис. 13 ).
10. Проденьте резинку снаружи в отверстие на левой щеке верхней
242 Создаем умных роботов
12. Н аконец, вытяните резиновую
ленту обратно из углового отверстия нижней челюсти, закрепив
ее снаружи другой деревянной
палочкой (рис. 14 ).
Для точной подгонки маски может
понадобиться примерка, но когда
вы широко открываете рот, это движение должно толкать нижнюю челюсть маски вниз. При этом резинка
растянется и потянет нижнюю челюсть обратно вверх, когда вы закроете рот. Резинки на одной стороне маски должно быть достаточно,
чтобы закрыть челюсть.
14
ЧТО ДАЛЬШЕ?
Теперь вы можете весело провести
время, украсив маску так, чтобы она
соответствовала вашему супергеройскому образу. Если вы животное, добавьте зубы или клыки. Если вы робот, наклейте алюминиевую фольгу,
чтобы придать маске металлический
блеск. Или просто используйте художественные принадлежности, чтобы
добавить кристаллы, блестки и различные символы, такие как молнии
и звезды!
Глава 7. Костюмы супергероя
243
ЭЛЕКТРОНИКА
НАРУЧНЫЙ ЩИТ
Теперь у вас есть маска, скрывающая
вашу таинственную личность, и пришло время создать несколько крутых
супергеройских приспособлений. Но
супергероям нужно быть готовыми
к действию, а таскать с собой большие аксессуары неудобно, и они мешают, когда не нужны. Вот где проявляется главное свойство носимых
устройств – носить их на своем теле
намного удобнее!
244 Создаем умных роботов
Основная задача героя – помогать
нуждающимся, и зачастую это означает защиту людей (и себя) от вреда.
Наручный щит делает именно это: он
раскрывается, когда вам нужно блокировать плазменные разряды или
ионные импульсы, и удобно складывается, когда он не нужен.
Нам понадобятся:
••
••
••
••
••
••
••
••
••
••
••
••
••
••
••
••
трафарет*;
картон;
клей;
ножницы;
дырокол;
палочки от мороженого;
термоклей;
деревянная палочка или
палочки для еды;
нить;
серводвигатель непрерывного
действия;
большая качалка
сервопривода с винтом;
сервотестер;
провода;
батарея;
пластиковая крышка от
бутылки с водой;
сделанный ранее наруч.
1. Распечатайте, обведите, склейте
и вырежьте восемь секций щита.
С помощью дырокола проделайте
отверстие возле кончика каждой
детали. Старайтесь сделать так,
чтобы все они находились в одном и том же месте (рис. 15 ).
2. Приклейте палочку от мороженого к правому краю всех восьми секций щита. Возможно, вам
придется обрезать их по размеру
(рис. 16 ).
15
Секция щита (8)
16
* Загрузите полноразмерный PDFфайл на сайте makeairobots.com/
chapter7.
Глава 7. Костюмы супергероя
245
3. Повернув палочку от мороженого
вверх, вставьте деревянный стержень в одну секцию щита и закрепите ее горячим клеем. Она
будет действовать как ось и шарнир (рис. 17 ).
4. Наденьте остальные семь секций
щита на ось, чтобы они свободно вращались на ней. Разложите
их так, чтобы каждая часть перекрывала палочку для мороженого
на части, расположенной непосредственно под ней (рис. 18 ).
17
5. Р
азрежьте веревку на кусочки
размером примерно 6,5 см.
Начиная с нижней секции щита
(той, которая приклеена к оси),
приклейте конец веревки к левому краю детали, который находится с противоположной стороны от палочки для мороженого.
Плотно натяните веревку поперек и поверх следующей секции
щита. Закрепите ее термоклеем
(рис. 19 ).
18
19
246 Создаем умных роботов
6. Повторяйте этот процесс, при
клеив ая веревку между каждой
секцией щита, пока все восемь
секций не будут соединены
(рис. 20 ).
7. Попросите взрослого проделать
в центре крышки пластиковой
бутылки небольшое отверстие,
достаточно широкое, чтобы
в него вошла деревянная ось.
20
Наденьте пластиковую крышку
бутылки на деревянную ось, пока
она почти не коснется верхней
секции щита.
Прикрепите крышку к деревянной оси с помощью термоклея,
следя за тем, чтобы клей не попал
между крышкой бутылки и секцией щита (рис. 21 ).
Крышка бутылки образует емкость, которую можно заполнить
термоклеем, чтобы обеспечить
прочное соединение двух частей.
21
8. Отрежьте лишнюю ось над клеем в крышке от пластиковой бутылки.
Если вы повернете верхнюю секцию щита, то увидите, как секции
щита развернутся в полный ручной щит (рис. 22 )!
9. Привинтите самую большую качалку к сервоприводу непрерывного действия, чтобы прочно закрепить ее на валу.
22
Глава 7. Костюмы супергероя
247
Приклейте края качалки к крышке
бутылки. Не жалейте клей, но всегда
следите, чтобы он не попал внутрь
сервопривода.
Подсоедините и закрепите электрические провода, сервотестер и батарею и используйте сервотестер, чтобы
отрегулировать скорость и движение
сервопривода для плавного открывания щита. Будьте осторожны, не раскручивайте двигатель слишком сильно с помощью сервотестера, иначе вы
оторвете кусочки веревок от секций
щита, и вам придется их переклеивать.
После регулировки механизма прикрепите сервопривод, сервотестер
и батарею на сделанный ранее картонный наруч. Последний шаг – приклеить деревянный стержень или
стопку кусочков картона между нижней секцией щита и наручем, чтобы
нижняя секция щита не поворачивалась следом за другими секциями.
Теперь, когда ваш ручной щит работает, займитесь его внешним видом.
Накройте батарею и другие компоненты плотной бумагой или тонким
картоном и раскрасьте их в тон вашего костюма!
Связка между наручем
и ручным щитом
Наруч
248 Создаем умных роботов
Заметки:
Глава 7. Костюмы супергероя
249
MICRO:BIT
СВЕТОДИОДНАЯ
ПЕРЧАТКА
Давайте сделаем наши костюмы понастоящему яркими! В следующем
проекте задействовано наше любимое дополнение к micro:bit – светодиодное кольцо NeoPixel от Adafruit.
(Модули NeoPixel бывают разных
форм, например круги и даже сетка,
но в блоках кода для простоты они
называются strip – лента, потому что
раньше были только светодиодные
ленты.)
Эти модули светодиодов устроены
немного сложнее, чем одиночные
светодиоды, которые мы использовали. Главное их отличие в том, что
micro:bit может управлять светодиодами по отдельности. Это означает,
что мы можем не только использовать наш microb:bit для управления
цветом и яркостью, но также заставить цвета мигать по определенно250 Создаем умных роботов
Нам понадобятся:
•• тонкая хлопчатобумажная
или шерстяная перчатка;
•• кольцо NeoPixel;
•• скотч;
•• три провода типа
«крокодил-вилка»;
•• компьютер с доступом
в интернет.
Начальный и готовый код micro:bit
можно найти на сайте makeairobots.
com/chapter7.
му шаблону и в определенное время,
чтобы создать анимированные огни.
Лентам NeoPixel для работы требуется напряжение 5 В, поэтому вам
понадобится батарея, способная
обеспечить такое напряжение. (Двух
батареек типа АА, входящих в комплект поставки micro:bit, будет недостаточно, но четырех хватит.)
БИБЛИОТЕКА КОДА
A
B
C
D
E
F
G
H
I
J
K
Глава 7. Костюмы супергероя
251
L
M
N
O
P
Q
R
S
252 Создаем умных роботов
Первое носимое устройство NeoPi
xel, которое мы создадим, – это перчатка, которую можно носить вмес
те с наручем. Она будет оснащена
кольцом NeoPixel на ладони, поэтому ткань должна быть достаточно
тонкой и с редким плетением, чтобы
свет мог проникать сквозь нее. Готовая перчатка будет выглядеть так,
как будто она генерирует импульсные разряды всякий раз, когда вы
поднимаете руку, – за это отвечает
micro:bit.
1. П
риклейте кольцо NeoPixel на
ладонь перчатки так, чтобы светодиоды были направлены наружу. Тогда при включении их будет видно сквозь ткань перчатки
(рис. 23 ).
23
Прикрепите плату micro:bit
к внешней стороне перчатки, расположив ее вбок так, чтобы штыревые разъемы были обращены
к большому пальцу. Это важно,
поскольку мы собираемся использовать наклон micro:bit для включения светодиодов (рис. 24 ).
2. Вам нужно соединить три провода между кольцом NeoPixel
и micro:bit, как вы это делали
с сервоприводом в главе 6: один
положительный провод питания
3 В, один отрицательный провод
«земли» и один сигнальный провод для связи с micro:bit.
24
Зажим «крокодил» присоедините к плате micro:bit, а штырек на
другом конце должен входить
в разъем кольца NeoPixel. (У кольца NeoPixel есть два разъема, поэтому прочитайте инструкцию
«Подключение NeoPixel» на боковой панели!)
Глава 7. Костюмы супергероя
253
ПОДКЛЮЧЕНИЕ
NEOPIXEL
Цифровой выход.
Подключается
к другой ленте
NeoPixel
Цифровой вход.
Подключается
к micro:bit
• Красный провод подключается к контакту 3 В (питание)
micro:bit.
• Белый провод подключается к контакту GND (земля)
micro:bit.
• Зеленый провод подключается
к контактам 0–2 micro:bit (сигнал).
Кольцо NeoPixel должно иметь два
немного разных разъема. Найдите сзади крошечную надпись Din
(что означает «цифровой вход»
или информацию, поступающую
в кольцо NeoPixel) – эти контакты
нужны для подключения к вашему micro:bit.
Концы ваших проводов должны
плотно входить в отверстия разъема кольца NeoPixel.
Теперь приступим к кодированию.
Перейдите на сайт MakeCode и создайте новый проект. Для этого проекта мы сделаем следующее.
1. В ящике Advanced нажмите на
Extension и выберите изображение с надписью NeoPixels, чтобы автоматически добавить это
расширение в вашу библиотеку
MakeCode. Теперь вы найдете новый ящик NeoPixel рядом с другими ящиками (рис. 25 ).
(Хотя другой разъем NeoPixel не
используется в этом проекте, его
можно использовать для подключения второго кольца. Плата
micro:bit может легко управлять
двумя кольцами NeoPixel.)
25
254 Создаем умных роботов
26
2. Прежде чем micro:bit сможет
взаимодействовать с кольцом
NeoPixel, нам нужно активировать переменную. Из ящика
NeoPixel перетащите блок Set
Strip to (NeoPixel at Pin (P0) with
(24) LEDs as (RGB (GRB Format)) A
в блок On Start.
В раскрывающемся меню Pin этого блока выберите контакт платы, к которому вы подключили
зеленый провод, чтобы micro:bit
знал, какой контакт подключен
к кольцу NeoPixel.
Подсчитайте количество светодиодов на кольце NeoPixel и введите это число в поле, чтобы
micro:bit знал, сколько светодио
дов доступно. В нашем случае
кольцо содержит 16 светодиодов
(рис. 26 ).
3. В ящике Input выберите блок On
(Shake) B , который позволяет
датчику акселерометра micro:bit
обнаруживать движение. Используйте раскрывающееся меню
блока, чтобы изменить ввод
с Shake на Tilt Left (наклон влево),
чтобы micro:bit мог определять,
когда вы поднимаете ладонь.
27
Из ящика NeoPixel возьмите блок
Strip Show Color (Red) C (показать
красный цвет) и поместите его
внутрь блока On (Tilt Left) B или
On (Tilt Right) B , если перчатка
на другой руке). Установите цвет
в блоке Strip Show Color (Red) C по
своему усмотрению (рис. 27 ).
Загрузите и протестируйте свой
код. Светодиоды кольца NeoPixel
должны загораться при наклоне
micro:bit.
Глава 7. Костюмы супергероя
255
4. Теперь осталось написать код
выключения света, когда ваша
ладонь не поднята. Мы могли
бы использовать другой блок On
(Shake) B и написать код для выключения света, но есть более
простой способ легко включать
и выключать свет.
28
В ящике Logic возьмите If (True)
Then D и поместите в блок Fo
rever.
В ящике Input найдите шести
угольник Is (Shake) Gesture E
(жест «встряхивание») и добавьте
его вместо элемента True в блок If
(True) Then D .
Наконец, используйте раскрывающееся меню шестиугольника Is
(Shake) Gesture E , чтобы изменить
параметр (Shake) на (Tilt Left).
У вас должен получиться модифицированный блок On (Tilt Left)
B , который постоянно проверяет
оператор If, чтобы активировать
свет, а не делает это один раз.
Это более удобный способ включения и выключения света, поэтому переместите блок (Strip)
Show Color (Red) C из прежнего
блока On (Tilt Left) B в этот новый модифицированный блок If
D и удалите ненужный блок On
(Tilt Left) B (рис. 28 ).
256 Создаем умных роботов
29
5. Теперь нам нужно показать
micro:bit, как выключить свет!
Нажмите на знак + внизу оператора If, чтобы добавить оператор
Else. Этот оператор по сути говорит: «Если micro:bit находится в любом другом положении,
кроме наклона влево, выполните
этот другой код» (рис. 29 ).
Из ящика NeoPixel перетащите
блок (Strip) Clear F и блок (Strip)
Show G в оператор Else.
Блок (Strip) Clear F передает
в NeoPixel команду выключить
свет, но записывает ее во внут
реннюю память кольца. Чтобы
показать эту информацию на
кольце, вам необходимо добавить блок (Strip) Show G после
блока (Strip) Clear F .
Загрузите код и посмотрите,
включится ли ваша светодиодная
перчатка одним жестом!
Когда ваша светодиодная перчатка
включается при поднятой руке – это
круто. Но как сделать эффект еще
круче? В большинстве фильмов про
супергероев излучение не включается сразу, а постепенно становится
ярче. Мы тоже можем так сделать!
Все, что нам нужно, – это создать переменную для управления яркостью
и использовать цикл для медленного
увеличения этой переменной – точно
так же, как вы уже делали в главе 5!
1. Из ящика Loops возьмите блок
Repeat (4) Times H и поместите
его чуть ниже блока (Strip) Show
Color (Red) C (который включает
цвет кольца NeoPixel в операторе
If). Задайте количество повторов
цикла 255 – это максимальная
яркость, с которой может светить
NeoPixel (рис. 30 ).
2. В ящике Variable создайте новую переменную под названием
Bright (яркость).
30
31
Нажмите на ящик NeoPixel, и чуть
ниже него вы увидите новый
ящик под названием More (больше), где вы можете найти еще
больше блоков кода NeoPixel.
Из этого нового ящика More перетащите блок (Strip) Set Brightness
(255) J и поместите его в качест
ве первой строки внутри цикла.
Из ящика Variable возьмите элемент Bright, чтобы заменить (255)
в блоке (Strip) Set Brightness (255)
J , который вы только что добавили в цикл (рис. 31 ).
Нам нужно, чтобы эта переменная Bright всегда начиналась с 0,
когда мы поднимаем руку, поэто
му перетащите блок Set (Bright)
to (0) I из ящика Variable и поместите его чуть выше места начала цикла.
Глава 7. Костюмы супергероя
257
3. Теперь нам просто нужно медленно увеличивать яркость. Из
ящика Variable перетащите блок
Change (Bright) by (1) K (изменить
яркость на 1) и поместите его
в качестве второй строки внутри
цикла.
Из ящика NeoPixel перетащите
на место третьей строки в цикле
блок (Strip) Show G , который скомандует кольцу NeoPixel отобра
зить обновленные настройки.
Добавьте блок Pause из ящика
Basic в качестве четвертой строки
в цикле повтора и задайте паузу
в диапазоне от 10 до 100 мс, чтобы яркость увеличивалась медленнее (рис. 32 ).
Вот и все! Загрузите код и наденьте
перчатку. Посмотрите, устраивает
ли вас результат. Помните, что вы
всегда можете вернуться назад и изменить скорость и цвет; только не забудьте заново загрузить код.
258 Создаем умных роботов
32
Заметки:
Глава 7. Костюмы супергероя
259
ИИ
Если вы хотите стать героем, которого заслуживает ваш город, вам – как
таинственному борцу с преступностью – придется действовать быстро:
обладателю светодиодной перчатки
нужна быстрая реакция, чтобы победить плохих парней. И так же, как
в математике, баскетболе и выпечке,
практика – это ключ к оттачиванию
навыков супергероя, поэтому мы собираемся создать тренировочную
игру с мишенью, чтобы отточить
ваши навыки.
Мы запрограммируем кольцо Neo
Pixel так, чтобы на нем включался
случайный сегмент, и если вы успее
те показать на него рукой, свет станет зеленым, и вы заработаете очко!
260 Создаем умных роботов
(Но это всего лишь тренировка, вам
не нужно надевать светодиодную
перчатку, особенно если у вас есть
только одна плата micro:bit и кольцо
NeoPixel и вам нужно использовать
их для изготовления тренажера.)
Кольца NeoPixel имеют 16 маленьких
светодиодов, поэтому в качестве мишени мы будем зажигать один из четырех квадрантов: нижний правый,
верхний правый, верхний левый
и нижний левый. Когда мы обучаем
ИИ распознавать, указываете ли вы
на цель, нам достаточно написать
код, проверяющий, совпадают ли два
направления.
Глядя на кольцо NeoPixel, вы можете
спросить: «Где начало круга?» Если
вы направите провода прямо вниз,
первый светодиод окажется в нижней части кольца, и отсчет будет направлен против часовой стрелки. Вот
почему мы начнем с нижнего правого квадранта (рис. 33 ).
Обратите внимание, что первый светодиод в кольце NeoPixel помечен
как 0, а не как 1 – во многих языках
программирования отсчет начинается с нуля. Помните об этом, выбирая, какие светодиоды вы хотите
включить.
Квадрант 3
33
Квадрант 2
Квадрант 4
Квадрант 1
Мы сделали картонный дисплей, на
который прикрепили кольцевую мишень NeoPixel для тренировки, но вы
также можете повесить ее на крючок
или прикрепить скотчем к подставке
(рис. 34 ).
ОБУЧЕНИЕ
Теперь нужно научить ИИ распо
знавать направление, в котором указывает ваша рука. Давайте начнем
с обучения проекта простого зрительного распознавания ИИ, чтобы
он смог определять, на какой квад
рант мы указываем.
34
Глава 7. Костюмы супергероя
261
1. Перейдите на сайт Teachable Machine и создайте новый проект
Image Project. Настройте и обучите пять классов в том же порядке,
в котором они будут отображаться на кольце NeoPixel, чтобы их
было легко запомнить. Эти классы следующие:
• StandingStill (фоновый класс);
• BottomRight (нижний правый);
• TopRight (верхний правый);
• TopLeft (верхний левый);
• BottomLeft (нижний левый).
2. Подготовьте набор своих фотографий для каждого класса, указывая в нужное место мишени.
Сделайте много фотографий,
чтобы у ИИ было достаточно данных для принятия решений при
быстром движении – мы использовали около 200 снимков в каждой категории! Старайтесь слегка
перемещаться между снимками,
чтобы они немного различались.
Убедитесь, что ваша мишень хорошо видна на фотографиях. Не
забудьте заполнить класс StandingStill фотографиями, на которых вы никуда не показываете
пальцем (рис. 35 )!
3. Повторите этот шаг для каждого
класса, а когда закончите, обучите ИИ и проверьте его. Вам нужно, чтобы этот ИИ был немного
умнее и быстрее, чем предыдущие, которые вы обучили, поэтому вам, возможно, придется добавить еще больше фотографий,
чтобы он работал быстро и точно
(рис. 36 ).
262 Создаем умных роботов
35
36
Когда вы убедитесь, что ИИ быстро
распознает ваши движения, экспортируйте модель ИИ и скопируйте
ссылку на нее.
КОД
Создание собственного тренажера
с мишенью может показаться сложным проектом, но на самом деле
нужно решить всего три задачи:
•• настройка квадрантов: разделите кольцо NeoPixel на четыре
части;
•• рандомизатор: пусть micro:bit
выбирает случайный квадрант
каждые несколько секунд и включает в нем светодиоды;
•• кодирование ИИ: решите, что
произойдет, когда ИИ увидит, что
вы правильно указали на светящийся квадрант NeoPixel.
Настройка квадрантов
Мы начнем с новой копии нашего
стартового кода ИИ (стр. 143), поэтому создайте новый проект и добавьте расширение NeoPixels, как мы это
сделали в последнем разделе.
1. Из ящика NeoPixel перетащите
блок Set (Strip) to (NeoPixel at Pin
(P0) with (24) LEDs as (RGB (GRB
Format)) A в блок Forever, чтобы
подготовить NeoPixel к работе
с micro:bit.
Обязательно измените количест
во светодиодов на 16, чтобы оно
соответствовало вашему кольцу
NeoPixel (рис. 37 ).
37
38
2. Из ящика NeoPixel вытащите блок
Set (Range) to ((Strip) Range from
(0) with (4) LEDs L и поместите его
во вторую строку в блоке On Start
под кодом настойки светодиодов.
Этот блок просто настраивает
переменную для управления заданным сегментом светодиодов
на кольце NeoPixel.
Первое числовое поле сообщает, с какого номера светодиода
начать, а второе числовое поле
определяет, сколько светодиодов
в группе.
Поскольку отсчет начинается с 0,
а не с 1, введите в первое поле 0,
чтобы начать с первого светодио
да, а во второе поле введите 4,
чтобы группа содержала первые
четыре светодиода (рис. 38 ).
Глава 7. Костюмы супергероя
263
Эта переменная определяет первый из наших четырех квадрантов. Теперь нам осталось настроить остальные три квадранта.
39
3. Возьмите еще один блок Set
(Range) to (Strip) Range from (0)
with (4) LEDs L и поместите его
под другим блоком L. Вы заметите, что каждый раз, когда вы добавляете новый блок L, он автоматически переименовывается
в следующий по порядку, в данном случае в Range2.
40
Взгляните еще раз на фотографию с нумерацией кольца
NeoPixel и посмотрите, какой
номер у пятого светодиода. Поскольку мы считаем от нуля, у пятого светодиода на самом деле
номер 4. Введите его в поле для
первого числа (начальный светодиод квадранта), а второе число
установите равным 4 (количество
светодиодов в группе) (рис. 39 ).
4. Остались еще два квадранта, поэтому добавьте еще два блока Set
(Range) to (Strip) Range from (0)
with (4) LEDs L и измените их номера по такому же принципу, как
и два предыдущих (рис. 40 ).
Первая задача решена!
264 Создаем умных роботов
41
Рандомизатор
Вторая задача требует, чтобы код
случайно выбирал один из квадрантов каждые несколько секунд. Мы
можем легко сделать это, используя
только переменную и блок генератора случайных чисел (рандомизатор).
1. Из ящика Loops перетащите блок
Every (500) ms M и введите новое число, от которого зависит,
как долго будет видна мишень;
в нашем примере мы выбрали
5000 мс (5 секунд) – вы можете
изменить это число, если хотите сделать свою игру проще или
сложнее (рис. 41 ).
2. Н
ажмите на ящик Variable и создайте новую переменную под названием Target (мишень). Перетащите блок Set (Target) to (0) I
в блок Every (5000) ms M .
Откройте ящик Math, найдите
элемент Pick Random (0) to (10) N
(взять случайное число) и помес
тите его в числовое поле в только
что размещенном блоке Set (Target) to (0). Вы видите эти два поля
с числами в конце элемента Pick
Random (0) to (10) N ? Измените
значения на 1 и 4. Теперь каждый
раз будет случайно выбран один
из четырех квадрантов (рис. 42 ).
3. Сейчас нам просто нужно указать
кольцу NeoPixel отобразить выбранный квадрант. Из ящика Lo
gic возьмите оператор If D и поместите его под блок случайных
чисел. Затем замените шести
угольник (True) шестиугольником
(0) = (0) O из ящика Logic.
Если мы перетащим элемент
переменной Target из ящика Variable и поместим его в первое по
ле шестиугольника (0) = (0) O ,
а вместо второго 0 впишем 1,
нам просто нужно будет приказать кольцу NeoPixel включить
соответствующий квадрант. Вот
тут-то и пригодятся переменные
Range, которые мы создали ранее, – с помощью оператора If D
мы можем связать их вместе.
42
43
Вам просто нужно добавить блок
(Strip) Show Color (Red) C из ящика
NeoPixel внутри этого оператора
If D . Нажмите Strip и используйте раскрывающееся меню, чтобы изменить его на переменную
Range (первый квадрант). Теперь,
если выпадет случайное число 1,
micro:bit поймет, что нужно зажечь первый квадрант кольца
NeoPixel (рис. 43 ).
Глава 7. Костюмы супергероя
265
44
4. Настройте еще три аналогичных
оператора If D , чтобы зажечь
остальные три группы светодио
дов. Нажмите символ +, чтобы
создать больше ветвей оператора If D , а затем нажмите правой
кнопкой мыши и продублируйте
шестиугольник Target = 1, помес
тите по одной копии в каждую
ветвь – просто измените 1 на 2, 3
и 4 (рис. 44 ).
5. Внутри каждой из этих новых
ветвей поместите новый блок
(Strip) Show Color (Red) C . Не забудьте еще раз нажать Strip и задать правильную переменную
(Range2 для Target = 2, Range3 для
Target = 3, Range4 для Target = 4)
(рис. 45 ).
45
46
266 Создаем умных роботов
6. Наконец, нам нужно погасить
старый сегмент, прежде чем
включить новый, поэтому возьмите блоки Strip Clear F и Strip
Show G из ящика NeoPixel и поместите их в начало блока Every
(5000) ms M (рис. 46 ).
Вы выполнили вторую задачу! Теперь вы можете протестировать этот
код, хотя он не будет делать ничего,
кроме переключения группы светодиодов каждые несколько секунд.
Код для ИИ
Теперь нам просто нужно добавить
код, который слушает сообщения ИИ.
47
1. Начнем с класса BottomRight, потому что это также первый квад
рант кольца NeoPixel.
Нам нужно проверить, совпадает
ли предсказание ИИ с активным
квадрантом. Возьмите шести
угольник ( ) and ( ) P из ящика
Logic и поместите его в оператор
If D , который находится внутри
кода ИИ. Это нужно для создания
кода, проверяющего, выполняется ли условие SerialData = BottomRight и Target = 1.
Перетащите шестиугольники ( )
and ( ) P и 0 = 0 O из ящика Logic
и возьмите элементы переменных SerialData и Target, чтобы заполнить блоки (рис. 47 ).
Помните, что для этой ветви оператора If нам нужны условия SerialData = BottomRight и Target = 1.
2. Итак, что же должен сделать проект, если вы правильно указали
на мишень? Это зависит от вас!
Вы изучили достаточно много
мощных приемов кодирования,
чтобы реализовать самые невероятные идеи.
В нашем примере мы использовали блок (Strip) Show Color (Green)
C , чтобы все кольцо светило зеле-
48
49
ным светом, когда вы правильно
указали на мишень. Если вы хотите превратить тренажер в игру,
создайте переменную под названием Score и используйте блок
Change (Score) by (1) K (рис. 48 ).
3. Повторите действия для каждого
класса, который вы обучали в ИИ,
обращая пристальное внимание
не только на то, чтобы имена
классов совпадали, но и на то,
что вы используете правильную
Глава 7. Костюмы супергероя
267
переменную Target, соответствующую группе светодиодов на
кольце (рис. 49 на предыдущей
странице):
нуться и заново обучить свою модель, добавив еще больше фотографий, чтобы у нее было больше
данных для обучения.
• BottomRight – Targetl;
• TopRight – Target2;
• TopLeft – Target3;
• BottomLeft – Target4.
И помните, это всего лишь основа
игры. Мы рекомендуем вам взять
этот код за основу и модифицировать его для любых других проектов,
которые вы только сможете придумать.
Теперь осталось убедиться, что кольцо NeoPixel надежно подключено
к вашему micro:bit и получает нужное напряжение питания, – вернитесь к предыдущему разделу этой
главы, если вам нужна дополнительная помощь, загрузите код и начинайте тренировку.
ЗАПУСК ПРОЕКТА
Настал момент, которого вы ждали.
Установите кольцо NeoPixel перед
экраном компьютера, чтобы вы могли его видеть, воспользуйтесь сайтом
Make: AI Robots, чтобы подключить
свой micro:bit, и вставьте ссылку на
сайт Teachable Machine, которую вы
скопировали в разделе «Обучение».
Теперь вы должны увидеть, как зажигаются светодиоды на кольце
NeoPixel. Двигайте рукой в направлении мишени как можно быстрее.
Если ИИ успеет распознать правильное движение до изменения сегмента, кольцо NeoPixel станет зеленым,
и вы добавите очко к своему счету,
прежде чем micro:bit покажет следующий сегмент.
Если у вашего ИИ возникают трудности, попробуйте демонстрировать
ему состояние «без жестов» между
попытками. Вы всегда можете вер268 Создаем умных роботов
ЧТО ДАЛЬШЕ?
Теперь, когда у вас есть базовое –
и продвинутое! – снаряжение супергероя, вы можете улучшать свои
изделия, используя полученные
навыки в механике и электронике,
а также придумывать новые способы использования вашего micro:bit
и ИИ. Вот несколько дополнительных
идей для начала.
Сигнал тревоги
Гипнотическая
спираль
Посох силы
Используйте свои знания о проводниках из медной ленты, чтобы
добавить источники света к вашей
маске или наручам. Соберите элект
рическую цепь и спрячьте светодиоды в корпусе из папье-маше. Добавьте скрытую кнопку, чтобы тайком
включить костюм супергероя и удивить своих друзей!
Или, если вашей тайной личности
супергероя нужен какой-то посох
для активации сверхспособностей,
вы можете использовать что угодно,
от светодиодов до моторов или даже
зуммеров и динамиков, чтобы сделать уникальный аксессуар, который
будет только у вас.
Глава 7. Костюмы супергероя
269
50
Если вы используете медную ленту
для активации посоха силы, вот небольшой трюк, который гарантирует,
что он послушается только вас: возьмите полоску медной ленты и оберните ее вокруг пальца, как кольцо.
Теперь, если вы оставите небольшой
разрыв в цепи медной ленты на рукоятке жезла, ваше кольцо замкнет
цепь, доказывая, что только вы обладаете силой активировать волшебный артефакт!
Ищете интересные идеи для кодирования? Ваш наручный щит можно легко активировать, наклонив
micro:bit вверх, как и светодиодную
перчатку, или с помощью любого
другого датчика micro:bit.
Есть датчик, который мы еще не использовали, – это магнитометр. Он
дает micro:bit возможность обнаруживать изменения магнитных полей.
Блок активации этого датчика находится в разделе More ящика Input
(рис. 50 ).
Эксперименты с магнитометром
micro:bit очень увлекательны, особенно в сочетании со светодиодным
270 Создаем умных роботов
51
графическим экраном. Найдите блок
Magnetic Force (магнитная сила), нажмите на маленький символ (X)
и выберите параметр Strength (сила)
в раскрывающемся меню – это позволит micro:bit обнаруживать магнитное поле во всех направлениях.
Показания датчика будут постепенно
увеличиваться по мере приближения
магнита к micro:bit, что указывает на
растущую силу магнитного поля.
Если вы сделали светодиодную перчатку из этой главы, спрячьте магнит
в другой перчатке. Теперь вы можете
поднести другую перчатку к вашему micro:bit, чтобы «перезарядить»
светодиодную перчатку, изменяя ее
цвет или яркость в зависимости от
силы магнита (рис. 51 ).
Или, может быть, вы просто смотрите на все эти блоки кода NeoPixel
и задаетесь вопросом, что еще вы
можете сделать? Если вы хотите изменить цвета, есть множество блоков, которые стоит изучить. Один из
наших любимых – блок (Strip) Show
Rainbow from (1) to (360) R , который
покажет вам все цвета радуги на
кольце NeoPixel (рис. 52 ).
52
Есть даже способ заставить эти цвета вращаться. Если вы посмотрите
на нижнюю часть ящика NeoPixel,
то найдете там блок (Strip) Rotate Pi
xels by (1) S . Этот блок смещает по-
53
ложение активного светодиода на
выбранное вами число, возвращаясь
к началу; не забудьте использовать
блок (Strip) Show G , чтобы отобразить
эти движущиеся изменения (рис. 53 ).
Глава 7. Костюмы супергероя
271
8
РОБОТЫДРУЗЬЯ
М
ы вместе подошли к концу нашего творческого пути. Вы реа
лизовали несколько потрясающих
технических проектов, создав всевозможных крутых ИИ-роботов. Теперь пришло время использовать
накопленный вами опыт, чтобы создать что-нибудь уникальное!
В этой главе перед вами раскрываются безграничные возможности
для творчества. Мы не будем показывать вам пошаговые инструкции,
а поделимся идеями небольших проектов. Пусть они будут источником
вдохновения. По ходу дела мы будем
описывать некоторые особенности
конструкции, но не готовые решения, чтобы вы могли отточить свои
навыки решения проблем. Вам предстоит взять части разных проектов
и составить из них собственных роботов-друзей!
Мы предлагаем три идеи мини-проектов: «Роботы-марионетки», «Сор
тировочная машина» и «Танцевальная вечеринка роботов». Для каждого
проекта мы дадим несколько советов по сборке, которые помогут вам
в дальнейшем, а затем покажем, как
добавить ИИ, чтобы ваши роботы начали двигаться!
НАШИ ЦЕЛИ:
•• создать робота-марионетку,
который будет подчиняться
вашим командам;
•• создать модель животного,
которая будет следить за
вами;
•• построить сортировочную
машину, которая поможет
наводить порядок в комнате;
•• создать робота-танцора,
который будет копировать
ваши движения.
Глава 8. Роботы – друзья
273
РОБОТЫМАРИОНЕТКИ
Вероятно, этот первый проект –
именно то, чего вы ждали. Вы создадите роботов-марионеток, которые
будут подчиняться вашим командам!
Все роботы в этой главе сделаны из
одинаковых материалов, а две сервомашинки дадут им больше свободы
передвижения. Если у вас есть только
одна сервомашинка, все равно приступайте к проектам, но используйте
знакомые вам приемы, чтобы компенсировать нехватку.
Нам понадобятся:
•• трафареты*;
•• картон;
•• тонкий картон, типа
коробки от хлопьев;
•• термоклей;
•• сервомашинки (2 шт.);
•• батарейки и провода;
•• качалка сервомашинки;
•• сервотестер;
•• micro:bit;
•• компьютер с доступом
в интернет;
•• веб-камера;
•• провода типа
«крокодил-вилка»;
•• трубочка для напитков.
Базовая голова
Базовое туловище
Верх базового
туловища
* Загрузите полноразмерный PDFфайл на сайте makeairobots.com/
chapter8.
274 Создаем умных роботов
Верх и низ базовых
головы и туловища
ВАШ ПЕРВЫЙ
АНИМАТРОНИК
Вы когда-нибудь замечали, что некоторые роботы выглядят и действуют
реалистично, как люди или животные? Они часто встречаются в фильмах и парках развлечений. Их называют аниматрониками – или, проще
говоря, механическими марионетками. Они действуют под управлением электронных устройств и сложного кода. Хотя мы вряд ли создадим
сложного робота на домашнем столе,
вы узнаете, как заставить вашу марионетку оглядываться по сторонам,
открывать и закрывать рот по вашей
команде.
Мы приготовили для вас базовые
трафареты головы и тела, если вам
нужно с чего-то начать, но не сдерживайте творческие порывы – сделайте что-нибудь необычное или
более сложное. Осмотритесь вокруг
и найдите подходящие предметы.
Картонные коробки из-под сока – отличная замена телу, а баночка из-под
йогурта послужит головой.
Когда придет время сделать V-образ
ный рот, который может открываться и закрываться, мы покажем вам
изящный трюк с рычагами и тонким
картоном.
Глава 8. Роботы – друзья
275
МЕХАНИКА
Базовое
туловище
(в сборе)
Верх туловища
Верх головы
Базовая голова
(в сборе)
Низ туловища
Низ головы
Базовое тело
(развертка)
Придумайте и вырежьте набор че
люстей, похожих на наш трафарет.
Нижнюю челюсть нужно согнуть
в месте соединения с головой, поэтому прикрепите немного картона к задней части ее «подбородка»
и приклейте его к нижней части головы с помощью термоклея. Закрепив челюсть, слегка согните картон
вниз в том месте, где челюсть соединяется с головой, чтобы рычажному механизму было легче тянуть
челюсть вниз и вверх (рис. 1 ).
276 Создаем умных роботов
1
Базовая голова
(развертка)
По примеру механизма управления
задними лапами леопарда в главе 5
создайте небольшую трехзвенную
связь для управления ртом.
2
Длина трехзвенной связи может
быть любой, при условии что один
конец прикреплен к задней части
челюсти, а другой – к сервоприводу,
расположенному на затылке вашей
марионетки (рис. 2 ).
Если вы сделаете челюсти из тонкого
картона от коробки из-под хлопьев,
мощности сервомашинки и рычажного механизма будет достаточно,
чтобы тянуть и сгибать нижнюю челюсть вниз, создавая иллюзию того,
что ваша марионетка говорит.
3
4
Используйте сервотестер, чтобы
проверить, работают ли ваши рычаги и тяги. Когда качалка движется от
головы, рычажный механизм должен
передавать движение сервопривода
до самой челюсти, сгибая картон
вниз и открывая рот при движении
рычага назад (рис. 3 ).
Когда вы будете готовы соединить
голову с телом марионетки, приклейте большую качалку сервомашинки к нижней части головы как
можно ближе к центру. Внимательно
следите за тем, чтобы клей не попал в крошечное отверстие для вала,
иначе вы не сможете надеть качалку
на сервомашинку после остывания
клея (рис. 4 ).
Глава 8. Роботы – друзья
277
Заставить марионетку повернуть
голову не составит труда – эту задачу вы уже выполняли много раз.
В трафарете туловища есть место, где
можно спрятать мотор при изготовлении шеи куклы. Закрепите сервомашинку в теле вашей марионетки
и спрячьте внутри провода, подключаемые к micro:bit (рис. 5 ).
Наконец, придумайте оформление
головы и раскрасьте ее. Это не только придаст аниматронику индивидуальность, но и поможет вам скрыть
излишки клея и мелкие ошибки
(рис. 6 )!
5
6
278 Создаем умных роботов
Заметки:
Глава 8. Роботы – друзья
279
ОЖИВЛЯЕМ ПРОЕКТ
ОБУЧЕНИЕ ИИ
Цель этого проекта – заставить аниматронную куклу копировать основные движения вашей головы
и рта. (В этой версии мы настроим
открывание и закрывание рта, но
подумайте о других движениях для
вашей следующей модели!) Все это
можно будет сделать всего с четырьмя классами: Look Forward (смотреть
вперед), Look Left (смотреть влево),
Look Right (смотреть вправо) и Mouth
Open (рот открыт).
7
Класс Look Forward будет фоновым
классом для этого проекта, поскольку это будет поза робота по умолчанию. Сделайте несколько красивых
снимков вашего персонажа крупным
планом – в нашем примере мы используем обычную игрушку-марионетку с закрытым ртом. Немного перемещайте игрушку по кадру, чтобы
появилось несколько опорных точек
(рис. 7 ).
Создайте и наполните классы Facing
Left (лицо влево) и Facing Right (лицо
вправо), еще раз убедившись, что рот
марионетки закрыт на всех фотографиях. Для этих классов также подготовьте много хороших снимков в разных положениях на экране (рис. 8 ).
Для класса Mouth Open широко откройте рот марионетки и сделайте
несколько снимков лицом вперед,
лицом влево и вправо, но поместите их все в один класс. Это позволит вашему ИИ открывать рот
аниматронной марионетки независимо от положения ее головы.
280 Создаем умных роботов
8
Поскольку в классе Mouth Open есть
изображения с открытым ртом, обращенные влево, вперед и вправо,
в нем должно быть примерно в три
раза больше изображений, чем в других классах.
Важно, чтобы у вас было много четких снимков вашей марионетки
крупным планом, позирующей для
каждого класса. ИИ понадобится
много данных, чтобы отличить ваш
класс Mouth Open от трех других.
Вы узнаете, что у вас есть успешно
обученная модель, когда вы сможете
повернуть куклу лицом влево, и ИИ
правильно предскажет это, но когда вы откроете рот, он поймет, что
нужно переключиться в режим Mouth
Open (рис. 9 ).
Если ИИ затрудняется определить
разницу между открытым и закрытым ртом, попробуйте наклеить на
лицо куклы крошечные наклейки
в качестве точек отслеживания. Когда кукла откроет рот, наклейка окажется в новом месте, и у ИИ появится
еще одна точка данных, которая поможет ему распознать правильный
класс. Это похоже на процесс захвата
движения, который превращает актеров в персонажей, созданных компьютером (рис. 10 ).
9
10
Возможно, вам потребуется несколько попыток, чтобы получить идеальную модель, но оно того стоит, когда
проект будет готов. Сохраните ссылку на готовую модель, а затем приступайте к созданию кода для этих
классов.
Глава 8. Роботы – друзья
281
11
ПРОГРАМ
МИРОВАНИЕ
Прежде чем приступить к написанию кода, продумайте подключение
к плате micro:bit. Подключить несколько сервомашинок к micro:bit
не так уж и сложно, хотя и выглядит
слегка запутанно.
Подключение двух сервомашинок
означает, что вам нужны два провода GND и два провода питания, но на
micro:bit имеется только один контакт GND и один контакт питания.
Это не проблема, если мы используем зажимы типа «крокодил». Просто
подключите первый сервопривод
к micro:bit, как обычно, а затем подключите провод GND и провод питания второй сервомашинки к разъ
емам GND и питания первой (рис. 11 ).
Теперь подключения GND и питания
будут общими, в то время как контакты управления останутся индивидуальными. Но убедитесь, что сервомашинки подключены к правильным
контактам; в нашем примере привод головы подключен к контакту 0,
а привод рта подключен к контакту 1.
282 Создаем умных роботов
12
Итак, мы определились с подключением, теперь можно создать код для
управления сервомашинками.
1. Начните с новой версии стартового кода ИИ и перейдите в раздел Extensions, чтобы добавить
расширение Servo в свой проект.
Из нового ящика Servo возьмите
два блока Set Servo (P0) Angle to
(90) A и поместите их в блок On
Start, чтобы задать начальные положения. В первом случае выберите P0, а угол оставьте 90 – этот
блок будет управлять головой.
Во втором блоке выберите P1
и угол 0 – этот блок будет управлять ртом (рис. 12 ).
БИБЛИОТЕКА КОДА
A
B
C
D
E
F
G
Библиотека подходит для любого кода в этой главе.
Глава 8. Роботы – друзья
283
2. Теперь создадим код для поворота головы влево и вправо.
Настройте все операторы If для
классов Facing Forward, Facing
Left и Facing Right и поместите
блок Set Servo (P0) Angle to (90) A
в нишу каждого оператора. Каждый из этих трех блоков A будет
настроен на разный угол поворота головы.
13
Установите сервопривод в классе
Facing Forward на 90°, затем прибавьте или вычтите 45°, чтобы повернуть голову в одном из направлений. Установите сервомашинку
Facing Left на 45°, а сервомашинку
Facing Right на 135° (рис. 13 ).
3. Добавьте еще один блок Set Servo
(P0) Angle to (90) A – на этот раз
с установленным значением P1 –
в каждый из операторов If. Установите все три на 0° (рис. 14 ).
Этот блок закроет рот вашей марионетки, а также будет удерживать голову в правильном положении каждый раз, когда ИИ
обнаружит, что рот закрылся.
Это избавляет от необходимости
изучать в два раза больше классов (по одному на каждое направление с закрытым ртом и по
одному на каждое направление
с открытым ртом).
4. Создайте четвертый параметр
в операторе If и добавьте один
блок Set Servo (P0) Angle to (90)
A . Выберите в нем P1, чтобы он
мог управлять рычажным механизмом рта, и измените градусы
примерно на 25 (рис. 15 ).
284 Создаем умных роботов
14
15
Поскольку механизм вашей марионетки может немного отличаться от нашего примера, вам,
вероятно, придется изменить это
число, чтобы определить лучший
угол.
Зайдите на сайт Make: Al Robots, чтобы ввести ссылку на ИИ и подключить micro:bit. При первом запуске
этого проекта откалибруйте сервоприводы, сняв голову и поместив ее
обратно лицом вперед, и сделайте то
же самое с рычажным механизмом
рта, установив качалку так, чтобы
рот был закрыт.
После настройки механизма помес
тите управляющую куклу так, чтобы
она была видна на обзорном экране
справа. Ваш аниматроник должен
ожить и копировать движения кук
лы. Поздравляем с первыми шагами
к созданию собственной студии захвата движений!
•• сервомашинки для перемещения
рук;
•• светодиоды или кольца NeoPixel
для глаз;
•• музыку или звуковые эффекты из
micro:bit;
•• сонар, позволяющий видеть окружающий мир.
Вам не обязательно использовать
куклу-марионетку для управления
аниматроником – попробуйте сделать так, чтобы аниматроник копировал движения вашей головы и рта!
Вы можете добавить к своей аниматронной марионетке много разных
полезных функций, в том числе:
Глава 8. Роботы – друзья
285
АНИМАТРОННЫЕ
ЖИВОТНЫЕ
Еще один хороший пример аниматронной куклы мы упоминали в разделе «Что дальше?» главы 5. Мы использовали наши знания о тягах,
чтобы научить бабочку из главы 1
более реалистично взмахивать крыльями, а затем мы сказали, что сова
тоже могла бы махать крыльями.
15
Используя мощь ИИ, мы можем сделать эту сову еще более реалистичной: мы научим ее «провожать» вас
глазами, куда бы вы ни пошли!
Основа механизма
Крылья должны быть сделаны из
материала, который легко гнется.
Как и в случае с челюстью в последнем проекте, сервомашинка толкает
и тянет крылья, перемещая их вперед и назад, поэтому постарайтесь
использовать плотную бумагу или
тонкий картон. Как и в прошлом проекте, вы будете использовать трехзвенную связь крыла с сервомашинкой, чтобы крылья могли двигаться,
хотя и по-другому.
Начните с установки сервомашинки в центр спины совы – не важно,
направлена она вверх или вниз. Мы
прикрепили ее с помощью небольшой U-образной конструкции с вырезом под сервомашинку и приклеи
ли эту часть к другой небольшой
286 Создаем умных роботов
17
группе прямоугольников, чтобы
осталось небольшое место и тяги не
цеплялись за сову (рис. 16 ).
Приклейте короткую соединительную планку к качалке сервомашинки; рычажная тяга на пять отверстий
должна быть достаточно длинной,
чтобы справиться с этой задачей. Две
другие соединительные тяги должны
быть достаточно длинными, чтобы
они выступали на 3–5 см за сервомашинку. Соедините тяги латунными креплениями или деревянными
осями (рис. 17 ).
Сделайте две небольшие картонные
площадки и проделайте в каждой от-
верстие, прежде чем прикрепить по
одной к каждому крылу. Используйте
латунную застежку или деревянную
ось, чтобы прикрепить площадку
к концам стержней (рис. 18 ).
Чтобы заставить голову двигаться
из стороны в сторону, используйте
тот же прием, что и в проекте «Ваш
первый аниматроник» ранее в этой
главе. Как и в предыдущем проекте,
используйте вторую сервомашинку
между телом и головой для управления движениями головы (рис. 19 ).
18
ОБУЧЕНИЕ ИИ
Обучение ИИ для этой марионетки
аналогично предыдущему, только на
этот раз вам не нужно тренировать
класс для рта. Нам нужно, чтобы сова
провожала человека взглядом, а не
просто смотрела влево или вправо,
поэтому вам следует перемещаться
по комнате при съемке обучающих
фотографий. Возможно, вам понадобится помощник, который будет
делать снимки во время вашего перемещения по комнате. Не забудьте
дать обучающим классам понятные
названия, например Left Side (левая
сторона), Middle (середина) и Right
Side (правая сторона).
ПРОГРАМ
МИРОВАНИЕ
Подключите сервомашинку головы к контакту 0 на micro:bit, а сервомашинку крыльев – к контакту 1.
Создайте новый проект на веб-сайте
19
20
Make: AI Robots и настройте код для
управления головой. (Вы можете
скопировать и изменить код из последнего проекта, который перемещает голову марионетки.)
1. Начните с двух блоков Start with
two Set Servo (P0) Angle to (90) A
в блоке On Start, настроив первый на (P0), а второй на (P1), но
с обоими углами, установленными на 90° в качестве начальной
позы совы (рис. 20 ).
Глава 8. Роботы – друзья
287
2. Настройте (или переименуйте)
классы в операторе If в соответствии с вашей моделью ИИ: Left
Side, Middle и Right Side.
Поместите один блок Set Servo
(P0) Angle to (90) A в каждую
нишу оператора If и используйте значения углов как в последнем проекте: 45° для Left Side, 90°
для Middle и 135° для Right Side
(рис. 21 ).
21
Код для взмаха крыльев не обязательно должен зависеть от ИИ,
поэтому возьмите блок On Button
(A) Pressed B из ящика Input и поместите его рядом с остальным
кодом.
Мы пытаемся воссоздать реалис
тичное движение крыльев с помощью сервомашинки, поэтому
вспомните, как это выглядит: вы
когда-нибудь видели, как птица
расправляет крылья и делает несколько случайных взмахов? Мы
намерены сделать так же.
22
3. Перетащите блок Repeat (4) Times
Do C из ящика Loop, поместите
его в блок On Button (A) Pressed
B и установите его на повторение два раза. Затем перетащите
блок Set Servo (P0) Angle to (90) A
внутрь цикла и выберите P1, чтобы он управлял сервоприводом
крыла (рис. 22 ).
23
4. Поскольку настоящие птицы непредсказуемы, движения крыльев этой совы должны быть случайными, так что угол поворота
сервомашинки должен быть случайным числом.
288 Создаем умных роботов
Откройте ящик Math, возьмите
элемент Pick Random (0) to (0) D
и поместите его в поле значения
градусов в блоке A. Установите
диапазон от 0 до 80, этого будет
достаточно, чтобы выдвинуть
крылья вперед (рис. 23 ).
5. Добавьте блок Pause (ms) (100)
E , но со значением 250. Этого
времени должно хватить, чтобы
закончить движение. Нажмите
правой кнопкой мыши на только
что созданный блок Servo A и выберите в меню Duplicate, чтобы
скопировать этот код с уже имеющимся в нем элементом случайного числа (рис. 24 ). (Это избавляет нас от необходимости снова
собирать несколько блоков.)
24
6. Поместите этот новый блок чуть
ниже созданного вами блока
Pause (ms) (100) E и установите
случайный диапазон этого блока
от 95 до 180.
Первый диапазон от 0 до 80 заставит крылья двигаться чутьчуть, а диапазон от 95 до 180
заставит их двигаться намного
дальше. Добавьте еще один блок
Pause (ms) (250) E , чтобы успело
завершиться второе движение.
25
Наконец, поместите третий блок
Set Servo (P0) Angle to (90) A пос
ле цикла и выберите P1, чтобы
крылья вернулись в исходное положение (рис. 25 ).
Теперь, когда вы нажмете кнопку A
на плате micro:bit, сова взмахнет
крыльями как настоящая!
Глава 8. Роботы – друзья
289
ИДЕИ ПРОЕКТОВ
СОРТИРОВОЧНАЯ
МАШИНА
Самая популярная идея применения роботов, которую мы слышим
от детей, – это слуга, который будет
убирать за них в комнате. Хотя наша
книга немного о другом, можно создать робота, способного выполнить
часть этой работы: мы научим ИИ
распознавать и сортировать объекты
по разным корзинам.
Изучение больших наборов данных
и их сортировка – привычное занятие для ИИ, и на самом деле мы
просто заменим данные реальными
предметами. Мы поможем вам начать работу, а затем вы самостоя
тельно доделаете сортировочную
машину для вашей комнаты.
290 Создаем умных роботов
Это будет простая сортировочная
машина, которая сортирует по одному предмету за раз. Как и в случае
с монетами в главе 3, вы поместите
предмет в центр машины. После того
как ИИ опознает предмет и отправит
информацию на ваш micro:bit, сервопривод переместит этот предмет
в нужное место и перейдет к следующему. Возьмите несколько контейнеров, найдите поблизости кучу вещей,
которые нужно разобрать, и приступайте к решению этой задачи!
Нам понадобятся:
•• трубочки;
•• качалки сервомашинок
(2 шт.);
•• сервомашинки (2 шт.);
•• картон;
•• термоклей;
•• картонная коробка;
•• карандаш;
•• ножницы;
•• скотч;
•• коробки или корзины для
отсортированных вещей;
•• провода типа
«крокодил-вилка»;
•• сервотестер.
По сравнению с большинством других проектов в этой книге, этот относительно прост. Для начала вам
понадобится прочная картонная
коробка в качестве рабочей площадки. Вы также можете использовать
тонкую коробку из-под хлопьев, но
наполните ее чем-нибудь вроде сложенного полотенца, чтобы стенки не
провисали.
1. Начните с создания рычагов сор
тировочной машины, которые
будут толкать объекты в нужную сторону. Возьмите одну из
трубочек и наденьте ее на конец
качалки сервомашинки, чтобы
получился красивый и прочный
рычаг (рис. 26 ).
26
27
2. Теперь отмерьте и вырежьте из
картона прямоугольник длиной
примерно с трубочку и шириной
около 4 см. Приклейте трубочку
к нижней части картонного прямоугольника. Убедитесь, что трубочка приклеена с правильной
стороны картона, чтобы она могла толкать предметы (рис. 27 ).
Повторите эти шаги, чтобы сделать второй рычаг с другим сервоприводом.
3. Теперь поместите эти рычаги на
картонную рабочую площадку.
Глава 8. Роботы – друзья
291
Обведите нижнюю часть сервомашинок рядом с нижним левым
и верхним правым углами коробки. Отверстия должны быть такого размера, чтобы в них легко
входило основание сервомашинки, но не проваливались верхние
опоры на их корпусе.
Вырежьте отверстия и вставьте
сервомашинки и провода в новые отверстия, закрепив верхние
опоры небольшим количеством
скотча. Поверните сервоприводы так, чтобы толкающие рычаги располагались вверху и внизу
рабочей площадки (рис. 28 ).
4. Поместите сортировочную машину на плоскую поверхность
и подставьте коробки или корзины с обеих сторон, чтобы улавливать отсортированные предметы,
сдвинутые рычагами.
29
292 Создаем умных роботов
28
Подключите сервоприводы к разным контактам данных платы
micro:bit, чтобы они двигались
независимо (но используйте общие контакты GND и питания для
обеих сервомашинок) (рис. 29 ).
ОБУЧЕНИЕ ИИ
Теперь наступает самое интересное:
выяснить, что вы собираетесь сортировать. Возможно, это будет машина
для сортировки монет, которая поможет вам разобрать копилку, или
сортировщик маленьких пластиковых кубиков. В нашем примере мы
используем машину для сортировки
разноцветных шариков.
От того, как вам нужно сортировать
предметы, зависит настройка трех
классов.
Если вы хотите, чтобы машина сдвигала только определенные объекты
влево, а все остальные вправо, вам
нужно обучить класс Empty Machine
(пустая машина), а также классы Object (объект) и Not Object (не объект)
(рис. 30 ).
Если вы хотите, чтобы машина отбирала два конкретных объекта из множества разных, обучите класс Empty
Machine, класс Object 1 (объект 1)
и класс Wrong Object (неправильный
объект) – заполните этот последний
класс фотографиями случайных объектов, чтобы ИИ мог определить, когда обнаружен неправильный объект.
На этом этапе вам также придется
удалить все объекты из сортировщика или придумать решение, подобное тому, которое создано нашими
друзьями и представлено в конце
этого раздела (рис. 31 ).
30
31
При настройке модели изображения
не забудьте начать с класса Empty Machine, когда на площадке сортировщика ничего нет.
Глава 8. Роботы – друзья
293
Это поможет ИИ распознать паузы
между разными предметами.
Затем настройте классы для каждого элемента, который машина должна сортировать. Веб-камера должна
быть установлена высоко, чтобы она
смотрела на сортировочную машину
сверху вниз и позволяла ИИ четко
видеть объект, когда вы размещаете
его на рабочей площадке.
Вращение объекта и его небольшое
перемещение каждый раз, когда вы
делаете снимок, поможет ИИ узнать,
как он выглядит со всех сторон. Если
вам нужно, чтобы машина приняла
быстрое решение, обязательно сделайте много снимков вашего объекта, чтобы у вашего компьютера были
данные для принятия правильного
решения. Вы также можете настроить чувствительность ИИ, зайдя на
сайт Make: Al Robots.
ПРОГРАМ
МИРОВАНИЕ
После сохранения ссылки на модель
изображения вам останется только
запрограммировать сервоприводы,
так чтобы они делали то, что вы хотите.
1. Установите оба сервопривода
в исходное положение 0 в блоке
On Start, убедившись, что в одном
выбран контакт P0, а в другом P1
(рис. 32 ).
32
294 Создаем умных роботов
2. При первом включении снимите
толкающие рычаги и снова прикрепите их в правильном положении – они должны находиться
сверху и снизу рабочей площадки
(рис. 33 ).
3. После настройки стартовой позиции настройте каждый выбор
класса в операторе If. Начните
с класса Empty Machine, который
вы обучили, и поместите туда
оба блока Servo, выставив их на
0°. Это позволит машине вернуть
рычаги в исходную точку, после
того как она оттолкнула объект
в сторону.
33
Для каждого из остальных классов, которые вы обучали, помес
тите внутрь один из блоков Servo
и установите угол на 90°, чтобы
он мог вращаться и толкать объект. Убедитесь, что одна из ваших
сервомашинок настроена на P0,
а другая на P1.
Добавьте блок Pause (ms) (100)
E и измените время на 500 мс,
чтобы предотвратить слишком
быстрое движение рычага назад,
когда машина больше не видит
объект (рис. 34 ).
34
4. Вы также можете использовать
блок Show LEDs из ящика Basic,
чтобы добавить световой индикатор на ваше устройство: например, отобразить галочку, когда предмет опознан, или стрелку,
указывающую, в каком направлении он был перемещен. Если вы
создали класс Wrong Object, на
экране может появиться большой
символ X в сопровождении грустной мелодии, активируемой блоком Play Melody E из ящика Music.
Глава 8. Роботы – друзья
295
ей остановиться. Из ящика Music
перетащите блок Stop Melody (All)
F в класс Empty Machine, чтобы
сбросить звук вместе с сервомашинками (рис. 35 ).
5. Загрузите этот код и переходите
к работе с сайтом Make: Al Robots.
Введите ссылку на свою модель
распознавания изображений,
подключите micro:bit, и ваша
сортировочная машина поможет
вам разобраться в беспорядке
(рис. 36 )!
35
И помните, этот проект – лишь отправная точка для ваших собственных идей. Наши друзья из Strawbees
разработали конвейерную ленту для
дальнейшей автоматизации сортировочной машины: очень длинный
лист бумаги прикрепляется петлей
вокруг двух рулонов от бумажных
полотенец, а двигатели медленно
тянут объекты вперед.
36
В нашем примере эти блоки будут срабатывать по порядку, когда предыдущий блок завершит
свою работу. Если вы хотите,
чтобы мелодия воспроизводилась одновременно с движением сервопривода, нажмите на
раскрывающееся меню в конце
блока Play Melody E и установите
для него значение In Background
(в фоновом режиме). Это позволит программе перейти к следующим строкам кода во время воспроизведения мелодии.
Если вы выберете Looping in Background (Зацикливание в фоновом
режиме), мелодия будет продолжаться, пока вы не прикажете
296 Создаем умных роботов
Они разместили камеру в начале
конвейерной ленты и использовали
несколько плат micro:bit для управления несколькими сервомашинками вдоль ленты. Определив количество времени, которое требуется
конвейерной ленте, чтобы перемес
тить объект к различным сервоприводам, они использовали блок паузы,
чтобы задержать движение каждого
сервопривода до тех пор, пока объект
не окажется в правильном положении для сортировки.
Это отличный пример того, как
различные знания – механики,
электроники, устройства micro:bit
и ИИ – вместе позволяют создать потрясающе сложное устройство!
Глава 8. Роботы – друзья
297
МЕХАНИЗМ
Нам понадобятся:
•• рычажная тяга на 9 отверстий
с отверстиями 4, 5 и 6 (2 шт.);
•• рычажная тяга на 6 отверстий
и отверстиями по вашему
желанию (2 шт.);
•• оси для шарниров, например
латунные застежки;
•• картон;
•• ножницы;
•• термоклей;
•• качалка сервомашинки;
•• сервомашинка;
•• скотч;
•• провода типа «крокодилвилка»;
•• сервотестер.
298 Создаем умных роботов
ТАНЦЕВАЛЬНЫЙ
КОНКУРС
РОБОТОВ
В этой книге мы реализовали довольно много ИИ-проектов, в которых используется проект Pose с веб-сайта
Teachable Machine. В этом финальном проекте вы найдете применение
любой позе, какую только сможете
придумать, и создадите робота, который сможет танцевать с вами!
Для этого проекта вам понадобятся только две вещи: сервомашинки
и рычаги. Мы собираемся использовать удивительную силу рычагов
и тяг и их способность передавать
движение.
37
Конструкция тела робота остается на
ваше усмотрение. Если вам понадобится небольшая помощь, воспользуйтесь трафаретами «Базовое тело»
и «Базовая голова».
Мы покажем вам, как устроен этот
бойкий парень.
1. Используя несколько шарнирных
осей, соедините обе тяги на 6 отверстий с тягой на 9 отверстий.
Первая связана с рычажной тягой на 9 отверстий в отверстии 4,
а другая – в отверстии 6. Подсоедините другую тягу на 9 отверстий внизу, и эта конструкция
должна сформировать прямо
угольник (рис. 37 ).
38
что им хватает места, чтобы они
могли выдвигаться по бокам вашего робота при перемещении
сервомашинкой.
Вырежьте еще одно отверстие
в верхней части спины вашего
робота, куда можно поместить
сервомашинку, и вставьте ее так,
чтобы она вращалась внутри туловища робота (рис. 38 ).
3. Установив сервопривод, подсоедините к нему рычажный механизм (рис. 39 ).
Фактически это скелет вашего
робота. Нижняя перекладина будет соединяться с ногами, а верхняя – с руками.
2. Приклейте качалку сервомашинки к середине верхней рычажной
тяги на 9 отверстий. Убедитесь,
39
Глава 8. Роботы – друзья
299
4. Нам нужно сделать так, чтобы
этот механизм держался на мес
те. Как и в случае с леопардом
в главе 5, нужно создать еще одну
фиксированную шарнирную точку, чтобы удерживать «скелет»
на месте во время его вращения.
Среднее отверстие нижней тяги
на 9 отверстий – идеальное место
для этого.
С помощью деревянного стержня
наметьте, где будет располагаться этот фиксированный шарнир,
и проделайте отверстия в передней и задней частях корпуса, чтобы ось могла пройти насквозь.
Используйте скотч или клей,
чтобы зафиксировать ее, а творческий подход – чтобы скрыть от
глаз (рис. 40 ).
5. Наконец, приклейте руки и ноги
собственной конструкции к рычажным тягам, торчащим по бокам тела.
Поскольку этот танцор будет активно трястись, он не сможет стоять вертикально. Сделайте подставку, которая будет удерживать
вашего робота в вертикальном
положении, пока он танцует.
300 Создаем умных роботов
40
Добавьте любые творческие детали,
которые придадут вашему танцору
индивидуальность!
Имея всего лишь сервомашинку
и сервотестер, вы можете перевести
танцора в автоматический режим,
и он будет танцевать, пока не разрядятся батарейки. А если подключить
к этому проекту micro:bit, то можно
программировать различные танцевальные движения или последовательности одним нажатием кнопки.
Но эта книга посвящена удивительным возможностям ИИ, поэтому мы
воспользуемся сайтом Teachable Machine, чтобы научить ИИ распознавать некоторые ваши танцевальные
движения и помогать роботу их скопировать.
Глава 8. Роботы – друзья
301
ОЖИВЛЯЕМ ПРОЕКТ
Если у вас была возможность поэкс
периментировать с механизмом
танцора, вы, вероятно, заметили
простые танцевальные движения,
которым мы собираемся научить ИИ.
В них нет ничего особенного, просто
веселый танец, в котором вы прыгае
те с ноги на ногу и машете руками
в воздухе – точно так же, как робот,
которого мы создали в качестве примера. Для этого идеально подходит
модель распознавания позы, потому
что ИИ будет легче определить, где
находятся ваши руки и ноги.
1. Создайте новый класс и назовите
его Standing Still (стоя на месте).
Это очередной фоновый класс,
в создании которого вы теперь
являетесь мастером. На снимках
должно быть хорошо видно, что
ваши ноги прямые, а руки по бокам (рис. 41 ).
2. Один класс должен называться
Hop Left (прыжок левый), а другой – Hop Right (прыжок правый).
Обучите оба этих класса, используя достаточно данных, чтобы
ИИ мог быстро принимать решения – как и в проекте в главе 7,
вам нужно, чтобы ИИ делал молниеносные прогнозы. Делайте
снимки в разных местах комнаты, потому что никто не стоит на
месте, пока танцует (рис. 42 ).
302 Создаем умных роботов
41
42
ПРОГРАМ
МИРОВАНИЕ
На самом деле в коде этого проекта
нет ничего сложного; вы уже много
работали с сервомашинками. Откройте новую копию начального
кода ИИ и добавьте в него несколько
блоков.
43
1. В блоке On Start используйте блок
Set Servo (P0) Angle to (90) A , чтобы откалибровать сервопривод
при его запуске. Установите значение 90° (рис. 43 ).
Снимите рычажную тягу с сервомашинки и снова наденьте ее так,
чтобы при включении она располагалась параллельно земле.
44
2. Теперь нам нужно закодировать
всего лишь два оператора If –
это классы Hop Left и Hop Right,
и в каждом из них нужно размес
тить внутри один блок Set Servo
(P0) Angle to (90) A .
Сервомашинка не должна поворачиваться слишком сильно –
всего примерно на 25° в обе стороны от исходного положения
90°, – поэтому задайте в одном
блоке поворот на 65°, а в другом – на 115°.
Для класса Standing Still установите положение сервопривода в состоянии покоя на 90° (рис. 44 ).
Глава 8. Роботы – друзья
303
Вы также можете настроить свой
код на выполнение нескольких движений при распознавании позы.
Представьте, что вы хореограф популярного шоу и ведете своих танцоров-роботов в наборе танцевальных
движений (рис. 45 )!
Вы также можете добавить несколько блоков кода для ленты NeoPixel,
и ваш танцор будет включать разные
цвета для каждого движения (рис. 46 ).
45
46
304 Создаем умных роботов
Вот и все! Это был не только последний проект в этой главе, но и последний проект нашего совместного
творческого пути.
Мы очень удачно закончили этот путь
танцевальной вечеринкой. В этой
главе вы познакомились с удивительными роботами с ИИ, и мы на-
деемся, что они вдохновили вас на
создание собственных чудесных
машин. Так что продолжайте мастерить, программировать и фантазировать, потому что миру нужны ваши
фантастические идеи. Приготовьтесь
строить будущее, полное чудес, – революция роботов начинается с вас!
Робот,
поднимающий
руки
Танцующий
робот
Удлиняемая
рука
Робот-судья
Робот-крокодил
Цепкие когти
Контроллер
Гусеницы танка
Глава 8. Роботы – друзья
305
АВТОРЫ
РИДИ РИЧАРД – преподаватель и разработчик учебных программ в Steamlabs, где он создает различные учебные пособия на основе платы micro:bit
и искусственного интеллекта для учащихся по всей Канаде. Он имеет большой опыт обучения детей и взрослых
технологиям и входит в совет директоров Института ресурсной экономики. Ранее Рид помогал развивать творческие пространства и мероприятия
для таких организаций, как Научный
центр Онтарио, Ассоциация центров
науки и технологий и Западный университет. Он живет в Торонто, Онтарио.
БРЕНДА ШИВАНАНДА – ведущий дизайнер UX/UI в Steamlabs. Занимается разработкой учебных экспонатов
и обучением в области искусственного
интеллекта. Бренда разработала экспонаты и семинары по искусственному интеллекту для Amazon Future
Engineer и Тихоокеанского музея Земли. Она создала также иллюстрации
и графику для Научного центра Онтарио, Канадской ассоциации научных
центров и Столичного университета
Торонто. Она живет в Миссиссогасе,
Хауденосауни, Анишинаабе и ГуронВендате (территория Торонто).
306 Создаем умных роботов
Э Н Д И Ф О Р Е С Т – исполнительный
директор Steamlabs и создатель образовательных программ для Canada Learning Code, Amazon, Научного
центра Онтарио, Технического музея
Осло и многих других организаций по
всему миру. Он выступал с докладами
о будущем технического образования
в таких организациях, как Управление регистрации Интернета Канады,
ЮНЕСКО и Министерство образования Онтарио. Будучи предпринимателем в области передовых технологий,
Энди возглавлял команды, разрабатывающие крупные проекты машинного
обучения, такие как глобальный виртуальный онлайн-класс Berlitz, в котором за 15 лет было проведено более
2,5 млн живых уроков для студентов.
Он живет в Оттаве, Канада.
ДЕНЗЕЛ ЭДВАРДС – разработчик программного обеспечения, художник
и новатор, который направляет свою
любовь к программированию и решению сложных задач на создание
приложений, пробуждающих в других
людях такую же любовь к технологиям будущего. Он также читает лекции
в области этического программиро
вания.
Авторы
307
Книги издательства «ДМК ПРЕСС» можно купить оптом
в книготорговой компании «Галактика»
(представляет интересы издательств
«ДМК ПРЕСС», «СОЛОН ПРЕСС», «КТК Галактика»).
Адрес: г. Москва, пр. Андропова, 38.
Тел.: +7(499) 782-38-89. Электронная почта: books@alians-kniga.ru.
Риди Ричард, Бренда Шивананда,
Энди Форест, Дензел Эдвардс
Создаем умных роботов
Главный редактор
Мовчан Д. А.
dmkpress@gmail.com
Перевод
Корректор
Верстка
Дизайн обложки
Яценков В. С.
Синяева Г. И.
Чаннова А. А.
Мовчан А. Г.
Гарнитура PT Serif. Печать цифровая.
Усл. печ. л. 25,03. Тираж 100 экз.
Веб-сайт издательства: www.dmkpress.com