среда, 10 августа 2016 г.

5.13. Диагностика

Урок: 5.13. Диагностика

Транскрибация урока: А теперь у нас начинается замечательный фрагмент. Он хорош тем, что вам ничего не нужно будет делать, а только слушать и думать. Мы поговорим про диагностику ваших устройств снова на примере мобильного робота. Причем вообразим ситуацию, что вы оказались на соревнованиях. Кстати, настоятельно рекомендую участвовать в любых соревнованиях, которые вы обнаружите поблизости, а если поблизости ничего не происходит, вы можете организовать соревнования между собой и парой своих друзей, просто напечатав Полигон. Соревновательные ситуации интересны тем, что вам нужно продемонстрировать результат не только маме или другу, но и множеству зрителей, а также судьям. А судьи должны признать вашего робота лучшим. Естественно, вы будете нервничать и находиться в непривычной обстановке, поэтому лучше быть к этому морально готовым и представлять, как подойти к диагностике устройства системно, последовательно. Я вам предложу некий план этого дела. Во-первых, не забудьте ничего. Вам нужен ноутбук с установленной средой разработки, а также последняя версия программы. Всегда сохраняйте идеальный вариант программы отдельно, а все последующие эксперименты сохраняйте с другим именем по соседству. Помимо ноутбука возьмите инструменты. Скорей всего вам пригодятся, как минимум, отвертки. Также небесполезен будет мультиметр. Не забудьте запасные источники питания, если у вас батарейки – то батарейки, если аккумуляторы – то аккумуляторы и зарядные устройства. Итак, вы оказались на соревнованиях, пошли на тестовый полигон и обнаружили, что у вас что-то не работает. В лучшем случае вы поймете что, и тут же устраните неисправность. А в худшем случае, вы в панике будете бегать и говорить, что у вас не работает ничего. И тогда вам нужно понять, с какого конца к этому подойти. Для начала я бы предложил разобраться с тем, достаточно ли питания у вашего устройства. Проверьте, заряжены ли аккумуляторы и не отошел ли где-то провод питания. Если вы питаете контроллер и, например, драйвер моторов независимо, проверьте все схемы питания. Здесь вам пригодится мультиметр. Замерьте напряжение сначала на батарейном отсеке, затем на входе в плату. Если вы используете преобразователь напряжения, то и на входе, и на выходе должен быть соответствующий уровень напряжения. Если вы используете драйвер двигателей, то проверьте напряжение на входе. Если с питанием все в порядке и контроллер вам подмигивает своими светодиодами, как вы этого ожидали, переходите к диагностике отдельных компонентов. Здесь нам снова пригодится наша самая главная схема. В ее левой части, где мы зарисовывали все устройства, вы можете вспомнить, что у вас есть, например, моторы. Подключены ли у вас моторы к клеммникам? Если подключены, и вы пытаетесь их вращать, доходит ли до моторов напряжение? И так далее. Проверьте, подключены ли у вас все сенсоры туда, куда вы планировали их подключить? Соответствует ли физическое подключение тем пинам, которые прописаны в коде? Затем убедитесь в том, что на пути следования сигналов нет физических разрывов. Если вы используете какие-то посредники, – например, драйвер двигателей, – вы можете мультиметром проверить все ножки, все уровни на ножках. И затем уже можно разбираться с кодом. В первую очередь убедитесь, что у вас загружен окончательный скетч, в котором вы были уверены, который работал у вас дома, или где вы готовились. Если это так, но по-прежнему что-то происходит неверно, очень надеюсь, что у вас есть время, потому что полезно было бы провести изолированные тесты каждого устройства. То есть сделайте отдельный скетч, в котором вы просто вращаете мотор во всех режимах: вперед, назад; два мотора в комбинациях в одном направлении, в разных направлениях, с разными скоростями. Если все работает так, как задумано, проверьте все датчики. Почитайте их в мониторе порта. Выведите их на экран, если он у вас есть. Убедитесь в том, что вы получаете значения из тех диапазонов, которые ожидали. Если все устройства у вас работают корректно, нужно внимательнее посмотреть в код. Во-первых, убедитесь в том, что вы не добавили туда чего-то лишнего. Например, напомню, что вывод в последовательный порт занимает довольно много времени, и в каком-то процессе это может оказаться критичным. Поэтому удалите из кода вывод в последовательный порт. Сейчас я вам дам один полезный совет на этот счет. Также убедитесь, что вы не закомментировали какой-нибудь полезный фрагмент. Случаются такие ситуации, когда вы смотрите на программу, и, казалось бы, что это та самая программа, которая отлично работала, но почему-то не сейчас. В этом случае рекомендую вам выбрать какое-то устройство индикации – светодиод или пьезодинамик, чтобы строчка за строчкой разобрать, докуда же все-таки доходит ее исполнение, после чего она перестает работать. Например, вы можете встроить звуковую индикацию после каждого считывания датчика. Таким образом, где бы робот ни находился, вы всегда услышите, что по крайней мере до считывания датчика он дошел. И аналогично вы перемещаете этот маркер в любое место программы, чтобы убедиться, что досюда она выполняется. И если вы уверены в том, что у вас загружена верная программа и программа составлена корректно, остается убедиться, что все параметры, которые используются в ней, верны. То есть, например, если вы использовали регулятор, и там есть какие-то коэффициенты, сейчас выбраны те самые коэффициенты, которые нужны. А если вы еще не подбирали коэффициентов для данных условий, вам следует заняться этим сейчас же. Кстати, бывает полезно удачные варианты коэффициентов оставлять там же в коде закомментированными, чтобы потом не вспоминать в панике: а какое же значение было более-менее хорошим? В общем, я надеюсь, что все эти ситуации у вас пройдут гладко, будь то соревнования, в которых вы непременно победите, будь то лаборатория, где у вас идеально пройдет эксперимент, будь то любое другое применение.

