BBC Micro:bit — детский обучающий микрокомпьютер, первое знакомство

Привет geektimes.

О компьютерах BBC Micro я впервые прочитал здесь же, на geektimes. Еще в 80х британская компания BBC запустила обучающий проект, целью которого было повышение уровня компьютерной грамотности. Подробнее можно прочитать в статье компании Plarium «BBC Micro — компьютер, который обыграл ZX Spectrum», но мы вернемся к делам сегодняшним. Долго ли, коротко ли, BBC решила повторить проект уже на современной элементной базе, и выпустила микрокомпьютер BBC Micro: bit.

5c800c69fa264e1a9c57ef4bd5aff242.jpg

Как можно видеть, современная модель чуть поменьше своего предшественника.

Про Micro: bit уже писали на geektimes, как про то что плату уже можно купить, так и про то, что британским школьникам ее даже раздают бесплатно. Однако здесь на сайте похоже мало кто на ней программировал, пора восполнить этот пробел.

Как это работает, подробности под катом.

Зачем это надо


Может возникнуть резонный вопрос «а зачем это надо», учитывая разнообразие разных устройств, от Arduino до ESP32 или Raspberry Pi. Тут ответ простой.
1) Для школьников (британских) это бесплатно, а дареному коню, как известно… У платы конечно есть недостатки — светодиодов в матрице маловато (да и не цветные), хотелось бы еще пару силовых транзисторов для управления нагрузками, но опять же, смотрим п1. Для всех остальных, кстати, цена вопроса порядка 20Евро на amazon или ebay.
2) Эти платы официально поставляются также в школы для уроков информатики — детям гораздо интереснее изучать информатику на реальных девайсах (например написать код для проверки влажности в цветке и повесить реально эту штуку на цветок), чем просто делать что-то абстрактное.
3) Плата ориентирована на детей от 7 лет — та же Arduino была бы сложновата, т.к. без внешних устройств она бесполезна, а здесь то что надо, встроенных возможностей более чем достаточно. А для кружков и желающих сделать что-то посложнее, есть платы расширения, о которых будет рассказано ниже.
4) Встроенных функций платы — bluetooth, компас, акселерометр, serial-port, возможность работы с I2C/SPI/звуком/аналоговыми входами, вполне достаточно чтобы покрыть 99% потребностей урока информатики, не говоря уже о таких «модных» направлениях как «умный дом» или носимые устройства (плата может соединяться со смартфоном, измерять температуру и освещенность, считывать данные с внешних устройств и пр). Простор для творчества тут явно есть.

В общем, проект весьма интересный, и можно искренне порадоваться что в Британии для своих детей такое делают. Плату кстати, можно программировать с помощью визуально-блочного языка программирования, на javascript или с помощью Python (чисто для справки, в российских школах до сих пор учат на Turbo Pascal, но не будем о политике грустном). При желании в Micro: bit можно собрать и залить mbed os и писать на С++, но это уже вряд ли для школьников.

Железо


Внешний вид платы хорошо виден на блок-схеме:

be4e58c3fc0e4f2da9a42922f7fa0cd1.png

«На борту» есть ARM Cortex-M0 процессор, 256Кб Flash ROM, 16Kб RAM, 16МГц тактовая частота. Также есть поддержка BTLE, 2.4ГГц-трансмиттер для одноранговой связи (101 канал), акселерометр, компас, термометр, и линейка пинов GPIO, среди которых довольно много всего:

60b0b57f320e4b0d8210237d4af124c1.png

Также есть 2 кнопки для ввода (еще для ввода доступен жест «встряхивание»), светодиодная матрица 5×5, и 4 «крупных» пина, рассчитанных на то, чтобы ребенок прикрутил проводами или «крокодилами» что-нибудь несложное, например датчик влажности для цветка или переменный резистор.
Гребенка пинов сделана плоской, так что ее можно вставить в плату расширения, типа такой (цена вопроса 10–15 Евро):

8185c5a960c44be4ba4d6bddc8c179a0.png

Есть разные платы расширения, например плата управления моторами, что позволяет сделать такого робота:

61baac3ed06a4c7bb8032776f9189c05.png

Однако, в комплекте с платой идет только батарейный отсек, все прочие модули докупаются отдельно. Впрочем, и в стандартной комплектации плата может весьма немало.

Софт


Первое что удивило, никакого софта на компьютер ставить не нужно вообще. При подключении платы по MicroUSB она просто видна как съемный диск. Дальше достаточно зайти на http://microbit.org/code/ и выбрать на чем хотим писать — Javascript или Python.

Редактор Javascript в «блочном» режиме открывается прямо в браузере и выглядит вот так:

edd7cf4bc6cb4a1b95ff672020090559.png

Здесь я написал небольшую программу, которая просто увеличивает счетчик по нажатию кнопки, а по нажатию 2х кнопок сбрасывает его в 0.

В общем-то, ребенок может и не знать, что такое Javasdcript, но при желании можно переключиться в god mode «полноценный» редактор:
0998bc188d1042c88f2623e95efaf0a4.png

Далее достаточно нажать «Download», будет скомпилирован hex-файл, который достаточно просто сохранить на «диске» microbit — программа будет загружена во флеш-память и запущена. Даже если нет платы, прямо в браузере есть полноценный симулятор, в котором можно протестировать все функции программы.

В качестве готовых «блоков» школьнику доступны множество различных функций: от простого ввода-вывода до воспроизведения звука или управления серво-машинкой. Я объединил часть блоков на одном скриншоте, и это далеко не все:

3a0fcde6deeb4bafaef59989a7e0f71c.jpg

Если говорить о Python, то редактор весьма прост, и конечно, не дотягивает до PyCharm, но простой код написать вполне можно:

c61cf7659f034fc78ed04a7d5f71b2c1.png

Увы, ни проверки ошибок, ни хорошей подсветки синтаксиса, тут нет. Редактор даже примитивнее чем Arduino IDE (или я толком не разобрался). Если в коде ошибка, редактор ее нигде не покажет, скрипт загрузится «как есть», какой-либо консоли для отладки тоже нет (хотя надо проверить, не поддерживается ли при отладке serial port). Такое ощущение что редактор сделали «до кучи», основным для разработки видимо считается блочный редактор (а может еще и доделают, плата только стала поступать в школы). Впрочем, сам язык с дополнительными библиотеками вполне функционален, API можно посмотреть на microbit-micropython.readthedocs.io/en/latest.

Интересно заметить, что в комплекте с платой идет батарейный блок, а создавать и загружать программы можно и с планшета под iOS или Android. Теоретически Micro: bit можно использовать вообще не имея компьютера и даже электрической розетки. Вероятно это было сделано в расчете на развивающиеся страны, например в Индии число бедных семей имеющих смартфон или планшет вместо ПК достаточно велико.

Заключение


Можно считать, что идея BBC весьма неплоха. Можно лишь порадоваться что в Великобритании пытаются делать для детей что-то новое и современное.
Примеры разных обучающих проектов для Micro: bit можно посмотреть здесь: microbit.org/ideas.

С точки зрения программирования «для взрослых», плата конечно, несколько скучновата. Набор портов ввода-вывода достаточен, но редактор весьма прост, да и без переходника использовать пины не очень удобно. Но надо понимать, что целевая аудитория платы это дети от 7 лет, да и сделать что-то интересное именно для такой аудитории — вполне интересный challenge.

Есть мысль сделать ряд видео-уроков с простыми программами для школьников, но есть сомнения, надо ли это в рунете кому-нибудь (в англоязычном youtube таких видеотуториалов и так довольно много).

Как бонус тем кто дочитал до сюда, для желающих посмотреть плату «вживую», я выложил небольшое видео.

© Geektimes