Inhoudsopgave:

Arduino IDE: aangepaste borden maken: 10 stappen
Arduino IDE: aangepaste borden maken: 10 stappen

Video: Arduino IDE: aangepaste borden maken: 10 stappen

Video: Arduino IDE: aangepaste borden maken: 10 stappen
Video: Control 10 output pins or relay using 10 push button switch with 1 Arduino input pin ANPB-V2 2024, November
Anonim
Arduino IDE: aangepaste borden maken
Arduino IDE: aangepaste borden maken
Arduino IDE: aangepaste borden maken
Arduino IDE: aangepaste borden maken
Arduino IDE: aangepaste borden maken
Arduino IDE: aangepaste borden maken

In de afgelopen zes maanden heb ik veel tijd besteed aan het overzetten van verschillende bibliotheken naar het Robo HAT MM1-bord dat is ontwikkeld door Robotics Masters. Dit heeft geleid tot het ontdekken van veel over deze bibliotheken, hoe ze achter de schermen werken en vooral - wat te doen om in de toekomst nieuwe borden toe te voegen.

Dit is de eerste in een reeks van beschrijvingen die ik zal doen om anderen te helpen die bibliotheken willen overdragen voor hun borden. Veel van de informatiebronnen kunnen vaag of moeilijk te begrijpen zijn voor buitenstaanders. Ik hoop te ‘demystificeren’ en uit te leggen hoe je voor iedereen een succesvolle haven kunt realiseren.

Vandaag zullen we kijken naar het Arduino-platform. Het heeft meer dan 700.000 verschillende bordvarianten over de hele wereld en is een van de meest populaire elektronicaplatforms voor onderwijs, industrie en makers.

Ik kon slechts zeer beperkte informatiebronnen vinden over hoe dit te doen na veel Google-zoekopdrachten. Dus ik dacht dat ik zou schrijven over hoe ik het deed in detail.

Daar gaan we!

Stap 1: Voordat u begint

Voordat je begint met het overzetten van een softwarebibliotheek of firmware naar je board, moet je een paar belangrijke punten weten over de technologie die je gebruikt en de onderstaande vragen kunnen beantwoorden.

  1. Welke processor gebruik je?
  2. Welke architectuur gebruikt het?
  3. Heb ik toegang tot de datasheet van deze microprocessor?
  4. Is er een soortgelijk bord op de markt dat dezelfde microprocessor gebruikt?

Deze zijn erg belangrijk. Het heeft invloed op veel aspecten van hoe u het ontwikkelingsproces benadert.

Arduino-boards gebruiken gewoonlijk een beperkt aantal processortypes en architecturen. De meest voorkomende is het ATMEGA-assortiment met behulp van de AVR-architectuur (Arduino Uno). Er zijn nieuwere generaties Arduino's die steeds vaker worden gebruikt met de SAMD-processors (ARM) en andere krachtigere processors. Het is dus belangrijk om te kijken welke je gebruikt.

Het gegevensblad voor een microprocessor is absoluut essentieel om ervoor te zorgen dat het bord reageert zoals verwacht wanneer u de firmware compileert. Zonder dit kunt u niet de juiste pin-uitgangsfuncties instellen of seriële poorten configureren.

Als je eenmaal alle informatie hebt die je nodig hebt over de processor die je gebruikt, kun je naar de software gaan kijken en deze aanpassen om voor je aangepaste bord te werken.

Stap 2: Overzicht

Het moeilijkste van elk project is het vinden van een goed startpunt. Dit is niet anders. Ik had moeite om goede tutorials te vinden met voldoende details over het maken van aangepaste boards voor Arduino. De meeste tutorials laten zien hoe je 'een aangepast bord toevoegt', maar niet hoe je 'een aangepast bord maakt'. Hier is een korte samenvatting van wat erbij komt kijken.

  1. Bestaande borddefinities downloaden en kopiëren
  2. Definitiebestanden bijwerken (variant.h, varient.cpp)
  3. Borditem maken (board.txt)
  4. Bordversie bijwerken (platform.txt)
  5. Installatie voorbereiden (json)
  6. Board installeren in Arduino IDE

Elke stap zal hieronder in detail worden uitgelegd. Er zal ook een uitgebreide discussie zijn over hoe elk bestand met elkaar interageert om te verduidelijken hoe alles achter de Arduino IDE werkt.

Voor deze tutorial laat ik je zien hoe je een aangepast bord voor SAMD-processors kunt maken. Meer specifiek, de SAMD21G18A - de microprocessor die wordt gebruikt op het Robo HAT MM1-bord dat ik aan het porten was.

