Inhaltsverzeichnis:

Arduino IDE: Erstellen von benutzerdefinierten Boards - Gunook
Arduino IDE: Erstellen von benutzerdefinierten Boards - Gunook

Video: Arduino IDE: Erstellen von benutzerdefinierten Boards - Gunook

Video: Arduino IDE: Erstellen von benutzerdefinierten Boards - Gunook
Video: 🔴 Lerne Arduino in 12 Minuten, ….…JEDER KANN DAS! | #EdisTechlab 2024, Juli
Anonim
Arduino IDE: Erstellen von benutzerdefinierten Boards
Arduino IDE: Erstellen von benutzerdefinierten Boards
Arduino IDE: Erstellen von benutzerdefinierten Boards
Arduino IDE: Erstellen von benutzerdefinierten Boards
Arduino IDE: Erstellen von benutzerdefinierten Boards
Arduino IDE: Erstellen von benutzerdefinierten Boards

In den letzten sechs Monaten habe ich viel Zeit damit verbracht, verschiedene Bibliotheken auf das von Robotics Masters entwickelte Robo HAT MM1-Board zu portieren. Dies hat dazu geführt, viel über diese Bibliotheken zu erfahren, wie sie hinter den Kulissen funktionieren und vor allem - was zu tun ist, um in Zukunft neue Boards hinzuzufügen.

Dies ist der erste in einer Reihe von Artikeln, die ich machen werde, um anderen zu helfen, die Bibliotheken für ihre Boards portieren möchten. Viele der Informationsquellen können für Außenstehende vage oder schwer zu verstehen sein. Ich hoffe, zu „entmystifizieren“und zu erklären, wie man einen erfolgreichen Hafen für alle erreicht.

Heute werden wir uns die Arduino-Plattform ansehen. Es hat über 700.000 verschiedene Board-Varianten auf der ganzen Welt und ist eine der beliebtesten Elektronikplattformen für Bildung, Industrie und Hersteller.

Ich konnte nach vielen Google-Suchen nur sehr begrenzte Informationsquellen dazu finden, wie das geht. Also dachte ich, ich würde schreiben, wie ich es im Detail gemacht habe.

Auf geht's!

Schritt 1: Bevor Sie beginnen

Bevor Sie mit der Portierung einer Softwarebibliothek oder Firmware auf Ihr Board beginnen, müssen Sie einige wichtige Punkte über die von Ihnen verwendete Technologie kennen und in der Lage sein, die folgenden Fragen zu beantworten.

  1. Welchen Prozessor verwendest du?
  2. Welche Architektur verwendet es?
  3. Habe ich Zugriff auf das Datenblatt für diesen Mikroprozessor?
  4. Gibt es ein ähnliches Board auf dem Markt, das den gleichen Mikroprozessor verwendet?

Diese sind sehr wichtig. Es wird sich auf viele Aspekte Ihrer Herangehensweise an den Entwicklungsprozess auswirken.

Arduino-Boards verwenden normalerweise eine begrenzte Anzahl von Prozessortypen und -architekturen. Am gebräuchlichsten ist die ATMEGA-Reihe mit der AVR-Architektur (Arduino Uno). Es gibt neuere Generationen von Arduinos, die immer häufiger die SAMD-Prozessoren (ARM) und andere leistungsstärkere Prozessoren verwenden. Daher ist es wichtig zu überprüfen, welches Sie verwenden.

Das Datenblatt für einen Mikroprozessor ist unbedingt erforderlich, um sicherzustellen, dass das Board beim Kompilieren der Firmware wie erwartet reagiert. Ohne sie können Sie nicht die richtigen Pin-Ausgangsfunktionen einstellen oder serielle Ports konfigurieren.

Sobald Sie alle Informationen über den von Ihnen verwendeten Prozessor haben, können Sie sich die Software ansehen und sie so ändern, dass sie für Ihr benutzerdefiniertes Board funktioniert.

Schritt 2: Übersicht

Das Schwierigste an jedem Projekt ist, einen guten Ausgangspunkt zu finden. Dies ist nicht anders. Ich hatte Mühe, gute Tutorials mit genügend Details zum Erstellen benutzerdefinierter Boards für Arduino zu finden. Die meisten Tutorials zeigen Ihnen, wie Sie ein benutzerdefiniertes Board hinzufügen, aber nicht, wie Sie ein benutzerdefiniertes Board erstellen. Hier ist eine kurze Zusammenfassung dessen, worum es geht.

  1. Vorhandene Board-Definitionen herunterladen und kopieren
  2. Aktualisieren von Definitionsdateien (variant.h, varient.cpp)
  3. Board-Eintrag erstellen (board.txt)
  4. Board-Version aktualisieren (platform.txt)
  5. Vorbereiten der Installation (json)
  6. Board in Arduino IDE installieren

Jeder Schritt wird im Folgenden im Detail erklärt. Es wird auch ausführlich diskutiert, wie jede Datei miteinander interagiert, um zu klären, wie alles hinter der Arduino IDE funktioniert.

In diesem Tutorial zeige ich Ihnen, wie Sie ein benutzerdefiniertes Board für SAMD-Prozessoren erstellen. Genauer gesagt, der SAMD21G18A - der Mikroprozessor, der auf der Robo HAT MM1-Platine verwendet wird, die ich portiert habe.

Ich gehe auch davon aus, dass Sie bereits Arduino IDE 1.8 oder höher heruntergeladen haben. Ich habe zum Zeitpunkt des Schreibens Arduino 1.8.9 verwendet.

Schritt 3: Vorhandene Boards herunterladen

Vorhandene Boards herunterladen
Vorhandene Boards herunterladen
Vorhandene Boards herunterladen
Vorhandene Boards herunterladen
Vorhandene Boards herunterladen
Vorhandene Boards herunterladen

Der erste Schritt besteht darin, die nächste Arduino-Board-Variante herunterzuladen, die zu Ihrem Board passt. Für SAMD-Boards ist dies der Arduino Zero.

Seit Arduino IDE 1.6 besteht die Methode zum Herunterladen neuer Boards in die Umgebung darin, spezielle JSON-Dateien hinzuzufügen, die Softwareentwickler bereitstellen, und dann die benutzerdefinierten Boards mit dem „Boards Manager“zu installieren. Frühere Versionen der Arduino IDE verwendeten eine andere Methode, die wir heute nicht diskutieren werden. Wir werden später in diesem Tutorial unsere eigene JSON-Datei erstellen, müssen jedoch zuerst das Arduino Zero-Board mit dieser Methode hinzufügen.

Zu unserem Glück benötigt das Board, das wir herunterladen möchten, keine JSON-Datei, da die JSON-Datei mit Arduino IDE vorgebündelt ist - wir müssen das Board also nur über den „Boards Manager“installieren.

Gehen Sie dazu zu „Tools“und erweitern Sie dann das Menü „Board“. Oben im Menü „Board“befindet sich der „Boards Manager“. Klicken Sie auf diese Menüoption, um den Board-Manager aufzurufen.

(Siehe Bilder)

Wenn der Boards Manager geöffnet wird, sieht er sich alle JSON-Dateien an, die er in der Arduino IDE gespeichert hat, und lädt dann die Einstellungen aus der Datei herunter. Sie sollten eine lange Liste verfügbarer Arduino-Boards sehen, die Sie installieren können.

(Siehe Bilder)

Wir interessieren uns nur für das Board „Arduino SAMD Boards (32-bits ARM Cortex-M0+)“für dieses Tutorial, aber Sie könnten an dieser Stelle abweichen und das Board installieren, das Sie benötigen. Bitte suchen und installieren Sie das Board „Arduino SAMD Boards (32-bits ARM Cortex-M0+)“. Klicken Sie dazu auf den Text in der Liste und anschließend auf die Schaltfläche „Installieren“auf der rechten Seite, die nach dem Anklicken des Textes erscheint. Die Installation dauert einige Minuten.

Für weitere Details zur Installation neuer Boards: Adafruit hat hier ein großartiges Tutorial, das erklärt, wie man seine Feature M0-Boards installiert.

Nachdem die Board-Dateien installiert wurden, können wir sie kopieren, damit sie für Ihr benutzerdefiniertes Board geändert werden können.

Schritt 4: Suchen und Kopieren von Board-Dateien

Suchen und Kopieren von Board-Dateien
Suchen und Kopieren von Board-Dateien
Suchen und Kopieren von Board-Dateien
Suchen und Kopieren von Board-Dateien
Suchen und Kopieren von Board-Dateien
Suchen und Kopieren von Board-Dateien

Für Windows befinden sich die Board-Dateien in (denken Sie daran, den Benutzernamen in Ihren Benutzernamen zu ändern):

C:\Benutzer\Benutzername\AppData\Local\Arduino15\Pakete

In diesem Ordner müssen Sie etwas tiefer gehen, um zu den Dateien zu gelangen, die Sie zum Ändern kopieren müssen. Für dieses Tutorial werden wir die Arduino Zero-Board-Dateien abrufen, die installiert werden (denken Sie daran, den Benutzernamen in Ihren Benutzernamen zu ändern):

C:\Benutzer\Benutzername\AppData\Local\Arduino15\packages\arduino\hardware\samd

Kopieren Sie den Ordner mit der Versionsnummer, der sich in diesem Verzeichnis befindet, in einen neuen Ordner in Ihrem Dokumentenordner oder Ordner Ihrer Wahl. Für die Zwecke dieses Tutorials lege ich sie in einen neuen Ordner namens "Custom Boards" in Documents.

Der Ordner enthält eine Reihe von Ordnern und Verzeichnissen. Diejenigen, die wir verwenden werden, sind in der Tabelle im Screenshot angegeben.

Schritt 5: Variante erstellen

Variante erstellen
Variante erstellen
Variante erstellen
Variante erstellen
Variante erstellen
Variante erstellen
Variante erstellen
Variante erstellen

Wir sind jetzt bereit, einen benutzerdefinierten Board-Eintrag zu erstellen. Für dieses Tutorial verwende ich den Robo HAT MM1 als Beispiel. Wie bereits erwähnt, handelt es sich um ein SAMD-basiertes Board, das dem Arduino Zero-Build am nächsten kommt.

Wir beginnen damit, in den Variantenordner zu gehen und den darin befindlichen Ordner arduino_zero zu kopieren. Wir werden die neue Boardvariante in „robohatmm1“umbenennen. Sie können Ihren nennen, wie Sie möchten.

(Siehe Bild)

Im Ordner robohatmm1 befinden sich die beiden Pins, die wir zum Bearbeiten benötigen: Variant.cpp und Variant.h. Öffnen Sie beide.

Ich habe eine Weile gebraucht, um das herauszufinden, daher werde ich es hier erklären, um Ihnen etwas Zeit zu sparen. Die Datei Variant.cpp enthält eine sehr große Anzahl von Pins, auf die in der Datei Variant.h verwiesen wird. Alle Pin-Referenzen in der Variante.h sind eine Referenz auf die Pin-Konfiguration an einer bestimmten Position im Variant.cpp-Array.

(Siehe Screenshot mit zwei Dateien)

Die meisten Ihrer Änderungen werden also in diesen beiden Dateien vorgenommen, aber Sie müssen sicherstellen, dass Sie, wenn Sie die Reihenfolge der Pins in Variants.cpp ändern, die Referenzen in der Header-Datei (variants.h) ändern müssen. Beim Robo HAT MM1 musste ich nur einige der Pins und Funktionen ändern. Dies geschah in den Varianten.h. Ich habe einige neue PWM-Pins hinzugefügt, da der SAMD21 12 PWM-Kanäle verarbeiten kann. Ich habe auch einige Namen für Servos, Signale (statt ADC/Digital) und benutzerdefiniertes Mapping zu den richtigen Funktionen hinzugefügt - wie SPI, UART und I2C.

Es ist wichtig zu beachten, dass die Array-Referenzen, die Sie für die in Varianten.h beschriebenen Funktionen verwenden, mit denen des Pins in varaints.cpp übereinstimmen - was wir uns jetzt ansehen werden.

Variants.cpp ist eine sehr mächtige und wichtige Datei. Es macht die ganze harte Arbeit, die Pins so einzustellen, dass sie den Hardwareeinstellungen entsprechen. Dies lässt sich am einfachsten mit einem Beispiel und einer Erläuterung jedes Teils erklären.

(Siehe Tabelle im Screenshot)

Beispiel (Auszug aus Varianten.cpp)

{ PORTA, 22, PIO_SERCOM, PIN_ATTR_NONE, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, // SDA

Dies ist der erste Pin im Variant.cpp-Array für den Robo HAT MM1. Die Tabelle aus dem Datenblatt wurde als Bild (graue Tabelle) bereitgestellt.

(Siehe Bilder)

Dieser spezielle Pin wird für die I2C-Daten-Pin-Funktion verwendet. Ein Blick in die Tabelle zeigt, dass dieser Pin als I2C-SDA-Pin verwendet werden kann (guter Start!). Der Pin heißt „PA22“, die Abkürzung für PORTA auf Pin 22. Wir können sofort den PORT und die Pin-Nummer für diesen Pin einstellen.

Als nächstes müssen wir den Pin als seriellen Kommunikationsanschluss einstellen. Der Pin verfügt über eine serielle Kommunikation, die über Funktion C (PIO_SERCOM) mit SERCOM 3 und D mit SERCOM5 (PIO_SERCOM_ALT) verfügbar ist. Für die Zwecke des Robo HAT MM1 verwenden wir SERCOM3 für die I2C-Kommunikation. Dies ist auf Funktion C; aka. PIO_SERCOM für varianten.cpp.

Da wir diesen Pin nur als I2C-SDA verwenden möchten, müssen keine der anderen Funktionen eingestellt werden. Sie können alle als „Nein“- oder „Nicht“-Optionen aus der vorherigen Tabelle festgelegt werden. Wenn wir jedoch die anderen Funktionen verwenden wollten, könnten wir das Datenblatt durchgehen und sie alle an die richtigen Stellen setzen. Es steht alles im Datenblatt.

Das Ändern der Variantendateien kann einige Zeit in Anspruch nehmen. Seien Sie vorsichtig und überprüfen Sie immer dreifach.

Schritt 6: Erstellen Sie eine Board-Definition

Erstellen Sie eine Board-Definition
Erstellen Sie eine Board-Definition

Sobald Sie Ihre Variantendateien bereit haben, sollte es von hier aus direkt sein. Die meiste Arbeit wird das Kopieren und Einfügen oder das Ändern und Aktualisieren von Dateien sein.

Beginnend mit board.txt.

(Siehe Bild)

Sie möchten eine bereits vorhandene Board-Definition kopieren und einfügen. Ich würde das Arduino Zero wieder empfehlen.

Ändern Sie der Einfachheit halber nur den Boardnamen (erste Zeile), usb_product, usb_manufacturer und Variant (Robohat). Die anderen Argumente können Sie später an Ihre Bedürfnisse anpassen – beispielsweise einen benutzerdefinierten Bootloader oder verschiedene USB-VID/PIDs zur Identifizierung Ihres Boards.

Die Platinenvariante muss mit dem Namen des beim Start angelegten Ordners übereinstimmen. Für dieses Tutorial habe ich es „robohatmm1“genannt.

Es wird auch empfohlen, den ersten Teil jeder Zeile so zu ändern, dass er Ihrem Boardnamen entspricht. Im Screenshot wurde es in ‘robo_hat_mm1’ geändert. Sie sollten einen Namen für Ihr Board mit dem gleichen Format wählen.

Das ist alles für die board.txt, es sei denn, Sie möchten später weitere Änderungen vornehmen, die oben erwähnt wurden.

Schritt 7: Board-Version aktualisieren

Board-Version aktualisieren
Board-Version aktualisieren

Ändern Sie in der platform.txt den Namen in den Namen Ihres benutzerdefinierten Boards. Ändern Sie auch die Versionsnummer. Merken Sie sich, was Sie hier eingestellt haben, wir werden es später brauchen.

Schritt 8: JSON-Paketdatei erstellen

JSON-Paketdatei erstellen
JSON-Paketdatei erstellen
JSON-Paketdatei erstellen
JSON-Paketdatei erstellen

Um Ihr Board in der Arduino IDE zu installieren, müssen Sie eine JSON-Datei erstellen, die Sie importieren. Die JSON-Datei teilt der Arduino IDE mit, wo die Dateien zum Installieren des Boards zu finden sind, welche zusätzlichen Pakete benötigt werden und einige andere Metadaten.

Es ist sehr wichtig, dass Sie diese Datei außerhalb des Ordners speichern, in dem wir gerade gearbeitet haben.

Der größte Teil der Datei kann kopiert und in Ihre Datei eingefügt werden. Sie müssen nur den Abschnitt „Boards“und die anderen Metadaten oben in der Datei ändern. Siehe Screenshot für was aktualisiert werden sollte.

(Siehe Bild)

  • Roter Abschnitt: Dies sind Metadaten, die Benutzer verwenden können, um Hilfe zu finden. Es hat eine sehr geringe technische Relevanz.
  • Blauer Abschnitt: All dies ist wichtig. Sie werden in der Arduino-IDE angezeigt. Name, Architektur und Version werden jedem angezeigt, der versucht, das Paket zu installieren. Hier müssen Sie die Versionsnummer aus der platform.txt eingeben. Der zweite blaue Abschnitt ist die Liste der Boards, die im Paket enthalten sind. Sie könnten mehrere Boards haben.
  • Grüner Abschnitt: Dieser Abschnitt bedarf weiterer Erläuterungen.

(Siehe Tabelle in Bildern)

Nachdem Sie die ZIP-Datei erstellt, die Prüfsumme und die Dateigröße der ZIP-Datei erhalten haben, können Sie die ZIP-Datei nun an einen Speicherort hochladen. Sie müssen diese URL in das 'url'-Feld eingeben. Wenn der Name oder eine der oben genannten Angaben falsch ist, kann Ihr benutzerdefiniertes Board nicht installiert werden.

Stellen Sie sicher, dass Sie auch Ihre Datei package_boardname_index.json an einen öffentlichen Ort im Internet hochladen. GitHub ist eine gute Option.

Die benutzerdefinierte Board-Datei des Robo HAT MM1 finden Sie hier.

Schritt 9: Der letzte Schritt - Installieren Sie Ihr benutzerdefiniertes Board

Der letzte Schritt - Installieren Sie Ihr benutzerdefiniertes Board!
Der letzte Schritt - Installieren Sie Ihr benutzerdefiniertes Board!
Der letzte Schritt - Installieren Sie Ihr benutzerdefiniertes Board!
Der letzte Schritt - Installieren Sie Ihr benutzerdefiniertes Board!

Alles läuft gut, Sie sollten jetzt Ihre JSON-Datei in die Arduino IDE einbinden und Ihr benutzerdefiniertes Board installieren können.

Das Einbinden der JSON-Datei ist ganz einfach! Gehen Sie in der Arduino IDE einfach zu "Datei"> "Einstellungen" und kopieren Sie den Speicherort (URL) Ihres package_boardname_index.json und fügen Sie ihn in den Abschnitt "Additional Boards Manager URLs" unten im Menü "Einstellungen" ein.

(Siehe Bild)

Klicken Sie dann auf OK.

Führen Sie die Anweisungen von oben durch, um neue Boards zu installieren, wenn Sie es vergessen haben. Denken Sie daran, dieses Mal nach Ihrem benutzerdefinierten Board zu suchen!

(Siehe Bild)

Für weitere Details zur Installation neuer Boards: Adafruit hat hier ein großartiges Tutorial, das erklärt, wie man seine Feature M0-Boards installiert.

Schritt 10: Fazit

Abschluss
Abschluss
Abschluss
Abschluss

Es hat Spaß gemacht, benutzerdefinierte Arduino-Boards zu erstellen. Es gibt für mich in Zukunft noch viel zu experimentieren (Hinzufügen zusätzlicher serieller Ports), aber es war eine großartige Lernerfahrung!

Schauen Sie sich auch die Crowd Supply-Kampagne an. Sie endet am 11. Juni 2019.

www.crowdsupply.com/robotics-masters/robo-…

Ich hoffe, das hat dir geholfen oder du hattest Spaß beim Mitlesen!

Vielen Dank!

Empfohlen: