Tabla de contenido:

Arduino IDE: Creación de placas personalizadas: 10 pasos
Arduino IDE: Creación de placas personalizadas: 10 pasos

Video: Arduino IDE: Creación de placas personalizadas: 10 pasos

Video: Arduino IDE: Creación de placas personalizadas: 10 pasos
Video: 💡Cómo PROGRAMAR arduino UNO desde CERO【 2021 】 - Capítulo #02🔋 2024, Mes de julio
Anonim
IDE de Arduino: creación de placas personalizadas
IDE de Arduino: creación de placas personalizadas
IDE de Arduino: creación de placas personalizadas
IDE de Arduino: creación de placas personalizadas
IDE de Arduino: creación de placas personalizadas
IDE de Arduino: creación de placas personalizadas

Durante los últimos seis meses, he pasado mucho tiempo portando diferentes bibliotecas a la placa Robo HAT MM1 desarrollada por Robotics Masters. Esto ha llevado a descubrir mucho sobre estas bibliotecas, cómo funcionan entre bastidores y, lo que es más importante, qué hacer para agregar nuevos tableros en el futuro.

Este es el primero de una serie de artículos que haré para ayudar a otros que deseen portar bibliotecas para sus tableros. Muchas de las fuentes de información pueden ser vagas o difíciles de entender para los extraños. Espero "desmitificar" y explicar cómo lograr un puerto exitoso para todos.

Hoy, veremos la plataforma Arduino. Tiene más de 700, 000 variantes de placa diferentes en todo el mundo y es una de las plataformas electrónicas más populares para la educación, la industria y los fabricantes.

Solo pude encontrar fuentes de información muy limitadas sobre cómo hacer esto después de muchas búsquedas en Google. Así que pensé en escribir sobre cómo lo hice en detalle.

¡Aquí vamos!

Paso 1: antes de comenzar

Antes de comenzar a transferir una biblioteca de software o firmware a su placa, debe conocer algunos puntos clave sobre la tecnología que está utilizando y poder responder las preguntas a continuación.

  1. ¿Qué procesador estás usando?
  2. ¿Qué arquitectura utiliza?
  3. ¿Tengo acceso a la hoja de datos de este microprocesador?
  4. ¿Existe una placa similar en el mercado que utilice el mismo microprocesador?

Estos son muy importantes. Impactará en muchos aspectos de cómo aborda el proceso de desarrollo.

Las placas Arduino suelen utilizar un número limitado de tipos de procesadores y arquitecturas. El más común es la gama ATMEGA que utiliza la arquitectura AVR (Arduino Uno). Hay nuevas generaciones de Arduinos que se están volviendo más comunes utilizando los procesadores SAMD (ARM) y otros procesadores más potentes. Por eso es importante comprobar cuál está utilizando.

La hoja de datos de un microprocesador es absolutamente vital para garantizar que la placa responda como se espera cuando compila el firmware. Sin él, no podrá establecer las funciones de salida de pin correctas ni configurar los puertos serie.

Una vez que tenga toda la información que necesita sobre el procesador que está utilizando, puede comenzar a mirar el software y modificarlo para que funcione con su placa personalizada.

Paso 2: descripción general

La parte más difícil de cualquier proyecto es encontrar un buen punto de partida. Esto no es diferente. Me costó encontrar buenos tutoriales con suficientes detalles sobre cómo crear placas personalizadas para Arduino. La mayoría de los tutoriales le muestran cómo "agregar un tablero personalizado", pero no cómo "crear un tablero personalizado". Aquí hay un breve resumen de lo que está involucrado.

  1. Descargue las definiciones de placa existentes y cópielas
  2. Actualización de archivos de definición (variant.h, varient.cpp)
  3. Crear entrada en el tablero (board.txt)
  4. Actualizar la versión de la placa (platform.txt)
  5. Preparación para la instalación (json)
  6. Instalación de la placa en Arduino IDE

Cada paso se explicará en detalle a continuación. También habrá una discusión extensa sobre cómo cada archivo interactúa entre sí para ayudar a aclarar cómo funciona todo detrás del IDE de Arduino.

Para este tutorial, le mostraré cómo crear una placa personalizada para procesadores SAMD. Más específicamente, el SAMD21G18A, que es el microprocesador utilizado en la placa Robo HAT MM1 que estaba transfiriendo.

También supongo que ya tiene Arduino IDE 1.8 o posterior descargado. Usé Arduino 1.8.9 en el momento de escribir este artículo.

Paso 3: descarga de placas existentes

Descarga de tableros existentes
Descarga de tableros existentes
Descarga de tableros existentes
Descarga de tableros existentes
Descarga de tableros existentes
Descarga de tableros existentes

El primer paso es descargar la placa Arduino variante más cercana que coincida con su placa. Para las placas SAMD, este es el Arduino Zero.

Desde Arduino IDE 1.6, el método para descargar nuevas placas en el entorno ha sido agregar archivos JSON especiales que proporcionan los desarrolladores de software y luego instalar las placas personalizadas utilizando el "Administrador de placas". Las versiones anteriores de Arduino IDE usaban un método diferente que no discutiremos hoy. Crearemos nuestro propio archivo JSON más adelante en este tutorial, sin embargo, primero debemos agregar la placa Arduino Zero usando este método.

Por suerte para nosotros, la placa que queremos descargar no necesita un archivo JSON porque el archivo JSON está pre-empaquetado con Arduino IDE, por lo que solo necesitamos instalar la placa desde “Boards Manager”.

Para hacer esto, vaya a "Herramientas" y luego expanda el menú "Tablero". En la parte superior del menú "Tablero" estará el "Administrador de tableros". Haga clic en esta opción de menú para abrir el Administrador de tableros.

(Ver imágenes)

Cuando se abre Boards Manager, verá todos los archivos JSON que ha almacenado en el IDE de Arduino y luego descargará la configuración del archivo. Debería ver una larga lista de placas Arduino disponibles que puede instalar.

(Ver imágenes)

Solo estamos interesados en la placa “Arduino SAMD Boards (ARM Cortex-M0 + de 32 bits)” para este tutorial, pero puede desviarse e instalar la placa que necesita en este momento. Busque e instale la placa “Arduino SAMD Boards (ARM Cortex-M0 + de 32 bits)”. Esto se puede hacer haciendo clic en el texto de la lista seguido del botón "Instalar" en el lado derecho que aparecerá después de hacer clic en el texto. La instalación tardará un par de minutos.

Para obtener más detalles sobre la instalación de nuevas placas: Adafruit tiene un gran tutorial aquí que explica cómo instalar sus placas Feature M0.

Ahora que se han instalado los archivos de la placa, podemos copiarlos para que se puedan modificar para su placa personalizada.

Paso 4: buscar y copiar archivos de tablero

Búsqueda y copia de archivos de tablero
Búsqueda y copia de archivos de tablero
Búsqueda y copia de archivos de tablero
Búsqueda y copia de archivos de tablero
Búsqueda y copia de archivos de tablero
Búsqueda y copia de archivos de tablero

Para Windows, los archivos de tablero se encuentran en (recuerde cambiar el nombre de usuario por su nombre de usuario):

C: / Users / username / AppData / Local / Arduino15 / packages

En esta carpeta, debe profundizar un poco más para llegar a los archivos que necesita copiar para modificar. Para este tutorial, obtendremos los archivos de la placa Arduino Zero que se instalarán en (recuerde cambiar el nombre de usuario por su nombre de usuario):

C: / Users / username / AppData / Local / Arduino15 / packages / arduino / hardware / samd

Copie la carpeta con el número de versión ubicada en este directorio a una nueva carpeta en su carpeta Documentos o carpeta de su elección. Para los propósitos de este tutorial, los colocaré en una nueva carpeta llamada "tableros personalizados" dentro de Documentos.

La carpeta contiene varias carpetas y directorios. Los que usaremos se indican en la tabla de la captura de pantalla.

Paso 5: creación de variante

Creando variante
Creando variante
Creando variante
Creando variante
Creando variante
Creando variante
Creando variante
Creando variante

Ahora estamos listos para comenzar a crear una entrada de tablero personalizada. Para este tutorial, usaré el Robo HAT MM1 como ejemplo. Como se mencionó anteriormente, es una placa basada en SAMD que se adapta más a la compilación Arduino Zero.

Comenzaremos yendo a la carpeta de variantes y copiando la carpeta arduino_zero que se encuentra allí. Cambiaremos el nombre de la nueva variante de placa "robohatmm1". Puedes llamar al tuyo como quieras.

(Ver imagen)

Dentro de la carpeta robohatmm1 estarán los dos pines que necesitamos para comenzar a editar: variant.cpp y variant.h. Abre ambos.

Esto me tomó un tiempo resolverlo, así que lo explicaré aquí para ahorrarle algo de tiempo. El archivo variant.cpp contiene una gran variedad de pines a los que se hace referencia en variant.h. Todas las referencias de pines en variant.h son una referencia a la configuración de pines en una posición particular en la matriz variant.cpp.

(Ver captura de pantalla con dos archivos)

Por lo tanto, la mayoría de sus ediciones se producirán en ambos archivos, pero debe asegurarse de que si cambia el orden de los pines en variantes.cpp, debe cambiar las referencias en el archivo de encabezado (variantes.h). Para el Robo HAT MM1, solo necesitaba cambiar algunos de los pines y funciones. Esto se hizo en variantes. H. Agregué algunos pines PWM nuevos ya que el SAMD21 puede manejar 12 canales PWM. También agregué algunos nombres para Servos, Signals (en lugar de ADC / Digital) y mapeo personalizado a las funciones correctas, como SPI, UART e I2C.

Lo importante a tener en cuenta es verificar que las referencias de matriz que usa para las funciones descritas en variantes.h coincidan con las del pin en varaints.cpp, que ahora veremos.

Variants.cpp es un archivo muy poderoso e importante. Hace todo el trabajo duro de configurar los pines para que coincidan con la configuración del hardware. La forma más sencilla de explicar esto es con un ejemplo y una explicación de cada parte.

(Ver tabla en captura de pantalla)

Ejemplo (extracto de variantes.cpp)

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

Este es el primer pin en la matriz variantes.cpp para el Robo HAT MM1. La tabla de la hoja de datos se ha proporcionado como una imagen (tabla gris).

(Ver imágenes)

Este pin en particular se utiliza para la función Pin de datos I2C. Echando un vistazo a la tabla, podemos ver que este pin se puede utilizar como pin I2C SDA (¡buen comienzo!). El pin se llama "PA22" que es la abreviatura de PORTA en el pin 22. De inmediato podemos establecer el PORT y el número de pin para este pin.

Lo siguiente que debemos hacer es configurar el pin como un puerto de comunicación en serie. El pin tiene comunicación serial disponible a través de la función C (PIO_SERCOM) usando SERCOM 3 y D usando SERCOM5 (PIO_SERCOM_ALT). Para los propósitos del Robo HAT MM1, estamos usando SERCOM3 para la comunicación I2C. Esto está en la función C; alias. PIO_SERCOM para variantes.cpp.

Dado que planeamos usar este pin solo como un I2C SDA, no es necesario configurar ninguna de las otras funciones. Todas se pueden configurar como opciones "No" o "No" de la tabla anterior. Sin embargo, si quisiéramos usar las otras funciones, podríamos revisar la hoja de datos y ponerlas todas en los espacios correctos. Todo está en la hoja de datos.

La modificación de los archivos de variantes puede llevar algún tiempo. Tenga cuidado y siempre verifique tres veces.

Paso 6: Cree una definición de tablero

Crear una definición de tablero
Crear una definición de tablero

Una vez que tenga sus archivos de variantes listos, debería ser sencillo desde aquí. La mayor parte del trabajo consistirá en copiar y pegar o modificar y actualizar archivos.

Comenzando con boards.txt.

(Ver imagen)

Querrá copiar y pegar una definición de tablero que ya está allí. Recomendaría el Arduino Zero nuevamente.

Para simplificar, solo cambie el nombre de la placa (primera línea), usb_product, usb_manufacturer y variant (robohat). Puede personalizar los otros argumentos más adelante para que se adapten a sus necesidades, como un cargador de arranque personalizado o diferentes VID / PID USB para identificar su placa.

La variante del tablero debe coincidir con el nombre dado a la carpeta creada al principio. Para este tutorial lo llamé "robohatmm1".

También se recomienda cambiar la primera parte de cada línea para que coincida con el nombre de su tablero. En la captura de pantalla, se ha cambiado a "robo_hat_mm1". Debes elegir un nombre para tu tablero con el mismo formato.

Eso es todo para boards.txt a menos que desee realizar más modificaciones mencionadas anteriormente más adelante.

Paso 7: Actualizar la versión de la placa

Actualizar la versión de la placa
Actualizar la versión de la placa

En platform.txt cambie el nombre por el nombre de su tablero personalizado. También cambie el número de versión. Recuerde en qué lo configuró, lo necesitaremos más adelante.

Paso 8: Crear archivo de paquete JSON

Crear archivo de paquete JSON
Crear archivo de paquete JSON
Crear archivo de paquete JSON
Crear archivo de paquete JSON

Para instalar su placa en Arduino IDE, deberá crear un archivo JSON que importará. El archivo JSON le dice a Arduino IDE dónde obtener los archivos para instalar la placa, qué paquetes adicionales se necesitan y algunos otros bits de metadatos.

Es muy importante que guarde este archivo fuera de la carpeta en la que acabamos de trabajar.

La mayor parte del archivo se puede copiar y pegar en su archivo. Solo necesitará cambiar la sección "tableros" y los otros metadatos en la parte superior del archivo. Vea la captura de pantalla para ver lo que debe actualizarse.

(Ver imagen)

  • Sección roja: son metadatos que los usuarios pueden usar para encontrar ayuda. Tiene muy poca relevancia técnica.
  • Sección azul: todos estos son importantes. Se muestran en el IDE de Arduino. El nombre, la arquitectura y la versión se mostrarán a cualquiera que intente instalar el paquete. Aquí es donde debe ingresar el número de versión de platform.txt. La segunda sección azul es la lista de tableros que se incluyen en el paquete. Podrías tener varios tableros.
  • Sección verde: esta sección necesita una explicación más detallada.

(Ver tabla en imágenes)

Una vez que haya creado el archivo zip, haya obtenido la suma de verificación del archivo zip y el tamaño del archivo, ahora puede cargar el archivo zip en una ubicación. Deberá poner esa URL en el campo "URL". Si el nombre o cualquiera de los detalles anteriores son incorrectos, su placa personalizada no se instalará.

Asegúrese de cargar también su archivo package_boardname_index.json en una ubicación pública en Internet. GitHub es una buena opción.

El archivo de placa personalizada Robo HAT MM1 se puede encontrar aquí.

Paso 9: El paso final: ¡instale su placa personalizada

El paso final: ¡instale su tablero personalizado!
El paso final: ¡instale su tablero personalizado!
El paso final: ¡instale su tablero personalizado!
El paso final: ¡instale su tablero personalizado!

Todo va bien, ahora debería poder incluir su archivo JSON en Arduino IDE e instalar su placa personalizada.

¡Incluir el archivo JSON es fácil! En Arduino IDE, simplemente vaya a "Archivo"> "Preferencias" y copie y pegue la ubicación (URL) de su package_boardname_index.json en la sección "URL adicionales del administrador de tableros" en la parte inferior del menú Preferencias.

(Ver imagen)

Luego presiona OK.

Siga las instrucciones de arriba para instalar nuevas placas si las ha olvidado. ¡Recuerda buscar tu tabla personalizada esta vez!

(Ver imagen)

Para obtener más detalles sobre la instalación de nuevas placas: Adafruit tiene un gran tutorial aquí que explica cómo instalar sus placas Feature M0.

Paso 10: Conclusión

Conclusión
Conclusión
Conclusión
Conclusión

Ha sido divertido crear placas Arduino personalizadas. Todavía me queda mucho por experimentar en el futuro (agregando puertos serie adicionales), ¡pero ha sido una gran experiencia de aprendizaje!

Asegúrese de consultar también la campaña Crowd Supply. Finaliza el 11 de junio de 2019.

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

¡Espero que esto te haya ayudado o que te hayas divertido leyendo!

¡Gracias!

Recomendado: