Основы Debian Linux для UNO Q
Освойте работу с окружением Debian на UNO Q с помощью этого подробного руководства по пониманию и использованию системы Debian.
Обзор
Arduino UNO Q работает под управлением полноценной операционной системы Debian Linux на микропроцессоре (MPU) Qualcomm ® QRB2210, предоставляя полноценную вычислительную среду наряду с микроконтроллером (MCU) Arduino.
Это руководство объясняет систему Debian, как получить к ней доступ, навигацию по файловой системе, управление правами доступа, установку программного обеспечения, работу с USB-периферией и полезные практики, которые стоит учитывать.
Система Debian на Arduino UNO Q
Понимание системы Debian позволяет использовать всю мощь Linux для продвинутых проектов, системного администрирования и задач разработки, выходящих за рамки скетчей Arduino, тем самым раскрывая весь потенциал UNO Q.
Что такое Debian?
Debian — это бесплатный дистрибутив Linux с открытым исходным кодом, известный своей стабильностью, безопасностью и обширной экосистемой пакетов. На UNO Q Debian предоставляет полноценное Linux-окружение со стандартными утилитами Unix, позволяя запускать несколько приложений одновременно и получать доступ к тысячам программных пакетов через пакетный менеджер apt.
Система включает встроенную поддержку сетевых служб, таких как SSH, веб-серверы и различные сетевые протоколы, а также предустановленные средства разработки, включая компиляторы, интерпретаторы и библиотеки разработки.
Как Debian работает на UNO Q
UNO Q имеет гибридную архитектуру с двумя различными вычислительными средами, работающими совместно. Микропроцессор Qualcomm ® QRB2210 работает под управлением Debian Linux и выполняет высокоуровневые вычислительные задачи, включая управление сетевыми возможностями, такими как Wi-Fi ® и Bluetooth ®, запуск скриптов Python ® и Linux-приложений, а также управление системными ресурсами и периферией.
Совместно с ним работает микроконтроллер STM32U585 под управлением Zephyr RTOS, который выполняет скетчи Arduino, обрабатывает операции реального времени, управляет выводами GPIO и аппаратными интерфейсами и взаимодействует с MPU через механизм Bridge.
Архитектура UNO Q
Механизм Bridge является ключевым элементом, обеспечивающим бесперебойную связь между обеими системами. Он позволяет вашим скриптам Python ®, работающим в Debian, взаимодействовать с кодом Arduino, работающим на MCU, создавая гибкую гибридную среду разработки, которая использует как вычислительную мощность Linux, так и возможности Arduino в реальном времени.
Python ® является официально поддерживаемым языком для разработки на стороне MPU на UNO Q. По мере развития проекта станут доступны дополнительные языки программирования и альтернативные методы связи MPU/MCU, предоставляя больше возможностей для интеграции пользовательских приложений с оборудованием.
Совет
Если вы хотите узнать об UNO Q в целом, прежде чем погружаться в это руководство по Debian, обратитесь к руководству пользователя UNO Q, чтобы ознакомиться с платой.
Доступ к оболочке платы
Существует четыре способа получить доступ к оболочке Debian на вашем UNO Q, каждый из которых подходит для различных сценариев и рабочих процессов.
Доступ к оболочке платы
Через USB-C (ADB)
Android Debug Bridge (ADB) обеспечивает прямой доступ к оболочке через USB-соединение, что идеально подходит для быстрого доступа, когда плата подключена к компьютеру, без необходимости настройки сети.
Для использования этого метода вам понадобится кабель USB-C и установленные на компьютере инструменты ADB. После подключения плату можно проверить, выполнив команду adb devices, которая выводит список всех подключённых устройств.
adb devices
Затем выполните adb shell, чтобы войти в оболочку платы. Этот метод полезен при первоначальной настройке или когда сетевое подключение недоступно.
adb shell
Подключение через USB-C (ADB)
Через SSH (Сеть)
Secure Shell (SSH) обеспечивает удалённый доступ по локальной сети, позволяя подключаться к плате из любого места в той же сети без физических кабелей.
Этот метод требует, чтобы плата была подключена к Wi-Fi ® и чтобы SSH был включён, что происходит после завершения первоначальной настройки в Arduino App Lab. Как ваш компьютер, так и плата должны находиться в одной сети для работы этого метода.
Подключение через SSH
Для подключения откройте терминал на компьютере и выполните:
ssh arduino@<boardname>.local
Замените <boardname> на фактическое имя вашей платы. При первом подключении вас попросят подтвердить соединение, набрав yes. После подтверждения введите пароль платы для получения полного доступа к оболочке. Например:
ssh arduino@unoqtestbench.local
Подключение через SSH
Эта возможность удалённого доступа позволяет работать с UNO Q из любого места в вашей сети, упрощая управление проектами, загрузку файлов и мониторинг платы без физического подключения.
Если возникают проблемы с подключением, особенно с mDNS в определённых сетях, можно подключиться напрямую по IP-адресу платы вместо имени хоста .local. Узнать IP-адрес можно, выполнив:
hostname -I
Подключение через SSH
На плате (доступной через ADB или режим SBC).
Совет
Для подробной настройки SSH, передачи файлов с помощью SCP и комплексного устранения неполадок обратитесь к специальному руководству по подключению к UNO Q через Secure Shell (SSH).
Через режим SBC
Режим одноплатного компьютера превращает ваш UNO Q в автономный настольный компьютер с графическим интерфейсом. Для использования этого режима вам понадобится адаптер USB-C с внешним питанием, HDMI-дисплей, а также USB-клавиатура и мышь.
Режим SBC
Предупреждение
Вы можете использовать любой адаптер USB-C с возможностью внешнего питания, кроме адаптеров Apple.
Подключите все периферийные устройства через адаптер USB-C, включите систему и войдите в систему, используя свои учётные данные. После входа вы можете открыть приложение Терминал прямо из среды рабочего стола, получая доступ к оболочке наряду с графическим интерфейсом.
Этот метод идеален, когда вы хотите использовать UNO Q в качестве рабочей станции, позволяя просматривать веб-страницы, редактировать файлы графически и использовать терминал — всё с одного устройства.
Совет
Для полного руководства по режиму одноплатного компьютера обратитесь к специальному руководству UNO Q Single-Board Computer.
Через аппаратный отладочный UART
Для низкоуровневой отладки и ранней диагностики загрузки плата предоставляет специальный аппаратный интерфейс отладочного UART, работающий на уровне логики 1.8 В (115200 бод) через разъём JCTL.
Этот интерфейс подключается напрямую к главной консоли SoC (TTY), позволяя отслеживать журналы загрузки и ядра, устранять системные неполадки или получать доступ к оболочке до того, как станут доступны сетевые службы, такие как SSH или ADB. Вы можете войти в систему, используя свои учётные данные Linux, для взаимодействия с системой через оболочку.
Важно
Этот метод требует USB-TTL конвертера на 1.8 В и предназначен для продвинутых пользователей. Для полных инструкций по настройке и технических спецификаций обратитесь к разделу Hardware Debug UART Interface в руководстве пользователя.
Навигация по системе
Понимание файловой системы
Debian организует файлы в иерархическую структуру каталогов, где корневой каталог / находится на верхнем уровне, а все остальные каталоги расположены ниже.
Для большинства проектов UNO Q вы будете работать преимущественно в /home/arduino/, вашем каталоге пользователя по умолчанию.
Внутри вашего домашнего каталога папка ArduinoApps/ важна, потому что она содержит все приложения, которые вы создаёте в Arduino App Lab, каждое из которых хранится в собственном подкаталоге.
/ # Корневой каталог (верхний уровень)
├── home/
│ └── arduino/ # Ваш рабочий каталог
│ └── ArduinoApps/ # Ваши проекты Arduino App Lab
├── tmp/ # Временные файлы (очищаются при перезагрузке)
└── mnt/ # Точки монтирования для USB-накопителей
При навигации по системе вы будете проводить большую часть времени в /home/arduino/. Каталог /tmp/ полезен для временных файлов, а /mnt/ становится актуальным при монтировании USB-накопителей.
Команды навигации
Команда cd — часто используемый инструмент для навигации по структуре каталогов. Выполнение cd ~ перенесёт вас непосредственно в ваш домашний каталог, а cd /home/arduino/Documents перейдёт к конкретному пути.
cd ~
cd /home/arduino/Documents
Чтобы подняться на один уровень каталогов, используйте cd .., а чтобы вернуться в предыдущий каталог — cd -. Ваша командная строка будет меняться, отображая текущий каталог, помогая вам отслеживать своё местоположение в файловой системе.
cd ..
cd -
Чтобы увидеть содержимое каталога, используйте команду ls. Выполнение ls в одиночку показывает базовый список файлов и каталогов. Команда ls -lh предоставляет подробный список с правами доступа, владельцем и размерами файлов в удобочитаемом формате.
ls
ls -lh
Команды навигации (1)
Добавление флага -a с помощью ls -a показывает скрытые файлы, начинающиеся с точки, и можно комбинировать несколько опций, например ls -lah, чтобы увидеть все файлы с полными деталями в удобочитаемом формате.
ls -a
ls -lah
При выполнении ls -lah вы увидите вывод, подобный этому:
Команды навигации (2)
Если вам нужно точно узнать, где вы находитесь в структуре каталогов, команда pwd выведет ваш текущий рабочий каталог.
Например, выполнение pwd может отобразить /home/arduino/Documents, подтверждая ваше текущее местоположение в файловой системе.
pwd
Команды навигации (3)
Файловые операции
Создание каталогов просто с помощью команды mkdir. Выполнение mkdir my_project создаёт новый каталог в вашем текущем расположении.
mkdir my_project
С другой стороны, mkdir -p projects/arduino/sketches создаёт все вложенные каталоги сразу, включая любые промежуточные каталоги, которые ещё не существуют. Это полезно при настройке сложных структур проектов.
mkdir -p projects/arduino/sketches
Команда cp выполняет операции копирования файлов. Для копирования одного файла используйте cp source.txt destination.txt, что создаёт дубликат с новым именем.
cp source.txt destination.txt
При работе с каталогами вам понадобится флаг рекурсивного копирования: cp -r source_folder/ destination_folder/ копирует весь каталог и всё его содержимое. Это необходимо, когда нужно создать резервную копию или продублировать папки проекта.
cp -r source_folder/ destination_folder/
Как перемещение, так и переименование файлов используют команду mv.
Разница в том, как вы её используете: mv oldname.txt newname.txt переименовывает файл в текущем каталоге.
mv oldname.txt newname.txt
Тогда как mv file.txt /home/arduino/Documents/ перемещает файл в другое место. В отличие от копирования, перемещение не создаёт дубликат. Оно перемещает оригинальный файл.
mv file.txt /home/arduino/Documents/
Удаление файлов требует внимания. Команда rm file.txt безвозвратно удаляет файл, а rm -r folder/ удаляет весь каталог и его содержимое.
rm file.txt
rm -r folder/
Наиболее мощный, но опасный вариант — rm -rf folder/, который принудительно удаляет всё без запроса подтверждения. Эту команду следует использовать с крайней осторожностью, так как удалённые файлы невозможно восстановить.
rm -rf folder/
Предупреждение
Команда rm -rf безвозвратно удаляет файлы без подтверждения, и это действие нельзя отменить. Всегда дважды проверяйте путь перед выполнением этой команды, чтобы избежать случайной потери данных.
Права доступа и суперпользователь
Понимание прав доступа в Linux
Каждый файл и каталог в Debian имеет связанные с ним права доступа, которые контролируют, кто может читать, записывать или выполнять его.
Право чтения позволяет просматривать содержимое файла или выводить содержимое каталога.
Право записи позволяет изменять или удалять файлы.
Право выполнения позволяет запускать файлы как программы или получать доступ к каталогам.
Эти права назначаются трём категориям пользователей:
Владелец, создавший файл
Пользователи в той же группе, что и файл
Все остальные пользователи в системе
Эта система прав обеспечивает контролируемый доступ к файлам и безопасность системы.
Использование sudo (Суперпользователь)
Многие системные операции требуют прав администратора для предотвращения непреднамеренных изменений критически важных системных файлов. Команда sudo позволяет выполнять команды с правами суперпользователя временно.
Например, установка программного обеспечения обычно требует повышенных привилегий, поэтому вы бы использовали sudo apt install package-name.
sudo apt install package-name
Аналогично, редактирование файлов конфигурации системы, например sudo nano /etc/network/interfaces, требует доступа суперпользователя.
sudo nano /etc/network/interfaces
При управлении системными службами командами вроде sudo systemctl restart networking или при доступе к защищённым каталогам, таким как sudo ls /root, вам будет предложено ввести пароль перед выполнением команды. Эта мера безопасности подтверждает, что критические изменения системы являются преднамеренными и аутентифицированными.
sudo systemctl restart networking
sudo ls /root
Изменение прав доступа к файлам
Команда chmod изменяет права доступа к файлам и каталогам. Когда вам нужно сделать скрипт исполняемым, выполните chmod +x script.sh — это добавляет право на выполнение, позволяя запускать скрипт с помощью ./script.sh.
chmod +x script.sh
Для более точного контроля можно использовать числовую нотацию, например chmod 755 script.sh, которая предоставляет владельцу полные права на чтение, запись и выполнение, а остальным — только на чтение и выполнение.
chmod 755 script.sh
Когда нужно применить права ко всему каталогу и его содержимому, рекурсивный флаг chmod -R 755 folder/ обеспечивает применение одинаковых прав ко всем файлам внутри папки.
chmod -R 755 folder/
Часто встречающиеся коды прав доступа:
755— владелец имеет полный контроль, остальные могут читать и выполнять.644— владелец может читать и записывать, остальные могут только читать.777— полный доступ для всех; следует использовать с осторожностью из-за последствий для безопасности.
Изменение владельца
Владельца файла можно изменить с помощью команды chown, что полезно, когда файлы создаются с неправильным владельцем или их нужно передать между пользователями.
sudo chown arduino file.txt
Выполнение sudo chown arduino file.txt меняет владельца файла на пользователя arduino. Можно одновременно изменить владельца и группу с помощью sudo chown arduino:arduino file.txt.
sudo chown arduino:arduino file.txt
Для целых структур каталогов рекурсивная опция sudo chown -R arduino:arduino /home/arduino/project/ обеспечивает правильное владение всеми файлами внутри папки проекта.
sudo chown -R arduino:arduino /home/arduino/project/
Управление файлами
Просмотр содержимого файлов
Когда вам нужно просмотреть содержимое текстового файла, Debian предоставляет несколько инструментов, подходящих для различных сценариев.
Самый простой — cat file.txt, который выводит весь файл прямо в терминал. Хорошо работает для коротких файлов, но может быть неудобен для длинных документов.
cat file.txt
Для больших файлов команда less file.txt открывает прокручиваемый просмотрщик, где можно перемещаться стрелками, искать текст с помощью / и выйти нажатием q. Она обеспечивает гораздо больший контроль над чтением файла.
less file.txt
Иногда нужно увидеть только начало или конец файла. Команда head file.txt показывает первые 10 строк, а tail file.txt — последние 10 строк.
head file.txt
tail file.txt
Количество отображаемых строк можно настроить командами вроде head -n 20 file.txt.
head -n 20 file.txt
Команда tail -f полезна тем, что непрерывно отслеживает файл и отображает новые строки по мере их добавления. Идеально подходит для наблюдения за файлами журналов или мониторинга вывода в реальном времени.
tail -f mylogfile.txt
Для мониторинга системных журналов на UNO Q можно использовать команду journalctl, которая отображает системный журнал в реальном времени:
sudo journalctl -f
Мониторинг системного журнала
Редактирование файлов с помощью Nano
Nano — удобный текстовый редактор для терминала, предустановленный на UNO Q, что делает его подходящим выбором для редактирования конфигурационных файлов и скриптов из командной строки.
Для редактирования файла выполните nano myfile.txt, что откроет существующий файл или создаст новый, если он не существует.
nano myfile.txt
Редактирование файлов в Nano (1)
При редактировании системных файлов, требующих повышенных привилегий, добавьте sudo перед командой, например sudo nano /etc/hostname.
sudo nano /etc/hostname
Редактирование файлов в Nano (2)
Внутри Nano используйте клавиши со стрелками для перемещения по тексту; внизу экрана вы увидите полезное меню с доступными командами.
Для сохранения изменений нажмите CTRL + O (запись), подтвердите имя файла и нажмите Enter. Другие полезные команды:
CTRL + X — выход из nano
CTRL + K — вырезать текущую строку
CTRL + U — вставить вырезанное в другое место
CTRL + W — поиск текста
CTRL + G — доступ к полному меню помощи
При нажатии CTRL + O для сохранения Nano записывает ваши изменения в хранилище, делая их постоянными.
Поиск файлов и содержимого
Команда find помогает находить файлы по различным критериям. Для поиска всех файлов Python в вашем домашнем каталоге выполните find /home/arduino -name "*.py", что рекурсивно ищет по всем подкаталогам.
find /home/arduino -name "*.py"
Можно также искать по времени модификации. Например, find /home/arduino -mtime -7 находит все файлы, изменённые за последние семь дней. Полезно для поиска недавно изменённых файлов в больших структурах каталогов.
find /home/arduino -mtime -7
Поиск файлов и содержимого (1)
Для поиска внутри содержимого файлов, а не по именам файлов, команда grep очень полезна. Выполнение grep "Arduino" file.txt ищет слово "Arduino" в конкретном файле и отображает совпадающие строки.
grep "Arduino" file.txt
Для поиска по всей структуре каталогов используйте grep -r "TODO" /home/arduino/, что рекурсивно ищет текст "TODO" во всех файлах.
grep -r "TODO" /home/arduino/
Поиск файлов и содержимого (2)
Опция поиска без учёта регистра grep -i "arduino" file.txt будет находить "Arduino", "arduino" и "ARDUINO", делая поиск более гибким.
grep -i "arduino" file.txt
Управление пакетами
Debian использует Advanced Package Tool, обычно известный как apt, для управления установкой, обновлением и удалением программного обеспечения. Эта система автоматически обрабатывает зависимости, обеспечивая при установке программы загрузку всех необходимых поддерживающих библиотек и инструментов.
Обновление списков пакетов
Перед установкой нового программного обеспечения или обновлением системы необходимо обновить списки пакетов, чтобы убедиться, что вы используете последние версии.
Выполнение sudo apt update загружает самую актуальную информацию о пакетах из репозиториев Debian. Вы увидите вывод со списком проверяемых репозиториев и сводкой доступных обновлений.
sudo apt update
Обновление списков пакетов (1)
Вывод будет выглядеть примерно так:
Hit:1 http://deb.debian.org/debian trixie-backports InRelease
Hit:2 http://deb.debian.org/debian trixie InRelease
Hit:3 http://deb.debian.org/debian trixie-updates InRelease
Hit:4 http://deb.debian.org/debian-security trixie-security InRelease
Hit:5 https://apt-repo.arduino.cc stable InRelease
58 packages can be upgraded. Run 'apt list --upgradable' to see them.
Если все доступные пакеты уже обновлены, результат будет следующим:
Обновление списков пакетов (2)
Этот процесс ничего не устанавливает. Он обновляет информацию вашей системы о доступных версиях программного обеспечения. Сообщения Hit указывают на то, что ваши списки пакетов синхронизированы с репозиториями. Если пакеты можно обновить, система уведомит вас об их количестве.
Обновление системы
После обновления списков пакетов можно обновить установленные пакеты до последних версий. Команда sudo apt upgrade обновляет все установленные пакеты, сохраняя консервативный подход к зависимостям, обеспечивая стабильность системы.
sudo apt upgrade
Обновление списков пакетов (3)
Для более комплексных обновлений, которые могут изменить зависимости пакетов или установить новые пакеты, необходимые для обновлений, используйте sudo apt full-upgrade. Эта команда обрабатывает сложные сценарии обновления и является более тщательной, чем стандартное обновление.
sudo apt full-upgrade
Обновление списков пакетов (4)
Регулярные обновления помогают получать последние исправления безопасности и ошибок, поддерживая безопасность и стабильность вашего UNO Q. Хорошей практикой является регулярное выполнение sudo apt update && sudo apt upgrade для поддержания системы в актуальном состоянии.
Совет
Для крупных системных обновлений или обновлений версии ОС рекомендуется использовать процедуру перепрошивки образа, описанную в специальном руководстве по обновлению образа UNO Q.
Установка программного обеспечения
Установка программного обеспечения с помощью apt проста. Для установки одного пакета используйте sudo apt install package-name, что загрузит пакет и все его зависимости, а затем автоматически установит всё.
sudo apt install package-name
Можно установить несколько пакетов одной командой, разделяя их пробелами, например sudo apt install python3-pip git curl. Во время установки apt покажет, что будет установлено, и запросит подтверждение перед продолжением.
sudo apt install python3-pip git curl
Установка программного обеспечения (1)
Например, если вы хотите установить текстовый редактор Vim, выполнение sudo apt install vim загрузит Vim и все необходимые библиотеки, а затем настроит всё, чтобы он был готов к использованию сразу.
sudo apt install vim
Установка программного обеспечения (2)
Пакетный менеджер берёт на себя всю сложность, делая установку программного обеспечения проще, чем ручная компиляция и настройка. Если пакет уже установлен, он сообщит о доступности пакета и установленной версии.
Поиск и управление пакетами
Когда вы не уверены в точном названии пакета, команда apt search keyword помогает найти пакеты, связанные с определённой темой.
Например, apt search python3 выведет список всех доступных пакетов, связанных с Python 3, с кратким описанием каждого. Это полезно для изучения инструментов, доступных для определённой задачи или языка программирования. Следующая команда ищет доступные пакеты в целом:
apt search keyword
Поиск и управление пакетами (1)
Например, для поиска пакетов, связанных с Python:
apt search python3
Поиск и управление пакетами (2)
Удаление программного обеспечения также просто. Команда sudo apt remove package-name удаляет пакет, но сохраняет все файлы конфигурации, которые вы могли настроить.
sudo apt remove package-name
Если вы хотите полностью удалить пакет, включая файлы конфигурации, используйте sudo apt purge package-name. Со временем в системе могут накапливаться неиспользуемые зависимости от ранее установленных пакетов.
sudo apt purge package-name
Выполнение sudo apt autoremove автоматически очищает их, освобождая дисковое пространство путём удаления пакетов, которые больше не нужны.
sudo apt autoremove
USB и доступ к периферии
Обнаружение USB-устройств
При подключении USB-устройства к UNO Q через адаптер USB-C в режиме SBC Debian обнаруживает и регистрирует его.
Команда lsusb предоставляет быстрый обзор всех подключённых USB-устройств, показывая идентификаторы производителя, идентификаторы продукта и описания устройств. Вы можете увидеть записи для клавиатуры, мыши, камеры или другой периферии.
lsusb
Вывод показывает подключённые устройства в формате:
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 046d:c52b Logitech, Inc. USB Keyboard
Bus 001 Device 002: ID 093a:2510 USB Camera
Обнаружение USB-устройств (1)
Для получения более подробной информации об USB-устройствах, включая требования к питанию, скорости передачи и возможности устройств, можно использовать lsusb -v для подробного вывода или lsusb -t для просмотра дерева USB-устройств, показывающего, как устройства подключены через хабы и порты.
Этот подробный вид полезен при устранении проблем с USB или при понимании распределения питания между несколькими устройствами. Следующая команда показывает подробную информацию об USB:
lsusb -v
Обнаружение USB-устройств (2)
Следующая команда показывает информацию о дереве USB-устройств:
lsusb -t
Обнаружение USB-устройств (3)
Работа с USB-накопителями
При подключении USB-флешки или внешнего жёсткого диска в режиме SBC к среде рабочего стола система обычно автоматически монтирует его в /media/arduino/, делая его доступным в файловом менеджере.
Однако при работе из командной строки или в безголовом режиме вам нужно будет монтировать накопители вручную.
Сначала определите свой USB-накопитель, выполнив lsblk, который выводит список всех блочных устройств и их разделов. Вы увидите вывод с именами устройств, такими как /dev/sdb1, вместе с их размерами и точками монтирования.
lsblk
Работа с USB-накопителями (1)
Для ручного монтирования USB-накопителя создайте каталог точки монтирования с помощью sudo mkdir -p /mnt/usb, затем смонтируйте устройство с помощью sudo mount /dev/sdb1 /mnt/usb. Содержимое USB-накопителя теперь доступно по пути /mnt/usb.
sudo mkdir -p /mnt/usb
sudo mount /dev/sdb1 /mnt/usb
Работа с USB-накопителями (2)
Когда вы закончите работу с накопителем, всегда правильно размонтируйте его с помощью sudo umount /mnt/usb перед физическим отключением, чтобы предотвратить повреждение данных.
sudo umount /mnt/usb
Работа с USB-накопителями (3)
USB-камеры
USB-камеры регистрируются как видеоустройства в каталоге /dev/. Выполнение ls /dev/video* выводит список всех доступных видеоустройств, включая как физические камеры, так и виртуальные видеоустройства. Вывод обычно показывает /dev/video0, /dev/video1 и так далее.
ls /dev/video*
USB-камеры (1)
Для тестирования и использования USB-камер на UNO Q можно установить и использовать Cheese — удобное приложение для камеры с графическим интерфейсом. Установите его с помощью sudo apt install cheese и запустите командой cheese.
sudo apt install cheese
USB-камеры (2)
cheese
USB-камеры (3)
Это открывает окно, показывающее изображение с камеры, с возможностью делать фотографии или записывать видео, что упрощает тестирование функциональности камеры без написания кода. Cheese автоматически обнаруживает и настраивает вашу камеру, обрабатывая все технические детали в фоновом режиме.
Для доступа к камере в ваших проектах разработки библиотеки Python, такие как OpenCV (python3-opencv), предоставляют возможности управления камерой и обработки изображений, которые хорошо интегрируются с Python-скриптами Arduino App Lab.
sudo apt install python3-opencv
Последовательные устройства
USB-последовательные устройства, включая платы Arduino и адаптеры USB-Serial, отображаются в системе как специальные файлы устройств в каталоге /dev/, обычно с именами /dev/ttyUSB* для общих USB-последовательных устройств или /dev/ttyACM* для устройств, реализующих USB Communications Device Class. Вы можете вывести список всех последовательных портов, выполнив ls /dev/tty*, хотя это покажет множество записей, включая виртуальные терминалы.
Для взаимодействия с последовательным устройством утилита screen предоставляет простой терминальный интерфейс. Сначала установите её с помощью sudo apt install screen, затем подключитесь к последовательному устройству командой screen /dev/ttyUSB0 115200, где 115200 — скорость передачи данных.
Это открывает терминальную сессию, подключённую к последовательному порту. Для выхода из screen нажмите CTRL+A, затем K и, наконец, Y для подтверждения.
sudo apt install screen
Последовательные устройства (1)
screen /dev/ttyUSB0 115200
Последовательные устройства (2)
Последовательные устройства часто настраиваются с ограниченными правами по умолчанию. Выполнение ls -l /dev/ttyUSB0 может показать, что только пользователи в группе dialout имеют доступ.
ls -l /dev/ttyUSB0
Чтобы предоставить вашей учётной записи доступ к последовательным портам, добавьте себя в группу dialout с помощью sudo usermod -a -G dialout arduino. Это изменение вступит в силу после выхода из системы и повторного входа. После этой одноразовой настройки вы сможете обращаться к последовательным устройствам без использования sudo.
sudo usermod -a -G dialout arduino
Arduino App CLI
Arduino UNO Q поставляется с предустановленным Arduino App CLI (arduino-app-cli) — инструментом командной строки для управления и контроля приложений Arduino App Lab непосредственно из терминала.
Этот инструмент позволяет собирать, запускать, останавливать и управлять приложениями без использования графического интерфейса Arduino App Lab, что идеально подходит для автоматизации, удалённого управления через SSH или работы в безголовом режиме.
Управление приложениями
Ваши приложения Arduino хранятся в каталоге ~/ArduinoApps/. Перейдите туда, чтобы увидеть все доступные проекты:
cd ~/ArduinoApps/
Следующая команда показывает все ваши проекты Arduino App Lab:
ls
Эти проекты Arduino App Lab являются примерами из пространства My Apps.
Каждый каталог приложения содержит код скетча, Python-скрипты и файл конфигурации app.yml.
При работе приложения постоянные данные сохраняются в папке data/ внутри каталога приложения, а вспомогательные файлы, такие как виртуальное окружение Python, хранятся в папке .cache/.
Для вывода списка всех доступных приложений на плате используйте:
arduino-app-cli app list
Управление приложениями (1)
Для запуска или остановки приложений из командной строки используйте следующий формат команды:
arduino-app-cli app start user:my-app
Например, для запуска примера приложения используйте:
arduino-app-cli app start examples:blink
Управление приложениями (2)
Управление приложениями (3)
Для остановки работающего приложения используйте:
arduino-app-cli app stop user:my-app
Например, для остановки работающего приложения Blink LED:
arduino-app-cli app stop examples:blink
Управление приложениями (4)
Конфигурация системы и сети
Arduino App CLI также предоставляет команды управления системой. Одна полезная функция — включение или отключение сетевого режима, который позволяет десктопному приложению Arduino App Lab подключаться к плате удалённо.
Следующая команда может включить или отключить сетевой режим для удалённого доступа Arduino App Lab:
arduino-app-cli system network-mode <enable/disable>
Затем можно использовать следующую команду для проверки статуса сетевого режима:
arduino-app-cli system network-mode status
Конфигурация системы и сети (1)
Сетевой режим автоматически включается при первоначальной настройке, но эти команды позволяют управлять им вручную при необходимости.
Работа с приложениями
Для сборки, запуска и остановки приложений рекомендуемым интерфейсом является Arduino App Lab (как десктопное приложение, так и при работе на плате в режиме SBC).
App Lab автоматически обрабатывает компиляцию, развёртывание и выполнение компонентов как Linux, так и микроконтроллера.
Если вам нужно просмотреть или отредактировать файлы приложения вручную, перейдите в каталог приложения и используйте стандартные команды Linux:
cd ~/ArduinoApps/MyApp
Следующая команда покажет конфигурацию приложения:
cat app.yaml
Следующая команда покажет содержимое скетча Arduino:
cat sketch/sketch.ino
Следующая команда покажет содержимое Python-скрипта:
cat main.py
Совет
Для полной документации по Arduino App CLI, включая создание приложений, мониторинг журналов, управление Bricks и системные обновления, обратитесь к специальному руководству Arduino App CLI.
Arduino CLI
Стандартный инструмент Arduino CLI (arduino-cli) также доступен на UNO Q для пользователей, которым нужен прямой доступ к управлению ядрами Arduino, установке библиотек и компиляции скетчей вне экосистемы Arduino App Lab.
Этот инструмент независим от Arduino App Lab и следует стандартному рабочему процессу Arduino CLI. Следующая команда может использоваться для проверки версии и доступности arduino-cli:
arduino-cli version
Arduino CLI (1)
Для разработки на UNO Q Arduino App Lab и arduino-app-cli являются рекомендуемыми инструментами, так как они специально разработаны для архитектуры платы и автоматически обрабатывают связь между MPU и MCU.
Стандартный arduino-cli полезен для пользователей, которым нужно управлять ядрами и библиотеками вручную или работать с другими платами Arduino, подключёнными к UNO Q.
Совет
Для подробной документации по Arduino CLI посетите официальную документацию Arduino CLI.
Мониторинг системы
Проверка системных ресурсов
Понимание использования ресурсов вашей системы помогает выявлять узкие места производительности и устранять проблемы.
Команда top предоставляет интерактивный вид запущенных процессов в реальном времени, показывая использование CPU и памяти для каждого процесса.
Нажмите q для выхода из интерфейса top. Полезно для определения, какая программа потребляет чрезмерные ресурсы.
top
Проверка системных ресурсов (1)
Управление дисковым пространством критически важно, особенно для eMMC-хранилища UNO Q. Команда df -h отображает использование диска для всех смонтированных файловых систем в удобочитаемом формате (МБ, ГБ), показывая общий размер, использованное пространство, доступное пространство и точки монтирования.
Она помогает отслеживать потребление хранилища и определять, когда заканчивается место.
df -h
Проверка системных ресурсов (2)
Чтобы увидеть, сколько места занимают отдельные каталоги, используйте du -sh * в любом каталоге.
Это суммирует размер каждого элемента в текущем расположении, облегчая определение больших каталогов, которые могут быть хорошими кандидатами для очистки.
du -sh *
Проверка системных ресурсов (3)
Команда free -h отображает статистику использования памяти, показывая общий объём RAM, используемую память, свободную память и пространство подкачки в удобочитаемом формате. Флаг -h отображает размеры в удобочитаемом формате, а не в необработанных байтах.
Это помогает определить, потребляют ли ваши приложения слишком много памяти или достаточно ли ресурсов для новых программ.
free -h
Проверка системных ресурсов (4)
Информация о системе
Несколько команд предоставляют подробную информацию о конфигурации оборудования и программного обеспечения вашего UNO Q. Команда uname -a отображает полную информацию о ядре Linux, включая версию, дату сборки и архитектуру.
uname -a
Чтобы конкретно узнать, какая версия Debian у вас установлена, проверьте /etc/os-release с помощью cat /etc/os-release, который выводит имя операционной системы, версию и другие детали дистрибутива.
cat /etc/os-release
Информация о системе (1)
Для получения подробной информации о CPU, включая модель, количество ядер, тактовую частоту и поддерживаемые функции, используйте lscpu.
lscpu
Информация о системе (2)
Управление сетью
Проверка состояния сети
Команда ip addr отображает все сетевые интерфейсы вместе с их IP-адресами, MAC-адресами и текущим состоянием.
Она показывает как физические интерфейсы, такие как wlan0 для Wi-Fi ® и eth0 для Ethernet, так и виртуальные интерфейсы. Вывод включает адреса IPv4 и IPv6, помогая определить, как плата подключена к сети.
ip addr
Проверка состояния сети (1)
Чтобы увидеть, какие интерфейсы в данный момент активны или неактивны, используйте ip link show. Это отображает состояние канала для каждого интерфейса, указывая, находится ли он в состоянии UP (активен) или DOWN (неактивен), вместе с другими свойствами, такими как MAC-адреса и поддерживаемые функции.
ip link show
Проверка состояния сети (2)
Управление Wi-Fi
Интерфейс командной строки NetworkManager, nmcli, предоставляет широкие возможности управления Wi-Fi ®. Выполнение nmcli device status показывает все сетевые устройства и их текущее состояние подключения.
nmcli device status
Для сканирования доступных Wi-Fi ® сетей в зоне действия используйте nmcli device wifi list, который отображает SSID, уровень сигнала, типы безопасности и каналы для всех видимых сетей.
# Список доступных Wi-Fi сетей
nmcli device wifi list
Управление Wi-Fi (1)
Подключение к Wi-Fi ® сети возможно с помощью sudo nmcli device wifi connect "SSID" password "password", заменив SSID и password на ваши сетевые учётные данные.
nmcli device wifi connect "SSID" password "password"
Подключение сохраняется автоматически, позволяя плате переподключаться после перезагрузки. Для отключения от текущей сети используйте sudo nmcli device disconnect wlan0.
Вы можете просмотреть все сохранённые сетевые подключения с помощью nmcli connection show, который выводит имена подключений, типы и связанные устройства.
nmcli device disconnect wlan0
Управление Wi-Fi (2)
nmcli connection show
Управление Wi-Fi (3)
Сетевая диагностика
При устранении сетевых проблем несколько диагностических инструментов являются незаменимыми.
Команда ping google.com тестирует базовое подключение к интернету, отправляя пакеты на удалённый сервер и измеряя время ответа. Нажмите CTRL+C для остановки непрерывного вывода ping.
ping google.com
Сетевая диагностика (1)
Команда traceroute google.com показывает сетевой путь, по которому пакеты проходят до пункта назначения, помогая определить, где возникают проблемы с подключением.
traceroute google.com
Сетевая диагностика (2)
Для устранения проблем с DNS команда nslookup arduino.cc запрашивает DNS-серверы для проверки правильного разрешения доменных имён в IP-адреса.
nslookup arduino.cc
Сетевая диагностика (3)
Устранение сетевых проблем через ADB
Если вы настроите сеть, которая не работает должным образом, вы можете обнаружить, что не можете получить доступ к плате через Arduino App Lab или сетевой режим.
В такой ситуации можно использовать ADB для доступа к оболочке и удаления проблемного сетевого подключения без перепрошивки платы или использования режима SBC с клавиатурой и мышью.
Сначала подключите UNO Q через кабель USB-C, затем получите доступ к оболочке через ADB. На macOS инструмент ADB находится в вашем каталоге Arduino15:
# macOS - Доступ к оболочке через ADB
~/Library/Arduino15/packages/arduino/tools/adb/32.0.0/adb shell
Войдя в оболочку, выведите список сохранённых подключений:
nmcli connection show
Следующей командой удалите проблемное подключение:
nmcli connection delete <ConnectionName>
На Linux путь обычно такой:
# Linux - Доступ к оболочке через ADB
~/.arduino15/packages/arduino/tools/adb/32.0.0/adb shell
Затем удалите подключение аналогичной командой:
nmcli connection delete <ConnectionName>
На Windows путь использует папку AppData пользователя:
# Windows - Доступ к оболочке через ADB (в Command Prompt или PowerShell)
%LOCALAPPDATA%\Arduino15\packages\arduino\tools\adb\32.0.0\adb.exe shell
Затем удалите подключение аналогичной командой:
nmcli connection delete <ConnectionName>
После удаления проблемного подключения вы можете выйти из оболочки ADB и перенастроить сеть либо через процесс первоначальной настройки Arduino App Lab, либо подключившись к рабочей сети с помощью описанных выше команд.
Совет
Этот метод ADB полезен, когда вы лишены сетевого доступа и не имеете в наличии адаптера USB-C, клавиатуры или мыши для режима SBC.
Полезные советы и лучшие практики
Эффективность командной строки
Терминал содержит несколько сочетаний клавиш, которые помогают повысить эффективность работы.
Нажатие Tab автоматически дополняет команды и имена файлов, экономя время набора и предотвращая ошибки.
Для остановки выполняемой команды нажмите CTRL + C. Для очистки экрана терминала используйте CTRL + L.
Клавиши стрелок вверх и вниз позволяют перемещаться по ранее введённым командам, упрощая повторение или изменение недавних команд. Функция обратного поиска, активируемая нажатием CTRL + R, позволяет искать по всей истории команд, вводя несколько символов.
Получение справки
Debian включает документацию практически для каждой команды через систему руководств.
Выполнение man <command-name> открывает подробную страницу руководства для любой команды, включая объяснения всех параметров, примеры использования и связанные команды.
man <command-name>
Например, man ls показывает всё о команде ls.
man ls
Получение справки (1)
Для быстрой справки большинство команд поддерживают флаг --help, например ls --help, который отображает краткое описание параметров прямо в терминале.
ls --help
Получение справки (2)
Системные журналы и устранение неполадок
Системные журналы важны для диагностики проблем.
Команда journalctl -xe показывает последние записи системного журнала с пояснительным текстом, помогая понять, что происходит, когда что-то идёт не так.
journalctl -xe
Системные журналы и устранение неполадок (1)
Для мониторинга журналов в реальном времени journalctl -f отслеживает журналы по мере их записи, подобно наблюдению за прямой трансляцией системных событий.
journalctl -f
Системные журналы и устранение неполадок (2)
Команда dmesg | less отображает сообщения ядра при загрузке и журналы обнаружения оборудования, которые полезны для устранения аппаратных проблем или проблем с драйверами.
dmesg | less
Системные журналы и устранение неполадок (3)
Безопасное управление системой
Соблюдение лучших практик помогает предотвратить повреждение системы. Понимание того, когда использовать sudo, важно для безопасного управления системой. Вам следует использовать sudo только тогда, когда вам нужны повышенные привилегии для операций системного уровня, таких как установка пакетов с помощью apt, редактирование файлов конфигурации системы в /etc/ или доступ к защищённым каталогам.
Для повседневных задач, таких как создание файлов в домашнем каталоге, редактирование собственных документов или запуск программ, sudo не нужен и не должен использоваться.
Использование sudo без необходимости может создать проблемы. Когда вы создаёте или изменяете файлы с помощью sudo, они принадлежат root, а не вашей учётной записи, что может привести к проблемам с правами доступа в дальнейшем.
Например, если вы выполните sudo nano myfile.txt в домашнем каталоге, файл будет принадлежать root. Вам понадобится sudo для его редактирования в будущем. Поэтому следует зарезервировать sudo для операций, которые действительно требуют привилегий системного администратора.
Перед внесением значительных изменений в систему всегда создавайте резервные копии важных файлов на внешнем устройстве хранения, например приложений, над которыми вы работали. Эта простая предосторожность может сэкономить часы работы, если что-то пойдёт не так.
При наличии возможности используйте опции команд для запуска в режиме сухого прогона (dry mode) и предварительного просмотра изменений перед их реализацией, что позволяет проверить операцию без фактического изменения чего-либо.
Поддерживайте систему и пакеты в актуальном состоянии с помощью регулярного выполнения sudo apt update && sudo apt upgrade. Поддержание системы в актуальном состоянии обеспечивает наличие последних исправлений безопасности, элементов совместимости и исправлений ошибок.
Предупреждение
Будьте особенно осторожны с командами вроде rm -rf, так как они безвозвратно удаляют файлы без подтверждения, и это действие нельзя отменить. Всегда дважды проверяйте пути и имена файлов перед выполнением деструктивных команд. Аналогично, избегайте использования chmod 777 для файлов или каталогов без необходимости, так как это предоставляет полный доступ всем и создаёт уязвимости безопасности.
Если вы сомневаетесь в эффекте команды, обратитесь к руководству с помощью man <command-name> или поищите примеры перед выполнением. Дополнительные минуты на проверку ваших действий предотвращают разочарование и потерю данных от преждевременных ошибок.
Безопасное выключение UNO Q
В отличие от традиционных компьютеров, UNO Q имеет функцию автоматического перезапуска. Когда вы выполняете стандартные команды выключения Linux, такие как:
sudo shutdown now
или
sudo poweroff
Плата выполняет чистое выключение системы Debian, но автоматически перезапускается через некоторое время. Это поведение встроено в систему управления питанием платы.
Для безопасного выключения UNO Q для длительного хранения или при переноске платы необходимо использовать специальную команду, которая безопасно выключает плату и сохраняет её в выключенном состоянии:
sudo halt
Рекомендуемый метод выключения
Команда halt является рекомендуемым подходом для безопасного выключения UNO Q. Она останавливает все системные процессы, приводит Linux в безопасное состояние и сохраняет плату выключенной, предотвращая автоматический перезапуск.
Для правильного выключения UNO Q выполните:
sudo halt
Зелёный светодиод питания на плате погаснет, когда система полностью остановится. Плата останется выключенной и не перезапустится автоматически.
Это делает sudo halt идеальным для длительного хранения, переноски платы или любой ситуации, когда вы хотите, чтобы плата оставалась выключенной до ручного включения.
Альтернативные методы выключения
Следующие методы выключения выполнят чистое выключение системы Debian, но вызовут функцию автоматического перезапуска платы:
sudo shutdown now
sudo poweroff
С помощью графического интерфейса (режим SBC):
Нажмите на «arduino» в верхнем правом углу рабочего стола
Выберите опцию «Shut Down» из появившегося выпадающего меню
При использовании любого из этих методов плата выполнит чистое выключение и затем автоматически перезапустится через несколько секунд.
Если вам нужно сохранить плату выключенной при использовании этих методов, необходимо отключить источник питания сразу после того, как зелёный светодиод погаснет, и до начала последовательности перезапуска.
Время критично при использовании этих методов с автоматическим перезапуском. У вас есть лишь короткий промежуток времени после выключения светодиода для безопасного отключения питания. Если вы будете ждать слишком долго, система начнёт последовательность перезагрузки.
В случае отключения питания от источника:
Для плат, питающихся через USB-C, отключите кабель USB-C после того, как светодиод погаснет
При использовании пина VIN для питания с входом 7-24 В постоянного тока отключите внешний источник питания в этот момент
Если плата получает питание от пина 5 В, отключите источник питания 5 В, когда индикатор светодиода погаснет
В режиме SBC с адаптером USB-C отключите источник питания адаптера после того, как светодиод погаснет.
Экстренное выключение и лучшие практики
Хотя правильные процедуры выключения предотвращают повреждение файловой системы и потерю данных, eMMC-хранилище UNO Q включает защитные меры, которые минимизируют потерю данных в случае неожиданного отключения питания.
Если вам необходимо немедленно отключить питание в экстренной ситуации, система, скорее всего, восстановится при следующей загрузке. Однако любая несохранённая работа может быть потеряна.
Для длительного хранения или при переноске платы используйте команду sudo halt для правильного выключения:
sudo halt
Для непрерывной работы или автоматизированных систем, где плата работает бесконечно, ручные процедуры выключения не нужны.
Описание команд выключения
Понимание поведения различных команд выключения помогает выбрать правильный подход для вашей ситуации.
Следующая команда выполняет чистый перезапуск системы:
sudo reboot
Следующая команда безопасно выключает плату и сохраняет её выключенной — это рекомендуемый метод для данного случая:
sudo halt
Следующие команды выполняют чистое выключение системы, но функция автоматического перезапуска платы включит систему снова вскоре после завершения выключения:
sudo shutdown now
sudo poweroff
Используйте sudo halt, чтобы плата оставалась выключенной. Используйте другие методы выключения только если вы специально хотите, чтобы плата перезапустилась, или если вы готовы быстро отключить питание для предотвращения автоматического перезапуска при определённых требованиях приложения.
Заключение
Это руководство познакомило вас с окружением Debian Linux, работающим на микропроцессоре Arduino UNO Q. Вы узнали, что такое Debian и как он интегрируется с микроконтроллером Arduino для создания гибридной платформы. Руководство охватило команды для доступа к оболочке платы через ADB, SSH или режим SBC, навигацию по файловой системе Linux, управление правами доступа с помощью sudo, установку пакетов с помощью apt и работу с USB-периферией. Вы также изучили Arduino App CLI для управления приложениями и инструменты мониторинга системы для отслеживания ресурсов и сетевого подключения.
Следующие шаги
Практикуйтесь в навигации по файловой системе, редактировании файлов в nano и установке пакетов, поддерживающих ваши проекты. Экспериментируйте с USB-периферией и изучайте программирование на Python на стороне MPU, используя Bridge для связи со скетчами Arduino на MCU.
Для конкретных тем обратитесь к следующим руководствам:
Подключение к UNO Q через Secure Shell (SSH)
UNO Q как одноплатный компьютер
Прошивка нового образа на UNO Q
Документация Arduino App Lab