Innholdsfortegnelse:

Arduino IDE: Opprette tilpassede tavler: 10 trinn
Arduino IDE: Opprette tilpassede tavler: 10 trinn

Video: Arduino IDE: Opprette tilpassede tavler: 10 trinn

Video: Arduino IDE: Opprette tilpassede tavler: 10 trinn
Video: Control 32 Servo over Wi-Fi using ESP32 and PCA9685 via desktop or mobile phone V5 2024, November
Anonim
Arduino IDE: Opprette tilpassede tavler
Arduino IDE: Opprette tilpassede tavler
Arduino IDE: Opprette tilpassede tavler
Arduino IDE: Opprette tilpassede tavler
Arduino IDE: Opprette tilpassede tavler
Arduino IDE: Opprette tilpassede tavler

I løpet av de siste seks månedene har jeg brukt mye tid på å overføre forskjellige biblioteker til Robo HAT MM1 -brettet utviklet av Robotics Masters. Dette har ført til å oppdage mye om disse bibliotekene, hvordan de fungerer bak kulissene og viktigst av alt - hva du skal gjøre for å legge til nye tavler i fremtiden.

Dette er det første i en serie oppskrifter jeg vil gjøre for å hjelpe andre som ønsker å overføre biblioteker til sine styrer. Mange av informasjonskildene kan være vage eller vanskelige å forstå for utenforstående. Jeg håper å 'demystifisere' og forklare hvordan jeg oppnår en vellykket port for alle.

I dag skal vi se på Arduino -plattformen. Den har over 700 000 forskjellige brettvarianter rundt om i verden og er en av de mest populære elektronikkplattformene for utdanning, industri og produsenter.

Jeg kunne bare finne svært begrensede informasjonskilder om hvordan jeg gjør dette etter mange Google -søk. Så jeg tenkte jeg skulle skrive om hvordan jeg gjorde det i detalj.

Her går vi!

Trinn 1: Før du begynner

Før du begynner med å overføre et programvarebibliotek eller fastvare til brettet ditt, må du kjenne noen få viktige punkter om teknologien du bruker og kunne svare på spørsmålene nedenfor.

  1. Hvilken prosessor bruker du?
  2. Hvilken arkitektur bruker den?
  3. Har jeg tilgang til databladet for denne mikroprosessoren?
  4. Er det et lignende kort på markedet som bruker den samme mikroprosessoren?

Disse er veldig viktige. Det vil påvirke mange aspekter av hvordan du nærmer deg utviklingsprosessen.

Arduino -plater bruker vanligvis et begrenset antall prosessortyper og arkitekturer. Den vanligste er ATMEGA -serien som bruker AVR -arkitekturen (Arduino Uno). Det er nyere generasjoner av Arduinos som blir mer vanlige ved å bruke SAMD -prosessorene (ARM) og andre kraftigere prosessorer. Så det er viktig å sjekke hvilken du bruker.

Databladet for en mikroprosessor er helt avgjørende for å sikre at kortet reagerer som forventet når du kompilerer fastvaren. Uten det vil du ikke kunne angi riktige pin -utgangsfunksjoner eller konfigurere serielle porter.

Når du har all informasjonen du trenger om prosessoren du bruker, kan du begynne å se på programvaren og endre den for å fungere for ditt tilpassede bord.

Trinn 2: Oversikt

Den vanskeligste delen av ethvert prosjekt er å finne et godt utgangspunkt. Dette er ikke annerledes. Jeg slet med å finne gode opplæringsprogrammer med nok detalj om hvordan jeg lager egendefinerte brett for Arduino. De fleste opplæringsprogrammer viser deg hvordan du "legger til et tilpasset bord", men ikke hvordan du "oppretter et tilpasset bord". Her er en kort oppsummering av det som er involvert.

  1. Last ned eksisterende borddefinisjoner og kopi
  2. Oppdaterer definisjonsfiler (variant.h, varient.cpp)
  3. Opprett brettoppføring (board.txt)
  4. Oppdater brettversjon (platform.txt)
  5. Forbereder installasjon (json)
  6. Installere bord i Arduino IDE

Hvert trinn vil bli forklart i detalj nedenfor. Det vil også bli omfattende diskusjon om hvordan hver fil samhandler med hverandre for å avklare hvordan alt fungerer bak Arduino IDE.

