Sommario:

Arduino IDE: creazione di schede personalizzate: 10 passaggi
Arduino IDE: creazione di schede personalizzate: 10 passaggi

Video: Arduino IDE: creazione di schede personalizzate: 10 passaggi

Video: Arduino IDE: creazione di schede personalizzate: 10 passaggi
Video: CORSO ARDUINO, #2 impariamo a conoscere il codice IN MODO ALTERNATIVO 2024, Novembre
Anonim
Arduino IDE: creazione di schede personalizzate
Arduino IDE: creazione di schede personalizzate
Arduino IDE: creazione di schede personalizzate
Arduino IDE: creazione di schede personalizzate
Arduino IDE: creazione di schede personalizzate
Arduino IDE: creazione di schede personalizzate

Negli ultimi sei mesi ho passato molto tempo a portare diverse librerie sulla scheda Robo HAT MM1 sviluppata da Robotics Masters. Questo ha portato a scoprire molto su queste librerie, su come funzionano dietro le quinte e, soprattutto, cosa fare per aggiungere nuove schede in futuro.

Questo è il primo di una serie di scritti che farò per aiutare gli altri che desiderano portare le librerie per le loro bacheche. Molte delle fonti di informazione possono essere vaghe o difficili da comprendere per gli estranei. Spero di "demistificare" e spiegare come ottenere un porto di successo per tutti.

Oggi esamineremo la piattaforma Arduino. Ha oltre 700.000 diverse varianti di schede in tutto il mondo ed è una delle piattaforme elettroniche più popolari per l'istruzione, l'industria e i produttori.

Sono riuscito a trovare solo fonti di informazioni molto limitate su come farlo dopo molte ricerche su Google. Quindi ho pensato di scrivere su come l'ho fatto in dettaglio.

Eccoci qui!

Passaggio 1: prima di iniziare

Prima di iniziare a trasferire una libreria software o un firmware sulla scheda, è necessario conoscere alcuni punti chiave sulla tecnologia che si sta utilizzando ed essere in grado di rispondere alle domande seguenti.

  1. Che processore stai usando?
  2. Che architettura usa?
  3. Ho accesso alla scheda tecnica di questo microprocessore?
  4. Esiste una scheda simile sul mercato che utilizza lo stesso microprocessore?

Questi sono molto importanti. Influirà su molti aspetti del modo in cui ti avvicini al processo di sviluppo.

Le schede Arduino utilizzano comunemente un numero limitato di tipi e architetture di processori. La più comune è la gamma ATMEGA che utilizza l'architettura AVR (Arduino Uno). Ci sono nuove generazioni di Arduino che stanno diventando più comuni utilizzando i processori SAMD (ARM) e altri processori più potenti. Quindi è importante verificare quale si sta utilizzando.

Il datasheet di un microprocessore è assolutamente vitale per garantire che la scheda risponda come previsto quando si compila il firmware. Senza di esso, non sarai in grado di impostare le corrette funzioni di uscita dei pin o configurare le porte seriali.

Una volta che hai tutte le informazioni necessarie sul processore che stai utilizzando, puoi iniziare a guardare il software e modificarlo in modo che funzioni per la tua scheda personalizzata.

Passaggio 2: Panoramica

La parte più difficile di qualsiasi progetto è trovare un buon punto di partenza. Questo non è diverso. Ho faticato a trovare buoni tutorial con abbastanza dettagli su come creare schede personalizzate per Arduino. La maggior parte dei tutorial mostra come "aggiungere una scheda personalizzata", ma non come "creare una scheda personalizzata". Ecco un breve riassunto di ciò che è coinvolto.

  1. Scarica le definizioni della scheda esistente e copia
  2. Aggiornamento dei file di definizione (variant.h, varient.cpp)
  3. Crea voce bacheca (board.txt)
  4. Aggiorna versione scheda (platform.txt)
  5. Preparazione per l'installazione (json)
  6. Installazione della scheda in Arduino IDE

Ogni passaggio verrà spiegato in dettaglio di seguito. Ci sarà anche un'ampia discussione su come ogni file interagisce tra loro per aiutare a chiarire come tutto funziona dietro l'IDE di Arduino.

Per questo tutorial, ti mostrerò come creare una scheda personalizzata per processori SAMD. Più specificamente, il SAMD21G18A - che è il microprocessore utilizzato sulla scheda Robo HAT MM1 che stavo portando.

Presumo anche che tu abbia già scaricato Arduino IDE 1.8 o successivo. Ho usato Arduino 1.8.9 al momento della scrittura.

Passaggio 3: download delle schede esistenti

Download di schede esistenti
Download di schede esistenti
Download di schede esistenti
Download di schede esistenti
Download di schede esistenti
Download di schede esistenti

Il primo passo è scaricare la scheda Arduino variante più vicina che corrisponde alla tua scheda. Per le schede SAMD, questo è Arduino Zero.

Dall'IDE di Arduino 1.6, il metodo per scaricare nuove schede nell'ambiente consiste nell'aggiungere file JSON speciali forniti dagli sviluppatori di software e quindi installare le schede personalizzate utilizzando "Boards Manager". Le versioni precedenti di Arduino IDE utilizzavano un metodo diverso di cui non parleremo oggi. Creeremo il nostro file JSON più avanti in questo tutorial, tuttavia, dobbiamo prima aggiungere la scheda Arduino Zero usando questo metodo.

Fortunatamente per noi, la scheda che vogliamo scaricare non ha bisogno di un file JSON perché il file JSON è pre-impacchettato con Arduino IDE, quindi dobbiamo solo installare la scheda da "Boards Manager".

Per fare ciò, vai su "Strumenti", quindi espandi il menu "Scheda". Nella parte superiore del menu "Board" ci sarà il "Board Manager". Fare clic su questa opzione di menu per visualizzare il Gestore schede.

(Vedi immagini)

Quando il Boards Manager viene aperto, esaminerà tutti i file JSON che ha archiviato nell'IDE di Arduino e quindi scaricherà le impostazioni dal file. Dovresti vedere un lungo elenco di schede Arduino disponibili che puoi installare.

(Vedi immagini)

Siamo interessati solo alla scheda "Arduino SAMD Boards (32-bits ARM Cortex-M0+)" per questo tutorial, ma a questo punto potresti deviare e installare la scheda di cui hai bisogno. Cerca e installa la scheda "Arduino SAMD Boards (32-bit ARM Cortex-M0+)". Questo può essere fatto facendo clic sul testo dall'elenco seguito dal pulsante "Installa" sul lato destro che apparirà dopo aver fatto clic sul testo. Ci vorranno un paio di minuti per l'installazione.

Per maggiori dettagli sull'installazione di nuove schede: Adafruit ha un ottimo tutorial qui che spiega come installare le schede Feature M0.

Ora che i file della scheda sono stati installati, siamo in grado di copiarli in modo che possano essere modificati per la tua scheda personalizzata.

Passaggio 4: trovare e copiare i file della scheda

Trovare e copiare file di bordo
Trovare e copiare file di bordo
Trovare e copiare file di bordo
Trovare e copiare file di bordo
Trovare e copiare file di bordo
Trovare e copiare file di bordo

Per Windows i file della scheda si trovano in (ricorda di cambiare nome utente con il tuo nome utente):

C:\Utenti\nomeutente\AppData\Local\Arduino15\packages

In questa cartella, devi andare un po' più a fondo per arrivare ai file che devi copiare per modificare. Per questo tutorial andremo a prendere i file della scheda Arduino Zero che verranno installati (ricordati di cambiare nome utente con il tuo nome utente):

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

Copia la cartella con il numero di versione che si trova in questa directory in una nuova cartella nella cartella Documenti o in una cartella di tua scelta. Ai fini di questo tutorial, li inserirò in una nuova cartella denominata "schede personalizzate" all'interno di Documenti.

La cartella contiene un numero di cartelle e directory. Quelli che useremo sono indicati nella tabella nello screenshot.

Passaggio 5: creazione della variante

Creazione della variante
Creazione della variante
Creazione della variante
Creazione della variante
Creazione della variante
Creazione della variante
Creazione della variante
Creazione della variante

Ora siamo pronti per iniziare a creare una voce della scheda personalizzata. Per questo tutorial, userò il Robo HAT MM1 come esempio. Come accennato in precedenza, è una scheda basata su SAMD che si avvicina di più alla build Arduino Zero.

Inizieremo andando nella cartella delle varianti e copiando la cartella arduino_zero che si trova lì. Rinomineremo la nuova variante della scheda "robohatmm1". Puoi chiamare il tuo come preferisci.

(Vedi immagine)

All'interno della cartella robohatmm1 ci saranno i due pin di cui abbiamo bisogno per iniziare a modificare: variant.cpp e variant.h. Apri entrambi.

Mi ci è voluto un po' di tempo per risolverlo, quindi lo spiegherò qui per farti risparmiare un po' di tempo. Il file variant.cpp contiene una vasta gamma di pin a cui si fa riferimento in variant.h. Tutti i riferimenti ai pin in variant.h sono un riferimento alla configurazione dei pin in una posizione particolare nell'array variant.cpp.

(Vedi Screenshot con due file)

Quindi, la maggior parte delle modifiche avverrà in entrambi questi file, ma è necessario assicurarsi che se si modifica l'ordine dei pin in variants.cpp, è necessario modificare i riferimenti nel file di intestazione (variants.h). Per il Robo HAT MM1, avevo solo bisogno di cambiare alcuni pin e funzioni. Questo è stato fatto in varianti.h. Ho aggiunto alcuni nuovi pin PWM poiché SAMD21 è in grado di gestire 12 canali PWM. Ho anche aggiunto alcuni nomi per servi, segnali (invece di ADC/digitale) e mappatura personalizzata alle funzioni giuste, come SPI, UART e I2C.

La cosa importante da notare è ricontrollare che i riferimenti all'array che usi per le funzioni delineate in variants.h corrispondano a quelli del pin in varaints.cpp, che ora esamineremo.

Variants.cpp è un file molto potente e importante. Fa tutto il duro lavoro di impostare i pin in modo che corrispondano alle impostazioni hardware. Il modo più semplice per spiegarlo è con un esempio e una spiegazione di ogni parte.

(Vedi tabella nello screenshot)

Esempio (estratto da variants.cpp)

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

Questo è il primo pin nell'array variants.cpp per Robo HAT MM1. La tabella della scheda tecnica è stata fornita come immagine (tabella grigia).

(Vedi immagini)

Questo particolare pin viene utilizzato per la funzione pin dati I2C. Dando un'occhiata alla tabella, possiamo vedere che questo pin può essere utilizzato come pin SDA I2C (buon inizio!). Il pin è chiamato "PA22" che è l'abbreviazione di PORTA sul pin 22. Immediatamente possiamo impostare la PORT e il numero di pin per questo pin.

La prossima cosa che dobbiamo fare è impostare il pin come porta di comunicazione seriale. Il pin ha la comunicazione seriale disponibile tramite la funzione C (PIO_SERCOM) utilizzando SERCOM 3 e D utilizzando SERCOM5 (PIO_SERCOM_ALT). Ai fini del Robo HAT MM1, utilizziamo SERCOM3 per la comunicazione I2C. Questo è sulla funzione C; alias. PIO_SERCOM per variants.cpp.

Poiché intendiamo utilizzare questo pin solo come SDA I2C, non è necessario impostare nessuna delle altre funzioni. Possono essere tutti impostati come opzioni "No" o "No" dalla tabella precedente. Tuttavia, se volessimo utilizzare le altre funzioni, potremmo esaminare il foglio dati e inserirle tutte negli spazi corretti. È tutto nella scheda tecnica.

La modifica dei file delle varianti può richiedere del tempo. Fai attenzione e controlla sempre tre volte.

Passaggio 6: creare una definizione della scheda

Crea una definizione del tabellone
Crea una definizione del tabellone

Una volta che hai i file delle varianti pronti, dovrebbe essere semplice da qui. La maggior parte del lavoro consisterà nel copiare e incollare o modificare e aggiornare i file.

A partire da board.txt.

(Vedi immagine)

Ti consigliamo di copiare e incollare una definizione di scheda che è già presente. Consiglierei di nuovo Arduino Zero.

Per semplicità, cambia solo il nome della scheda (prima riga), usb_product, usb_manufacturer e variant (robohat). Puoi personalizzare gli altri argomenti in seguito in base alle tue esigenze, come un bootloader personalizzato o diversi VID/PID USB per identificare la tua scheda.

La variante della scheda deve corrispondere al nome dato alla cartella creata all'inizio. Per questo tutorial l'ho chiamato "robohatmm1".

Si consiglia inoltre di modificare la prima parte di ogni riga in modo che corrisponda al nome della scheda. Nello screenshot è stato modificato in "robo_hat_mm1". Dovresti scegliere un nome per la tua scheda con lo stesso formato.

Questo è tutto per board.txt a meno che tu non voglia apportare ulteriori modifiche menzionate sopra in seguito.

Passaggio 7: aggiornamento della versione della scheda

Aggiorna la versione della scheda
Aggiorna la versione della scheda

In platform.txt cambia il nome con il nome della tua bacheca personalizzata. Cambia anche il numero di versione. Ricorda su cosa lo hai impostato, ne avremo bisogno in seguito.

Passaggio 8: creare il file del pacchetto JSON

Crea file pacchetto JSON
Crea file pacchetto JSON
Crea file pacchetto JSON
Crea file pacchetto JSON

Per installare la tua scheda in Arduino IDE, dovrai creare un file JSON che importerai. Il file JSON indica all'IDE di Arduino dove trovare i file per installare la scheda, quali pacchetti aggiuntivi sono necessari e alcuni altri bit di metadati.

È molto importante salvare questo file al di fuori della cartella in cui abbiamo appena lavorato.

La maggior parte del file può essere copiata e incollata nel tuo. Dovrai solo modificare la sezione "bacheche" e gli altri metadati nella parte superiore del file. Vedi screenshot per cosa dovrebbe essere aggiornato.

(Vedi immagine)

  • Sezione rossa: si tratta di metadati che gli utenti possono utilizzare per trovare aiuto. Ha poca rilevanza tecnica.
  • Sezione blu: tutti questi sono importanti. Mostrano nell'IDE di Arduino. Nome, Architettura e Versione verranno tutti mostrati a chiunque stia tentando di installare il pacchetto. Qui è dove devi inserire il numero di versione da platform.txt. La seconda sezione blu è l'elenco delle schede incluse nel pacchetto. Potresti avere più schede.
  • Sezione verde: questa sezione necessita di ulteriori spiegazioni.

(Vedi tabella nelle immagini)

Dopo aver creato il file zip, ottenuto il checksum del file zip e la dimensione del file, ora puoi caricare il file zip in una posizione. Dovrai inserire quell'URL nel campo "url". Se il nome o uno dei dettagli di cui sopra non sono corretti, la tua scheda personalizzata non verrà installata.

Assicurati di caricare anche il file package_boardname_index.json in una posizione pubblica su Internet. GitHub è una buona opzione.

Il file della scheda personalizzata Robo HAT MM1 può essere trovato qui.

Passaggio 9: il passaggio finale: installa la tua scheda personalizzata

Il passaggio finale: installa la tua scheda personalizzata!
Il passaggio finale: installa la tua scheda personalizzata!
Il passaggio finale: installa la tua scheda personalizzata!
Il passaggio finale: installa la tua scheda personalizzata!

Tutto sta andando bene, ora dovresti essere in grado di includere il tuo file JSON nell'IDE di Arduino e installare la tua scheda personalizzata.

Includere il file JSON è facile! In Arduino IDE - vai su "File"> "Preferenze" e copia e incolla la posizione (URL) del tuo package_boardname_index.json nella sezione "Ulteriori URL di Boards Manager" nella parte inferiore del menu Preferenze.

(Vedi immagine)

Quindi premi OK.

Esegui le istruzioni dall'alto per l'installazione di nuove schede se l'hai dimenticato. Ricordati di cercare la tua tavola personalizzata questa volta!

(Vedi immagine)

Per maggiori dettagli sull'installazione di nuove schede: Adafruit ha un ottimo tutorial qui che spiega come installare le schede Feature M0.

Passaggio 10: conclusione

Conclusione
Conclusione
Conclusione
Conclusione

È stato divertente creare schede Arduino personalizzate. C'è ancora molto da sperimentare per me in futuro (aggiungendo porte seriali aggiuntive) ma è stata una grande esperienza di apprendimento!

Assicurati di controllare anche la campagna Crowd Supply. Termina l'11 giugno 2019.

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

Spero che questo ti abbia aiutato o che ti sia divertito a leggere insieme!

Grazie!

Consigliato: