У этого подхода есть очевидные преимущества и не менее очевидные недостатки.
Из важных преимуществ – на любом этапе будет понятна суть происходящего на самом низком уровне, на уровне сигналов и команд процессора, на уровне элементов и микросхем. Понимание сложных вещей будет достигаться постепенно, по мере продвижения от простого к сложному.
В то же время огромный недостаток метода обучения с самых основ заключается в том, что весь процесс отнимет очень много времени и сил. Двигаясь с самого начала, вы не скоро сможете создать что-нибудь достаточно сложное и интересное. В то же время ученикам уже на первых занятиях захочется насладиться результатами своего труда.
Второй подход предполагает, что обучение начинается с использования готовых обучающих наборов, содержащих микроконтроллеры и периферийные блоки, с применением графических инструментов программирования и языков высокого уровня. Далее после достижения определенных результатов, можно перейти к изучению низкоуровневых средств и инструментов. Именно этот подход мы и будем использовать в данной книге.
Проект модели марсохода BoxRover
На мой взгляд, в процессе обучения нужно двигаться к какой-нибудь интересной, но сложной цели, при этом шаги должны быть достаточно крупными, чтобы продвижение было заметно. Сложность цели необходима для получения самых разносторонних знаний, которые пригодятся в дальнейшем на работе в области ИТ и робототехники.
Здесь интересно было бы создать так называемый STEM-проект, реализация которого позволить получить знания, необходимые в реальной жизни. Аббревиатура STEM – это сокращение от Science, Technology, Engineering и Math, т.е. наука, технология, инженерное дело и математика.
Я предлагаю в качестве такого учебного проекта создать несложную модель марсохода (или движущегося робота для изучения каких-либо других планет) с названием BoxRover. Пусть ваше устройство никогда не полетит в космос, но оно сможет управляться по радио или через интернет, измерять различные параметры окружающей среды, получать фотографии и видео, и передавать все это «на землю», например, в ваш компьютер или планшет.
По мере создания модели марсохода BoxRover вы научитесь программировать встроенные микроконтроллеры, управлять движением, получать данные бортовых измерительных устройств и получите другие необходимые знания.
На рис. В.2 мы показали пример современных компонентов, из которых вы будете делать своего первого робота.
Рис. В.2. Некоторые современные компоненты для изготовления робота
Выбор платформы для обучения
На различных курсах робототехники для детей для обучения используются наборы Lego. С их помощью можно быстро собрать робота из готовых деталей и так же быстро их запрограммировать на выполнение различных несложных действий. На мой взгляд, такие наборы, хотя и дают представление о некоторых функциях роботов, все же недостаточно хорошо демонстрируют взаимодействие микрокомпьютеров и периферийных устройств.
Чтобы лучше понимать, что происходит, научиться не только программировать готового робота, но и создавать собственных из электронных блоков и компонентов, на разных стадиях создания модели марсохода мы будем работать с микроконтроллерами BBC micro:bit, платформой Arduino, STM32 Nucleo, а также Raspberry Pi.
Микроконтроллер BBC micro:bit
Микроконтроллер BBC micro:bit был создан корпорацией BBC как открытый проект, нацеленный на повышение компьютерной грамотности, и в нынешнем виде стал доступен в феврале 2016 года.
В России micro:bit можно купить в нескольких интернет-магазинах по цене ниже 1900 руб., что делает его весьма доступным решением для начала обучения.
Этот недорогой микрокомпьютер размером с половину кредитной карты оснащен неплохим набором периферийных устройств. Вот что есть у него на борту:
– 32-разрядный процессор Nordic nRF51822 на базе ARM Cortex M0 с тактовой частотой 16 МГц;
– флеш-память объемом 256 Кбайт, содержимое которой сохраняется при выключении питания;
– оперативная память объемом 16 Кбайт;
– две программируемые кнопки;
– монитор из 25 светодиодов;
– акселерометр (датчик ускорения);
– магнитометр (встроенный компас);
– измеритель температуры;
– встроенный модуль Bluetooth диапазона 2,4 ГГц для беспроводных коммуникаций;
– интерфейс USB;
– встроенный аналого-цифровой преобразователь;
– интерфейс GPIO (General Purpose Input Output)
Как видите, в микроконтроллере micro:bit уже имеется встроенное оборудование, которое потребуется нам для модели марсохода (рис. В.3, В.4). Даже с базовым оборудованием микроконтроллера наш марсоход сможет измерять температуру, напряженность магнитного поля, реагировать на ускорения, и даже показывать инопланетным зрителям картинки на мониторе!
Рис. В.3. Оборудование на плате micro:bit
По мере реализации проекта BoxRover мы подключим к micro:bit и другие устройства, например, контроллеры, предназначенные для управления двигателями платформы, погодную станцию, OLED-монитор.
Особенно следует отметить наличие у micro:bit интерфейса GPIO. Используя порты GPIO, вы сможете подключать к микроконтроллеру различные цифровые и аналоговые устройства.
Два контакта порта GPIO используются для подключения внешних устройств, работающих с протоколом I
C (Inter-Integrated Circuit). Также предусмотрено три контакта для обмена данными с устройствами по протоколу SPI (Serial Parallel Interface).
Наличие портов I
C и SPI дает возможность подключить к микроконтроллеру такие устройства, как моторы и шаговые двигатели, датчики движения, датчики газа и наличия воды, радио модули и т.д. Эти устройства продаются в интернет-магазинах и, как вы увидите, легко подключаются к micro:bit и программируются.
Микрокомпьютер micro:bit при питании от батарей потребляет всего несколько десятков мА при напряжении питания 3В. И это если включены все светодиоды, а процессор загружен на полную мощность. Заметим, что макет нашего марсохода будет питаться от батарей или аккумуляторов, поэтому важно, чтобы все бортовые устройства потребляли как можно меньше энергии.
Рис. В.4. Кнопки и светодиодный экран на плате micro:bit
Начинающие программисты смогут воспользоваться визуальным редактором программ MakeCode. Этот редактор доступен через браузер, так что его даже не надо устанавливать на компьютер (хотя есть и версия для установки на Windows и MacOS). Также можно работать с MakeCode при помощи мобильного приложения, доступного для смартфонов и планшетов на базе Android и iOS.
Программирование для micro:bit на языке Python возможно при помощи несложного в использовании редактора Python Editor. Есть также редакторы, позволяющие программировать micro:bit на языках JavaScript, С и даже Ada.
Микроконтроллер Arduino
Микроконтроллер Arduino был создан в 2005 году для быстрого обучения студентов работе с электронными проектами. Сейчас он стал очень популярен, однако, на мой взгляд, Arduino имеет заметно более высокий порог вхождения по сравнению с BBC micro:bit.
Прежде всего, на плате Arduino нет таких устройств, как на micro:bit. Предполагается, что для подключения различных периферийных устройств (датчиков, например) вы будете приобретать платы расширения (Arduino Shield или шилды). Эти платы и устройства можно подключить к плате Arduino через разъем GPIO.
В продаже имеется очень много плат расширения Arduino Shield самого разного назначения, однако все их нужно покупать дополнительно.
Кроме того, и это важно, для программирования Arduino используется не самый простой в изучении язык С++. Вам также придется установить на свой компьютер Arduino IDE, либо использовать онлайн редактор Arduino Web Editor.
Изучение языков С и С++ очень полезно в плане профессиональной работы с микроконтроллерами, однако на первом этапе при использовании micro:bit можно получить самые базовые представления о робототехнике и без знаний этих языков программирования.
Что касается энергопотребления, то сам по себе микрокомпьютер Arduino довольно экономичен. Плата Arduino Uno требует питание 9В, потребляя при этом порядка 50 мА. Есть и более экономный вариант – Arduino Pro Mini. Он может использовать для питания напряжение 3,3В (как micro:bit), и при этом потребляет всего несколько десятков мкA. Тем не менее, следует учитывать энергопотребление дополнительных модулей (как и в случае micro:bit), а оно может быть довольно значительным.
Конечно, платформу Arduino можно использовать для создания своей модели марсохода, однако мы начнем с платформы BBC micro:bit, как более легкой в освоении.