Блок-схемы показывают, как должен выполняться процесс. Для блок-схемы не нужны сложная
производственная терминология или обозначения. Блок-схема должна быть легко понятна даже
неспециалистам в данной области.
Блок-схемы должны отображать входные состояния, все принимаемые решения и их результаты. Важно
показать шаги, которые следует выполнить, если результат решения «да» или «нет».
Прикладные программы создаются для выполнения определенной задачи или набора задач. Например, Cisco
Packet Tracer — это программа моделирования сетей, которая позволяет моделировать сложные сети и
задавать вопросы «что, если» о поведении сети.
После выбора языка программирования и представления процесса в виде блок-схемы можно приступить к
созданию программы. В большинстве языков программирования используются аналогичные структуры
программ.
Переменные
В языках программирования в качестве динамических сегментов для хранения фраз, чисел и прочей важной
информации, которая может использоваться при составлении программ, используются переменные. Вместо
многократного повторения конкретных значений в различных областях кода можно использовать
переменную. Переменные могут содержать результат вычислений, запроса к базе данных или другое
значение. Это означает, что один и тот же код будет работать с различными фрагментами данных без
необходимости его изменения.
Так, "x + y = z" — это пример программного выражения. В этом выражении x, y и z являются переменными,
которые могут представлять символы, строки символов, числовые значения или адреса ячеек памяти.
Переменная может ссылаться на значение. Например, выражение "а = 10" связывает значение 10 с
переменной а.
Переменная также может представлять область памяти. Выражение "а = 10" означает, что значение 10
хранится в некоторой области памяти компьютера, к которой можно обратиться по имени а.
Переменные позволяют программистам быстро создавать разнообразные простые или сложные программы,
которые заставляют компьютер работать заранее определенным образом.
Люди сообщают логику компьютерам с помощью программ. Используя определенные логические структуры,
программист может подготовить компьютер к принятию решений. Ниже описаны наиболее распространенные
логические структуры.
Для создания новой переменной в Blockly нужно просто перетащить блок переменной в рабочую область и
заполнить поле значения. Также можно изменять содержимое переменной в ходе выполнения программы.
Blockly также поддерживает функции. Как и для переменных, в Blockly есть специальные блоки для
представления функций. Как и в случае переменных, программисты просто выбирают и перетаскивают блоки
функций в рабочую область и заполняют обязательные поля.
На рис. 1 и 2 обратите внимание на то, что у блока переменной и блока вывода на экран есть выступы снизу и
разъемы сверху. Это означает, что эти два блока можно состыковать друг с другом для создания
программной последовательности. Blockly сначала выполняет верхний блок, а затем переходит к блоку под
ним.
Доступны и другие блоки, такие как IF THEN, WHILE и FOR. Также существуют блоки специально для
датчиков и актуаторов.
Blockly можно использовать для преобразования кода на основе блоков в Python или JavaScript. Это очень
удобно для начинающих программистов.
Игры Blockly
Google предоставляет ряд бесплатных обучающих игр с открытым исходным кодом, которые помогут вам в
изучении программирования. Эта серия называется Blockly Games.
Для получения подробной информации об играх Blockly, или чтобы попробовать пройти их самостоятельно,
щелкните здесь.
Для начала вам будет предложен ряд обучающих уровней. Хотя Blockly и похож на игру, это прекрасный
инструмент, который позволит вам улучшить свои навыки логического мышления, столь важные в
программировании
Packet Tracer. Мигание светодиодным индикатором с помощью Blockly
Cisco Packet Tracer включает Blockly в качестве одного из языков программирования для реализации функций
Интернета вещей. В этой лабораторной работе вы будете управлять скоростью мигания светодиодного
индикатора с помощью кода Blockly.
то такое Python?
Python — это очень распространенный язык, обеспечивающий удобство чтения и написания кода.
Сообщество разработчиков Python расширяет возможности языка, создавая различные типы модулей и
предоставляя их для других программистов.
Несмотря на простоту языка Python, для его изучения требуется определенное время. Чтобы облегчить
изучение Python, можно использовать Blockly для закрепления навыков.
Хотя языки программирования имеют различную семантику и синтаксис, программная логика остается
неизменной. Начинающие программисты могут использовать Blockly, чтобы без труда создавать программы
независимо от языка, экспортировать их в виде кода Python и использовать полученный код для изучения
синтаксиса, структуры и семантики Python.
В некоторых старых системах по-прежнему работает более ранняя версия (Python 2), однако многие новые
системы переходят к использованию новой версии, Python 3. Версия Python указывается в первой строке при
запуске интерпретатора (рис. 1). В этом курсе используется код, написанный на Python 3.
Если интерпретатор Python вызывается без аргументов, а команды вводятся с клавиатуры, то говорят, что
интерпретатор работает в интерактивном режиме. В этом режиме интерпретатор ожидает ввода команд.
Основное приглашение к вводу команды состоит из трех символов «больше» (>>>). Строки-продолжения
обозначаются тремя точками (...). Продолжение — это дополнительное приглашение к вводу команды по
умолчанию.
Строки-продолжения необходимы при вводе нескольких строк кода. На рис. 2 показан блок IF-THEN на языке
Python.
Еще один способ использования интерпретатора — python -c command [arg]... при котором выполняются
инструкции в команде. Так как инструкции Python часто содержат пробелы или другие символы, которые
относятся к оболочке, рекомендуется заключать всю команду в одинарные кавычки.
В интерактивном режиме Python есть специальная переменная «_» для хранения результата последнего
выражения (см. рис. 2).
Переменные — это именованные области памяти, которые используются для хранения данных во время
выполнения программы. Чтобы присвоить значения переменным в Python, используйте знак равенства (=).
Числовой результат отображается перед следующим интерактивным приглашением к вводу команды, как
показано на рис. 3.
Попытка использовать не определенную переменную (которой не присвоено значение) приведет к появлению
сообщения об ошибке, как показано на рис. 4.
Инструкция print выводит результат указанного выражения. Она отличается от простого ввода выражения,
которое вы хотите вывести на экран (как мы делали ранее в примерах с калькулятором): эта инструкция
обрабатывает несколько выражений и строк. Строки выводятся без кавычек, а между элементами
вставляется пробел, что облегчает форматирование (см. рис. 6).
Функции являются важной частью многих языков программирования. Функции позволяют назначить имя блоку
кода и повторно использовать его при необходимости. На рис. 7 определяется функция, которая складывает
два числа и выводит результат.
Полезные функции и типы данных в Python
Python поддерживает множество полезных функций и типов данных. Ниже перечислены некоторые из
наиболее важных.
Range()
Функция range() создает список чисел, обычно используемых для итераций циклов FOR. На рис. 1 показаны
примеры функции range().
range([start], stop[, step] — это первое число, последнее число и шаг между двумя соседними
числами в последовательности.
Кортежи
Списки
Списки — это последовательность изменяемых объектов Python. Для создания списка поместите
разделенные запятыми значения в квадратные скобки. На рис. 3 показаны примеры списков и внесения
изменений в них.
Множества
Словарь
Словарь — это список элементов, разделенных запятыми. Каждый элемент представляет собой сочетание
значения и уникального ключа. Каждый ключ отделяется от своего значения двоеточием. Весь словарь
заключается в фигурные скобки. Можно обращаться к элементам словаря, изменять их и удалять. Также
существует много встроенных функций словаря, например функция сравнения элементов различных
словарей, а также функция, которая подсчитывает общее количество элементов в словаре. На рис. 5
показаны примеры словарей.
Программные структуры в языке Python
Как и в других языках, в Python есть структура IF-THEN. Блоки IF-THEN можно использовать при создании
кода для принятия решений на основании результата выражения (см. рис. 1).
Цикл FOR в Python неоднократно выполняет элементы какой-либо последовательности (список или строка)
по порядку (см. рис. 2).
Цикл WHILE выполняет блок кода, если выражение истинно. В программе, показанной на рис. 3, цикл WHILE
используется для вычисления и вывода на экран начального подмножества ряда Фибоначчи, в котором
каждое следующее число равно сумме двух предыдущих.
Цикл WHILE вычисляет следующий член ряда Фибоначчи, пока выполняется условие b < 10. Как и в языке C,
в Python любое целое ненулевое значение считается истинным, а ноль — ложным. Показанная на рисунке
проверка является простым сравнением.
Обратите внимание на отступ для тела цикла. Отступы в Python используются для группировки инструкций. В
интерактивной командной строке необходимо нажимать клавишу Tab или вводить пробелы для каждой строки
с отступом. Для ввода более сложных структур на Python следует использовать текстовый редактор. При
вводе составной инструкции в интерактивном режиме за ней должна следовать пустая строка, указывающая
на завершение инструкции (поскольку анализатор не может определить, какая строка последняя). Обратите
внимание, что все строки в базовом блоке должны иметь одинаковый отступ.
Лабораторная работа. Настройка виртуализированной серверной среды
В этой лабораторной работе вы настроите виртуальную среду разработки и установите виртуальную машину,
чтобы подготовиться к экспериментам с Python.
В этой лабораторной работе вы будете использовать виртуальную среду и среду разработки IDLE для
изучения основ программирования на Python.
В этой лабораторной работе с помощью Python вы создадите простую игру на угадывание числа. Эта игра
основана на созданной ранее блок-схеме.
Создание прототипов — это процесс создания простой рабочей модели продукта или системы. Для создания
прототипов в Интернете вещей будут полезны навыки проектирования, знания в электротехнике, умение
работать руками, навыки программирования и понимание принципов работы протокола TCP/IP. Но вам не
обязательно быть экспертом в какой-либо из этих областей. На самом деле создание прототипа помогает
отточить эти навыки.
Поскольку Интернет вещей все еще находится на стадии развития, нам предстоит столкнуться со многими
новыми задачами. Сейчас самое время принять участие в создании элементов Интернета вещей. Так как
Интернет вещей объединяет людей, процессы, данные и вещи, он может помочь в создании и применении
неограниченного количества нововведений.
Чтобы прочитать новости и идеи, которые уже обсуждают в Интернете вещей, щелкните здесь.
Каким образом можно создать прототип? Существует несколько способов приступить к созданию прототипов.
Команда из корпорации Google использовала «Быстрый метод создания прототипа» для разработки Google
Glass. Щелкните здесь, чтобы посмотреть TedTalk об этом процессе.
Конечно, у Google достаточно ресурсов, чтобы оплачивать усилия сотрудников и материалы, необходимые
для создания прототипа. Большинству из нас нужна финансовая помощь, чтобы воплотить назревшие идеи в
прототипе. Для нас подойдёт народное финансирование (краудфандинг) Kickstarter, Indiegogo и
Crowdfunder — это лишь три из множества онлайн-сервисов краудфандинга. Щелкните здесь, чтобы
просмотреть видео о часах Pebble на ресурсе Kickstarter. С помощью этого видеоролика разработчики часов
Pebble привлекли множество пожертвований для своего проекта.
Физические материалы
Несомненно, начать нужно с Интернета. Вот уже много столетий люди обмениваются друг с другом своими
идеями, однако Интернет позволяет делать это на принципиально новом уровне. Теперь люди могут работать
сообща и взаимодействовать, даже не встречаясь друг с другом. Для общения с другими разработчиками
есть несколько отличных веб-сайтов.
Maker Media — это глобальная платформа, объединяющая между собой создателей для обмена проектами и
идеями. Также эта платформа является местом, где разработчики могут находить и покупать продукты для
своих проектов. Для получения дополнительных сведений посетите Makezine по адресу http://makezine.com.
При работе с определенными материалами пригодятся практические навыки. Например, дерево и металл —
довольно популярные материалы для создания прототипов, но не каждый новичок умеет с ними правильно
работать. Вы удивитесь, когда узнаете, что можно сделать из пластмассы, глины, бумаги и проводов. Поиск
Google поможет получить дополнительные сведения или идеи о работе с различными материалами для
создания прототипов.
У LEGO Mindstorms есть большое сообщество участников и поклонников. С помощью LEGO Mindstorms вы
сможете создавать роботов LEGO и управлять ими с помощью приложения. Комплекты поставляются со всем
необходимым для реализации ваших идей. Изучите LEGO Mindstorms подробнее по
адресу http://mindstorms.lego.com.
Meccano (или Erector Set) — это система построения моделей, которая состоит из металлических полос,
пластин, угловых брусьев, колес, осей и шестеренок многократного использования с гайками и болтами для
крепления элементов. С помощью этого набора вы можете создавать рабочие прототипы и механические
устройства. Изучите Erector Set подробнее по адресу www.erector.us.
3D-печать — это процесс создания монолитных объектов на основе трехмерной модели, сохраненной в
файле. К компьютеру подключается устройство — 3D-принтер. В настоящее время производством и
продажей 3D-принтеров занимается множество компаний. Изучите Makerbot подробнее по
адресу https://www.makerbot.com.
Программы не могут работать без компьютера. Хотя вы можете создавать программы практически для
любого компьютера, некоторые платформы разработаны для новичков. Ниже приведены некоторые наиболее
популярные платформы.
Arduino — это физическая вычислительная платформа с открытым исходным кодом, основанная на простой
плате микроконтроллера, а также среда разработки программного обеспечения для платы. Вы можете
разрабатывать интерактивные объекты, которые принимают данные от различных коммутаторов или
датчиков для управления индикаторами, двигателями и другими физическими объектами. Изучите Arduino
подробнее по адресу http://arduino.cc.
Несмотря на то что платформу Arduino нельзя использовать в качестве компьютера, низкие требования к
электропитанию позволяют ей эффективно контролировать другие устройства.
Raspberry Pi — это недорогой компьютер размером с пластиковую карту, который можно подключать к
монитору компьютера или телевизору. Управлять им можно с помощью стандартной клавиатуры и мыши. С
его помощью можно делать все, что и на обычном компьютере — просматривать веб-страницы, проигрывать
видео высокого разрешения, создавать электронные таблицы, редактировать текстовые документы и играть в
игры. Изучите Raspberry Pi подробнее по адресу http://www.raspberrypi.org.
Ресурсы программирования
Программирование крайне важно для Интернета вещей. При создании решения для Интернета вещей не
обойтись без написания кода. Вы уже познакомились с Blockly и Python. Существует множество других
бесплатных ресурсов, которые помогут вам развить навыки программирования.
MIT OpenCourseWare (OCW) — проект по размещению в свободном доступе практически всех курсов
Массачусетского технологического института. OCW открыт для доступа всему миру и является отличным
ресурсом, где можно бесплатно познакомиться с программированием. Курсы OCW по программированию
можно найти по адресу http://ocw.mit.edu/courses/intro-programming.
Code Academy — еще один замечательный ресурс. С его помощью люди могут интерактивным способом
научиться писать программы. Этот ресурс можно найти по адресу http://www.codeacademy.com.
Дополнительная лабораторная работа. Настройка PL-App с помощью
Raspberry Pi
Cisco Prototyping Lab — это набор программных и аппаратных компонентов, которые позволяют быстро
создавать прототипы и моделировать различные решения цифровизации и аналитики данных для Интернета
вещей.
Аппаратные компоненты входят в состав комплекта Prototyping Lab Kit (PL-Kit). В основе PL-Kit лежат
открытые аппаратные макетные платы, такие как Raspberry Pi и Arduino. Комплект PL-Kit включает
дополнительные датчики, актуаторы и электронные компоненты. PL-Kit можно использовать для создания
сложных прототипов высокотехнологичных систем Интернета вещей, которые могут отслеживать и
инициировать реальные физические объекты, анализировать и обрабатывать данные и подключаться к сети
и облачным системам. Основной программный компонент Prototyping Lab — это Prototyping Lab App (PL-App).
PL-App вместе с PL-Kit позволяет изучать цифровизацию Интернета вещей и аналитику данных, а также
быстро создавать прототипы. PL-App предоставляет интерактивную среду для доступа к аппаратным и
программным ресурсам Raspberry Pi с помощью Jupyter Notebooks. С помощью PL-App можно получить
доступ к существующим лабораторным работам по Интернету вещей или создавать новые приложения
непосредственно на плате, отправлять их на выполнение и отслеживать выходные данные с помощью
различных средств визуализации.
В этой лабораторной работе вы загрузите ОС Raspberry Pi и установите ее на карту памяти microSD. После
установки карты памяти microSD, Raspberry Pi и среды Arduino, подключенной к Raspberry Pi, можно
управлять через интерфейс PL-App. Эта лабораторная работа содержит основные инструкции по начальной
настройке платы Raspberry Pi с помощью среды PL-App.
Примечание. Для просмотра кода Blockly в блокнотах Jupyter Notebook используйте веб-браузер Google
Chrome.
В этой лабораторной работе вы будете использовать пример блокнота PL-App для взаимодействия с
индикатором, включенным в простую цепь. Вам предстоит на учебной плате собрать простую цепь,
включающую сопротивление и светодиодный индикатор. Затем вы будете использовать программу LED Blink
для управления скоростью мигания индикатора.
Примечание. Для просмотра кода Blockly в блокнотах Jupyter Notebook используйте веб-браузер Google
Chrome.
В этой лабораторной работе будет изучаться использование Arduino и Arduino IDE для управления частотой
мигания светодиодного индикатора.
В этой лабораторной работе будет изучаться использование Arduino и Arduino IDE для управления частотой
мигания светодиодного индикатора.
Обзор
В начале этой главы мы рассмотрели применение базовых методов программирования для поддержки
устройств IoT. Блок-схемы — это диаграммы, которые используются для представления процессов.
Существует два распространенных типа программного обеспечения: системное ПО и прикладные программы.
Прикладные программы создаются для выполнения определенной задачи. Системное ПО работает между
аппаратным обеспечением компьютера и прикладными программами. Переменные можно разделить на две
категории.
Python — это очень распространенный язык, обеспечивающий удобство чтения и написания кода.
Python — интерпретируемый язык, поэтому для анализа и выполнения кода Python необходим
интерпретатор. Переменные — это именованные области памяти, которые используются для хранения
данных во время выполнения программы. Python поддерживает множество полезных функций и типов
данных, включая Range(), кортежи, списки, множества и словари. В Python также реализованы две
подструктуры: ELSE и ELIF.
Далее было рассмотрено создание прототипов. Создание прототипов — это процесс создания простой
рабочей модели продукта или системы. Команда из корпорации Google использовала «Быстрый метод
создания прототипа» для разработки Google Glass. Интернет позволяет обмениваться идеями на совершенно
новом уровне. Для общения с другими разработчиками есть несколько отличных веб-сайтов:
http://makezine.com
http://mindstorms.lego.com
www.erector.us
https://www.makerbot.com
http://arduino.cc
http://www.raspberrypi.org
http://beagleboard.org
https://blockly-games.appspot.com/
http://ocw.mit.edu/courses/intro-programming
https://www.khanacademy.org/computing/cs
http://www.codeacademy.com
https://quirky.com/about/