Часть: Видео

Модуль: Мобильный робот

Описание модуля: Сначала крутим одно колесо, затем крутим два колеса и тележка едет, затем тележка едет по линии или под управлением или просто дразнит вашу руку.

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

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

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

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

Материал:



Практика
Программы
Скетчи, показанные на этой неделе, лежат в архиве w5_sketches.zip https://drive.google.com/open?id=0B6zopUwNtrV0VHFWLS1qRUttaVE
Сборка устройств
Собрать все варианты роботов можно с использованием дополнения Киберфизика.Мобильный робот к набору Киберфизика.Фундамент
В съемке видео этой недели использовались колеса и некоторые прототипы деталей корпуса, которые в дополнении Мобильный робот были заменены детали другого вида но с тем же функционалом.

Ссылки на материалы
Коллекторные моторы: кратко http://wiki.amperka.ru/%D0%BA%D0%BE%D0%BD%D1%81%D0%BF%D0%B5%D0%BA%D1%82-arduino:%D0%BC%D0%BE%D1%82%D0%BE%D1%80, подробнее http://wiki.amperka.ru/%D1%80%D0%BE%D0%B1%D0%BE%D1%82%D0%BE%D1%82%D0%B5%D1%85%D0%BD%D0%B8%D0%BA%D0%B0:%D0%BC%D0%BE%D1%82%D0%BE%D1%80%D1%8B
Фильм Электрические двигатели http://www.youtube.com/watch?v=l7lx9-c3Po0
Принцип работы и классификация электродвигателей http://engineering-solutions.ru/motorcontrol/motor/
Редукторы http://cncnc.ru/documentation/detalimashin_lecture/book/book9.htm
Драйвер двигателей L293D http://www.myrobot.ru/stepbystep/el_driver.php datasheet http://www.ti.com/lit/ds/symlink/l293.pdf
Описание Motor Shield http://wiki.amperka.ru/%D0%BF%D1%80%D0%BE%D0%B4%D1%83%D0%BA%D1%82%D1%8B:motor-shield
Вариант списка необходимого для проверки устройства https://drive.google.com/open?id=0B6zopUwNtrV0NUpmdGVmZWI0RDQ
Макет трассы для робота, показанной в видео https://drive.google.com/open?id=0B6zopUwNtrV0UkQzVFctQklZUFk
ПИД-регулятор http://www.bookasutp.ru/Chapter5_2.aspx
Приложения-"джойстик" ArduinoRC https://play.google.com/store/apps/details?id=eu.jahnestacado.arduinorc
RemoteXY: приложение https://play.google.com/store/search?q=remotexy, сайт http://remotexy.com/
Внешние прерывания http://www.arduino.cc/en/Reference/AttachInterrupt