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

2.7. Чтение цифрового сигнала

Урок: 2.7. Чтение цифрового сигнала

Транскрибация урока: Давайте вспомним, чем цифровой сигнал отличается от аналогового. Аналоговый мы рассматривали в начале недели, и когда запускали программу-визуализатор, видели, как он плавно меняется: изменяет значение от 0 до 5 вольт. Цифровой же сигнал может либо присутствовать, либо отсутствовать: он есть или нет, 0 или 1. В терминах пинов Arduino это high или low. То есть когда мы записывали цифровой сигнал, писали digitalWrite (high), мы включали 5 вольт в заданном нами выводе. А когда мы писали digitalWrite (low), мы делали на этом выводе 0 вольт. Теперь мы будем заниматься считыванием цифрового сигнала: точно так же определять, есть ли на входе напряжение или нет. В случае с чтением сигнала контроллер будет определять, напряжение в данный момент меньше 3 вольт или больше 3 вольт. То есть состоянием low или 0 будет считаться любое напряжение меньше 3 вольт, состоянием high — 1 — будет являться напряжение больше 3 вольт. А сейчас мы подготовим скетч для эксперимента. В этом эксперименте мы будем транслировать то, что приходит на вход №7 напрямую на встроенный светодиод, на выход №13. Чтобы седьмой и тринадцатый пин стали входом и выходом соответственно, мы прописываем в setup pin mode. Для LED_PIN, для пина 13, это будет output, для DIGITAL_IN, то есть пина №7, это будет input. А loop у нас заключается просто в записи цифрового сигнала на LED_PIN в то состояние, в котором сейчас находится пин DIGITAL_IN. Теперь нам нужно откуда-то взять этот цифровой сигнал на седьмом входе. Для этого мы соберем простенькую схемку. Получать этот сигнал на седьмом входе мы будем с помощью обычной тактовой кнопки, точно такой же, которую мы использовали на первой неделе для ручного управления светофором. Я ее подключил с одной стороны, красным проводом к 5 вольтам Arduino, с другой стороны, вот этим белым проводом — к тому самому седьмому входу. Соответственно, когда кнопка будет нажата, 5 вольт будут попадать в седьмой вход, мы будем считывать высокий уровень сигнала и отправлять его сразу на тринадцатый выход. Давайте убедимся, что это работает. Действительно, это работает. Теперь два слова о том, что это за резистор я включил с той же стороны, с которой провод идет в Arduino. Это так называемый подтягивающий резистор. Он идет к линии «земля» на макетной плате, которая соединена с «землей» Arduino. Он нужен для того, чтобы кнопка не ловила помехи, которые неизбежно есть в эфире. Я могу убрать его из схемы, и мы увидим, что светодиод загорелся в тот момент, когда кнопка не нажата. Когда я ее нажму, она загорится более ярко, но все остальное время периодически на седьмом входе образуется напряжение, которое воспринимается контроллером как высокий уровень, и светодиод так же загорается. Теперь снова посмотрим в скетч: здесь я предлагаю альтернативный вариант избавления от шумов из эфира. Мы вход, который предназначен для кнопки, — DIGITAL_IN — конфигурируем не просто как INPUT, а как INPUT_PULLUP. Что это такое? Это включает встроенный в Arduino подтягивающий резистор, только в данном случае подтяжка происходит не к «земле», а к напряжению питания. Некоторые люди разделяют термины «подтягивающий резистор» и «стягивающий», но мне привычнее называть подтягивающий к «земле» или к питанию. Так вот INPUT_PULLUP делает кнопку подтянутой к напряжению питания. Для того чтобы это заработало, я переключил второй выход кнопки с 5 вольт к «земле». И теперь, обратите внимание, что светодиод горит, когда кнопка не нажата. То есть когда кнопка не нажата, на входе есть высокий уровень напряжения из-за этого INPUT_PULLUP. А когда мы кнопку нажимаем, это напряжение исчезает, то есть кнопка работает наоборот. Но такой способ, на мой взгляд, гораздо удобнее, потому что это упрощает схему, и всего лишь изменение одного параметра позволяет избавиться от вот этих вот шумов на входе. Итак, мы научились считывать элементарный цифровой сигнал. Почему я говорю «элементарный»? Все цифровые устройства, которые нас теперь окружают везде, общаются друг с другом более сложными способами, чем просто говоря «да» или «нет», «есть сигнал» — «нет сигнала». Они используют заранее оговоренные протоколы связи, то есть договоренности о том, что означает комбинация высоких и низких уровней сигнала в определенные промежутки времени. Мы впоследствии столкнемся с датчиками, которые пользуются какими-то сложными протоколами, но это будет на следующих неделях.

Часть: Видео

Модуль: Контроллер изучает мир

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

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

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

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

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

Материал: