Публикации сообщества

Александр Григорьев • 18 октября 2018

Новое поколение микроконтроллеров и программных средств, в чем отличие?

Микроконтроллеры завтрашнего дня, в отличие от классической платы Arduino Uno, обладают большей производительностью. Но так ли это важно? Нужны ли мощные вычислительные возможности для решения элементарных задач?


Первым учебным заданием при знакомстве с микроконтроллерами обычно является программа мигания светодиодом. Но в реальных прикладных проектах, как правило, необходимо контролировать не один процесс, а несколько. Давайте попробуем одновременно помигать двумя светодиодами, причём каждым в собственном темпе. А лучше даже, чтобы один светодиод просто мигал, а второй сигналил азбукой Морзе, «произносил» букву «А» (точка тире).


Чтобы на практике увидеть, как эта задача реализуется с использованием разных микроконтроллеров и сред программирования, возьмем следующее: платы Arduino Uno, Iskra JS, BBS Micro:bit, Robotdyn SAMD21 M0 (Arduino M0 совместимую), а также модуль светодиодной сборки. 

Светодиоды


Мы не будем пользоваться готовыми библиотеками для мигания светодиодом (как предлагают разработчики платы Iskra JS, например), чужие библиотеки годятся не на все случаи жизни, а мы хотим разобраться с сутью, самостоятельно научиться управлять несколькими процессами.


Arduino Uno


При интерактивном управлении платой Arduino Uno из среды mBlock for PC всё реализуется достаточно просто и привычными методами. Почти в любом Scratch проекте нам приходится организовывать несколько циклов для решения разных задач. Воспользуемся этой возможностью и сейчас. Светодиод, подключенный к пину 11, вспыхивает на 0.3 секунды и делает паузу в 1.2 секунды, а подключенный к пину 12, вспыхивает на 0.7 секунды и делает паузу в 2 секунды.

Рис. 2


А в этом примере светодиод на пине 12 сигналит буквой «А» азбуки Морзе, всё выглядит тоже не особо сложно.

Рис. 3

 

Напомню, что работа в интерактивном режиме - это лишь "учебный" вариант, микроконтроллер в данном случае никакой самостоятельностью не обладает. Для реализации большинства прикладных проектов мы должны загрузить программу непосредственно в память микроконтроллера.

Попробуем написать программу для автономной работы на плате Arduino. Мы можем использовать лишь один главный программный цикл! И вынуждены прибегнуть к парадигме автоматного программирования.
ru.wikipedia.org/wiki/Автоматное_программирование

Рис. 4


От количества необходимых переменных слегка рябит в глазах, и это отбивает у нас желание заставить светодиод 12 сигналить буквой «А» азбуки Морзе.


Iskra JS


Здесь нам для реализации проекта придется использовать планировщик задач. Причем даже если мы хотим помигать единственным светодиодом (готовые библиотеки мы договорились не использовать, вы помните?). Если хотите включить в программу команду «ждать», попробуйте, только предварительно запаситесь инструкцией по рестарту платы без перезапуска загруженной программы.

Мигаем двумя светодиодами, программная среда Espruino Web IDE.

Рис. 5


Второй светодиод сигналит буквой «А».

Рис. 6


Совсем «интуитивным» такое программирование назвать нельзя, к сожалению. Да и очевидно, что использование планировщика сопряжено с множеством «подводных камней». Но прогресс налицо, у нас уже "почти" два главных программных цикла!


BBC Micro:bit


Это микроконтроллер, разработанный специально для образовательных нужд, но способный с не меньшим успехом решать и прикладные задачи в самых разных проектах. Что нового? 


Наконец-то у нас снова появляется возможность использовать несколько основных программных циклов! Кроме того, не обязательно подключать внешние светодиоды, на самой плате удобная светодиодная матрица.


Мигаем двумя светодиодами, программная среда Microsoft MakeCode.

Рис. 7


Как видите, программы для микроконтроллеров теперь стало возможно писать в том же стиле, что и для больших мощных компьютеров, с использованием тех же простых для восприятия парадигм программирования!


Второй светодиод сигналит буквой «А».


 

Рис. 8

 

Robotdyn SAMD21 M0


Описанным ниже способом можно управлять не только платой Robotdyn SAMD21 M0, но и самыми разными другими 32-разрядными микроконтроллерами: Arduino Due, Arduino Zero, ESP8266, ESP32, тем же BBC Micro:bit, Calliope, Adafruit Circuit Playground Express и т.д. Необходимым условием является лишь возможность загрузки на плату специальной прошивки, виртуальной машины MicroBlocks.
http://microblocks.fun/


Мигаем двумя светодиодами


 

Рис. 9


В процессе редактирования скрипта мы сразу же видим, как меняется работа программы. Удобно! Но если выдернуть провод USB и подключить плату к обычной батарейке, светодиоды снова замигают! Наша программа загружена непосредственно в память микроконтроллера.


Второй светодиод сигналит буквой «А».


Рис. 10


О возможностях новых сред программирования, в особенности MicroBlocks, можно писать долго. Мы являемся свидетелями радикального прорыва в области информационных технологий. Маленькая микросхема с вычислительными способностями, сопоставимыми с IBM PC AT, плюс визуальные средства разработки, доступные ребенку! Есть над чем задуматься...
www.lab169.ru/2017/10/06/умные-вещи-новый-виток-развития-технологий/


В заключение не могу в очередной раз не процитировать Сеймура Пейперта. 


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


Эти слова были написаны в 1980 (!!!) году. В 2002 году появилась визуальная среда Scratch, реализующая параллельную обработку на персональных компьютерах того времени. А в наши дни "мультиобработка" стала доступной и на микроконтроллерах.

 

P.S.

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

В первом случае мы при старте программы создаем в планировщике периодически выполняемое задание, и каждый раз при старте этого задания включается светодиод и создается новое задание планировщика для отсроченного выключения светодиода. Соответствующая программа для управления двумя светодиодами в текстовом виде выглядит вот так.

Рис. 11


Во втором случае все эти "мудрёности" не нужны, в текстовом виде программа в среде MakeCode выглядит вот так.

Рис. 12

 

Кол-во комментариев: (3)

Борис Ярмахов
Читаю, и думаю - в "традиционной" школьной системе координат - это скорее информатика или скорее физика? Или же это некоторый спецкурс про управление контроллерами? Вообще, сравнение, конечно, очень содержательное и дает многое для понимания того, как работают разные системы. Можно ли по итогам такого сравнения как-то их "рейтинговать", говорить, что у одного микроконтроллера есть такие-то плюсы и минусы, а у другого - другие? Ведь непосвященного читателя будет интересовать, скорее, вопрос выбора!
  • Войдите или зарегистрируйтесь, чтобы оставлять комментарии
  • Александр Григорьев
    Это скорее технология, ведь именно технология интегрирует и физику, и математику, и информатику, и прочие предметы. Как быстро завязать галстук: https://www.youtube.com/watch?v=bvSAozk3gwI как быстро умножить одно двузначное число на другое: https://www.youtube.com/watch?v=p4Q5hCfcWKA как разжечь костер, как рассчитать раскладку для туристического похода, как подключить лампочку или светодиод, как построить 3D-модель для печати на принтере, как обработать фотографию в графическом редакторе, это все вопросы технологии. И как быстро написать программу для собственных нужд, само собой. Но более углубленно часть этих вопросов имеет смысл проходить на спецкурсах, например, "Робототехника и конструирование" в рамках внеурочной деятельности, как в нашей школе. Что касается выбора, то если отвечать кратко, беспроигрышный вариант - ориентироваться на то, что было создано специально для образования и успело зарекомендовать себя не столько в нашей стране, сколько во всем мире. Хоть это и дороже. Но любая монополия - это плохо. И для каждого конкретного случая может найтись неплохая альтернатива. Поэтому надо делать отдельные обзоры и по платам, и по средствам разработки.
  • Войдите или зарегистрируйтесь, чтобы оставлять комментарии
  • Ольга Тузова
    В "традиционной новейшей" школьной системе координат это - и не физика, и не информатика и не технология. К сожалению. Технология в школе понимается как вышивка крестиком для девочек и работа напильником для мальчиков. Поэтому - да, приходится выносить в STEM-ориентированные спецкурсы и внеурочку. Мы пробуем модульно вводить работу с микроконтроллером в школьный курс технологии, но стоит это неимоверных усилий. Александр Григорьев, традиционно микроконтроллер ассоциируется с робототехникой, но мне кажется, что его возможности шире этой сферы. Далеко ходить не надо - microbit.org :)
  • Войдите или зарегистрируйтесь, чтобы оставлять комментарии