цифровая электроника
вычислительная техника
встраиваемые системы

 



Как использовать библиотеки Arduino с Raspberry Pi Pico

Автор: Mike(admin) от 15-10-2021, 03:55

Помимо низкой цены и периферийных возможностей одной из замечательных особенностей Raspberry Pi Pico является среда разработки C/C++ SDK. Ребята из Raspberry Pi проделали отличную работу по созданию среды программирования, которая проста в использовании, но при этом позволяет вам максимально работать на аппаратном уровне, если вы этого хотите.


Как использовать библиотеки Arduino с Raspberry Pi Pico

Одним из недостатков использования C/C++ SDK является отсутствие библиотек. Они, конечно, есть, и, хотя их число растет, они не приближаются в своем объеме к огромному набору библиотек, доступных при использовании Arduino IDE. Одна только справочная документация Arduino перечисляет более 4000 библиотек.


Если библиотеки Pico C/C++ SDK для вашего датчика, дисплея или другого периферийного устройства не существует, скорее всего, существует библиотека Arduino. В этом руководстве мы расскажем о процессе добавления библиотек Arduino в ваш проект Pico C/C++ SDK с помощью pico-arduino-compat.


pico-arduino-compat представляет собой уровень совместимости, который позволяет использовать (некоторые) библиотеки Arduino без изменений в проектах, написанных с помощью Pico C/C++ SDK. Для каждой библиотеки Arduino, указанной в официальной документации Arduino, существует соответствующая библиотека интерфейса cmake, которую можно использовать непосредственно в проекте Pico C/C++ SDK. Уровень совместимости pico-arduino-compat использует потрясающее ядро Arduino RP2040 от Earlephilhower, чтобы делать большую часть тяжелой работы.


Очевидно, что не все библиотеки Arduino будут работать с Pico/RP2040. В качестве примера можно привести те, которые полагаются на определенные особенности оборудования AVR или ESP. Из 4190 библиотек, перечисленных в официальной справочной документации Arduino, 1730 из них были успешно скомпилированы с помощью Pico C/C++ SDK (41%). Возможно, значительное количество из них не удалось скомпилировать из-за зависимости от других библиотек. Это можно легко исправить, настроив файл CMakeLists.txt, но это ручной процесс, и он выполняется только для нескольких библиотек.


Итак, для начала клонируем репозиторий:


git clone https://github.com/fhdm-dev/pico-arduino-compat.git

Инициализируем подмодуль arduino-pico:



cd pico-arduino-compat
git submodule update --init arduino-compat/arduino-pico

Вам понадобится точное имя библиотеки Arduino, которую вы планируете использовать. Если вы его не знаете, вы можете найти название библиотеки в официальной документации Arduino. Теперь перейдите к таблице библиотек pico-arduino-compat и найдите библиотеку по имени библиотеки Arduino. Как только вы ее найдете, посмотрите на столбец Compile (2-й справа). Если этот столбец имеет значение ОК, значит, библиотека прошла базовый тест компиляции, и если вам повезет, она будет работать с Pico C/C++ SDK без каких-либо изменений. Обратите внимание на идентификатор и имя цели CMake.


Каждый репозиторий библиотеки Arduino хранится как подмодуль в репозитории pico-arduino-compat. По умолчанию git оставляет каталог подмодуля пустым до его инициализации. Чтобы инициализировать его (и подмодули библиотек Arduino, от которых он зависит), выполните следующие действия.


Сначала измените каталог на libs/ID, где ID – это идентификатор, который вы записали выше. С этого момента мы будем называть этот каталог каталогом библиотеки. например. для библиотеки Arduino LiquidCrystal идентификатор – liquidcrystal.


cd libs/liquidcrystal

Теперь инициализируйте подмодуль. В Linux просто запустите следующий скрипт:


./init.sh

В других ОС просто найдите команду git в сценарии init.sh и запустите ее из командной строки. В файле CMakeLists.txt вашего проекта добавьте каталог библиотеки в качестве подкаталога, например:


add_subdirectory(/home/fhdm-dev/pico/pico-arduino-compat/libs/liquidcrystal build-pac-liquidcrystal)

Примечание: значение второго аргумента, переданного в add_subdirectory, не имеет значения. Просто он должен быть уникальным в вашем проекте. Обычно используют build_ (target), где (target) – это целевое имя cmake для библиотеки. Теперь добавьте цель CMake в target_link_libraries в файле CMakeLists.txt. например:



target_link_libraries(somename
  pac-liquidcrystal
)

Обратите внимание, все целевые имена cmake начинаются с pac-, чтобы обеспечить уникальность. Теперь вы можете использовать библиотеку в своем проекте Pico C/C++ SDK. Посмотрим теперь все это на практике.


Допустим, мы хотим использовать библиотеку Adafruit SSD1306 в нашем проекте. Сначала мы ищем запись в таблице библиотек pico-arduino-compat и обнаруживаем, что у нее есть идентификатор adafruit-ssd1306 и целевое имя cmake pac-adafruit-ssd1306. Вы также заметите, что в столбце Test отображается значение Passed. Это означает, что библиотека протестирована на реальном устройстве и по крайней мере часть функциональности работает. Измените каталог на каталог библиотеки и перечислите его содержимое.



cd libs/adafruit-ssd1306
ls

Каталог Adafruit_SSD1306, который вы видите, включен в репозиторий pico-arduino-compat как подмодуль git и изначально будет пустым. Теперь инициализируем подмодуль, запустив сценарий init.sh следующим образом:


./init.sh

Вы можете заметить, что это также инициализирует подмодуль для библиотеки adafruit-gfx-library, от которой он зависит, и который, в свою очередь, инициализирует библиотеку adafruit-busio. Примечание: в операционных системах, отличных от Linux, вам может потребоваться инициализировать подмодули, запустив команды git вручную. Подробности смотрите в содержимом init.sh. Теперь необходимо изменить основной файл CMakeLists.txt нашего проекта, добавив строку add_subdirectory и добавив библиотеку в target_link_libraries. Например:



cmake_minimum_required(VERSION 3.12)

include(pico_sdk_import.cmake)

project(adafruit-ssd1306-examples)

pico_sdk_init()

add_subdirectory(/home/fhdm-dev/pico/pico-arduino-compat/libs/adafruit-ssd1306 build_pac-adafruit-ssd1306)

add_executable(text
    main.cpp
)

target_link_libraries(text
    pac-adafruit-ssd1306
)

# create map/bin/hex file etc.
pico_add_extra_outputs(text)

Все готово, теперь можете пользоваться библиотекой Adafruit на своем Raspberry Pi Pico.


Как использовать библиотеки Arduino с Raspberry Pi Pico



© digitrode.ru


Теги: Raspberry Pi Pico, Arduino




Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Комментарии:

Оставить комментарий