Где найти центральный репозиторий всех доступных библиотек Arduino?
В настоящее время, когда я начинаю новый проект Arduino с новым оборудованием, первое, что я делаю, — это ищу сторонние библиотеки, которые обеспечивают поддержку Arduino для этого оборудования.
Первые места, которые я ищу:
- Игровая площадка Arduino
- GitHub
- Гугл
Обычно я либо не нахожу никакой библиотеки поддержки, либо нахожу несколько разных библиотек (довольно редко можно найти только одну) в разных местах с разным уровнем документации, разным уровнем тестирования...
Как только я нахожу нужную библиотеку (иногда мне нужно попробовать несколько), я загружаю ее в папку библиотек Arduino, использую ее и забываю.
Я нахожу этот процесс громоздким:
- ручной поиск с различными возможными вариантами, не всегда хорошо документированными
- ручная загрузка и установка библиотек Arduino
- в процессе отсутствует контроль версий (все версии библиотеки имеют одинаковое имя и, таким образом, не могут сосуществовать в папке библиотеки Arduino).
Я хотел бы иметь центральный репозиторий со всеми доступными библиотеками для Arduino, включая:
- описание (поддерживаемое оборудование, поддерживаемые платы)
- исходный код
- документация
- версии
И инструмент (Arduino IDE или внешний) для доступа к этому репозиторию во время сборки проекта.
Фактически, своего рода maven для Arduino.
Я видел несколько обсуждений, которые когда-то имели место на форуме Arduino, но, похоже, они ни к чему не привели:
- Перепись и репозиторий библиотек Arduino
- Загрузчик библиотеки Arduino
- Загрузчик библиотеки Arduino (2)
Есть ли другие варианты, которые превратили бы это во что-то полезное (со стороны сообщества или отдельных лиц, почему бы и нет)?
@jfpoilpret, 👍13
Обсуждение8 ответов
Ни одной. К сожалению, вам придется вручную искать каждую интересующую вас библиотеку.
Если вы заинтересованы в создании такого центрального репозитория, то, хотя это было бы здорово, это не тот форум, где это следует делать.
Список библиотек Arduino Playground и Список стандартных библиотек, по всей видимости, являются официальными страницами для этого.
Вы только что описали проблемы, которые пытается решить компания, в которой я работаю. Недавно мы запустили продукт под названием biicode. Кажется, это именно то, что вы ищете.
biicode — это одновременно и центральный онлайн-репозиторий кода, и клиентский инструмент, который включает в себя:
- Прост в использовании для новичков, настраивается для более продвинутых пользователей
- Разрешение зависимостей, транзитивно, как это делает maven, но без файлов конфигурации: считывает зависимости непосредственно из исходного кода.
- Центральный репозиторий, любой может загружать свои библиотеки. Их можно исследовать, перемещаться и обнаруживать в сети
- Контроль версий: проверяет совместимость версий и позволяет безопасно обновлять зависимости
- Вы можете использовать его с любым текстовым редактором (он имеет дополнительную поддержку Eclipse)
- Управляет настройкой и компиляцией проекта, прошивает сгенерированную прошивку на плату
- В качестве плюса у него есть хороший последовательный монитор
Вы можете увидеть краткую демонстрацию здесь и прочитать больше в документации.
Arduino IDE и связанные с ней библиотеки включены в качестве устанавливаемого программного обеспечения в большинство репозиториев ОС. К сожалению, версии в этих репозиториях обычно устаревают на несколько месяцев или даже лет. Похоже, что реальная проблема заключается в том, чтобы заставить менеджеров репозиториев ОС включать новые выпуски по мере их появления.
Эта проблема усугубляется, если версия вашей ОС не обновлена до последней версии, поскольку это заставляет вас использовать устаревший репозиторий программного обеспечения.
Хотя это и не идеальный ответ, вам, вероятно, следует убедиться, что вы используете последнюю версию своей ОС, а затем попросить менеджеров репозитория для этой ОС включить последнюю версию Arduino IDE.
Альтернативой может стать переход на домашнюю страницу Arduino.org и выполнение инструкций по загрузке и установке последней версии IDE и связанных библиотек. Скорее всего, это будет файл .tar.gz, поэтому вам нужно будет знать, как распаковать, распаковать и собрать необходимое программное обеспечение.
Если вы хотите создать такой реестр самостоятельно, вам может понадобиться посмотрите на npm, менеджер пакетов Node.js, который с открытым исходным кодом и очень похожий по области применения на то, что вы описываете. Npm — это и то, и другое:
- центральный реестр с метаданными о каждой библиотеке:
- имя, описание, ключевые слова, домашняя страница, автор, участники
- номер версии, в принципе соответствующий семантическому версионированию
- URL исходного репозитория (svn, git, github, gitlab, bitbucket...)
- информация о совместимости (в данном случае речь идет о версиях Node)
- лицензия
- зависимости
- инструмент командной строки для:
- поиск в реестре
- загрузка и установка пакетов, рекурсивно следуя их зависимости
- публикация и обновление собственных пакетов в реестре.
См., например, страницу популярной библиотеки и JSON файл, содержащий его метаданные.
Поскольку этот вопрос был задан впервые, теперь есть Arduino Library Manager, встроенный в Arduino IDE. Там вы можете искать и устанавливать библиотеки.
Информация о том, как работает управляющий библиотекой, находится здесь: https://github.com/arduino/Arduino/wiki/Library-Manager-FAQ
Однако официального сайта со списком библиотек не существует, поэтому я недавно создал этот неофициальный сайт, основанный на тех же данных в Arduino Library Manager:
http://www.arduinolibraries.info/
Я думаю, что ваше желание не сбудется. Я надеюсь на это, потому что если бы было только одно место для всех библиотек Arduino, без каких-либо библиотек, которые там не были бы, и все эти библиотеки были бы вынуждены соответствовать всем коммерческим стандартам качества, тестирования и документации (+качество кода, эффективность и читаемость), то только профессионалы и команды с аналогичной квалификацией могли бы публиковать некоторые библиотеки Arduino, и все это управлялось бы одной единственной организацией, которая бы обеспечивала удаление функционально дублирующих или похожих библиотек. И такая организация рано или поздно стала бы злом.
Мне нравится Arduino за его бесплатность, а это также означает, что я могу свободно писать библиотеки для поддержки некоторых функций (которые я хочу использовать) некоторого оборудования (которое у меня есть, которое я планирую купить или хочу сделать сам — даже если это будет очень экспериментально и, возможно, нестабильно, но для меня это будет весело).
Если бы ваш Большой Центральный Орган был эффективен, я бы просто выбрал другую бесплатную платформу, чем быть поданным в суд за неидеальный и коммерчески сертифицированный результат моего хобби — игры с электроникой — и вынужденным работать ради их, а НЕ моих целей в СВОЕ свободное время.
И если бы ваш Большой Центральный Аторитет не заставил меня работать на них в качестве принудительного бесплатного работника, то что бы вы сделали с моей библиотекой, позволяющей одно специальное использование некоторого распространенного оборудования, и с тем, чтобы я делился ею со всеми желающими, даже если она не решает всю функциональность HW полностью в профессиональном плане и документирована только настолько, насколько мне было бы комфортно тратить свое свободное время на документирование? А что, если бы возникла другая библиотека для того же HW, которая бы включала другую часть функциональности или использовала бы другой API и другой подход ко всей проблематике?
А именно, я купил какой-то многосегментный модуль на 7 сегментов, и для него была "официальная библиотека" от производителя. Я сделал еще одну библиотеку для того же модуля. Что теперь? Должна ли моя библиотека быть в Центральном репозитории как "единственная библиотека для этого HW" или там должна быть "официальная библиотека от производителя"? Обратите внимание, что если бы были оба варианта, то это нарушило бы ваш запрошенный «один-единственный» библиотечный пункт. Если вы запретите использование одного из производителей, то «единственный» будет лишен многих функций, таких как интегрированный буфер для чисел, простой объектный интерфейс, простой пример его использования, а также возникнет жесткая зависимость от одного конкретного таймера и общего необъектного, а просто функционального API, из-за чего пользователю придется каким-то образом разбивать целые числа на однозначные числа — звучит не очень хорошо. Если вы запретите мою библиотеку, то пользователь получит вышеперечисленное, но его дисплей будет обновляться только 10 раз в секунду с миганием и оставлять призраки других цифр повсюду , при этом полностью используя процессор, а документация будет в основном на китайском языке. И пользователь пропустит частоту обновления 100 раз в секунду с почти полным отсутствием использования процессора, красивые чистые цифры И символы (потенциально также определяемые пользователем). - Тоже нехорошо.
В текущем состоянии хаоса пользователь (может быть, вы или кто-то еще) может использовать библиотеку, которая лучше подходит для его нужд (будь то простота и собственная поддержка целых чисел, или чистое быстрое обновление и низкая загрузка процессора) или объединить обе вместе, создав третью с быстрым обновлением И простой манипуляцией целыми числами И определяемым пользователем набором символов, С хорошим API объектов и богатой документацией. Для этого нужен только один человек с некоторым количеством времени и преданностью, чтобы упростить задачу для новичков, а также некоторые навыки английского языка и базовые знания объектов и того, как упаковываются «официальные библиотеки Arduino», чтобы IDE могла легко их импортировать. (И такой человек должен это сделать и внести свой вклад в упаковщик библиотек Arduino).
Я бы этого не делал - для моих нужд функциональный API гораздо лучше и проще в использовании, занимает меньше байт из памяти и меньше циклов ЦП, и у меня нет желания улучшать библиотеку способами, которые я бы не использовал. Также я не использую Arduino IDE, я использую простой Makefile для сборки и загрузки программ, поэтому я могу легко использовать хороший текстовый редактор (vim в моем случае) и не бороться с пародией на IDE-Notepad.
В условиях поддержки вашей модели Центральным управлением я бы вообще не стал использовать Arduino, и вам придется остаться с китайской версией, если она вообще будет (так как она не будет выпущена из-за отсутствия хорошей английской документации и надлежащего формата пакета).
http://downloads.arduino.cc/libraries/library_index.json предоставляет список всех библиотек, доступных в Arduino Library Manager.
Я использовал этот файл для создания https://github.com/scls19fr/arduino_libraries_search Это скрипт Python Pandas для поиска библиотек Arduino, соответствующих некоторым ключевым словам, и вывода в файл Excel
Вы также можете найти библиотеки Arduino, используя:
- https://platformio.org/lib/search?query=keyword%253A%2522arduino%2522
- или https://www.arduinolibraries.info/
- Как получить исходные файлы для библиотек Arduino?
- Ошибка: "недопустимое использование нестатической функции-члена" при вызове функции из моего собственного класса-метода
- Как подключить Wi-Fi Shield ESP-12E-ESP8266-UART-WIFI-Wireless-Shield к Arduino
- Существуют ли библиотеки сглаживания сигналов для Arduino?
- Wire.h не найден!
- Библиотека FastLED: Как настроить яркость одного пикселя в абсолютном масштабе?
- Как эта строка кода определяет, подключен ли последовательный интерфейс?
- Ошибка Specified folder/zip file does not contain a valid library
Это будет похоже на PyPi https://pypi.python.org/pypi и virtualenv в Python, если кому-то нужен аналог на другом языке., @Cybergibbons
Еще один хороший источник — PJRC https://www.pjrc.com/teensy/td_libs.html, @Cybergibbons
Что-то мне подсказывает, что вики-тег [tag:library] будет хорошим местом для создания такой базы данных. ~35 000 символов должно хватить для создания весьма полного списка., @asheeshr
@AsheeshR почему бы и нет? Но сначала необходимо четко описать, что требуется (а что необязательно) для каждой библиотечной записи, чтобы этот 3шаблон3 можно было использовать для каждой добавленной записи., @jfpoilpret
@jfpoilpret Это тема для [мета]обсуждения., @asheeshr
@AsheeshR только если мы решим пойти по этому пути; на данный момент я хотел бы услышать, что скажут другие, в частности, существуют ли уже какие-то инструменты, которые могут помочь в этом направлении., @jfpoilpret
Три слова о ведении «базы данных» в теговой вики: «main» «ten» «ance». Я не верю, что горстка пользователей Arduino.SE может поддерживать такой список актуальным и полным. Обратите внимание, что библиотека, которая больше не поддерживается, также должна считаться удаленной. Но любыми способами докажите мне, что я не прав, такое уже случалось., @jippie
@jippie неподдерживаемая библиотека может использоваться проектами, поэтому ее не следует удалять, а просто пометить как «неподдерживаемая с ...», @jfpoilpret
@jfpoilpret Хороший аргумент. Я бы сказал, что тогда вам придется включить версию v.vv.vv и дату выпуска yyyy-mm-dd., @jippie
Этот вопрос предполагает, что существует некая связь между всеми различными сущностями, которые могут написать библиотеку. Я гарантирую, что написал библиотеки, которые вы не найдете ни в одном репозитории, кроме моего собственного сайта github. Это не значит, что вы не можете их использовать. Просто я не вижу никакой выгоды в их активном продвижении., @Delta_G