Рудирон — разработка ПО на языке С++ и дополнительные программные инструментальные средства

942cf9eba4ed79538fb0e8ed6127f32b.png

Творим, а не копируем!

Продолжим серию статей о контроллере «Рудирон» описанием основных программных средств для разработки ПО на языке С++. Устанавливать ПО можно на Windows или Astra Linux. Мы также успешно протестировали установку на РЕД ОС.

 В зависимости от уровня обучения, разработку можно вести в среде Arduino IDE или в Visual Studio Code. Первый вариант подойдет для школьников с 5 класса и их педагогов, второй — для школьников старших классов, студентов колледжей и вузов.

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

—        Arduino IDE версии 2.2 (или выше) — https://www.arduino.cc/en/software;

—        Visual Studio Code версии 1.80 (или выше) — https://code.visualstudio.com/download;

—        Python (версия 3.6 или выше) — https://www.python.org/downloads/windows/.

 Полная инструкция по установке находится на GitFlic (Методические материалы по работе с Рудироном) —

 https://gitflic.ru/project/akvarius-rudiron/rudiron-distr/blob/raw? file=docs%2Fru%2F%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B5_%D0%BC%D0%B0%D1%82%D0%B5%D1%80%D0%B8%D0%B0%D0%BB%D1%8B_%D0%BF%D0%BE_%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B5_%D1%81_%D0%A0%D1%83%D0%B4%D0%B8%D1%80%D0%BE%D0%BD (%D0%B0%D0%B2%D1%82%D0%BE%D0%B2%D1%8B%D0%B1%D0%BE%D1%80_%D0%BF%D0%B8%D1%82%D0%B0%D0%BD%D0%B8%D1%8F).pdf&inline=false

  Обычно в образовательных учреждениях эти программные средства уже установлены. Однако если вам нужна инструкция по установке всех пунктов, она размещена на сайте Рудирон.Рф[1] .

Что представляют собой установочные скрипты

Пакет программного обеспечения «Рудирон» включает:

—        драйвер COM порта,

—        toolchain,

—        расширение Visual Studio Code,

—        библиотеки непосредственно контроллера.

 Скрипты для установки, как и техническая документация с методическими материалами по программированию, лежат на GitFlick https://gitflic.ru/project/akvarius-rudiron.

 Скрипты установки для ПАК «Рудирон», а также все необходимые программные средства и библиотеки находятся в каталоге C:\Users\Пользователь\AppData\Local\Arduino15\packages\Rudiron. Внутри этой директории две папки:

07f9700ce5efbc67d6533d263b6db2d6.png

 В одной (hardware) хранятся непосредственно библиотеки для интеграции с Arduino.

6acb8bd55279c8e33bc21940a9fd8cee.png

 А в каталоге tools лежат программные средства — драйвера, программы для прошивки контроллера, средства отладки opencd, toolchain.

8342e5ad336c747d220e41ce5c6c32b5.png

Установка под Windows (на примере Windows 10)

Установочный скрипт можно скачать по ссылке: https://gitflic.ru/project/akvarius-rudiron/rudiron-distr.

7fc55a8e248efc2170a4c7401e503916.png

 С помощью любого архиватора (WinZip, WinRar и т.п. или встроенного архиватора Windows 10) его необходимо распаковать во временный каталог, например «C:\temp\».

ef43a9f9227e84bdbc0f211a0b0780a2.png

После распаковки запускаем выполнение скрипта «install».

10ff50e1361e245378c8d9fc92075da3.png

 Если данная команда в выпадающем меню отсутствует, то вызываем командную строку (в Windows для этого нажимаем сочетание клавиш WIN+R и в открывшемся окне запуска вводим имя программы — «cmd»). Для перехода в каталог скриптов установки набираем в строке ввода:

 cd «c:\temp\Rudiron_Distribution_Scripts»[3] 

 Подкорректируйте эту строку, если название каталога отличается от нашего примера. Точное местонахождение каталога можно скопировать в проводнике:

719d57278333170405eb10152a0f75bc.png

 В командной строке набираем команду:

 python install.py

 и нажимаем «Enter». Дожидаемся завершения работы скрипта. Признаком успешного завершения будет сообщение «Установка дистрибутива успешно завершена» в окне запуска скрипта. 

66f19d4c256839d05ae1142f9c11f3b3.png

 Нажмите клавишу «Enter» для закрытия данного окна.

Установка под Linux (на примере Astra Linux)

Под Astra Linux установка выглядит схожим образом. Как и в случае с Windows, скрипты установщика надо скачать по адресу https://gitflic.ru/project/akvarius-rudiron/rudiron-distr.

e0f47b176aa9b9065d3201cbec4bedc1.png

 Распаковываем скрипты в любой каталог (например »/tmp»), запускаем терминал Fly («Alt+T») и переходим в каталог распакованных скриптов при помощи команды:

 cd /tmp/«наименование каталога со скриптами»

 Запускаем на выполнение скрипт «install» командой:

 python3 install.py

a909c1cd620b49cf2db56564e30fd707.png

 Дожидаемся завершения работы скрипта. Признаком успешного завершения будет сообщение «Установка дистрибутива успешно завершена».

9d64819203f7bbe9fe049493d2e2f155.png

 Нажимаем клавишу «Enter» для закрытия данного окна.

Настройка виртуальных COM-портов

В отличии от Windows, где виртуальные порты COM сразу доступны пользователю, в Linux системе необходимо установить разрешения на работу с ними. Для получения доступа к порту обмена данными с ПАК Рудирон необходимо добавить своего пользователя в группу dialout. Для этого в Astra Linux необходимо выполнить команду:

 sudo usermod –a –G dialout «имя пользователя» (имя пользователя пишется без кавычек)

 Другой вариант решения проблемы — выполнить команду:

 sudo chmod a+rw /dev/ttyUSB0

 На этом установка в ОС Astra Linux успешно завершена.

Расширение для Visual Studio Code «Rudiron Tasks»

Мы сделали отдельный модуль «Rudiron Tasks» для загрузки программ в контроллер непосредственно из интерфейса VS Code. Модуль не является частью исходной  системы VS Code и добавляется при установке дистрибутива ПО ПАК Рудирон. После установки модуль появляется на левой панели VS Code.

eeead41a229ed189f75d7fa61d1b2cca.png

Установка под Windows

Для установки модуля запускаем выполнение скрипта «install_vscode_extentions».

602bff7f77a44cd7c2abfdaf1f5e6ac3.png

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

 python install_vscode_extentions.py

 Дожидаемся завершения его работы. Признаком успешного завершения будет сообщение в окне запуска скрипта «Установка расширений VS Code успешно завершена».

61dad21c0b83244a5b42eda5f32b3a45.png

 Нажимаем «Enter» для закрытия данного окна.

 На этом установка в ОС Windows успешно закончена.

Установка под Linux

Аналогично Windows, расширение можно установить через выполнение скрипта «install_vscode_extentions».

81684b69a7990e872cb34ebce02b7294.png

Дожидаемся завершения работы скрипта. Признаком успешного завершения будет сообщение «Установка расширений VS Code успешно завершена». 

355db57d239f89d723c51d76e5156d34.png

 Клавишей «Enter»  закрываем данное окно.

Прошивка Рудирон из VS Code

Перед загрузкой программ из интерфейса VS Code необходимо установить на плате Рудирон перемычки в положения, выделенные красным цветом, и подключить контроллер к компьютеру через USB кабель.

7b82a9b77b36a7a17357d1c59adaeabd.png

 Интерфейс управления компиляцией и загрузкой появляется, если нажать левой кнопкой мыши на модуль «Rudiron Tasks» (плата Рудирон с правильно установленными перемычками должна быть подключена к компьютеру до вызова интерфейса расширения).

301d0c2f9208bc40fc87fe3106c1a276.png

 Основные элементы окна:

  • Выбор виртуального COM-порта, к которому подключена плата Рудирон. Если плата была подключена ранее перехода в модуль, то порт определится автоматически. Если нет, вернитесь в любой другой раздел меню (например, проводник/explorer VS Code), затем подключите Рудирон и перейдите обратно в модуль.

  • Скорость загрузки. По умолчанию устанавливается 9600, данной скорости вполне достаточно для загрузки кода в Рудирон. Возможна загрузка на скорости 115200. Однако на старых компьютерах попытка использования 115200 может вызвать ошибку. В этом случае лучше установить 9600.

  • Дополнительные настройки. По умолчанию данные параметры включены[5] . Если необходимо, установите галочки у параметров «Скомпилировать перед записью», «Очистить память перед записью» и «Запустить после записи».

  • Кнопки работы с режимом ожидания загрузки программы. Для перевода Рудирона в этот режим необходимо ненадолго отключить, а затем включить его питание или нажать кратковременно кнопку RESET на контроллере. Доступны команды:

    • «Записать» — запись программы в контроллер. При установленных выше параметрах (3) программа будет откомпилирована, память Рудирона очищена. Далее программа будет записана в память и запущена.

    • «Запустить» — запуск ранее загруженной программы.

    • «Очистить» — удаление из памяти Рудирона ранее загруженной программы.

Монитор последовательного порта

Для удобства визуализации данных с ПАК Рудирон мы создали свой монитор последовательного порта. Конечно, можно было воспользоваться монитором порта в Arduino IDE, но так как мы стараемся отойти от Arduino IDE в сторону Visual Studio Code, а в будущем предполагаем переход на отечественные IDE, то такое решение вполне логично.

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

 ПО монитора порта состоит из исполняемого файла rudiron_monitor (в зависимости от операционной системы rudiron_monitor.exe или rudiron_monitor.so) и вспомогательных файлов в каталоге \data.[6] 

Основное окно программы

После запуска Монитора порта отображается основное окно программы.

799ed9ed65d9f0de7abe2932a33bae4c.png

Здесь можно выделить 5 основных зон:

  • Зона кнопок выбора режима работы.

  • Зона элементов управления приемом информации от последовательного порта.

  • Основная рабочая зона, куда будет выводиться информация в виде текста и графиков.

  • Блок элементов, которые предназначены для отправки информации пользователя в микроконтроллер ПАК Рудирон.

  • Основное меню программы.

 Сразу после старта Монитора взаимодействие с ПАК Рудирон еще не установлено, получаемой информации нет, поэтому рабочая область пуста. При этом кнопки выбора режима работы активны:

9ad6a89e49e699cc91a1c92efc710390.png

Управление приемом данных через серийный порт:

69b5ad2b5460baaf8d778ca344fe1a43.png

Управление отправкой сообщений в ПАК Рудирон:

f8a842aa5ea1bd20e0e3b278ba4665d4.png

Включение обмена информацией с ПАК Рудирон

Для начала обмена необходимо подключить контроллер ПАК Рудирон к USB-порту с помощью кабеля.

 При нажатии на кнопку выпадающего списка «Порт» инструмент проведет сканирование всех доступных в ОС портов и поместит их в список выбора. Для операционной системы Windows список будет содержать записи вида «COM 1», «COM 2» и т.п, а для ОС семейства Linux записи вида «tty1», «ttyUSB0» и т.п. Выберите тот порт, к которому подключен Рудирон.

 Скорость обмена должна совпадать со значением, установленным в операторе Serial.begin () в программе для ПАК Рудирон. Чаще всего используется скорость 115200 бит/с.

 По завершению настройки нажмите на переключатель приема. Если он стал зеленым, значит соединение по последовательному порту установлено и идет прием информации от ПАК Рудирон. Монитор порта при этом автоматически включит режим отображения текстовой информации.

 Если открыть соединение не удалось, монитор порта выдаст соответствующее сообщение. Проверьте правильность выбора порта и скорости, а также не занят ли он другим приложением. Для ОС семейства Linux может потребоваться установка прав доступа к конкретному последовательному порту. Это можно сделать двумя путями:

—        дать права на доступ к порту вообще всем пользователям системы путем запуска из терминала команды с правами суперпользователя:

 chmod 666 /dev/ttyUSB0

 —        включить текущего пользователя в группу dialout средствами администрирования ОС.

Отображение данных

Монитор порта может отображать информацию, полученную от Рудирона, как в виде текста, так и в виде графиков.

Режим отображения текстовой информации

Когда от ПАК Рудирон по последовательному порту идут данные, основное окно монитора порта в режиме отображения текстовой информации выглядит следующим образом:

9938035dbee64c71fbc394e101fd88ae.png

 В блоке кнопок управления режимом работы (зона 1) появляются дополнительные элементы управления, а в рабочей зоне (зона 2) отображаются данные от ПАК Рудирон, полученные через последовательный порт, а также дополнительный переключатель «Добавить метки времени».

40f8e800bf1933857951493004092a5b.png

 Журнал с отметками времени выглядит следующим образом:

03887ad0549b84ae586e9e2797752d16.png

 Если требуется изучить середину журнала без его сохранения на диск, сначала отключите режим автопрокрутки, убрав флажок «Автоскроллинг», а затем уже воспользуйтесь ползунком полосы прокрутки или колесиком мышки.

Режим отображения графиков

Монитор порта извлекает информацию для построения графиков. Для отрисовки получаемые данные должны соответствовать шаблону:

 <имя1>: <знач1>; <имя2>: <знач2>; ….; <имяN>: <значN>;

 В указанном шаблоне:

—        <имя…> — это название ряда данных (графика), имя может иметь любое текстовое значение (например: «line_1», «y (x)», «PIN-A0»);

—        <знач…> — значение по оси Y для данного графика; оно должно иметь представление числа с десятичной дробной частью в текстовом виде с разделителем ».» (например: 1.00).

 Монитор порта может построить произвольное количество графиков — столько, сколько  будет найдено в получаемых данных разных имен графиков. На скриншоте выше можно видеть пример того, как выглядит последовательность строк, пригодная для построения графиков. В каждой строке присутствуют 3 пары <имя>: <значение>, таким образом, монитор порта будет строить 3 графика с именами line_1, line_2, line_3.

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

 Данные для графиков должны разделяться на блоки соответствующими символами-сепараторами. Для деления на строки стандартно используется символ перевода строки (0×0D) или последовательность »\n», которая в терминологии монитора порта называется «сепаратор строк». Строка делится на пары «имя-значение» с помощью разделителя, называемого «сепаратор 1-го уровня», по умолчанию это »;». Сама пара «имя-значение» также разделяется на «имя» и на «значение» символом, называемым «сепаратор 2-го уровня». В примере это »:». Указанные символы используются по умолчанию.

 Основное окно монитора порта в режиме отображения графиков выглядит следующим образом:

a76773b0df7b4345291a306762e21bda.png

В блоке переключения режимов появляются дополнительные элементы управления (зона 1), в рабочей области отображаются графики и легенды для них (зона 3). При этом в списке «Ряды данных» расположены все ряды, которые монитор порта смог выделить из поступивших от ПАК Рудирон данных. Видно, что имели место дефекты при передаче данных, т.к. некоторые ряды имеют имена, которые не должны были существовать в потоке данных (ine2, liline1). Как правило такие ряды состоят из одной пары и возникают в при включении/отключении порта в середине посылки. Такой ряд можно удалить правой кнопкой мыши (нажав кнопку «Удалить» во всплывающем меню).

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

 Назначение дополнительных элементов управления:

e40ba614c8ffff8b532f1dc66f31a874.png

Перемещение по основному графику, масштабирование

Перемещение и детальный просмотр возможен только при отключенном приеме данных через последовательный порт. Статичный график можно масштабировать или сдвинуть по осям X и/или Y с помощью мыши. Масштабирование осуществляется колесиком мыши: на себя — увеличение масштаба (приближение), от себя — уменьшение масштаба (отдаление). Движение мышью при нажатой левой клавише вызывает «перетаскивание» графика по осям, а выделение прямоугольной области на графике с удерживаемой правой кнопкой мыши увеличит масштаб выделенной области до размеров области построения графика.

0ebc82c0cc17f8931349ca382dcd2c8a.pnge7c4f85cf8b168a73ee457fb25d21ff3.png

 Нажатие на кнопку «Показать всё» или «Бегущий график» вернет масштаб к соответствующему виду.

Использование дополнительного графика

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

28bf8b1d5dd580af491507d252b8219d.png

 Выделенная область на основном графике может перемещаться по области построения с помощью мыши. При этом график в дополнительной области построения будет меняться в соответствии с положением выделенного участка на основном графике.

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

Передача информации в ПАК Рудирон

Передача в ПАК Рудирон возможна при соблюдении двух условий:

—        взаимодействие с ПАК Рудирон по последовательному порту установлено;

—        в программе микроконтроллера ПАК Рудирон производится прием информации через серийный порт и происходит ее анализ.

Если эти условия не соблюдены, передача управляющей информации либо вообще не начнется, либо данные будут отправлены в порт, но обработки со стороны ПАК Рудирон не произойдет.

 Для отправки информации в последовательный порт достаточно ввести нужную информацию в строку ввода и нажать кнопку «Отправить» или клавишу Enter (при включенном флажке «Включить отправку по Enter»).

 Например, мы можем отправить команду, которая увеличивает амплитуду графика в 2.2 раза:

08257c6f68dfffbf2e102ccd3ed1737f.png

Окно настроек монитора порта

В настройках программы можно указать нужные символы-сепараторы:

110aaaca2c5dbe5e891b9474e219842d.png

 Под цифрой 1 имеется в виду сепаратор строк, под цифрой 2 — сепаратор 1-го уровня, под цифрой 3 — сепаратор 2-го уровня.

 После нажатия «Применить» настройки сохраняются в файле settings.ini. Сепараторы в текущем сеансе работы программы также изменяются.

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

Генератор скетчей и встроенные шаблоны

Генератор предназначен для генерации текста программ для ПАК Рудирон по определенным шаблонам. В его окне можно выбрать вкладку с желаемым шаблоном, задать исходные данные и нажать кнопку «Создать скетч». Шаблоны можно редактировать непосредственно в окне, копировать в буфер обмена или после копирования/сохранения в другой среде подготовки программ для ПАК Рудирон.

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

 В комплекте мы предлагаем два полезных шаблона — Набор графиков и Чтение из АЦП.[10] 

Шаблон «Набор графиков»

Шаблон генерирует основу программы для ПАК Рудирон, которая выдает в последовательный порт набор данных, пригодный для отображения графиков в мониторе порта

f3b1475f79845977fc9379394c2de4d7.png

 В настройках шаблона нужно указать количество графиков и префикс для их имени. Далее имена будут формироваться по правилу «префикс + номер графика».

 Для примера создадим скетч с параметрами «Количество рядов данных» равно 2 и «Префикс» = line_.

bc85be5593854227cba73ed9a5d66ade.png

В зоне 1 интерфейса появились кнопки «Скопировать в Clipboard» и «Сохранить в файл», а зоне 2 — текст скетча.

Для доведения скетча до полноценного рабочего состояния, в шаблоне нужно дописать функции, которые реализуют вычисления значения для каждого графика (функции func1(), func2(), …). Это может быть любое выражение, которое возвращает целое число или число с плавающей точкой (данные из порта ввода вывода, вычисление математической функции, генератор случайных чисел и т.п.).

Шаблон «Чтение из АЦП»

Данный шаблон создает заготовку скетча, в котором микроконтроллер ПАК Рудирон опрашивает заданный АЦП с определенной периодичностью и отправляет результат опроса в последовательный порт.

81dad356fdaac9206d124cdd1439cf95.png

 В параметрах нужно указать порт АЦП (A0-A5) и период опроса в миллисекундах.

 Как мы уже отмечали выше, вы можете создавать собственные скетчи.

© Habrahabr.ru