Перейти к содержанию

Глава 2. Установка и настройка программного обеспечения

Программируемый контроллер IoT ESP-JS-AR построен на базе модуля ESP32 WROVER, в связи с чем, обладает рядом более продвинутых функциональных возможностей, по сравнению с классическими Arduino-контроллерами – это и увеличенная вычислительная мощность, и дополнительные интерфейсы, а также более сложная архитектура самого контроллера. Краткие характеристики модуля приведены ниже:

  • Wi-Fi 802.11 b/g/n до 150 Мбит/с

  • Bluetooth classic BR/EDR + BLE v.4.1

  • Интерфейсы: UART, SPI, SDIO, I2C, SD-карта, I2S, АЦП, ЦАП,GPIO и др.

  • Протоколы: IPv4, IPv6, SSL, TCP/UDP/HTTP/FTP/MQTT

  • Рабочее напряжение питания: 2,3…3,6 В

  • Средний потребляемый ток: 80 мA

  • Рабочий температурный диапазон: -40°C…85°C

Данный модуль относится к семейству модулей ESP32, нацеленных на применение во встраиваемых решениях, которые в настоящее время широко развиваются в рамках концепции «Интернета Вещей». Как следствие, существует множество способов и сред разработки, позволяющих программировать сами модули семейства ESP32. Однако, надо понимать, что функционал контроллера ESP-JS-AR (в состав которого входит модуль ESP 32 WROVER) значительно расширен, по сравнению с базовыми возможностями модуля. В связи с этим, необходимо помнить, что если возникнет потребность программирования данного контроллера из произвольной среды разработки, то нет никакой гарантии, что удастся использовать весь функционал контроллера, либо что вообще получится это сделать. Применительно к контроллеру ESP-JS-AR, производителем заявляется совместимость со средой разработки Arduino IDE (при условии подключения дополнительных библиотек), а также операционной системой Mongoose OS с инструментом разработки mos (так же при использовании дополнительных библиотек). Рекомендуемые языки программирования для работы с контроллером ESP-JS-AR: С/С++ и JavaScript.

Настройка среды разработки Arduino IDE

Для работы с контроллером ESP-JS-AR в среде разработки Arduino IDE требуется установить на ПК "десктопную" версию Arduino IDE (рекомендуется версия не выше 1.8.19), а также добавить в нее поддержку

плат семейства ESP32 (рекомендуется версия 1.0.2) (см. рисунок 2.1) из сторонней библиотеки (например: https://dl.espressif.com/dl/package_esp32_index.json):

Рисунок 2.1. Добавление в Arduino IDE поддержки семейства плат ESP32

После добавления пакета поддержки плат, во вкладке "Инструменты" требуется выбрать тип платы – "ESP32 Wrover Module", а также выбрать параметр "Flash mode" – "DIO". Затем необходимо указать номер COM-порта, под которым подключенное устройство определилось в системе. В результате, параметры для работы с контроллером будут выглядеть следующим образом (Рисунок 2.2):

Рисунок 2.2. Настройки среды Arduino IDE для программирования модуля ESP32 Wrover

На этом этапе среда разработки готова к взаимодействию с модулем ESP32 Wrover, однако, только в пределах его базовой функциональности. Поскольку контроллер ESP-JS-AR существенно расширяет базовый функционал модуля, то необходимо интегрировать в среду разработки Arduino IDE библиотеку для поддержки полного функционала контроллера. Такой библиотекой является библиотека JsAr, предоставляемая производителем контроллера. Библиотеку можно найти на официальном сайте компании, Аppliedrobotics.ru, в разделе "Учебные материалы" или с официального GitHub компании: https://github.com/orgs/AppliedRobotics/. После успешной интеграции библиотеки в среду разработки, во вкладке "Примеры" появится большое количество примеров по работе с контроллером ESP-JS-AR, раскрывающих его особенности (Рисунок 2.3):

Рисунок 2.3. Состав примеров библиотеки JsAr

Basic **– вкладка содержит базовые примеры по работе с аналоговыми и цифровыми портами.

DriversMotorsKeys – вкладка содержит примеры по работе с подключаемыми моторами, настройке PID-регуляторов, работе с энкодерами.

Dynamixel* – вкладка содержит примеры по работе с Dynamixel-совместимыми устройствами.

Expander – вкладка содержит примеры по работе с расширителем GPIO.

Interfaces – вкладка содержит примеры по работе с различными интерфейсами, расположенными на контроллере.

Power – пример содержит в себе настройку UVLO, т.е. можно задавать порог напряжения на включение и выключение с учетом гистерезиса.

Update – скетч для обновления прошивки расширителя GPIO. Файл прошивки уже встроен в библиотеку. Таким образом, для обновления до последней версии необходимо установить последнюю версию библиотеки и загрузить скетч в контроллер.

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

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

Настройка среды разработки Mongoose OS

Mongoose OS - это среда разработки управляющих программ, в данном случае - прошивок для устройств «Интернета Вещей». Данная среда разработки поддерживает большое количество платформ «Интернета Вещей», а также адаптирована для применения с современными популярными аппаратными платформами, основанными на ESP32 и ESP8266. Из особенностей можно выделить поддержку разработки на JavaScript, а также C/C++.

Для облегчения знакомства с контроллером был разработан ряд примеров, раскрывающих особенности OS. Данные примеры можно скачать либо с официального сайта разработчика (appliedrobotics.ru раздел

«Учебные материалы»), либо с официального GitHub компании (https://github.com/AppliedRobotics ).

Структура примеров аналогична предлагаемым в Arduino IDE, отличием являются только особенности самой среды разработки – все используемые библиотеки, в отличие от Arduino IDE, подгружаются самой средой при компилировании. Таким образом, для облегчения вхождения в разработку под Mongoose OS рекомендуется использовать готовые примеры, а затем их модифицировать, нежели создавать проекты с нуля (описание примеров будет показано далее).

Перед началом работы в Mongoose OS рекомендуется пройти обучение на сайте производителя (https://mongoose-os.com/docs/mongooseos/quickstart/setup.md ).

Для начала работы с данной средой необходимо сделать следующее:

  1. Создать папку "mos" в корне диска С:.

  2. Скачать в эту папку файл "mos.exe" c официального сайта разработчика (https://mongoose-os.com/downloads/mos-release/win/mos.exe).

  3. Запустить скачанный файл (рекомендуется использовать Google Chrome). После запуска откроется окно браузера со средой разработки (Рисунок 2.4):

Рисунок 2.4. Окно среды разработки Mongoose OS

В верхней части окна во вкладке "Choose port" необходимо выбрать COM-порт, под которым в системе идентифицировался контроллер, а во вкладке "Choose board" выбрать тип микроконтроллера, который установлен в контроллере – в случае контроллера ESP-JS-AR, это ESP32 (Рисунок 2.5):

Рисунок 2.5. **Элементы настроек среды разработки Mongoose OS

После выполнения данных манипуляций среда разработки готова к использованию.

Краткое описание структуры проекта в среде Mongoose OS

Для создания проекта в среде Mongoose OS необходимо сформировать файл "mos.yml" или использовать готовый файл проекта. Расположить его нужно в корневой папке, указанной ранее.

Рисунок 2.6. Командная строка среды разработки Mongoose OS

Файл "mos.yml" содержит информацию об авторе проекта, его описание и служебную информацию для работы кода. В большинстве случаев типовое содержание файла "mos.yml" соответствует показанному на рисунке 2.7:

Рисунок 2.7. Содержимое файла mos.yml

Основной код для проекта должен находиться в каталоге.

Папка "src", если для написания кода используется C (Рисунок 2.8).

Рисунок 2.8. Структура каталога для разработки на С в среде разработки Mongoose OS

Папка "fw", если для написания кода и спользуется JavaScript (Рисунок 2.9).

Рисунок 2.9. Структура каталога для разработки на JavaScript в среде разработки Mongoose OS

Краткая инструкция по работе в среде Mongoose OS

Среда разработки Mongoose OS **является интерфейсом онлайн-компилятора. В результате чего, функционал основного рабочего окна минимизирован и предназначен для компиляции уже готового проекта (рисунок 2.10):

Рисунок 2.10. Описании окон среды разработки Mongoose OS

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

  1. Поместить готовый проект в папку "mos".

  2. В интерфейсе, используя команду cd, перейти в папку с проектом, например: cd c:/mos/app1.

  3. Командой mos build* выполнить сборку.

  4. При успешной сборке загрузка в плату выполняется командой mos flash.

  5. Контроллер (в случае предусмотренного соответствующего функционала) будет выводить данные в окно консоли устройства.

Для написания или редактирования кода проекта рекомендуется использовать IDE, например: PyCharm, текстовый редактор (Sublime) и др.

Описание примеров по работе с контроллером ESP-JS-AR

В архиве "mgos-jsar-examples" содержатся примеры как на языке "С", так и на JavaScript. Структура каталогов и описание содержимого показана в таблицах, приведенных ниже. Аналогичные примеры содержатся в библиотеке для Arduino IDE.

C:\MOS\MGOS-JSAR-EXAMPLES-MASTER\JAVASCRIPT
Basic Каталог примеров простейшего функционала контроллера
AnalogRead Чтение аналогового порта
AnalogWrite_PWM Управление ШИМ сигналом
BareMinimum Шаблон для написания скетча
Blink Пример управления красным светодиодом
DigitalRead Чтение состояния цифровой линии
DigitalWrite Управление цифровым сигналом
DriversMotorsKeys
Keys
KeysAdvanced
KeysPWM
KeysQuadMotors
MotorsAdvanced
MotorsPower
MotorsPowerAdvanced
MotorsSpeed
MotorsSpeedAdvanced
Dynamixel Каталог примеров по работе с Dynamixel совместимыми устройствами
DxlChangeBaudrate Пример изменения скорости обмена данными между устройством и контроллером
DxlConsole Скетч, формирующий консоль для обмена данными с устройством в режиме командной строки
DxlJointMode Пример управления DYNAMIXEL сервоприводом в режиме позиционного управления
DxlWheelMode Пример управления DYNAMIXEL сервоприводом в режиме управления по скорости
DxlWheelModeLowLevel Пример низкоуровневого управления DYNAMIXEL сервоприводом в режиме управления по скорости
Expander Каталог простейших примеров работы с расширителем
ExpanderAnalogRead Чтение расширителем аналогового порта
ExpanderAnalogWrite_ PWM Управление ШИМ сигналом с помощью расширителя
ExpanderBlinkLed Пример управления зеленым светодиодом
ExpanderDigitalRead Пример считывания расширителем состояния цифровой линии
ExpanderDigitalWrite Управление цифровой линией с помощью расширителя
Interfaces Каталог примеров по работе со встроенными интерфейсами
IrRx Пример работы с ИК передатчиком
IrTxRx Пример работы с ИК передатчиком и приемником
LanClient
SD Пример работы с картой памяти
Basic Каталог примеров простейшего функционала контроллера
AnalogRead Чтение аналогового порта
AnalogWrite_PWM Управление ШИМ сигналом
BareMinimum Шаблон для написания скетча
Blink Пример управления красным светодиодом
DigitalRead Чтение состояния цифровой линии
DigitalWrite Управление цифровым сигналом
DriversMotorsKeys
Keys
KeysAdvanced
KeysPWM
KeysQuadMotors
MotorsAdvanced
MotorsPower
MotorsPowerAdvanced
MotorsSpeed
MotorsSpeedAdvanced
Dynamixel Каталог примеров по работе с Dynamixel совместимыми устройствами
DxlChangeBaudrate Пример изменения скорости обмена данными между устройством и контроллером
DxlConsole Скетч, формирующий консоль для обмена данными с устройством в режиме командной строки
DxlJointMode Пример управления DYNAMIXEL сервоприводом в режиме позиционного управления
DxlWheelMode Пример управления DYNAMIXEL сервоприводом в режиме управления по скорости
DxlWheelModeLowLevel Пример низкоуровневого управления DYNAMIXEL сервоприводом в режиме управления по скорости
Expander Каталог простейших примеров работы с расширителем
ExpanderAnalogRead Чтение расширителем аналогового порта
ExpanderAnalogWrite_ PWM Управление ШИМ сигналом с помощью расширителя
ExpanderBlinkLed Пример управления зеленым светодиодом
ExpanderDigitalRead Пример считывания расширителем состояния цифровой линии
ExpanderDigitalWrite Управление цифровой линией с помощью расширителя
Interfaces Каталог примеров по работе со встроенными интерфейсами
IrRx Пример работы с ИК передатчиком
IrTxRx Пример работы с ИК передатчиком и приемником
Lan
LanClient
SD Пример работы с картой памяти
SDMMC
Power Power