Ik neem ook aan dat je Arduino IDE 1.8 of hoger al hebt gedownload. Ik gebruikte Arduino 1.8.9 op het moment van schrijven.

Stap 3: Bestaande borden downloaden

Bestaande borden downloaden
Bestaande borden downloaden
Bestaande borden downloaden
Bestaande borden downloaden
Bestaande borden downloaden
Bestaande borden downloaden

De eerste stap is het downloaden van het Arduino-bord dat het dichtst bij uw bord past. Voor SAMD-borden is dit de Arduino Zero.

Sinds Arduino IDE 1.6 is de methode voor het downloaden van nieuwe boards in de omgeving door speciale JSON-bestanden toe te voegen die softwareontwikkelaars leveren en vervolgens de aangepaste boards te installeren met behulp van de "Boards Manager". Eerdere versies van Arduino IDE gebruikten een andere methode die we vandaag niet zullen bespreken. We zullen later in deze tutorial ons eigen JSON-bestand maken, maar we moeten eerst het Arduino Zero-bord met deze methode toevoegen.

Gelukkig voor ons heeft het bord dat we willen downloaden geen JSON-bestand nodig omdat het JSON-bestand vooraf is gebundeld met Arduino IDE - dus we hoeven het bord alleen maar te installeren vanuit "Boards Manager".

Ga hiervoor naar "Tools" en vouw vervolgens het menu "Board" uit. Bovenaan het menu "Board" staat de "Boards Manager". Klik op deze menuoptie om de Boards Manager te openen.

(Zie afbeeldingen)

Wanneer de Boards Manager wordt geopend, kijkt het naar alle JSON-bestanden die het heeft opgeslagen in de Arduino IDE en downloadt vervolgens de instellingen uit het bestand. U zou een lange lijst met beschikbare Arduino-kaarten moeten zien die u kunt installeren.

(Zie afbeeldingen)

We zijn alleen geïnteresseerd in het bord "Arduino SAMD Boards (32-bits ARM Cortex-M0+)" voor deze tutorial, maar je kunt afwijken en het board installeren dat je op dit moment nodig hebt. Zoek en installeer het bord "Arduino SAMD Boards (32-bits ARM Cortex-M0+)". Dit kunt u doen door op de tekst uit de lijst te klikken, gevolgd door de knop "Installeren" aan de rechterkant die verschijnt nadat u op de tekst hebt geklikt. Het installeren duurt een paar minuten.

Voor meer details over het installeren van nieuwe boards: Adafruit heeft hier een geweldige tutorial die uitlegt hoe ze hun Feature M0 boards kunnen installeren.

Nu de bordbestanden zijn geïnstalleerd, kunnen we ze kopiëren zodat ze kunnen worden aangepast voor uw aangepaste bord.

Stap 4: Board-bestanden zoeken en kopiëren

Bordbestanden zoeken en kopiëren
Bordbestanden zoeken en kopiëren
Bordbestanden zoeken en kopiëren
Bordbestanden zoeken en kopiëren
Bordbestanden zoeken en kopiëren
Bordbestanden zoeken en kopiëren

Voor Windows bevinden de Board-bestanden zich in (vergeet niet de gebruikersnaam te wijzigen in uw gebruikersnaam):

C:\Users\gebruikersnaam\AppData\Local\Arduino15\packages

In deze map moet je wat dieper gaan om bij de bestanden te komen die je moet kopiëren om te wijzigen. Voor deze tutorial gaan we de Arduino Zero-bordbestanden ophalen die zullen worden geïnstalleerd op (vergeet niet om de gebruikersnaam in uw gebruikersnaam te veranderen):

C:\Users\gebruikersnaam\AppData\Local\Arduino15\packages\arduino\hardware\samd

Kopieer de map met versienummer die zich in deze map bevindt naar een nieuwe map in uw map Documenten of een map van uw keuze. Voor deze tutorial zal ik ze in een nieuwe map met de naam 'custom boards' in Documents plaatsen.

De map bevat een aantal mappen en mappen. Degene die we zullen gebruiken, staan vermeld in de tabel in de schermafbeelding.

Stap 5: Variant maken

Variant maken
Variant maken
Variant maken
Variant maken
Variant maken
Variant maken
Variant maken
Variant maken

We zijn nu klaar om een aangepast borditem te maken. Voor deze tutorial zal ik de Robo HAT MM1 als voorbeeld gebruiken. Zoals eerder vermeld, is het een op SAMD gebaseerd bord dat het beste overeenkomt met de Arduino Zero-build.

We beginnen door naar de map Varianten te gaan en de map arduino_zero die zich daar bevindt te kopiëren. We zullen de nieuwe bordvariant hernoemen naar 'robohatmm1'. Je kunt de jouwe noemen zoals je wilt.

(Zie afbeelding)

In de map robohatmm1 bevinden zich de twee pinnen die we moeten gaan bewerken: variant.cpp en variant.h. Open ze allebei.

Dit kostte me een tijdje om uit te werken, dus ik zal het hier uitleggen om je wat tijd te besparen. Het bestand variant.cpp bevat een zeer groot aantal pinnen waarnaar in variant.h wordt verwezen. Alle pinverwijzingen in variant.h zijn een verwijzing naar de pinconfiguratie op een bepaalde positie in de variant.cpp-array.

(Zie screenshot met twee bestanden)

De meeste van uw bewerkingen zullen dus in beide bestanden plaatsvinden, maar u moet ervoor zorgen dat als u de volgorde van de pinnen in varianten.cpp wijzigt, u de verwijzingen in het headerbestand (varianten.h) moet wijzigen. Voor de Robo HAT MM1 hoefde ik alleen enkele pinnen en functies te veranderen. Dit gebeurde in varianten.h. Ik heb een aantal nieuwe PWM-pinnen toegevoegd omdat de SAMD21 12 PWM-kanalen aankan. Ik heb ook enkele namen voor servo's, signalen (in plaats van ADC/Digital) en aangepaste mapping toegevoegd aan de juiste functies - zoals SPI, UART en I2C.

Het belangrijkste om op te merken is om te controleren of de arrayverwijzingen die u gebruikt voor de functies die worden beschreven in varianten.h overeenkomen met die van de pin in varaints.cpp - waar we nu naar zullen kijken.

Variants.cpp is een zeer krachtig en belangrijk bestand. Het doet al het harde werk om de pinnen in te stellen op de hardware-instellingen. De eenvoudigste manier om dit uit te leggen is met een voorbeeld en uitleg van elk onderdeel.

(Zie tabel in screenshot)

Voorbeeld (uittreksel uit varianten.cpp)

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

Dit is de eerste pin in de varianten.cpp-array voor de Robo HAT MM1. De tabel uit de datasheet is als afbeelding aangeleverd (grijze tabel).

(Zie afbeeldingen)

Deze specifieke pin wordt gebruikt voor de I2C-gegevenspinfunctie. Als we naar de tabel kijken, kunnen we zien dat deze pin kan worden gebruikt als een I2C SDA-pin (goed begin!). De pin heet “PA22” wat een afkorting is voor PORTA op pin 22. We kunnen meteen de PORT en pincode voor deze pin instellen.

Het volgende dat we moeten doen, is de pin instellen als een seriële communicatiepoort. De pin heeft seriële communicatie beschikbaar via functie C (PIO_SERCOM) met behulp van SERCOM 3 en D met behulp van SERCOM5 (PIO_SERCOM_ALT). Voor de Robo HAT MM1 gebruiken we SERCOM3 voor I2C-communicatie. Dit is op functie C; oftewel PIO_SERCOM voor varianten.cpp.

Aangezien we van plan zijn om deze pin alleen als I2C SDA te gebruiken, is het niet nodig om een van de andere functies in te stellen. Ze kunnen allemaal worden ingesteld als "Nee" of "Niet" opties uit de vorige tabel. Als we echter de andere functies willen gebruiken, kunnen we de datasheet doornemen en ze allemaal in de juiste ruimtes plaatsen. Het staat allemaal in de datasheet.

Het wijzigen van de variantbestanden kan enige tijd duren. Wees voorzichtig en controleer altijd driedubbel.

Stap 6: Maak een borddefinitie

Een borddefinitie maken
Een borddefinitie maken

Zodra u uw variantbestanden gereed heeft, zou het vanaf hier eenvoudig moeten zijn. Het meeste werk zal bestaan uit het kopiëren en plakken of wijzigen en bijwerken van bestanden.

Beginnend met boards.txt.

(Zie afbeelding)

U wilt een borddefinitie kopiëren en plakken die er al is. Ik zou de Arduino Zero opnieuw aanbevelen.

Wijzig voor de eenvoud alleen de bordnaam (eerste regel), usb_product, usb_manufacturer en variant (robohat). U kunt de andere argumenten later aanpassen aan uw behoeften - zoals een aangepaste bootloader of verschillende USB VID/PID's voor het identificeren van uw bord.

De bordvariant moet overeenkomen met de naam die is gegeven aan de map die bij de start is gemaakt. Voor deze tutorial noemde ik het 'robohatmm1'.

Het wordt ook aanbevolen om het eerste deel van elke regel aan te passen aan uw bordnaam. In de screenshot is het veranderd in 'robo_hat_mm1'. Kies een naam voor je bord met hetzelfde formaat.

Dat is alles voor boards.txt, tenzij u later de hierboven genoemde wijzigingen wilt aanbrengen.

Stap 7: bordversie bijwerken

Bordversie bijwerken
Bordversie bijwerken

Verander in platforms.txt de naam in de naam van je custom board. Wijzig ook het versienummer. Onthoud waar je dit op hebt ingesteld, we hebben het later nodig.

Stap 8: JSON-pakketbestand maken

JSON-pakketbestand maken
JSON-pakketbestand maken
JSON-pakketbestand maken
JSON-pakketbestand maken

Om je bord in Arduino IDE te installeren, moet je een JSON-bestand maken dat je gaat importeren. Het JSON-bestand vertelt Arduino IDE waar de bestanden vandaan moeten komen om het bord te installeren, welke extra pakketten nodig zijn en een paar andere stukjes metadata.

Het is erg belangrijk dat u dit bestand opslaat buiten de map waarin we zojuist hebben gewerkt.

Het grootste deel van het bestand kan worden gekopieerd en in uw bestand worden geplakt. U hoeft alleen het gedeelte "boards" en de andere metadata bovenaan het bestand te wijzigen. Zie screenshot voor wat moet worden bijgewerkt.

(Zie afbeelding)

  • Rode sectie: dit zijn metadata die gebruikers kunnen gebruiken om hulp te zoeken. Het heeft weinig technische relevantie.
  • Blauwe sectie: al deze zijn belangrijk. Ze worden weergegeven in de Arduino IDE. Naam, Architectuur en Versie worden allemaal getoond aan iedereen die het pakket probeert te installeren. Hier moet u het versienummer van platforms.txt invoeren. Het tweede blauwe gedeelte is de lijst met borden die in het pakket zitten. Je zou meerdere borden kunnen hebben.
  • Groene Sectie: Deze sectie behoeft nadere toelichting.

(Zie tabel in afbeeldingen)

Nadat u het zipbestand hebt gemaakt, de controlesom van het zipbestand en de bestandsgrootte hebt gekregen, kunt u het zipbestand nu naar een locatie uploaden. U moet die URL in het veld 'url' plaatsen. Als de naam of een van de bovenstaande gegevens onjuist zijn, kan uw aangepaste bord niet worden geïnstalleerd.

Zorg ervoor dat u ook uw package_boardname_index.json-bestand uploadt naar een openbare locatie op internet. GitHub is een goede optie.

De Robo HAT MM1 custom boardfile is hier te vinden.

Stap 9: De laatste stap - installeer uw aangepaste bord

De laatste stap - installeer uw aangepaste bord!
De laatste stap - installeer uw aangepaste bord!
De laatste stap - installeer uw aangepaste bord!
De laatste stap - installeer uw aangepaste bord!

Als alles goed gaat, zou je nu je JSON-bestand in Arduino IDE moeten kunnen opnemen en je aangepaste bord kunnen installeren.

Het opnemen van het JSON-bestand is eenvoudig! In Arduino IDE - ga gewoon naar "Bestand"> "Voorkeuren" en kopieer en plak de locatie (URL) van uw package_boardname_index.json naar het gedeelte "Extra Boards Manager-URL's" onder aan het menu Voorkeuren.

(Zie afbeelding)

Druk vervolgens op OK.

Doorloop de instructies van hierboven voor het installeren van nieuwe boards als je het bent vergeten. Vergeet niet om deze keer naar je aangepaste bord te zoeken!

(Zie afbeelding)

Voor meer details over het installeren van nieuwe boards: Adafruit heeft hier een geweldige tutorial die uitlegt hoe ze hun Feature M0 boards kunnen installeren.

Stap 10: Conclusie

Conclusie
Conclusie
Conclusie
Conclusie

Dit was leuk om aangepaste Arduino-borden te maken. Er is nog veel om in de toekomst mee te experimenteren (extra seriële poorten toevoegen), maar het was een geweldige leerervaring!

Bekijk ook zeker de Crowd Supply-campagne. Het eindigt op 11 juni 2019.

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

Ik hoop dat dit je heeft geholpen of dat je het leuk vond om mee te lezen!

Bedankt!

Aanbevolen: