пятница, 1 июля 2016 г.

3.13. Arduino -> I2C -> Multiservo -> 18 моторов

Урок: 3.13. Arduino - I2C - Multiservo - 18 моторов

Транскрибация урока: Давайте зарисуем на нашей любимой схеме про 3 мира наш прожектор, который рисовал карту на компьютере. В физическом мире у нас располагается дальномер, который получает от контроллера импульс и возвращает свой импульс, пропорциональный расстоянию до препятствия. Затем у нас есть сервомотор, который получает команду прямо от контроллера и поворачивается каждый раз на 1 градус. И у нас есть обмен данными с компьютером, где рисуется карта. На самом деле, мы отправляем данные только в одну сторону: на компьютер. Кроме этого, каждое измерение мы отображаем на дисплейчике, который у нас также подключен прямо к контроллеру. Теперь мы сделаем новую вариацию радара, на этот раз он не будет ничего рисовать на компьютере, зато будет подсвечивать ближайшее препятствие. У нас получилась такая вот башня, которую я сейчас вам покажу, «всевидящее око». Из чего она состоит? Там точно так же остается часть, сканирующая пространство — это сервомоторчик и ультразвуковой дальномер, но кроме этого добавляется второй сервомоторчик, который будет поворачивать прожектор, ну то есть яркий светодиод. Что будет происходить? Мы будем запоминать, где располагается ближайший объект, и тот угол, на который в это время повернута сервомашинка от радара, этот же угол будет записываться на вторую сервомашинку, на которой расположен прожектор. Соответственно, мы будем подсвечивать ближайший объект. И точно так же в процессе у нас измерения будут выводиться на дисплейчик. Разница в конструкции еще будет в том, что на этот раз мы не будем подключать 2 сервомотора прямо к Arduino, я уже говорил, что это не полезно с точки зрения питания, ну а кроме этого, это отличный повод показать вам еще одну плату расширения, которая существенно увеличивает ваши возможности. Это Multiservo Shield. Команды с контроллера будут отправляться на эту плату, а моторами уже будет управлять она. Чуть подробнее о ней я сейчас вам и расскажу. Итак, вот он Multiservo Shield. В чем заключается его преимущество? Во-первых, у него есть клеммник, куда мы можем подключить отдельное питание для всех сервомоторов. И затем мы видим 24 тройных пина, к которым мы можем подключить 24 сервомотора, давая им отдельное питание. Представьте, что бы случилось с Arduino, если бы мы попытались столько сервомоторов к ней подключить. Да мы даже столько и не смогли бы, потому что у нас есть всего 20 пинов. Вопрос: откуда же берется возможность управлять 24 сервомоторами? Дело в том, что на Multiservo Shield стоит отдельный контроллер, который подключен к Arduino всего двумя пинами. Он использует так называемую шину I2C — это последовательная шина, которая позволяет подключить всего по двум проводам множество устройств. Ее часто используют в разработке электронных устройств, и Multiservo Shield — одно из них. Для работы с I2C используется специальная библиотека, то есть нам опять же не нужно лезть в глубину протокола обмена данных, вы при желании можете просто почитать о нем. О том, как подключить библиотеку, мы поговорим, когда будем рассматривать скетч. Итак, этот отдельный контроллер получает команду от Arduino и может управлять 18 из этих сервомоторов, которые подключены к пинам, пронумерованным отдельно от 0 до 17. Эта нумерация не имеет ничего общего с нумерацией пинов Arduino, поэтому у нас все пины Arduino остаются свободными. Остальные 6 сервомоторов, которые сюда можно подключить, вот эти вот 6 тройных пинов, они выведены напрямую в Arduino, то есть если мы хотим управлять еще 6 сервомоторами, мы пользуемся стандартной библиотекой Servo, и вся разница здесь в том, что они получают отдельное питание из вот этого клеммника. Более того, к этим 6 пинам мы можем относиться так же, как к пинам на Troyka Shield'е, то есть не обязательно сюда подключать сервомотор. И этим мы воспользуемся для подключения дисплея и светодиода, потому что надеть одновременно и Troyka Shield, и Multiservo Shield не очень удобно, потому что каждой из них сверху надеваются шлейфы. Давайте теперь будем собирать новый вариант устройства, единственное, что я хочу еще прокомментировать — это то, что обмен данными при использовании шины I2C происходит по 2 линиям, которые помечены как SDA и SCL на Arduino. Единственный нюанс в том, что когда мы пользуемся Iskra, то есть Arduino Leonardo, они совмещены еще и с пинами 2 и 3, поэтому мы не будем использовать второй и третий цифровые пины, все остальные устройства будем подключать к другим пинам. Давайте посмотрим, как преобразился радар: у него появился третий этаж. Здесь я воспользовался замечательным свойством, заложенным вот в этот белый конструктор: а именно совместимостью с любимым с детства металлическим конструктором. А еще другое полезное свойство — это мягкость материала, благодаря которому я смог прикрутить сервомоторчики к конструктору винтами, просто проковыряв дырочки отверткой без каких-либо усилий. Ну и, соответственно, все, что мы видели на схеме: старый сервомотор и дальномер сканируют, новый сервомотор и светодиод будут подсвечивать ближайший объект, все это подключено к Multiservo Shield, дисплей и светодиод подключены к тем пинам, которые выведены напрямую с Arduino, и питание для сервомоторов подключено к клеммнику.

Часть: Видео

Модуль: Цель обнаружена

Описание модуля: На этой неделе вы научитесь ощупывать пространство дальномерами, делать визуализацию на компьютере, существенно дополните свои возможности в программировании и наконец-то сделаете устройство с движущимися частями.

Курс: Строим роботов и другие устройства на Arduino. От светофора до 3D-принтера

Описание курса: На протяжении тысячелетий люди усовершенствовали орудия труда, изучали силы природы и подчиняли их себе, использовали их энергию для работы машин, а в прошлом веке создали машины, которые могут управлять другими машинами. Теперь создание устройств, которые взаимодействуют с физическим миром, доступно даже школьнику.

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

Пройдя этот курс, вы сможете создавать устройства, которые считывают данные о внешнем мире с разнообразных датчиков, обрабатывают информацию, получают и отправляют данные на ПК, в Интернет, на мобильные устройства, управляют индикацией и движением. Создание устройств будет включать проектирование, изучение компонентов, сборку схем, написание программ, диагностику. Попутно с созданием самих устройств вы сделаете визуализацию на ПК, создадите веб-страницу, которую будет демонстрировать одно из ваших устройств, а также разберетесь с устройством и работой FDM 3D-принтера.

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

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

Весь курс посвящен практике и самым лучшим решением для вас будет раздобыть электронику, повторять показанные примеры и экспериментировать самостоятельно.

Программа:
  • Неделя 1 Один старый и много новых знакомых
  • Неделя 2 Контроллер изучает мир
  • Неделя 3 Цель обнаружена
  • Неделя 4 Как полить цветок из другого города
  • Неделя 5 Мобильный робот
  • Неделя 6 Как создать новый предмет за час
Преподаватель: Алексей Перепелкин (1), Дмитрий Савицкий (2)

Описание преподавателя: (1) Алексей Перепёлкин занимается развитием робототехники на базе ЛИОТ МФТИ. В 2012 году открыл для себя новое захватывающее чувство – когда устройство, которое сам построил и запрограммировал, работает. Свернул с финансовой дорожки и создал кружок робототехники для подростков. Готовил их к соревнованиям. Стал посещать конференции, а затем проводил мастер-классы для тех, кто тоже хочет организовать занятия. Совместно с коллегами в 2013 году разработал новые соревнования – Робопрофи – для конкурса Робот для жизни и провел их. В 2014 году впервые провел Arduino-номинацию на фестивале Робофест, а для российского финала Russian Robot Olympiad 2014 сделал творческую категорию. С тех пор эти соревнования стали регулярными. Летом 2014 провел двухнедельную мастерскую в детском лагере Никола-Ленивца, а затем преподавал в выездной школе, посвященной программированию и робототехнике, которую провели ABBYY и Яндекс. В 2015 году стал руководителем направления робототехники в GoTo Camp, выездных школах, где участники создали десятки проектов, от прототипов умных домов и операторских тележек до робота-бубниста и принтера для незрячих. В 2014 году с коллегами начал проект Роболабы: мероприятия для школьников и студентов, где участники параллельно решают усложненные задачи, а затем проводят рефлексию сделанной работы и оценивают чужие в ходе серии мероприятий.

(2) Физик, научный сотрудник, выпускник МФТИ. Запустил кружок робототехники в 2011 году. Рассказал Алексею Перепелкину о том, как здорово вести кружок робототехники. Рассказал об этом еще целому ряду людей. Побеждал со своими командами на соревнованиях. Проводил проектную работу с участниками исследовательской выездной школы МКШ с 2013 года, где руководил реализацией физических и робототехнических проектов, например, «Вслед за солнцем», в котором изучалась эффективность динамической ориентации солнечных батарей на солнце. Вместе с коллегами разрабатывал и был судьей Робопрофи. Участвовал в подготовке проекта Роболабы. Вновь пришел в МФТИ для проведения факультативного курса «Основы создания киберфизических устройств»

Организатор: Лаборатория инновационных образовательных технологий МФТИ (1), Лаборатория инновационных образовательных технологий МФТИ (2)

Описание организатора: (2) Московский физико-технический институт (неофициально известный как МФТИ или Физтех) является одним из самых престижных в мире учебных и научно-исследовательских институтов. Он готовит высококвалифицированных специалистов в области теоретической и прикладной физики, прикладной математики, информатики, биотехнологии и смежных дисциплин. Физтех был основан в 1951 году Нобелевской премии лауреатами Петром Капицей, Николаем Семеновым, Левом Ландау и Сергеем Христиановичем. Основой образования в МФТИ является уникальная «система Физтеха»: кропотливое воспитание и отбор самых талантливых абитуриентов, фундаментальное образование высшего класса и раннее вовлечение студентов в реальную научно-исследовательскую работу. Среди выпускников МФТИ есть Нобелевские лауреаты, основатели всемирно известных компаний, известные космонавты, изобретатели, инженеры.

Категория: Компьютерные науки

Описание категории: Специализации и курсы по компьютерным наукам посвящены разработке и дизайну программного обеспечения, алгоритмическому мышлению, человеко-компьютерному взаимодействию, языкам программирования и истории вычислительной науки. Курсы в этой широкой области помогут вам мыслить абстрактно, методически подходить к проблемам и вырабатывать качественные решения.

Тематика: Разработка ПО

Материал: