Wo finde ich ein zentrales Repository aller verfügbaren Arduino-Bibliotheken?

11

Zur Zeit; Wenn ich ein neues Arduino-Projekt mit neuer Hardware starte, suche ich zunächst nach Bibliotheken von Drittanbietern, die Arduino-Unterstützung für diese Hardware bieten.

Die ersten Orte, die ich sehe, sind:

Im Allgemeinen finde ich entweder keine Support-Bibliothek oder mehrere verschiedene Bibliotheken (es ist ziemlich selten, dass nur eine gefunden wird) an verschiedenen Orten mit unterschiedlichen Dokumentationsstufen, verschiedenen Teststufen ...

Sobald ich die Bibliothek gefunden habe, die ich benötige (manchmal muss ich mehrere ausprobieren), lade ich sie in meinen Arduino-Bibliotheksordner herunter, benutze sie und vergesse sie.

Ich finde diesen Vorgang umständlich:

  • manuelle Suche mit verschiedenen möglichen Optionen, nicht immer gut dokumentiert
  • manuelles Herunterladen und Installieren in Arduino-Bibliotheken
  • Keine Versionskontrolle im Prozess (alle Versionen einer Bibliothek haben den gleichen Namen und können daher nicht im Arduino-Bibliotheksordner koexistieren).

Ich wünschte, es gäbe ein zentrales Repository mit allen verfügbaren Bibliotheken für Arduino, mit:

  • Beschreibung (unterstützte Hardware, unterstützte Karten)
  • Quellcode
  • Dokumentation
  • Versionen

Und ein Tool (Arduino IDE oder extern), mit dem Sie beim Erstellen des Projekts auf dieses Repository zugreifen können.

Eine Art Maven für Arduino.

Ich habe mehrere Diskussionen gesehen, die einmal im Arduino-Forum stattgefunden haben, aber es scheint, dass sie nirgendwohin geführt haben:

Gibt es andere Optionen, die es zu etwas Nutzbarem machen (von der Community oder von Einzelpersonen, warum nicht)?

jfpoilpret
quelle
Dies ähnelt PyPi pypi.python.org/pypi und virtualenv in Python, wenn jemand ein Analogon in einer anderen Sprache benötigt.
Cybergibbons
Eine weitere gute Quelle ist PJRC pjrc.com/teensy/td_libs.html
Cybergibbons
Etwas sagt mir, dass das Bibliotheks- Tag-Wiki ein guter Ort wäre, um eine solche Datenbank zu erstellen. ~ 35.000 Zeichen sollten ausreichend Platz bieten, um eine sehr umfassende Liste zu erstellen.
Asheeshr
@AsheeshR warum nicht? Zunächst muss jedoch klar definiert werden, was für jeden Bibliothekseintrag erforderlich (und was optional) ist, damit diese 3template3 für jeden hinzugefügten Eintrag befolgt werden kann.
jfpoilpret
@jfpoilpret Das ist ein Thema für eine Arduino Meta Diskussion.
Asheeshr

Antworten:

4

Sie haben gerade die Probleme beschrieben, für die das Unternehmen, für das ich arbeite, zu lösen versucht. Wir haben kürzlich ein Produkt namens Biicode auf den Markt gebracht . Es scheint genau das zu sein, wonach Sie suchen.

Biicode ist sowohl ein zentrales Online-Repository für Code als auch ein Client-Tool mit folgenden Funktionen:

  • Einfach für Anfänger zu bedienen, konfigurierbar für fortgeschrittene Benutzer
  • Abhängige Auflösung, transitiv, wie es Maven tut, jedoch ohne Konfigurationsdateien: Liest Abhängigkeiten direkt aus dem Quellcode.
  • Im zentralen Repository kann jeder seine Bibliotheken hochladen. Sie können im Web erkundet, navigiert und entdeckt werden
  • Versionskontrolle: Überprüft die Kompatibilität der Versionen und ermöglicht sichere Aktualisierungen von Abhängigkeiten
  • Sie können es mit jedem Texteditor verwenden (es bietet optionale Eclipse-Unterstützung).
  • Es verwaltet die Einrichtung und Kompilierung von Projekten und flasht die generierte Firmware auf die Karte
  • Es hat einen schönen seriellen Monitor als Plus

Sie können hier eine kurze Demo sehen und mehr in der Dokumentation lesen .

hithwen
quelle
Beantwortet 2014, sein 2018 noch in Produktion?
Parohy
Nein, ist jetzt conan.io von jfrog und weiß nicht, ob es Arduino mehr unterstützt
bis zum
4

Seit diese Frage zum ersten Mal gestellt wurde, gibt es jetzt den Arduino Library Manager, der in die Arduino IDE integriert ist. Dort können Sie nach Bibliotheken suchen und diese installieren.

Informationen zur Funktionsweise des Bibliotheksverwalters finden Sie hier: https://github.com/arduino/Arduino/wiki/Library-Manager-FAQ

Es gibt jedoch keine offizielle Website, auf der die Bibliotheken aufgelistet sind. Daher habe ich kürzlich diese inoffizielle Website erstellt, die auf denselben Daten im Arduino Library Manager basiert:

http://www.arduinolibraries.info/

njh
quelle
3

Die Arduino Playground LibraryList und die Standardbibliotheksliste scheinen die offiziellen Seiten dafür zu sein.

Der Typ mit dem Hut
quelle
Ja, aber sie sind nur eine Mischung aus kurzen Dokumenten mit Links zu Bibliotheken und scheinen einer "Best-Effort" -Wartung zu folgen, die zu etwas führt, das wie ein Chaos aussieht, wenn wir es von einer Art Paketmanager verwenden möchten.
jfpoilpret
2

Wenn Sie eine solche Registrierung selbst erstellen möchten, sollten Sie sich npm ansehen , den Paketmanager von Node.js , der Open Source ist und einen sehr ähnlichen Umfang hat, den Sie beschreiben möchten. Npm ist beides:

  1. eine zentrale Registrierung mit Metadaten zu jeder Bibliothek:
    • Name, Beschreibung, Schlüsselwörter, Homepage, Autor, Mitwirkende
    • Versionsnummer, im Prinzip gemäß semantischer Versionierung
    • URL des Quell-Repositorys (svn, git, github, gitlab, bitbucket ...)
    • Kompatibilitätsinformationen (in diesem Fall handelt es sich um die Versionen von Node)
    • Lizenz
    • Abhängigkeiten
  2. ein Kommandozeilen-Tool für:
    • Durchsuchen der Registrierung
    • Herunterladen und Installieren von Paketen unter rekursiver Verfolgung ihrer Abhängigkeiten
    • Veröffentlichen und Aktualisieren Ihrer eigenen Pakete in der Registrierung.

Siehe zum Beispiel die Seite einer beliebten Bibliothek und die JSON-Datei mit ihren Metadaten.

Edgar Bonet
quelle
1

Da ist gar nichts. Leider müssen Sie manuell nach jeder Bibliothek suchen, an der Sie interessiert sind.

Wenn Sie daran interessiert sind, ein solches zentrales Repository zu erstellen, ist dies zwar fantastisch, aber nicht das richtige Forum, um dies zu tun.

Connor Wolf
quelle
Was würden Sie dann raten, wenn wir ein solches Repository erstellen würden?
jfpoilpret
Äh ... loslegen? Was meinst du mit Beratung? Es ist im Grunde eine Website. Vielleicht fügen Sie dem Arduino-Texteditor eine Paket-Manager-Sache hinzu, wenn Sie sich wirklich dafür interessieren? Das Hauptproblem wird wie immer sein, die Leute dazu zu bringen, es tatsächlich zu benutzen .
Connor Wolf
1
Ehrlich gesagt, selbst wenn Sie dem Arduino-Texteditor einen Fancypants-Paketmanager hinzufügen, weiß ich nicht, welche Art von Adoption Sie erhalten werden, da der Arduino-Editor schrecklich ist und die Leute dazu neigen, ihn in relativ kurzer Zeit nicht mehr zu verwenden . Als solches würden Sie fast einen separaten Paketmanager benötigen, daher würde ich fast einfach sagen, dass eine einfache Website mit einem Index der Bibliotheken, einem kurzen Klappentext und Links zu dem Ort, an dem sie tatsächlich gehostet werden, die beste Wahl ist.
Connor Wolf
Das war auch meine Idee, der Zweck war nicht, Bibliotheken zu hosten, sondern Verweise auf sie zusammen mit nützlichen Metadaten beizubehalten. In Bezug auf Arduino IDE stimme ich zu, ich verwende es nicht sehr oft, aber ein externes Tool sollte später leicht zu integrieren sein.
jfpoilpret
@jfpoilpret - Das Problem mit einem externen Tool ist, wie bei Paketmanagern, die Abhängigkeitsauflösung und das Versionsanforderungsmanagement. Die Arduino-Leute scheinen sich nicht allzu sehr darum zu kümmern, die Abwärtskompatibilität aufrechtzuerhalten, und viele Bibliotheken benötigen "arduino verson {blah}". Ich denke wirklich, dass nur eine Liste von Referenzen die beste Wahl ist. Komplexere Dinge können später kommen.
Connor Wolf
0

Arduino IDE und zugehörige Bibliotheken sind in den meisten Betriebssystem-Repositorys als installierbare Software enthalten. Leider sind die Versionen in diesen Repositorys in der Regel mehrere Monate oder sogar Jahre veraltet. Dies scheint das eigentliche Problem darin zu bestehen, OS-Repository-Manager dazu zu bringen, neue Releases zu integrieren, sobald diese verfügbar sind.

Dieses Problem tritt auf, wenn Ihre Betriebssystemversion nicht auf die neueste Version aktualisiert wurde, da Sie dadurch gezwungen sind, ein veraltetes Software-Repository zu verwenden.

Obwohl dies keine perfekte Antwort ist, sollten Sie wahrscheinlich sicherstellen, dass Sie die neueste Version Ihres Betriebssystems verwenden, und dann die Repository-Manager für dieses Betriebssystem ermutigen, die neueste Version von Arduino IDE zu integrieren.

Eine Alternative wäre, auf die Arduino.org-Homepage zu gehen und den Anweisungen zum Herunterladen und Installieren der neuesten IDE und der zugehörigen Bibliotheken zu folgen. Dies wird wahrscheinlich in Form einer .tar.gz-Datei vorliegen, sodass Sie wissen müssen, wie Sie die erforderliche Software entpacken, entpacken und erstellen.

arvid
quelle
0

Ich denke, dass Ihr Wunsch nicht in Erfüllung gehen wird. Ich hoffe darauf, denn nur ein Platz für alle Arduino-Bibliothekare zu haben, ohne dass Bibliotheken erlaubt sind, wäre nicht vorhanden, und all diese Bibliotheken wären gezwungen, alle kommerziellen Standards für Qualität, Test und Dokumentation (+ Codequalität, Effektivität und Lesbarkeit) einzuhalten Dies bedeutet, dass nur Fachleute und ähnlich qualifizierte Teams eine Arduino-Bibliothek veröffentlichen dürfen und alles von einer einzigen Einheit geregelt wird, wodurch das Entfernen von funktional doppelten oder ähnlichen Bibliotheken erzwungen wird. Und eine solche Entität würde soner oder später böse werden.

Ich mag das Arduino, weil es kostenlos ist, und das bedeutet auch, dass ich frei bin, eine Bibliothek zu schreiben, um einige Funktionen (die ich verwenden möchte) von Hardware (die ich habe, die ich kaufen möchte oder die ich selbst herstellen möchte - sogar hoch zu unterstützen) experimentell und vielleicht instabil, aber lustig für mich).

Da Ihre Big Central Authority effektiv ist, würde ich einfach eine andere kostenlose Plattform wählen, anstatt wegen eines nicht perfekten und kommerziell zertifizierten Ergebnisses meines Hobbys, mit Elektronik zu spielen, verklagt zu werden und gezwungen zu sein, für ihre, NICHT meine Ziele in MEINER Freizeit zu arbeiten.

Und wenn Ihre Big Central Athority mich nicht zwingen würde, freie Arbeit für sie zu erzwingen, was würden Sie dann tun, wenn meine Bibliothek eine spezielle Verwendung gängiger Hardware ermöglicht und ich sie an andere weitergeben möchte, auch wenn dies nicht der Fall ist? Lösen Sie alle HW-Funktionen vollständig in professioneller Angelegenheit und dokumentieren Sie nur so viel, wie es mir angenehm wäre, meine eigene Freizeit mit Dokumentation zu verbringen. Und was wäre, wenn für dieselbe Hardware eine andere Bibliothek entstehen würde, die einen anderen Teil der Funktionalität ermöglichen oder eine andere API und einen anderen Ansatz für das gesamte Problem verwenden würde?

Ich habe nämlich ein Multi-7-Segment-Modul gekauft und es gab eine "offizielle Bibliothek" dafür vom Hersteller. Ich habe eine andere Bibliothek für das gleiche Modul erstellt. Was jetzt? Sollte sich meine Bibliothek im Central Repository als "die einzige Bibliothek für diese HW" befinden oder sollte sich dort die "offizielle Bibliothek des Herstellers" befinden? Beachten Sie, dass wenn es beide gäbe, dies Ihren angeforderten "einen und nur einen" Bibliothekspunkt beschädigen würde. Wenn Sie dem Hersteller eine nicht erlauben, dann würde "die einzige" viele Funktionen vermissen, wie integrierter Puffer für Zahlen, einfache Objektschnittstelle, einfaches Beispiel, wie man sie verwendet, und es würde eine harte Abhängigkeit von einem bestimmten Timer und generischen geben Nicht-Objekt, nur funktionale API, bei der der Benutzer Ganzzahlen in einzelne Ziffern aufteilen muss - klingt nicht allzu gut. Wenn Sie meine Bibliothek nicht zulassen, hat der Benutzer die oben genannten Informationen, aber seine Anzeige wird nur 10x pro Sekunde aktualisiert, wobei blinkt und überall Geister anderer Ziffern zurückbleiben, während der Prozessor voll ausgenutzt wird und die Dokumentation hauptsächlich auf Chinesisch erfolgt. Und der Benutzer würde die Aktualisierungsrate 100x pro Sekunde verpassen, wenn fast kein Prozessor verwendet wird, schöne saubere Ziffern UND Zeichen (möglicherweise auch benutzerdefiniert). - Auch nicht gut.

Im gegenwärtigen Zustand des Chaos können Benutzer (vielleicht Sie oder jemand anderes) die Bibliothek verwenden, die besser zu seinen Anforderungen passt (sei es Einfachheit und native Ganzzahlunterstützung, oder sei es saubere, schnelle Aktualisierung und geringe CPU-Auslastung) oder beides miteinander kombinieren. Platz drei mit schneller Aktualisierung UND einfacher Ganzzahlmanipulation UND benutzerdefiniertem Zeichensatz, mit netter Objekt-API und umfangreicher Dokumentation. Es braucht nur eine Person mit etwas Zeit und Engagement, die es Anfängern und einigen Englischkenntnissen und Grundkenntnissen von Objekten und dem Packen von "offiziellen Arduino-Bibliotheken" erleichtert, damit die IDE sie leicht importieren kann. (Und eine solche Person sollte es tun und es zum Arduino Library Packager beitragen).

Ich würde es nicht tun - für meine Anforderungen ist die funktionale API viel besser und einfacher zu verwenden, weniger Bytes aus dem Speicher und weniger CPU-Zyklen zu nehmen und ich habe keinen Drang, die Bibliothek auf eine Weise zu verbessern, die ich nicht verwenden würde. Außerdem verwende ich keine Arduino IDE, sondern ein einfaches Makefile zum Erstellen und Hochladen der Programme, sodass ich problemlos einen guten Texteditor (in meinem Fall vim) verwenden kann und nicht mit der IDE-Notepad-Parodie kämpfen muss.

Unter der Durchsetzung Ihres Modells durch die Big Central Authority würde es mir nichts ausmachen, Arduino zu verwenden, und Sie werden, wenn überhaupt, an der chinesischen Version festhalten (da dies aufgrund mangelnder guter englischer Dokumentation und des richtigen Paketformats nicht möglich wäre). .

Gilhad
quelle
0

http://downloads.arduino.cc/libraries/library_index.json enthält eine Liste aller im Arduino Library Manager verfügbaren Bibliotheken.

Ich habe diese Datei verwendet, um https://github.com/scls19fr/arduino_libraries_search zu erstellen Es ist ein Python Pandas-Skript, um nach Arduino-Bibliotheken zu suchen, die einigen Schlüsselwörtern entsprechen, und um sie in eine Excel-Datei auszugeben

Sie können Arduino-Bibliotheken auch finden mit:

scls
quelle