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

4.10. Как получить команду из сети

Урок: 4.10. Как получить команду из сети

Транскрибация урока: Мы научились отправлять данные с Arduino в Интернет, но если мы вспомним задачу, которую мы себе сформулировали для реализации Polivalle, нам нужно еще по команде из Интернета запускать poliv. Это мы еще не умеем, но сейчас научимся. Я немного модифицирую скетч стандартный из примеров, добавив в него несколько строчек. Во-первых, у нас будет тестовый светодиод, который мы сейчас в этом примере будем включать по команде из сети. Во-вторых, я создаю объект типа String. Это будет строка, то есть, на самом деле набор символов, над которым можно проводить разные операции. Для чего он понадобится, сейчас узнаете. В остальном все происходит пока что точно так же. Я настраиваю пин светодиода как выход, [ПАУЗА] и затем, после получения, после начала получения запроса от клиента я вот этот полученный символ добавляю к созданному массиву, к созданному объекту типа String, который я назвал request, то есть, «запрос». Мы по символу его нарастим, для того чтобы найти в нем кусочек, который отвечает за команду, которую мы подаем на сайте. Затем я немножко трансформировал вот эту вот строку, где подается не очень корректный заголовок, заставляющий браузер ежесекундно, на этот раз уже ежесекундно, подавать новый запрос, то есть обновляться. Я его дополнил тем, какой нужно запрашивать, это все тот же наш адрес, и опять же, зачем это нужно вы узнаете чуть дальше. Здесь все остается пока что так же, а затем, после вывода данных с аналогового входа, я добавил вот такие вот четыре строчки. Одна из них — это просто отправка тега «перевод строки», а затем отправляется тег, создающий гиперссылку, ну то есть, обычную ссылку, по которой мы всегда переходим в Интернете. Вот так вот это на самом деле выглядит. Тег A, вот этот вот параметр отвечает за адрес, на который мы будем переходить. В данном случае я просто к нашему адресу добавляю символы ?on. И вот здесь вот между открывающим и закрывающим тегом написано on — это тот текст ссылки, который мы видим, на который мы нажимаем. Затем передается просто пробел и после пробела будет еще одна ссылка, где будет написано off, а вести она будет на адрес /?off. Возможно, вы уже заметили, что у вас рябит в глазах от «слешей», и я поясню, зачем нужен в частности вот этот вот «слеш» или вот этот. Обратите внимание, что строка, которую мы отправляем клиенту обрамлена в кавычки. То есть то, что находится внутри кавычек — это строка. Ну так уж заведено в программировании. А когда нам внутри строки нужно также передать кавычки, нам нужно как-то дать понять компилятору, что это не конец... эта кавычка — не конец строки, а кавычка, которая входит в строку. Для этого перед ней и ставится «/». То есть, это тоже получается последовательность, как у нас был перевод строки и табуляция, только который содержит в себе кавычку. Чтобы кавычки могли быть не только началом и концом строки, но и собственно содержимим строки. Вот это место добавляется на страницу. А потом, когда мы уже закрыли соединение с клиентом, мы посмотрим, что же у нас там сохранилось в той строке request, в которой мы по символу добавляли, когда получали запрос от клиента. Мы будем в нем искать, в строке request будем искать подстроку ?on. Что это за ?on. Мы только что в код, в разметку веб-страницы добавили ссылку, которая переходит на адрес ?on. Соответственно, если пользователь нажмет на эту ссылку, у нас в запросе, который наш сервер получает, будет содержаться вот эта вот подстрока ?on. И если мы ее найдем, то выполним вот это вот действие. Если мы найдем другую подстроку, ?off, то мы выполним другое действие. Как вы видите, это включение и выключение светодиода. Теперь мы можем проверить, как это работает. Я еще обещал вам рассказать, зачем там нужно было обновление страницы, но об этом, на самом деле, в следующем фрагменте будем говорить. А пока что проверяем команду из Интернета. Я подключил к тестовому устройству светодиод, который мы будем зажигать по команде из Интернета, вгрузил туда обновленный скетч, и мы видим, что страница стала выглядеть чуть иначе, у нас добавились две ссылки: On и Off, и теперь страница обновляется гораздо чаще, раз в секунду, потому что мы изменили вот тот вот заголовок загадочный. Ну что же, я нажму на On. И мы видим, что светодиод зажегся. Я нажму на Off — и он погас. И сделаю так несколько раз. И по-прежнему я могу крутить потенциометр, у нас будет меняться значение. Посмотрите, я сейчас выделю в адресной строке то место, куда нужно смотреть, потому что иначе я его выделить не успеваю. Я нажимаю на ссылку On — и на секунду адрес изменялся, он дополнялся /?on. То же самое происходит, если я нажму Off. Та загадочная строчка, заголовок, refresh1url=http 192.168.0.150 нужен для того, чтобы через секунду после того как мы подали команду, мы перешли просто по адресу устройства. Обновили страницу с просто адресом устройства, без этих «слешей», on и off. Мы научились и отправлять данные с Arduino в Интернет и давать команду из Интернета в Arduino. На самом деле, вот это вот трюк с refresh и так далее — не самый оптимальный способ добиться нужного результата, но если вам эта тема понравится и вы захотите активно в ней работать, вы найдете способ сделать это лучше. Ну а мы будем возвращаться к проектированию нашего Polivalle. Вернемся к нашей схеме, на которой теперь, в общем-то нет белых пятен. Мы знаем, как отправлять данные с 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 году Нобелевской премии лауреатами Петром Капицей, Николаем Семеновым, Левом Ландау и Сергеем Христиановичем. Основой образования в МФТИ является уникальная «система Физтеха»: кропотливое воспитание и отбор самых талантливых абитуриентов, фундаментальное образование высшего класса и раннее вовлечение студентов в реальную научно-исследовательскую работу. Среди выпускников МФТИ есть Нобелевские лауреаты, основатели всемирно известных компаний, известные космонавты, изобретатели, инженеры.

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

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

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

Материал: