Подключение к модулю программирования и управления периферийными устройствами
Модуль программирования и управления периферийными устройствами построен на базе одноплатного компьютера OrangePi 5B. Для работы с ним предусмотрены два способа подключения:
- удалённое управление через SSH;
- работа с файлами через SFTP.
Номер ячейки используется при формировании IP-адреса и имени пользователя. В обозначениях учётных записей применяются разные порядковые индексы:
- учётная запись терминала стойки управления имеет индекс _2;
- учётная запись встроенного модуля OrangePi имеет индекс _1.
Для подключения к OrangePi по SSH используется команда:
| ssh set_N_1@192.168.2.N |
|---|
Здесь N необходимо заменить номером конкретной образовательной ячейки. Например, для ячейки № 1:
| ssh set_1_1@192.168.2.1 |
|---|
Пароль в базовой конфигурации формируется путём пятикратного повторения номера ячейки. Для ячейки № 1 используется пароль: 11111 После успешной авторизации пользователь автоматически переходит в рабочий каталог edu_arm95.
Настройка рабочей сети Определите Ethernet-интерфейс и имя профиля:
| nmcli device status |
|---|
Обычно интерфейс называется eth0, а профиль - Wired connection 1. Назначьте постоянный адрес, заменив N номером ячейки:
| sudo nmcli connection modify "Wired connection 1" connection.autoconnect yes ipv4.method manual ipv4.addresses 192.168.2.N/24 ipv4.gateway 192.168.2.105 ipv4.dns "192.168.2.105 1.1.1.1 8.8.8.8" ipv4.never-default no ipv6.method disabled sudo nmcli connection up "Wired connection 1" |
|---|
| Если настройка выполняется через SSH, соединение оборвется после смены IP-адреса. Это не является ошибкой. |
Проверка сети на OrangePi
| ip -4 addr show eth0 ip route ping -c 3 192.168.2.105 ping -c 3 1.1.1.1 ping -c 3 google.com |
|---|
Ожидаются адрес 192.168.2.N/24 и маршрут default via 192.168.2.105 dev eth0. Если ПК отвечает, но 1.1.1.1 нет - не работает раздача интернета. Если 1.1.1.1 отвечает, а google.com нет - проблема DNS.
Подключение по SFTP Для работы с файлами OrangePi через графический файловый менеджер ОС Linux откройте раздел: Другие места → Подключиться к серверу В поле адреса введите:
| sftp://set_N_1@192.168.2.N/ |
|---|
Для ячейки № 1:
| sftp://set_1_1@192.168.2.1/ |
|---|
После ввода пароля пользователь получает доступ к файловой системе OrangePi. Рабочие файлы и управляющие программы рекомендуется размещать в каталоге edu_arm95. Стандартные пароли предназначены для эксплуатации оборудования в изолированной учебной сети. При подключении комплекса к общей локальной сети организации рекомендуется изменить стандартные учётные данные. С Ubuntu-ПК можно передать весь репозиторий:
| scp -r ~/edu_arm95 set_N_1@192.168.2.N:/home/set_N_1/ |
|---|
Если репозиторий уже находится на OrangePi, передайте только сформированный архив:
| scp ~/edu_arm95/dxl_iot_flashing/orangepi-arduino-offline.tar.gz set_N_1@192.168.2.N:/home/set_N_1/ |
|---|
Проверьте каталог на OrangePi:
| mkdir -p /home/set_N_1/edu_arm95 ls -la /home/set_N_1/edu_arm95 |
|---|
Либо проделайте все то же самое через графический интерфейс и Подключение по SFTP
Начальная установка ПО на OrangePi
Автоматизированная установка из автономного комплекта
| cd /edu_arm95/dxl_iot_flashing tar -xzf orangepi-arduino-offline.tar.gz cd orangepi-arduino-offline chmod +x install_on_orangepi.sh ./install_on_orangepi.sh |
|---|
| Важно: Пользовательский установщик запускается без sudo, чтобы Arduino-файлы попали в /home/set_N_1/.arduino15, а не в /root/.arduino15. Для системных .deb-пакетов установщик может сам вызывать sudo в отдельных командах. |
Второй вариант установки, если на устройстве есть интернет-сеть:
| sudo apt update sudo apt upgrade -y sudo apt install -y network-manager usbutils pciutils rfkill curl wget git nano htop openssh-server python3-pip python3-venv python3-dev sudo systemctl enable --now ssh python3 -m pip install --user --break-system-packages pyserial |
|---|
Если система не требует параметр --break-system-packages, его можно удалить. Проверка:
| python3 -m pip --version python3 -c "import serial; print(serial.__version__)" |
|---|
После установки необходимо выполнить команду reboot на OrangePi
| Отличительной особенностью комплекса является модульная архитектура: пользователь может подключаться к каждому устройству отдельно, выполнять его настройку и программирование, а также использовать его как самостоятельный программно-аппаратный модуль вне общего сценария работы ячейки. |
|---|
AR-Stereo: подключение к модулю стереозрения
Для удалённого подключения к модулю AR-Stereo через командную строку используется SSH:
| ssh root@192.168.2.241 |
|---|
Для подключения через графический файловый менеджер используется адрес:
| sftp://root@192.168.2.241/ |
|---|
Пароль по умолчанию: 12345 После подключения пользователь получает возможность просматривать и изменять конфигурационные файлы, копировать управляющие программы и работать с результатами обработки изображений. Порядок настройки, калибровки и программного взаимодействия с камерой приведён в документе «Методические материалы для модуля стереозрения AR-Stereo». По умолчанию в модуле включен сервис по автоматическому распознаванию людей. В скачанном репозитории edu_arm95/scripts находится пример скрипта для обработки потока изображений с AR-Stereo и взаимодействия с сигнальными лампами и конвейером. Однако перед началом работы рекомендуется проводить донастройку и перезапуск сервисов стереомодуля.
Сигнальная лампа стойки управления
Сигнальная лампа, установленная на стойке управления, взаимодействует с системой по локальной сети. По умолчанию ей назначен IP-адрес: 192.168.2.15 Для обновления прошивки необходимо:
- Остановить работу образовательной ячейки.
- Соединить сигнальную лампу с персональным компьютером кабелем mini-USB.
- Открыть исходный код прошивки в среде, поддерживающей компиляцию и загрузку программ на используемую микроконтроллерную плату (например Arduino IDE)
- Выбрать соответствующий тип платы и последовательный порт.
- Выполнить компиляцию и загрузку программы.
В конструкции лампы применяется микроконтроллерная плата, программно совместимая с инструментами, используемыми для микроконтроллеров семейства ATmega. Код базовой прошивки лампы стойки управления приведён в Листинге 1. Также код базовой прошивки находится в разделе edu_arm95/smart-devices/SMART_LAMP/SMART_LAMP скачанного репозитория. Перед прошивкой рекомендуется проверить наличие более новой версии программного обеспечения в официальном репозитории проекта. При необходимости IP-адрес лампы может быть изменён в исходном коде. После изменения адреса необходимо скорректировать все управляющие программы и конфигурационные файлы, в которых указан адрес 192.168.2.15. Дополнительная информация приведена в инструкции по работе со смарт-устройствами.
Устройства, подключённые к шине DXL
Оставшиеся периферийные устройства подключены к контроллеру DXL-IoT по последовательной шине DXL. Каждому устройству назначается уникальный идентификатор.
| Устройство | Идентификатор DXL по умолчанию |
|---|---|
| Сигнальная лампа внутри ячейки | 1 |
| TrackingCam3 | 2 |
| SVCAM | 3 |
| Привод конвейера | 5 |
В пределах одной шины не допускается одновременное использование одинаковых идентификаторов несколькими устройствами. При изменении идентификатора необходимо обновить соответствующее значение в управляющем программном обеспечении.
Сигнальная лампа внутри ячейки
Сигнальная лампа, установленная внутри рабочей зоны, использует прошивку для взаимодействия по шине DXL. Базовый код прошивки приведён в Листинге 2. Также код базовой прошивки находится в разделе/edu_arm95/smart-devices/SMART_LAMP/dxl_setting скачанного репозитория Для загрузки прошивки необходимо:
- Остановить выполнение управляющих программ.
- Соединить лампу с персональным компьютером кабелем mini-USB.
- Открыть проект прошивки в Arduino IDE или другой совместимой среде разработки.
- Выбрать соответствующую плату и последовательный порт.
- Выполнить компиляцию и загрузку программы.
Лампе по умолчанию назначается не IP-адрес, а идентификатор DXL: ID = 1 При изменении идентификатора необходимо также изменить его во всех программах, обращающихся к лампе через DXL-IoT. Перед прошивкой рекомендуется проверить актуальность исходного кода в официальном репозитории проекта. У каждого цвета лампы есть свой пин на встроенной плате и свой регистр, в который можно записывать значение для включения или выключения. Прошивка на уровне самой лампы уже есть. Предложенный код наглядно показывает способность лампы реагировать на сигналы. Зажигание цвета соответствует записи в его регистр “1”, выключение - запись “0”. Пример включения синего цвета:
| const uint8t blue_dxl_register = 29; // обозначение номера регистра синего цвета _lampa.write(blue_dxl_register, 1); // включение синего цвета |
|---|
TrackingCam3: подключение и настройка
Для изменения параметров TrackingCam3 необходимо соединить устройство с персональным компьютером кабелем mini-USB и открыть в веб-браузере адрес: http://trackingcam3.local:9999/
Для авторизации используются следующие данные: Имя пользователя: rootПароль: 12345
После входа в веб-интерфейс необходимо открыть раздел Dynamixel Slave в левом меню и указать требуемый идентификатор DXL. Значение по умолчанию для работы должно быть: ID = 2
После изменения идентификатора следует убедиться, что новое значение не используется другим устройством на той же шине.
(Подробные сведения о режимах работы, настройке и программном взаимодействии с TrackingCam3 приведены в приложенных методических материалах https://wiki.appliedrobotics.ru/EVM/TC3/card.html )
Чтобы подключить камеру TrackingCam3 к персональному компьютеру, нужен кабель mini USB. Далее необходимо настроить камеру в её веб-интерфейсе (http://trackingcam3.local), выбрав цвет, по которому она будет распознавать предмет: Blob Detector - Pick Color - Save (Рисунок 6).
Рисунок 6 - Веб-интерфейс модуля TrackingCam3
Можно задать несколько цветов, передвигая ползунок в левом верхнем углу. Также можно настроить другие параметры предметов, представленные ниже диапазоном чисел. Об этом подробнее в методических указаниях к камере.
Конвейер: подключение и настройка сервопривода
Для изменения параметров сервопривода конвейера необходимо подключить его к персональному компьютеру через шину DXL с использованием преобразователя DXL-USB. После подключения следует запустить приложение ARDynamixelWizard. Инструкция по работе с программой приведена в документации ARDynamixelWizard (https://wiki.appliedrobotics.ru/software/wizard/card.html ). В интерфейсе программы необходимо:
- Выбрать последовательный порт DXL-USB.
- Выполнить поиск устройств на шине.
- Выбрать обнаруженный привод.
- Открыть параметр ID.
- Установить требуемое значение.
- Сохранить параметры устройства.
Идентификатор привода конвейера по умолчанию: ID = 5 Отдельная пользовательская прошивка для привода конвейера не загружается. Управление его движением выполняется через DXL-IoT путём записи соответствующих значений в регистры устройства. Пример управляющего кода для конвйера находится в Листинге 3 или в разделе edu_arm95/smart-devices/smart_conveyor/conveyor_dxl_setting скачанного репозитория.
SVCAM: подключение и настройка
Внутри модуля SVCAM есть свой небольшой компьютер, к которому можно подключиться по SSH. Для этого нужно соединить камеру с персональным компьютером через кабель micro USB.
После установления соединения выполните в терминале команду: ssh pi@10.10.11.2
Пароль по умолчанию: pi
Для изменения идентификатора DXL необходимо открыть конфигурационный файл:
| sudo nano /usr/bin/dxl/config.json |
|---|
После внесения изменений сохраните файл сочетанием клавиш: Ctrl+O
Подтвердите имя файла клавишей Enter, после чего закройте редактор: Ctrl+X
Идентификатор SVCAM по умолчанию: ID = 3 Изменённое значение необходимо использовать во всех программах, взаимодействующих с камерой через шину DXL.
Внутри прошивки уже есть стандартные реализованные кейсы. Рекомендуем написать своё решение на базе кейсов detector_blob и recognition_object, лежащих в компьютере камеры по пути /SVCAM/cases/
Готовые кейсы состоят из:
папки src с основным программным кодом main.cpp;
папки config с конфигурационным файлом config.yaml;
файла CMakeList для сборки программы и конфигурации в готовый проект;
папки build, наполнение которой генерируется особым образом.
Чтобы собрать свой кейс, создайте для него отдельную папку, внутри создайте ту же структуру, как в готовых кейсах, но папку build оставьте пустой. Далее в терминале (SSH) перейдите в папку build и выполните следующие команды:
| cmake .. cmake --build . |
|---|
После этого через терминал из папки build можно запускать проект командой ./<названиекейса>_
Подробнее о взаимодействии с модулем SVCAM и встроенных кейсах рассказано в отдельных методических указаниях (https://wiki.appliedrobotics.ru/metod/MP\_SVCAM/). Сейчас при включении камеры автоматически запускается кейс blob_end_depth, выводящий в Serial-порт следующую информацию:
- цвет предмета;
- координаты на изображении (в пикселях)
- расстояние до предмета;
- координаты предмета в 3D-пространстве (x, y, z в милиметрах в системе координат камеры).
Рассмотрим, как загрузить готовый кейс на встроенный компьютер камеры и настроить сервис для его автоматического запуска.
- Загрузить архив с кейсом blob_and_depth с ПК на SVCAM в папку SVCAM/cases/ и разархивировать его:
| unzip blob_and_depth.zip |
|---|
Архив можно удалить.
- Собрать проект
| cd ~/SVCAM/cases/blob_and_depth/ ls |
|---|
Если папка build внутри существует, удалить её: rm -rf build
Далее создать пустую папку build и собрать проект:
| mkdir build && cd build cmake .. cmake --build . |
|---|
- Проверить работоспособность кейса:
| cd ~/SVCAM/cases/blob_and_depth/build/ ./blob_and_depth |
|---|
- Настроить сервис для автоматического запуска кейса
Открыть проект: cd ~/SVCAM/cases/blob_and_depth/build/ Узнать точный полный путь: pwd Создать новый файл для сервиса: sudo nano /etc/systemd/system/svcam-case.service Вставить туда следующий текст:
| [Unit] Description=SVCAM bloband_depth auto-start service After=network.target [Service] # Указываем абсолютный путь к папке build, чтобы ./ работала как надо WorkingDirectory=/home/pi/SVCAM/cases/blob_and_depth/build # Указываем абсолютный путь к самому исполняемому файлу ExecStart=/home/pi/SVCAM/cases/blob_and_depth/build/blob_and_depth # Если программа упад`т, система сама её перезапустит Restart=always RestartSec=3 # От кого запускать. Если нужны права на камеру/железо, оставьте root. # Если нет, можно написать User=вашеимя_пользователя User=root Group=root # Перенаправляем вывод в логи системы (чтобы потом можно было посмотреть ошибки) StandardOutput=journal StandardError=journal [Install] WantedBy=multi-user.target |
|---|
Сохранить файл: нажать Ctrl+O, затем Enter, и выйти Ctrl+X.
Теперь нужно проинициализировать, что появился новый сервис, и включить его автозагрузку. Выполнить команды по очереди:
| # 1. Перечитываем конфигурацию systemd sudo systemctl daemon-reload # 2. Включаем автозапуск при включении устройства sudo systemctl enable svcam-case.service # 3. Запускаем сервис прямо сейчас (без перезагрузки) sudo systemctl start svcam-case.service |
|---|
Остаётся проверить статус сервиса: sudo systemctl status svcam-case.service Если всё работает, будет зеленая надпись active (running).
- По умолчанию заданы параметры красного, синего и зелёного цветов.
Возможно некорректное распознавание оттенков. При необходимости заменить параметры цветов в файле:
| cd ~/SVCAM/cases/blob_and_depth/config/ sudo nano config.yaml |
|---|
Там же можно отключить или включить графический вывод изображения с камеры (параметр display - false или true).
- Прошить плату DXL-IoT, чтобы читать данные из Serial-порта.
Можно написать и залить через Arduino CLI (процесс будет описан в следующем разделе) свой код на основе решения задачи в методических указаниях SVCAM или использовать готовый код прошивки по пути: edu_arm95/smart-devices/SVCAM/read_distance
DXL-IoT: Подключение и прошивка
Контроллер DXL-IoT может быть перепрограммирован непосредственно с одноплатного компьютера OrangePi. Основной микроконтроллер устройства программно совместим с ATmega2560, поэтому при компиляции необходимо выбирать целевую плату Arduino Mega 2560.
Сначала подключитесь к аппартно-программному модулю по SSH. Для ячейки № 1: ssh set_1_1@192.168.2.1
Для другой ячейки замените номер пользователя и последний октет IP-адреса на соответствующий номер. Выполните:
| ls -l /dev/ttyUSB* |
|---|
Устройство обычно определяется преобразователем CH341 и появляется как: /dev/ttyUSB0
Если устройство не находится, то откройте журнал ядра:
| sudo dmesg -w |
|---|
Для преобразователя CH341 ожидаются идентификаторы 1a86:7523 и порт ttyUSB0. Остановите просмотр Ctrl+C, затем выполните:
| sudo systemctl disable --now brltty 2>/dev/null | true sudo apt remove --purge -y brltty sudo udevadm control --reload-rules sudo udevadm trigger sudo reboot |
|---|
После повторного входа добавьте пользователя в группу последовательных портов:
| sudo usermod -aG dialout set_N_1 exit |
|---|
Подключитесь заново и проверьте:
| groups test -r /dev/ttyUSB0 && echo "read OK" test -w /dev/ttyUSB0 && echo "write OK" python3 -m serial.tools.list_ports -v |
|---|
В зависимости от состава подключённого оборудования оно может быть зарегистрировано как /dev/ttyUSB0 или под другим номером. Для просмотра последних сообщений ядра выполните: sudo dmesg | tail -n 30
Во всех последующих командах необходимо указывать фактический порт, обнаруженный на конкретном оборудовании.
Проверка установки Arduino CLI и библиотек:
| arduino-cli version arduino-cli core list arduino-cli board listall | grep -i mega find ~/.arduino15/packages/builtin/tools -mindepth 2 -maxdepth 2 -type d -printf "%P\n" | sort |
|---|
Должны присутствовать arduino:avr и builtin-инструменты serial-discovery, mdns-discovery, serial-monitor, ctags и dfu-discovery. Библиотеки проекта хранятся в /home/set_N_1/edu_arm95/libraries. Скрипт прошивки передаёт этот каталог через параметр --libraries, поэтому глобальная установка библиотек не обязательна.
| find /home/set_N_1/edu_arm95/libraries -maxdepth 2 -type f \( -name library.properties -o -name "*.h" \) | sort |
|---|
Прошивка DXL-IoT
Проверка проекта
| cd edu_arm95/dxl_iot_complex find . -maxdepth 2 -type f -printf "%P\n" | sort |
|---|
Главный .ino должен называться так же, как каталог: dxl_iot_complex/dxl_iot_complex.ino. Локальные .h и .cpp размещаются рядом со скетчем либо в рекурсивно компилируемом каталоге src.
Установка библиотек
| arduino-cli config set library.enable_unsafe_install true arduino-cli lib install \ --zip-path /home/set_N_1/edu_arm95/libraries/DxlMaster2.zip arduino-cli lib install --zip-path /home/set_N_1/edu_arm95/libraries/TrackingCamDxl.zip arduino-cli lib list |
|---|
Ожидаемый вывод: Компиляция проекта
| arduino-cli compile --clean --fqbn arduino:avr:mega --libraries /home/set_N_1/edu_arm95/libraries /home/set_N_1/edu_arm95/dxl_iot_complex |
|---|
Ожидаемый вывод: Загрузка основного кода на DXL-IOT:
| arduino-cli upload --verbose --port /dev/ttyUSB0 --protocol serial --fqbn arduino:avr:mega /home/set_N_1/edu_arm95/dxl_iot_complex |
|---|
Ожидаемый вывод: Компиляция и прошивка одной командой:
| arduino-cli compile --clean --upload --verbose --port /dev/ttyUSB0 --protocol serial --fqbn arduino:avr:mega --libraries /home/set_N_1/edu_arm95/libraries /home/set_N_1/edu_arm95/dxl_iot_complex |
|---|
Ожидаемый вывод:
Основной код находится в edu_arm95/dxl_iot_complex скачанного репозитория или представлен в Листинге 4. Этот код прошивает контроллер для управления сигнальной лампой, и на управление мотором конвейера, а также на получение данных о предметах, распознанных камерами SVcam и TrackingCam3 в отдельном потоке. Для управления ячейкой в программе заданы 5 кейсов, каждый из которых вызывается через пользовательский ввод соответствующего числа в мониторе порта: 0. Конвейер остановлен, лампа горит синим цветом. 1. Конвейер остановлен, лампа горит зелёным цветом. 2. Конвейер работает, лампа горит зелёным цветом. 3. Конвейер остановлен, лампа горит жёлтым цветом. 4. Аварийная остановка конвейера, лампа горит красным цветом. Важно отметить, что при зажигании одного цвета лампы остальные нужно погасить. Учитывайте это при самостоятельной разработке, чтобы избежать загорания всех цветов, если оно вам не требуется. Рабочее состояние конвейера соответствует вращению мотора с заданной в переменной conveyor_speed скоростью:
| const int16_t conveyor_speed = 1300; |
|---|
Камера опрашивается отдельно, таким образом, чтобы поток её данных не мешал взаимодействию пользователя с программой управления.
В функции read_camera для каждого предмета индекс распознанного цвета расшифровывается в понятный цвет. Вспомним веб-интерфейс и ползунок для задания нескольких цветов: в предложенном примере следующее соответствие индексов type: 0 - красный; 1 - синий; 2 - зелёный. Если оттенки цветов были заданы в другом порядке, следующий блок кода расшифровки в функции read_camera следует исправить:
| for (int i = 0; i < n; i++) { if (trackingCam.blob[i].type == 0) { Serial.print("Red "); } else if (trackingCam.blob[i].type == 1) { Serial.print("Blue "); } else if (trackingCam.blob[i].type == 2) { Serial.print("Green "); } |
|---|
Следующие строки выводят координаты центра масс предмета в системе координат камеры:
| Serial.print(trackingCam.blob[i].cx, DEC); Serial.print(" "); Serial.print(trackingCam.blob[i].cy, DEC); Serial.println(" "); |
|---|
Значения будут в системе координат камеры, которые отдельно могут переводятся в систему координат робота и будут использованы для позиционирования захвата.
Типовые ошибки и способы устранения
- Missing FQBN
Добавьте параметр --fqbn arduino:avr:mega. TrackingCamDxl.h: No such file or directory На Linux регистр символов важен. Убедитесь, что файл называется точно TrackingCamDxl2.h, и подключайте локальный заголовок как #include "TrackingCamDxl2.h".
- undefined reference to DxlMaster или методам классов
Это ошибка линковки проекта, а не установки Arduino. Проверьте, что .cpp-файлы с реализациями попадают в сборку, объект DxlMaster определён ровно один раз, а реализации шаблонного DynamixelInterfaceImpl находятся в .h/.tpp либо явно инстанцированы.
- Downloading missing tool builtin:... на офлайн-устройстве
Повторно запустите install_on_orangepi.sh и проверьте точные каталоги версий в ~/.arduino15/packages/builtin/tools. Не запускайте пользовательский установщик через sudo.
- port not found: /dev/ttyUSB0
Проверьте lsusb, dmesg, наличие CH341, удаление brltty, группу dialout и то, что USB-кабель поддерживает передачу данных.
- programmer is not responding / not in sync
Проверьте правильность FQBN и порта, закройте программы, использующие порт, переподключите плату, попробуйте Reset и убедитесь, что загрузчик платы совместим с Arduino Mega 2560. Проверка процессов, использующих последовательный порт:
| sudo fuser -v /dev/ttyUSB0 |
|---|
Общие требования при изменении конфигурации
Перед прошивкой или изменением параметров оборудования необходимо остановить манипулятор, конвейер и другие исполнительные устройства. Рекомендуется последовательно выполнить следующие действия:
- Зафиксировать исходные IP-адреса, идентификаторы DXL и версии прошивок.
- Создать резервную копию изменяемых файлов.
- Убедиться в правильности выбранного устройства и последовательного порта.
- Не отключать питание во время загрузки прошивки.
- После обновления проверить связь с устройством.
- Выполнить тестирование сначала без движения исполнительных механизмов.
- Проверить работу аварийной остановки и защитных систем.
- Только после успешной диагностики переходить к выполнению учебного сценария.
Изменение системного программного обеспечения, сетевых адресов и идентификаторов устройств должно выполняться под контролем преподавателя или специалиста, ответственного за эксплуатацию образовательной робототехнической ячейки.
Обновление программного обеспечения
На Ubuntu-ПК или на OrangePi с доступом к репозиторию:
| cd /home/set_N_1/edu_arm95 git status git pull |
|---|
Если изменились версии Arduino CLI, ядра или библиотек, заново сформируйте автономный комплект на Ubuntu-ПК и повторно запустите установщик на OrangePi. Контрольный результат
| Настройка завершена: OrangePi доступна по SSH/SFTP, открывает рабочий каталог edu_arm95, DXL-IoT определяется как последовательное устройство, Arduino CLI компилирует проект с библиотеками из репозитория, а штатный скрипт загружает прошивку DXL-IoT-Mega без запуска от root. |
|---|