I denne opplæringen vil jeg vise deg hvordan du lager et tilpasset bord for SAMD -prosessorer. Nærmere bestemt SAMD21G18A - som er mikroprosessoren som ble brukt på Robo HAT MM1 -kortet som jeg portet.

Jeg antar også at du allerede har lastet ned Arduino IDE 1.8 eller nyere. Jeg brukte Arduino 1.8.9 i skrivende stund.

Trinn 3: Last ned eksisterende plater

Last ned eksisterende bord
Last ned eksisterende bord
Last ned eksisterende bord
Last ned eksisterende bord
Last ned eksisterende bord
Last ned eksisterende bord

Det første trinnet er å laste ned den nærmeste varianten Arduino -brettet som matcher brettet ditt. For SAMD -brett er dette Arduino Zero.

Siden Arduino IDE 1.6 har metoden for å laste ned nye kort inn i miljøet vært ved å legge til spesielle JSON -filer som programvareutviklere tilbyr, og deretter installere de tilpassede kortene ved hjelp av "Boards Manager". Tidligere versjoner av Arduino IDE brukte en annen metode som vi ikke vil diskutere i dag. Vi skal lage vår egen JSON -fil senere i denne opplæringen, men vi må legge til Arduino Zero -kortet ved å bruke denne metoden først.

Heldigvis for oss trenger ikke brettet vi vil laste ned en JSON -fil fordi JSON -filen er forhåndsbunket med Arduino IDE - så vi trenger bare å installere brettet fra "Boards Manager".

For å gjøre dette, gå til "Verktøy" og utvid deretter "Brett" -menyen. Øverst på "Board" -menyen vil være "Boards Manager". Klikk på dette menyalternativet for å få opp Boards Manager.

(Se bilder)

Når Boards Manager åpnes, vil den se på alle JSON -filene den har lagret i Arduino IDE og deretter laste ned innstillingene fra filen. Du bør se en lang liste over tilgjengelige Arduino -kort som du kan installere.

(Se bilder)

Vi er bare interessert i "Arduino SAMD Boards (32-bits ARM Cortex-M0+)" -kortet for denne opplæringen, men du kan avvike og installere brettet du trenger på dette tidspunktet. Søk etter og installer "Arduino SAMD Boards (32-bits ARM Cortex-M0+)" -kortet. Dette kan gjøres ved å klikke på teksten fra listen etterfulgt av "Installer" -knappen på høyre side som vises etter at du har klikket på teksten. Det vil ta et par minutter å installere.

For mer informasjon om hvordan du installerer nye brett: Adafruit har en flott opplæring her som forklarer hvordan du installerer Feature M0 -kortene.

Nå som brettfilene er installert, kan vi kopiere dem slik at de kan endres for ditt tilpassede bord.

Trinn 4: Finne og kopiere brettfiler

Finne og kopiere brettfiler
Finne og kopiere brettfiler
Finne og kopiere brettfiler
Finne og kopiere brettfiler
Finne og kopiere brettfiler
Finne og kopiere brettfiler

For Windows finnes tavlefilene i (husk å endre brukernavn til brukernavnet ditt):

C: / Users / brukernavn / AppData / Local / Arduino15 / pakker

I denne mappen må du gå litt dypere for å komme til filene du må kopiere for å endre. For denne opplæringen vil vi gå og hente Arduino Zero -kortfilene som skal installeres til (husk å endre brukernavn til brukernavnet ditt):

C: / Users / brukernavn / AppData / Local / Arduino15 / pakker / arduino / hardware / samd

Kopier den versjonsnummererte mappen i denne katalogen til en ny mappe i mappen Dokumenter eller mappen du velger. I forbindelse med denne opplæringen vil jeg legge dem i en ny mappe med navnet 'egendefinerte tavler' i Dokumenter.

Mappen inneholder en rekke mapper og kataloger. De vi skal bruke er notert i tabellen på skjermbildet.

Trinn 5: Opprette variant

Oppretter variant
Oppretter variant
Oppretter variant
Oppretter variant
Oppretter variant
Oppretter variant
Oppretter variant
Oppretter variant

Vi er nå klare til å begynne å lage en egendefinert brettoppføring. For denne opplæringen bruker jeg Robo HAT MM1 som eksempel. Som tidligere nevnt er det et SAMD -basert brett som er nærmest matchet Arduino Zero -bygget.

Vi starter med å gå inn i varianter -mappen og kopiere arduino_zero -mappen der. Vi vil gi nytt navn til den nye brettvarianten ‘robohatmm1’. Du kan kalle din hva du vil.

(Se bilde)

Inne i robohatmm1 -mappen vil være de to pinnene vi trenger for å begynne å redigere: variant.cpp og variant.h. Åpne dem begge.

Dette tok meg en stund å trene, så jeg skal forklare det her for å spare tid. Varianten.cpp -filen inneholder et veldig stort utvalg av pinner som det refereres til gjennom variant.h. Alle pinnreferansene i variant. H er en referanse til pinnekonfigurasjonen på en bestemt posisjon i varianten. Cpp -matrisen.

(Se Skjermbilde med to filer)

Så de fleste av redigeringene dine vil forekomme i begge disse filene, men du må sørge for at hvis du endrer rekkefølgen på pinnene i variants.cpp - må du endre referansene i toppfilen (variants.h). For Robo HAT MM1 trengte jeg bare å endre noen av pinnene og funksjonene. Dette ble gjort i varianter. H. Jeg har lagt til noen nye PWM -pinner siden SAMD21 er i stand til å håndtere 12 PWM -kanaler. Jeg la også til noen navn for Servoer, Signaler (i stedet for ADC/Digital) og tilpasset kartlegging til de riktige funksjonene - for eksempel SPI, UART og I2C.

Det viktige å merke seg er å dobbeltsjekke at matrisreferansene du bruker for funksjonene som er skissert i variants.h stemmer overens med pinnen i varaints.cpp - som vi nå skal se på.

Variants.cpp er en veldig kraftig og viktig fil. Det gjør alt det harde arbeidet med å sette pinnene for å matche maskinvareinnstillingene. Den enkleste måten å forklare dette på er med et eksempel og forklaring på hver del.

(Se tabell i skjermbilde)

Eksempel (utdrag fra variants.cpp)

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

Dette er den første pinnen i variants.cpp -matrisen for Robo HAT MM1. Tabellen fra databladet er gitt som et bilde (grått bord).

(Se bilder)

Denne spesielle pinnen brukes til I2C Data Pin -funksjonen. Når vi ser på tabellen, kan vi se at denne pinnen kan brukes som en I2C SDA -pinne (god start!). Pinnen heter “PA22” som er forkortelse for PORTA på pinne 22. Med en gang kan vi angi PORT og pin -nummer for denne pinnen.

Det neste vi må gjøre er å sette pinnen som en seriell kommunikasjonsport. Pinnen har seriell kommunikasjon tilgjengelig via funksjon C (PIO_SERCOM) ved bruk av SERCOM 3 og D ved bruk av SERCOM5 (PIO_SERCOM_ALT). I forbindelse med Robo HAT MM1 bruker vi SERCOM3 for I2C -kommunikasjon. Dette er på funksjon C; aka. PIO_SERCOM for varianter.cpp.

Siden vi planlegger å bare bruke denne pinnen som en I2C SDA, er det ikke nødvendig å angi noen av de andre funksjonene. De kan alle angis som "Nei" eller "Ikke" fra forrige tabell. Men hvis vi ønsket å bruke de andre funksjonene - kunne vi gå over databladet og sette dem alle inn i de riktige mellomromene. Det er alt i databladet.

Det kan ta litt tid å endre variantfilene. Vær forsiktig og alltid trippelsjekk.

Trinn 6: Lag en brettdefinisjon

Lag en brettdefinisjon
Lag en brettdefinisjon

Når du har din variant filer klar, bør det være rett frem herfra. Det meste av arbeidet vil være å kopiere og lime inn eller endre og oppdatere filer.

Starter med boards.txt.

(Se bilde)

Du vil kopiere og lime inn en brettdefinisjon som allerede er der. Jeg vil anbefale Arduino Zero igjen.

For enkelhets skyld, bare endre tavlenavnet (første linje), usb_product, usb_produsent og variant (robohat). Du kan tilpasse de andre argumentene senere til dine behov - for eksempel en egendefinert oppstartslaster eller forskjellige USB VID/PID -er for å identifisere brettet ditt.

Tavlevarianten må samsvare med navnet på mappen som ble opprettet i starten. For denne opplæringen kalte jeg det 'robohatmm1'.

Det vil også bli anbefalt å endre den første delen av hver linje for å matche brettnavnet ditt. På skjermbildet er det endret til ‘robo_hat_mm1’. Du bør velge et navn på brettet ditt med samme format.

Det er alt for boards.txt med mindre du vil gjøre ytterligere modifikasjoner nevnt ovenfor senere.

Trinn 7: Oppdater brettversjon

Oppdater brettversjon
Oppdater brettversjon

I platforms.txt endrer du navnet til navnet på det egendefinerte kortet. Endre også versjonsnummeret. Husk hva du satte dette til, vi trenger det senere.

Trinn 8: Lag JSON -pakkefil

Lag JSON -pakkefil
Lag JSON -pakkefil
Lag JSON -pakkefil
Lag JSON -pakkefil

For å installere brettet i Arduino IDE, må du opprette en JSON -fil som du vil importere. JSON -filen forteller Arduino IDE hvor du skal få filene til å installere brettet, hvilke ekstra pakker som trengs og noen få andre metadata.

Det er veldig viktig at du lagrer denne filen utenfor mappen vi nettopp har jobbet i.

Det meste av filen kan kopieres og limes inn i din. Du trenger bare å endre "tavler" -delen og de andre metadataene øverst i filen. Se skjermbilde for hva som bør oppdateres.

(Se bilde)

  • Rød seksjon: Dette er metadata som brukere kan bruke for å finne hjelp. Det har veldig liten teknisk relevans.
  • Blå seksjon: Alle disse er viktige. De viser i Arduino IDE. Navn, arkitektur og versjon vil alle bli vist for alle som prøver å installere pakken. Det er her du må sette versjonsnummeret fra platforms.txt. Den andre blå delen er listen over tavler som er inkludert i pakken. Du kan ha flere tavler.
  • Grønn seksjon: Denne delen trenger ytterligere forklaring.

(Se tabell i bilder)

Når du har opprettet zip -filen, fått sjekksummen og filstørrelsen for zip -filen, kan du nå laste opp zip -filen til et sted. Du må sette den nettadressen i "url" -feltet. Hvis navnet eller noen av detaljene ovenfor er feil, kan det tilpassede kortet ikke installeres.

Sørg for å også laste opp filen package_boardname_index.json til en offentlig plassering på internett. GitHub er et godt alternativ.

Robo HAT MM1 egendefinert brettfil finner du her.

Trinn 9: Det siste trinnet - Installer ditt tilpassede bord

Det siste trinnet - Installer ditt tilpassede bord!
Det siste trinnet - Installer ditt tilpassede bord!
Det siste trinnet - Installer ditt tilpassede bord!
Det siste trinnet - Installer ditt tilpassede bord!

Alt går bra, du bør nå kunne inkludere JSON -filen i Arduino IDE og installere det tilpassede kortet.

Det er enkelt å inkludere JSON -filen! I Arduino IDE - bare gå til "File"> "Preferences" og kopier og lim inn plasseringen (URL) til package_boardname_index.json til delen "Additional Boards Manager URLs" nederst på Preferences -menyen.

(Se bilde)

Trykk deretter OK.

Kjør gjennom instruksjonene ovenfra for å installere nye brett hvis du har glemt det. Husk å se etter det egendefinerte brettet denne gangen!

(Se bilde)

For mer informasjon om hvordan du installerer nye brett: Adafruit har en flott opplæring her som forklarer hvordan du installerer Feature M0 -kortene.

Trinn 10: Konklusjon

Konklusjon
Konklusjon
Konklusjon
Konklusjon

Dette har vært morsomt å lage tilpassede Arduino -brett. Det er fortsatt mye jeg kan eksperimentere med i fremtiden (legge til flere serielle porter), men det har vært en flott læringsopplevelse!

Husk å sjekke ut Crowd Supply -kampanjen også. Den avsluttes 11. juni 2019.

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

Jeg håper dette hjalp deg, eller at du hadde det gøy å lese!

Takk!

Anbefalt: