Перейти к содержимому

Arduino cli что это

  • автор:

Начало работы с MALT

В этом разделе описывается, как отправить встроенное ПО в MALT, а также как откалибровать датчики с помощью SensorExplorer. Рекомендуется, чтобы компьютер, управляющий микроконтроллером, также был тестируемой системой или устройством (SUT/DUT).

Ориентирование malt

Передняя часть MALT (AMBIENT FACING) Задняя часть MALT (ЭКРАН С ЛИЦОМ)
MALT Front MALT Back

Настройка оборудования

Изображение настройки оборудования для MALT

  1. Подключите Arduino Mega к устройству с помощью кабеля USB 2.0 типа A/B.
  2. Подключите плату контроллера MALT к задним контактам Arduino Mega с помощью кабеля радужной ленты.
  3. Подключите плату контроллера MALT к плате датчика MALT с помощью кабеля CAT5(x) или CAT6(x). (Например, CAT5, CAT5e, CAT6 и т. д.)

Примечание Кабель Ethernet, используемый для подключения платы контроллера MALT к плате датчика MALT, должен иметь все 8 проводов, и эти провода не должны пересекать.

Кнопка сброса.

  • Нажмите кнопку сброса на arduino Mega.
  • Получение необходимых файлов

    1. Создайте папку с именем MALT на диске C компьютера. Путь к файлу должен быть C:\MALT. Мы разместим здесь все необходимые файлы и клонированные репозитории.
    2. Клонируйте репозиторий busiotools в папку MALT . Путь к файлу должен быть C:\MALT\busiotools.
    3. Клонируйте репозитории SerialCommand и SoftI2CMaster в папку MALT . Пути к файлам должны быть : C:\MALT\Arduino-SerialCommand и C:\MALT\SoftI2CMaster соответственно.

    Обновление встроенного ПО MALT

    MALT управляется Arduino, для которого требуется встроенное ПО для настройки датчиков на плате MALT и взаимодействия с ними.

    1. Получите и настройте интерфейс командной строки Arduino.
      1. Скачайте последнюю версию arduino-cli и сохраните ее на компьютере.
      2. Добавьте arduino-cli в переменную PATH, если вы еще этого не сделали.

      Примечание Убедитесь, что вы закрыли командную строку и открыли новую командную строку после добавления arduino-cli в переменную PATH.

      arduino-cli config init arduino-cli core update-index arduino-cli core install arduino:avr 
      arduino-cli lib install MatrixMath arduino-cli lib install AsyncDelay 
      arduino-cli board list 
      arduino-cli compile --fqbn arduino:avr:mega --port COMX --upload --library C:\MALT\Arduino-SerialCommand --library C:\MALT\SoftI2CMaster C:\MALT\busiotools\sensors\tools\MALT\Code\malt 

      Снимок экрана: ожидаемые выходные данные процесса компиляции и отправки.

      Ожидаемые выходные данные приведены ниже:

    Калибровка датчика цвета MALT

    Датчики цвета MALT не поставляются на заводе, откалибровывая для реальных цветов. Ниже приведен процесс калибровки, чтобы обеспечить точное считывание. Калибровка для MALT должна быть выполнена для датчика цвета окружающей среды и датчика цвета экрана. Этот процесс необходимо выполнить только один раз для каждой платы датчика, и микросхемы памяти на PCB сохранят параметр. Чтобы обновить параметр, нажмите кнопку сброса на arduino.

    1. Подключите MALT к USB-порту на SUT.
    2. Откройте SensorExplorer и перейдите на вкладку MALT слева (No 3). Выберите правильный Vid/Pid в области Выбора устройства » и выберите Подключиться к устройству. Снимок экрана: SensorExplorer, на котором показано, как подключить последовательное устройство.
    3. Выберите вкладку Калибровка в верхней части окна. Снимок экрана: SensorExplorer, на котором показано, как перейти на вкладку калибровки.
    4. Известные значения цвета являются ключом к любому процессу калибровки и поступают от датчика, который уже откалиброван и имеет правильные значения. Соберите эти значения с помощью ручного откалиброваемого извне устройства, такого как i1Display Pro, для записи значений XYZ и трех цветных источников света, представляющих красный, зеленый и синий. Вы можете использовать цветные коробки ниже для калибровки ручного устройства. Для поиска этих чисел можно использовать любое устройство с проверяемо правильными значениями, например существующий откалиброванный компьютер. Эти значения XYZ должны находиться в диапазоне от 0 до 100, чтобы быть наиболее эффективными. Сделайте это для красного, синего и зеленого дисплеев. Изображение красного блокаИзображение зеленого блокаИзображение синего блокаПоместите наблюдаемые значения в матрицу Известные значения 3×3, используя следующий шаблон:

    ┌ ┐ │Known RED X value | Known BLUE X value | Known GREEN X value│ │Known RED Y value | Known BLUE Y value | Known GREEN Y value│ |Known RED Z value | Known BLUE Z value | Known GREEN Z value│ └ ┘ 

    Снимок экрана: матрица известных значений 3x3.

  • Необработанные или некалибризованные значения — это значения, которые поступают из текущего некалибрируемого датчика цвета MALT до применения математических вычислений или калибровки. Соберите эти значения, указав MALT на те же цвета отображения, из которые вы собрали известные значения. Этот шаг является важным и делает уравнение надежным. Определите, выполняется ли калибровка датчика с лицом к экрану или датчика с внешним видом. Это решение определяет, какую кнопку пользовательского интерфейса нажимать при сборе данных. Наведите нужный датчик на цветовые блоки ниже по порядку и выберите экранчтенияилиЧтение окружения для каждого цвета, определяемого датчиком, который вы калибруете. Изображение красного блокаИзображение зеленого блокаИзображение синего блокаЭто приведет к заполнению матрицы Необработанные некалибризованные значения 3×3 и будет выглядеть примерно так, как на рисунке ниже. Снимок экрана: матрица необработанных значений.
  • После заполнения известных значений и необработанных некалибрированных значений в нижней части экрана нажмите кнопку Вычислить . Матрица Откалиброванные значения 3×3 должна заполниться, как показано на следующем снимке экрана. Снимок экрана: матрица откалиброванных значений.После создания этих чисел выберитеКалибровка сверхуилиКалибровка внизу в соответствии с датчиком, который вы откалиброваете.
  • Тестирование калибровки MALT

    После правильной калибровки датчика цвета экрана и датчика цвета окружающей среды вернитесь на вкладку Главная в разделе MALT, выбрав Главная в верхней части окна.

    Снимок экрана: SensorExplorer, на котором показано, как перейти на вкладку

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

    Устранение неполадок

    1. При калибровке необработанные значения будут одинаковыми, независимо от того, нажимаете ли вы клавиши Read Screen RED, Read Screen GREEN или Read Screen BLUE (аналогично true и read Ambient).
      • Убедитесь, что плата датчика MALT подключена через кабель Ethernet.
      • Затем проверка, что кабель, который вы используете, может поддерживать Power Over Ethernet (POE). Все кабели CAT5 или более поздней версии поддерживают это.
      • Наконец, попробуйте нажать кнопку сброса на Arduino Mega, если вы уверены, что ваш кабель поддерживает POE.
    2. При калибровке матрица калибровки содержит «NaN» в одном из квадратов после нажатия кнопки Вычислить .
      • Убедитесь, что необработанные значения дают разные числа для red, green и blue.
      • Убедитесь, что датчик MALT удерживает красный при нажатии клавиши RED, зеленый при нажатии green и синий при нажатии клавиши BLUE.
      • Если необработанные значения по-прежнему не отличаются, проверка 1 выше.
    3. После завершения калибровки (т. е. вы выбрали калибровку сверху или внизу) датчик считывает необоснованные значения на начальном экране.
      • Убедитесь, что вы действительно выбрали кнопки Калибровка сверху или Калибровка внизу .
      • Если вы уверены, что правильно откалиброли верхний и нижний датчики с помощью приведенных выше инструкций, отправьте электронное письмо sensortools@microsoft.com.

    Если этот раздел по устранению неполадок не устраняет ваши проблемы, отправьте электронное письмо по адресу sensortools@microsoft.com.

    Совместная работа с нами на GitHub

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

    Windows driver documentation

    Arduino cli что это

    В составе установленной системы Arduino IDE есть утилита командной строки arduino-cli:

    $ find ~/arduino-ide_2.2.1_Linux_64bit/ -name arduino-cli ~/arduino-ide_2.2.1_Linux_64bit/resources/app/lib/backend/resources/arduino-cli 
    $ ~/arduino-ide_2.2.1_Linux_64bit/resources/app/lib/backend/resources/arduino-cli --help Arduino Command Line Interface (arduino-cli).
    Usage: arduino-cli [command]
    Examples: ~/arduino-ide_2.2.1_Linux_64bit/resources/app/lib/backend/resources/arduino-cli < command>[flags. ]
    Доступны команды (command): board команды для платы Arduino. burn-bootloader прошивка загрузчика (Upload the bootloader). cache команды кэша Arduino. compile компиляция скетчей Arduino. completion создание сценариев завершения (completion scripts). config команды конфигурации Arduino. core операции ядра Arduino. daemon запуск службы на port: 50051 debug отладка скетчей Arduino. help подсказка по любой команде. lib команды Arduino, касающиеся библиотек. monitor открыть порт обмена с платой. outdated перечислит ядра (cores) и библиотеки, которые можно обновить. sketch команды скетча Arduino CLI. update обновит индекс ядер и библиотек. upgrade обновляет установленные ядра и библиотеки. upload прошивка скомпилированного скетча. version покажет номер версии Arduino CLI.
    Флаги (flags): --additional-urls strings список разделенных запятой дополнительных ссылок (URL) для Boards Manager. --config-file string пользовательский файл конфигурации (если он не указан, то будет файл конфигурации по умолчанию). --format string формат вывода для логов, может быть: text, json, jsonmini, yaml (по умолчанию "text"). -h, --help вывод подсказки для arduino-cli. --log печать логов в стандартный вывод. --log-file string путь до файла, куда будут записаны логи. --log-format string формат вывода для логов, может быть: text, json --log-level string будут выведены в лог сообщения с этим уровнем и выше. Допустимы уровни: trace, debug, info, warn, error, fatal, panic. --no-color запрет раскраски вывода.
    Используйте "arduino-cli [command] --help" для дополнительной информации по любой команде command.

    Также командную строку для компиляции можно подсмотреть, если разрешить подробный вывод в лог процесса компиляции. Это делается настройкой «Show verbose output during», доступной в меню File -> Preferences, надо поставить галочки compile и upload .

    Arduino IDE Show verbose output

    Пример скрипта для компиляции скетча Quark.ino для трансивера uSDK Quark v2.0, составленный с помощью подробного вывода из Arduino IDE:

    #!/bin/bash
    SKETCH=Quark.ino
    TOOLSPATH=~/.arduino15/packages/arduino/tools/avr-gcc/7.3.0-atmel3.6.1-arduino7/bin
    ARDCORE=~/.arduino15/packages/arduino/hardware/avr/1.8.6/cores/arduino
    VARIANTS=~/.arduino15/packages/arduino/hardware/avr/1.8.6/variants/eightanaloginputs
    CTAGS=$HOME/.arduino15/packages/builtin/tools/ctags/5.8-arduino11/ctags
    cp -f ./$SKETCH ./$SKETCH.cpp
    # Detecting libraries used. 
    $TOOLSPATH/avr-g++ -c -g -Os -w \ -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics \ -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10607 \ -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR -I $ARDCORE -I $VARIANTS ./$SKETCH.cpp -o /dev/null
    # Generating function prototypes. 
    $TOOLSPATH/avr-g++ -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections \ -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L \ -DARDUINO=10607 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR -I $ARDCORE -I $VARIANTS ./$SKETCH.cpp -o ./sketch_merged.cpp
    $CTAGS -u --language-force=c++ -f - --c++-kinds=svpf --fields=KSTtzns --line-directives ./sketch_merged.cpp
    # Компиляция скетча. 
    $TOOLSPATH/avr-g++ -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections \ -fno-threadsafe-statics -Wno-error=narrowing -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10607 \ -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR -I $ARDCORE -I $VARIANTS ./$SKETCH.cpp -o ./$SKETCH.cpp.o
    # Compiling libraries. 
    # Compiling core. 
    # Using precompiled core: core.a
    # Linking everything together. 
    $TOOLSPATH/avr-gcc -w -Os -g -flto -fuse-linker-plugin -Wl,--gc-sections -mmcu=atmega328p -o ./$SKETCH.elf \ ./$SKETCH.cpp.o ./core.a -L. -lm
    $TOOLSPATH/avr-objcopy -O ihex -j .eeprom --set-section-flags=.eeprom=alloc,load --no-change-warnings \ --change-section-lma .eeprom=0 ./$SKETCH.elf ./$SKETCH.eep
    $TOOLSPATH/avr-objcopy -O ihex -R .eeprom ./$SKETCH.elf ./$SKETCH.hex
    $TOOLSPATH/avr-size -A ./$SKETCH.elf

    Скрипт для прошивки:

    #!/bin/bash
    SKETCH=Quark.ino
    # Upload:
    AVRDUDE=~/.arduino15/packages/arduino/tools/avrdude/6.3.0-arduino17/bin/avrdude
    AVRDUDECONF=~/.arduino15/packages/arduino/tools/avrdude/6.3.0-arduino17/etc/avrdude.conf
    PORT=/dev/ttyUSB0
    $AVRDUDE -C$AVRDUDECONF -v -V -patmega328p -carduino -P$PORT -b57600 -D -Uflash:w:$SKETCH.hex:i

    [Ссылки]

    Arduino cli что это

    Текущее время: Пн янв 08, 2024 21:57:04

    Часовой пояс: UTC + 3 часа

    Запрошенной темы не существует.

    Часовой пояс: UTC + 3 часа

    Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
    Русская поддержка phpBB
    Extended by Karma MOD © 2007—2012 m157y
    Extended by Topic Tags MOD © 2012 m157y

    Работоспособность сайта проверена в браузерах:
    IE8.0, Opera 9.0, Netscape Navigator 7.0, Mozilla Firefox 5.0
    Адаптирован для работы при разрешениях экрана от 1280х1024 и выше.
    При меньших разрешениях возможно появление горизонтальной прокрутки.
    По всем вопросам обращайтесь к Коту: kot@radiokot.ru
    ©2005-2024

    Как создать конвейер автоматизированных сборок для проекта в Arduino Часть 2/2

    Давайте добавим Arduino Zero. Модифицируем часть программы, которая устанавливает ядро AVR, и добавляем другой код:

    # Установка ядер Arduino
    arduino-cli core install arduino:avr
    arduino-cli core install arduino:samd

    Давайте также поменяем код для компиляции наших скетчей:

    # Компилируем все файлы с расширениями *.ino для Arduino Uno
    for f in <,**/>*.ino ; do
    arduino-cli compile -b arduino:avr:uno $f
    arduino-cli compile -b arduino:samd:arduino_zero_native $f
    done

    Так вы автоматически проверите код на разных платформах и увидите, появятся ли ошибки.

    Если добавить изменения и отправить их в репозиторий на GitHub, а потом перейти на вкладку Actions (Действия), то вы увидите свой новенький рабочий поток и его выходные данные:

    При нажатии на название сборки вы увидите что-то подобное:

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

    Автоматизированные сборки PlatformIO

    Скрипт выше будет работать и для скетчей, и для библиотек Arduino со скетчами-образцами. Он не подходит для проектов PlatformIO. Для проектов такого типа рекомендуется создавать автоматизированные сборки с помощью интерфейса командной строки PlatformIO вместо аналога в Arduino.

    С таким подходом вы сделаете непрерывную интеграцию для любого типа проектов из PlatformIO, а не только для проектов из Arduino. И это его самое большое преимущество. В целом этапы схожи. Добавляем шаг в build.yml :


    steps:
    - name: Checkout
    uses: actions/checkout@v2
    - name: Build on PlatformIO
    run: bash ci/build-platformio.sh

    Теперь добавляем скрипт оболочки build-platformio.sh :

    MyPlatformIOProject
    ├── .github
    │ └── workflows
    │ └── build.yml
    ├── ci
    │ └── build-platformio.sh

    А дальше следуем инструкции по установке PlatformIO:

    #!/bin/bash# Немедленный выход, если у команды не нулевой статус
    set -e
    # Переход в рабочее пространство github
    cd $GITHUB_WORKSPACE
    # Устанавливаем PlatformIO CLI
    export PATH=$PATH:~/.platformio/penv/bin
    curl -fsSL https://raw.githubusercontent.com/platformio/platformio-core-installer/master/get-platformio.py -o get-platformio.py
    python3 get-platformio.py

    Теперь устанавливаем платформы для тестирования:

    # Устанавливаем платформу Atmel AVR
    pio platform install "atmelavr"

    Если вы корректно настроили platformio.ini , вам осталось пройти всего один шаг:

    # Компилируем проект
    pio run

    Как вариант — можно напрямую пойти в окружения, определённые в platformio.ini :

    # Компилируем проект для Uno
    pio run -e uno

    Вот и все. Процесс оказался ещё проще, чем при работе с Arduino CLI.

    Укрепляем красивый стиль форматирования кода

    Инструмент clang-format (CF) помогает проверять код на соответствие определенным правилам стиля форматирования в программах на C или C++.

    Стилей программирования много — выбирайте тот, что вам ближе: LLVM, GNU, Google, Mozilla или Microsoft. Вы также можете настроить инструмент проверки CF, чтобы писать код в одном стиле. Просто выберите любой из них, если не можете решить. Наличие одного приоритетного стиля важнее, чем поиск идеального. Всегда можно изменить или переопределить его позже, а всю базу кода просто переформатировать.

    Если вы работаете в VSC, вы можете добавить расширение, чтобы форматировать код при каждом сохранении файла. Тогда у вас больше не будет повода волноваться об этом. Все будет автоматизировано. Для других редакторов доступны похожие плагины. Я предлагаю добавлять в проект файл .clang-format :

    MyArduinoLibrary
    ├── .clang-format

    Выберите основной стиль и конфигурируйте его в файле вместе с вашими конфигурационными опциями. Вот как выглядит мой .clang-format :

    BasedOnStyle: GoogleLanguage: CppIndentWidth: 4
    AlignConsecutiveMacros: true

    Не стесняйтесь изучать остальные возможности clang-format. У этого инструмента есть что предложить.

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

    Чтобы этого достичь, создаём новый шаг Check clang-format conformity в файле build.yml . Предлагаю добавить его прямо после шага проверки (Checkout):


    steps:
    - name: Checkout
    uses: actions/checkout@v2
    - name: Check clang-format conformity
    run: bash ci/clang-lint.sh
    - name: Build on Arduino CLI
    run: bash ci/build-arduino.sh

    Так запускается скрипт оболочки clang-lint.sh . Добавляем в файл несколько строчек для установки clang-format:

    #!/bin/bash# Немедленный выход, если у команды не нулевой статус
    set -e
    # Включаем опцию оболочки globstar
    shopt -s globstar
    # Переходим в рабочее пространство github
    cd $GITHUB_WORKSPACE
    # Устанавливаем clang-format
    sudo apt-get -y install clang-format-10

    Теперь делаем цикл по всем исходным файлам с кодом. Проверяем, правильно ли отформатировано их содержимое:

    # Проверка вывода clang-format
    for f in <,**/>*. ; do
    if [ -f "$f" ]; then
    diff $f <(clang-format -assume-filename=main.cpp $f) 1>&2
    fi
    done

    Здесь есть одна главная строчка:

    diff $f <(clang-format -assume-filename=main.cpp $f) 1>&2

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

    Вывод команды diff перенаправляется в stderr , а это значит, что любой вывод считается ошибочным. Если файл отформатирован правильно, у diff не будет вывода и не будет ошибок. Если вывод сборки будет неудачным, то вы увидите неверно форматированные строчки кода.

    Очень рекомендую добавлять какой-либо вывод прямо после команды diff, чтобы лучше понимать, какие файлы проверяются. Например, вот так:

    echo "Checking file $"
    diff $f <(clang-format -assume-filename=main.cpp $f) 1>&2

    Если вы знаете как обойти скрипты оболочки, то на выходе конвейера сборок вы получите кое-что интересное:

    Мысли напоследок

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

    Если к конвейеру автоматизированных сборок добавить юнит-тесты, он станет ещё более мощным дополнением при работе над программами. Интеграция и того, и другого в ваш поток — это всего одна команда в скрипте: pio test .

    Вам решать, будет ли непрерывная интеграция улучшать ваш конкретный случай. Я советую серьезно рассмотреть этот вопрос, особенно когда вы будете делиться своим кодом и работать над проектом совместно с другими.

    • Scrum мёртв. Восславим нового короля — Kanban!
    • Худшие способы нанять хороших программистов
    • 6 команд терминала для раздражающих задач

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *