Обучение программированию умных вещей с использованием конечных автоматов. Проект УМКИ (Игорь Воронин, OSEDUCONF-2021)

Материал из 0x1.tv

(перенаправлено с «20210616D»)
Докладчик
Игорь Воронин.jpg
Игорь Воронин

Обсуждаются способы программирования устройств при помощи модели управления в форме конечного автомата. Рассмотрены необходимые ресурсы для создания программ автоматного программирования. Предлагается решение в виде комплекта пособий по образовательной робототехники, как пакет в школьном дистрибутиве UMKI.

Видео

on youtube

Презентация

Обучение программированию умных вещей с использованием конечных автоматов. Проект УМКИ (Игорь Воронин, OSEDUCONF-2021).pdf Обучение программированию умных вещей с использованием конечных автоматов. Проект УМКИ (Игорь Воронин, OSEDUCONF-2021).pdf Обучение программированию умных вещей с использованием конечных автоматов. Проект УМКИ (Игорь Воронин, OSEDUCONF-2021).pdf Обучение программированию умных вещей с использованием конечных автоматов. Проект УМКИ (Игорь Воронин, OSEDUCONF-2021).pdf Обучение программированию умных вещей с использованием конечных автоматов. Проект УМКИ (Игорь Воронин, OSEDUCONF-2021).pdf Обучение программированию умных вещей с использованием конечных автоматов. Проект УМКИ (Игорь Воронин, OSEDUCONF-2021).pdf Обучение программированию умных вещей с использованием конечных автоматов. Проект УМКИ (Игорь Воронин, OSEDUCONF-2021).pdf Обучение программированию умных вещей с использованием конечных автоматов. Проект УМКИ (Игорь Воронин, OSEDUCONF-2021).pdf Обучение программированию умных вещей с использованием конечных автоматов. Проект УМКИ (Игорь Воронин, OSEDUCONF-2021).pdf Обучение программированию умных вещей с использованием конечных автоматов. Проект УМКИ (Игорь Воронин, OSEDUCONF-2021).pdf Обучение программированию умных вещей с использованием конечных автоматов. Проект УМКИ (Игорь Воронин, OSEDUCONF-2021).pdf

Thesis

Умные вещи — smart shings занимают всё больше наше пространство, автоматизируя рутинные операции. Они включают свет, обогреватель в доме, пылесос или телевизор с мобильного устройства. Так же уже ни кого не удивляет умная теплица возле дома, где выращиваются помидоры, огурцы или перцы на гидропонике. Для управления этим устройствами можно использовать голосовых помощников или приложения на смартфоне.

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

Термин «автоматное программирование» (АП) введён в 90-х годах прошлого века. Множество споров вокруг него порождены отсутствием его определения, основанного, что было бы логично, на понятиях теории программ. В результате база АП формируется интуитивно, что порождает модель управления вычислениями мало похожую на первоисточник — модель конечного автомата (КА).

Можно привести множество аргументов в пользу перспективности автоматного программирования. Кроме SWITCH-технологии, в качестве «автоматных сред», реализующих автоматный подход в программировании, можно привести пакет Stateflow системы MATLAB или язык UML. В определённой степени альтернативой им может служить среда автоматного Визуального Компонентного Программирования — ВКПа. Проблема АП лежит и в плоскости создания соответствующего ему языка программирования. Часто его роль исполняют существующие языки, например C++.

В любом языке программирования выделяют:

  1. данные,
  2. операции
  3. управление.

Схематология определяет модель программы в форме схемы программы, которую можно представить как тройку S = (M, A, C), где M — конечное множество элементов памяти, называемых переменными, A — конечное множество операторов, C — управление. Под элементами памяти будем понимать также более сложные объекты, а к операторам будем относить программные функции.

Поставим множеству каналов автоматного управления С операторы из A: входным каналам — предикаты, т.е. функции, выполняющие [только] анализ элементов множества M и возвращающие булевское значение, выходным каналам — действия, представленные функциями, выполняющими преобразования элементов множества М.

Введённое определение автоматной программы отличает её от других моделью управления, представленного аналитической, графической, матричной и любой другой формой задания автоматов (о способах задания конечных автоматов см. ).

При реализации автоматного управления очень удобно описать сразу все его свойства, в форме графа, подобно SWITCH-технологии, и далее представить его в табличной форме, подобно таблицам решений, или некая аналитическая форма описания автомата.

Если, допустим, нам необходимо запрограммировать работу «УМНОЙ РОЗЕТКИ УМКИ», которая умеет включать в разное время по расписанию разные устройства от 220 В, или от 12В и производить замеры с датчиков, то как правило простейшие операции программирования — включения реле, или снятие показаний с датчиков — можно реализовать в среде ARDUINO скачивая уже готовые скечи с GITHUB-a. Но когда нам уже нужно объединить весь функционал исполнительных элементов в единый код, то оказывается, что необходимо в цикле реализовать почти систему реального времени. Что для пользователей без подготовки достаточно проблематичная задача.

Таким образом, если подходить к решению поставленной задачи по программированию умных устройств с использованием конечных автоматов — АП, то задача становится вполне легко реализуемой для любого участника процесса, кто знаком хотя бы на самом базовом уровне с программированием в среде ARDUINO. Для этого ему только достаточно построить схему связей конечных автоматов и используемых устройств, далее она уже достаточно тривиальным образом будет переведена в набор исполняемого кода на основе конструкций CASE-SWITCH

И тогда текущее состояние автомата может быть объектом для организации синхронизации процессов, отражать ход вычислений, использоваться при отладке и т.д. и т.п. Оно устанавливается автоматически в процессе функционирования модели, что уменьшает число операторов программы, упрощает алгоритм и повышает в конечном итоге надёжность программирования.

В нашем случае множество объектов модели определяется числом компонентов, из которых состоит наша умная розетка. Для её программирования очень удобно использовать модель в форме конечных автоматов.

Схема автоматов управления умной розеткой
Схема автоматов управления умной розеткой
Обучение программированию умных вещей с использованием конечных автоматов. Проект УМКИ (Игорь Воронин, OSEDUCONF-2021)!.jpg

Примечания и ссылки

Plays:0   Comments:0