По мере создания модели марсохода BoxRover вы научитесь программировать встроенные микроконтроллеры, управлять движением, получать данные бортовых измерительных устройств и получите другие необходимые знания.
На рис. В.2 мы показали пример современных компонентов, из которых вы будете делать своего первого робота.
Рис. В.2. Некоторые современные компоненты для изготовления робота
На следующем этапе вы сделаете и другие проекты, например, элементы автоматизации умного дома.
Выбор платформы для обучения
На различных курсах робототехники для детей используются наборы Lego. С их помощью можно быстро собрать робота из готовых деталей и так же быстро запрограммировать на выполнение различных несложных действий. На мой взгляд, такие наборы, хотя и дают представление о некоторых функциях роботов, все же недостаточно хорошо демонстрируют взаимодействие микрокомпьютеров и периферийных устройств.
Чтобы лучше понимать, что происходит, научиться не только программировать готового робота, но и создавать собственные проекты из электронных блоков и компонентов, на разных стадиях обучения мы будем работать с микроконтроллерами BBC micro:bit, платформой Arduino, STM32 Nucleo, а также Raspberry Pi.
Микроконтроллер BBC micro:bit
Микроконтроллер BBC micro:bit был создан корпорацией BBC как открытый проект, нацеленный на повышение компьютерной грамотности, и в первой версии стал доступен в феврале 2016 года. Сейчас в продаже появилась значительно улучшенная версия 2 этого микроконтроллера.
В России micro:bit версии 1.5 можно купить в нескольких интернет-магазинах по цене ниже 1900 руб., что делает его весьма доступным решением для начала обучения. На момент написания книги версию 2 можно было приобрести в магазине https://mrobot.by (примерно по такой же цене), а также в зарубежных магазинах. На странице https://microbit.org/buy/ представлен список компаний из разных стран, где можно купить micro:bit версии 2.
Даже первая версия этого недорогого микрокомпьютера размером с половину кредитной карты оснащена неплохим набором периферийных устройств. В micro:bit версии 2 был добавлен микрофон, динамик, еще одна сенсорная кнопка, увеличен объем памяти и мощность процессора. Кроме того, появился режим сохранения энергии, что важно при питании от батарей и аккумуляторов.
В табл. 1 вы найдете сравнение характеристик micro:bit версии 1.5 и 2 с другими широко распространенными микроконтроллерами – Arduino UNO и STM32 Nucleo F401RE.
Табл. В1. Сравнение характеристик микроконтроллеров
Если вы создаете проект робота или какой-либо другой проект с микроконтроллером, то при использовании micro:bit v2 можете воспользоваться многими устройствами, установленными на плате этого микроконтроллера:
Заметим, что в micro:bit v2, в отличие от v1.5, шина I2C полностью выделена для внешних устройств. К ней не подключены устройства, расположенные на плате micro:bit.
Также добавился четвертый свободный для использования контакт интерфейса GPIO. Была увеличена допустимая токовая нагрузка на подключаемую периферию. Если раньше в micro:bit v1.5 суммарный ток на контактах GPIO не должен был превышать 90 мА, то в версии 2 этот предел расширен до 190 мА.
Как видите, в микроконтроллере micro:bit уже имеется встроенное оборудование, которое потребуется нам для модели марсохода (рис. В.3, В.4). Устройства, которые появились на плате micro:bit v2 показаны на рис. В.5 и В.6.
Даже с базовым оборудованием micro:bit версии 2 наш марсоход сможет измерять температуру, напряженность магнитного поля, реагировать на ускорения, подавать звуковые сигналы, обнаруживать источники звука, и даже показывать инопланетным зрителям картинки на мониторе!
Рис. В.3. Оборудование на плате micro:bit v1.5
По мере реализации проекта BoxRover мы подключим к micro:bit и другие устройства, например, контроллеры, предназначенные для управления двигателями платформы, погодную станцию, OLED-монитор.
Особенно следует отметить наличие у micro:bit интерфейса GPIO. Используя порты GPIO, вы сможете подключать к микроконтроллеру различные цифровые и аналоговые устройства.
Два контакта порта GPIO используются для подключения внешних устройств, работающих с протоколом I2C (Inter-Integrated Circuit). Также предусмотрено три контакта для обмена данными с устройствами по протоколу SPI (Serial Parallel Interface).
Наличие портов I2C (встречается обозначение I2C) и SPI дает возможность подключить к микроконтроллеру такие устройства, как моторы и шаговые двигатели, датчики движения, датчики газа и наличия воды, радио модули и т.д. Эти устройства продаются в интернет-магазинах и, как вы увидите, легко подключаются к micro:bit и программируются.
Микрокомпьютер micro:bit при питании от батарей потребляет всего несколько десятков мА при напряжении питания 3В. И это если включены все светодиоды, а процессор загружен на полную мощность. Заметим, что макет нашего марсохода будет питаться от батарей или аккумуляторов, поэтому важно, чтобы все бортовые устройства потребляли как можно меньше энергии.
Рис. В.4. Кнопки и светодиодный экран на плате micro:bit v1.5
Начинающие программисты смогут воспользоваться визуальным редактором программ MakeCode. Этот редактор доступен через браузер, так что его даже не надо устанавливать на компьютер (хотя есть и версия для установки на Windows и MacOS). Также можно работать с MakeCode при помощи мобильного приложения, доступного для смартфонов и планшетов на базе Android и iOS.
Рис. В.5. Сенсорная кнопка в виде логотипа, микрофон и светодиод на плате micro:bit v2
Рис. В.6. Микрофон, индикатор питания и динамик на плате micro:bit v2
Для micro:bit можно создавать программы на языке Python, используя несложный в использовании редактор Python Editor. Есть также инструменты, позволяющие программировать micro:bit на языках JavaScript, С и даже Ada.
Микроконтроллер Arduino
Микроконтроллер Arduino был создан в 2005 году для быстрого обучения студентов работе с электронными проектами. Сейчас он стал очень популярен, однако, на мой взгляд, Arduino имеет заметно более высокий порог вхождения по сравнению с BBC micro:bit.
Прежде всего, для программирования Arduino используется не самый простой в изучении язык С++. Вам также придется установить на свой компьютер Arduino IDE, либо использовать онлайн редактор Arduino Web Editor.
Изучение языков С и С++ очень полезно в плане профессиональной работы с микроконтроллерами, однако на первом этапе при использовании micro:bit можно получить представление о робототехнике и без знаний этих языков программирования.
Далее, на плате Arduino нет таких устройств, как на micro:bit. Предполагается, что для подключения различной периферии (датчиков, например) вы будете приобретать платы расширения (Arduino Shield или шилды). Эти платы и устройства можно подключить к плате Arduino через разъем GPIO.