Table des matières:

Arduino IDE : Création de cartes personnalisées : 10 étapes
Arduino IDE : Création de cartes personnalisées : 10 étapes

Vidéo: Arduino IDE : Création de cartes personnalisées : 10 étapes

Vidéo: Arduino IDE : Création de cartes personnalisées : 10 étapes
Vidéo: Comment créer ses propres circuits imprimés ! (PCB) 2024, Novembre
Anonim
Arduino IDE: créer des cartes personnalisées
Arduino IDE: créer des cartes personnalisées
Arduino IDE: créer des cartes personnalisées
Arduino IDE: créer des cartes personnalisées
Arduino IDE: créer des cartes personnalisées
Arduino IDE: créer des cartes personnalisées

Au cours des six derniers mois, j'ai passé beaucoup de temps à porter différentes bibliothèques sur la carte Robo HAT MM1 développée par Robotics Masters. Cela a conduit à découvrir beaucoup de choses sur ces bibliothèques, comment elles fonctionnent dans les coulisses et, surtout, que faire pour ajouter de nouvelles cartes à l'avenir.

C'est le premier d'une série d'articles que je vais faire pour aider les autres qui souhaitent porter des bibliothèques pour leurs cartes. De nombreuses sources d'information peuvent être vagues ou difficiles à comprendre pour des personnes extérieures. J'espère « démystifier » et expliquer comment réussir un portage pour tout le monde.

Aujourd'hui, nous allons examiner la plate-forme Arduino. Il compte plus de 700 000 variantes de cartes différentes dans le monde et est l'une des plates-formes électroniques les plus populaires pour l'éducation, l'industrie et les fabricants.

Je n'ai pu trouver que des sources d'informations très limitées sur la façon de procéder après de nombreuses recherches Google. J'ai donc pensé que j'écrirais comment je l'ai fait en détail.

Nous y voilà!

Étape 1: Avant de commencer

Avant de commencer à porter une bibliothèque de logiciels ou un firmware sur votre carte, vous devez connaître quelques points clés sur la technologie que vous utilisez et être capable de répondre aux questions ci-dessous.

  1. Quel processeur utilisez-vous ?
  2. Quelle architecture utilise-t-il ?
  3. Ai-je accès à la fiche technique de ce microprocesseur ?
  4. Existe-t-il une carte similaire sur le marché qui utilise le même microprocesseur ?

Ceux-ci sont très importants. Cela aura un impact sur de nombreux aspects de la façon dont vous abordez le processus de développement.

Les cartes Arduino utilisent généralement un nombre limité de types de processeurs et d'architectures. La plus courante étant la gamme ATMEGA utilisant l'architecture AVR (Arduino Uno). Il existe de nouvelles générations d'Arduinos qui utilisent de plus en plus les processeurs SAMD (ARM) et d'autres processeurs plus puissants. Il est donc important de vérifier lequel vous utilisez.

La fiche technique d'un microprocesseur est absolument vitale pour garantir que la carte réponde comme prévu lorsque vous compilez le firmware. Sans cela, vous ne pourrez pas définir les fonctions de sortie de broche correctes ou configurer les ports série.

Une fois que vous avez toutes les informations dont vous avez besoin sur le processeur que vous utilisez, vous pouvez commencer à regarder le logiciel et le modifier pour qu'il fonctionne pour votre carte personnalisée.

Étape 2: Aperçu

La partie la plus difficile de tout projet est de trouver un bon point de départ. Ce n'est pas différent. J'ai eu du mal à trouver de bons tutoriels avec suffisamment de détails sur la création de cartes personnalisées pour Arduino. La plupart des tutoriels vous montrent comment « ajouter un tableau personnalisé » mais pas comment « créer un tableau personnalisé ». Voici un bref résumé de ce dont il s'agit.

  1. Télécharger les définitions de cartes existantes et les copier
  2. Mise à jour des fichiers de définition (variant.h, varient.cpp)
  3. Créer une entrée de tableau (board.txt)
  4. Mettre à jour la version de la carte (platform.txt)
  5. Préparation de l'installation (json)
  6. Installation de la carte dans Arduino IDE

Chaque étape sera expliquée en détail ci-dessous. Il y aura également une discussion approfondie sur la façon dont chaque fichier interagit les uns avec les autres pour aider à clarifier comment tout fonctionne derrière l'IDE Arduino.

Pour ce tutoriel, je vais vous montrer comment créer une carte personnalisée pour les processeurs SAMD. Plus précisément, le SAMD21G18A - qui est le microprocesseur utilisé sur la carte Robo HAT MM1 que je portais.

Je suppose également que vous avez déjà téléchargé Arduino IDE 1.8 ou une version ultérieure. J'ai utilisé Arduino 1.8.9 au moment de la rédaction.

Étape 3: Téléchargement des cartes existantes

Téléchargement de cartes existantes
Téléchargement de cartes existantes
Téléchargement de cartes existantes
Téléchargement de cartes existantes
Téléchargement de cartes existantes
Téléchargement de cartes existantes

La première étape consiste à télécharger la variante de carte Arduino la plus proche qui correspond à votre carte. Pour les cartes SAMD, il s'agit de l'Arduino Zero.

Depuis Arduino IDE 1.6, la méthode de téléchargement de nouvelles cartes dans l'environnement consiste à ajouter des fichiers JSON spéciaux fournis par les développeurs de logiciels, puis à installer les cartes personnalisées à l'aide du « Boards Manager ». Les versions précédentes d'Arduino IDE utilisaient une méthode différente dont nous ne parlerons pas aujourd'hui. Nous allons créer notre propre fichier JSON plus tard dans ce didacticiel, cependant, nous devons d'abord ajouter la carte Arduino Zero en utilisant cette méthode.

Heureusement pour nous, la carte que nous voulons télécharger n'a pas besoin d'un fichier JSON car le fichier JSON est pré-regroupé avec Arduino IDE - il nous suffit donc d'installer la carte à partir de "Boards Manager".

Pour cela, allez dans « Outils » puis développez le menu « Tableau ». En haut du menu « Board » se trouve le « Gestionnaire des tableaux ». Cliquez sur cette option de menu pour afficher le gestionnaire de cartes.

(Voir images)

Lorsque le gestionnaire de cartes est ouvert, il examinera tous les fichiers JSON qu'il a stockés dans l'IDE Arduino, puis téléchargera les paramètres à partir du fichier. Vous devriez voir une longue liste de cartes Arduino disponibles que vous pouvez installer.

(Voir images)

Nous ne sommes intéressés que par la carte "Arduino SAMD Boards (32 bits ARM Cortex-M0+)" pour ce tutoriel, mais vous pouvez dévier et installer la carte dont vous avez besoin à ce stade. Veuillez rechercher et installer la carte « Arduino SAMD Boards (32 bits ARM Cortex-M0+) ». Cela peut être fait en cliquant sur le texte de la liste suivi du bouton "Installer" sur le côté droit qui apparaîtra après avoir cliqué sur le texte. L'installation prendra quelques minutes.

Pour plus de détails sur l'installation de nouvelles cartes: Adafruit a un excellent tutoriel ici qui explique comment installer ses cartes Feature M0.

Maintenant que les fichiers du tableau ont été installés, nous sommes en mesure de les copier afin qu'ils puissent être modifiés pour votre tableau personnalisé.

Étape 4: Recherche et copie des fichiers de carte

Recherche et copie de fichiers de carte
Recherche et copie de fichiers de carte
Recherche et copie de fichiers de carte
Recherche et copie de fichiers de carte
Recherche et copie de fichiers de carte
Recherche et copie de fichiers de carte

Pour Windows, les fichiers du tableau se trouvent (n'oubliez pas de changer le nom d'utilisateur en votre nom d'utilisateur):

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

Dans ce dossier, vous devez aller un peu plus loin pour accéder aux fichiers que vous devez copier pour modifier. Pour ce tutoriel, nous irons chercher les fichiers de la carte Arduino Zero qui seront installés sur (n'oubliez pas de changer le nom d'utilisateur en votre nom d'utilisateur):

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

Copiez le dossier numéroté de version situé dans ce répertoire dans un nouveau dossier dans votre dossier Documents ou le dossier de votre choix. Pour les besoins de ce didacticiel, je les placerai dans un nouveau dossier nommé « tableaux personnalisés » à l'intérieur de Documents.

Le dossier contient un certain nombre de dossiers et de répertoires. Ceux que nous utiliserons sont indiqués dans le tableau de la capture d'écran.

Étape 5: Création d'une variante

Création d'une variante
Création d'une variante
Création d'une variante
Création d'une variante
Création d'une variante
Création d'une variante
Création d'une variante
Création d'une variante

Nous sommes maintenant prêts à commencer à créer une entrée de tableau personnalisée. Pour ce tutoriel, j'utiliserai le Robo HAT MM1 comme exemple. Comme mentionné précédemment, il s'agit d'une carte basée sur SAMD qui correspond le mieux à la version Arduino Zero.

Nous allons commencer par aller dans le dossier variants et copier le dossier arduino_zero qui s'y trouve. Nous allons renommer la nouvelle variante de carte « robohatmm1 ». Vous pouvez appeler le vôtre comme vous voulez.

(Voir image)

À l'intérieur du dossier robohatmm1 se trouvent les deux broches dont nous avons besoin pour commencer à éditer: variant.cpp et variant.h. Ouvrez-les tous les deux.

Cela m'a pris un certain temps à travailler, je vais donc l'expliquer ici pour vous faire gagner du temps. Le fichier variant.cpp contient un très grand nombre de broches référencées dans variant.h. Toutes les références de broche dans variant.h sont une référence à la configuration de broche à une position particulière dans le tableau variant.cpp.

(Voir Capture d'écran avec deux fichiers)

Ainsi, la plupart de vos modifications se produiront dans ces deux fichiers, mais vous devez vous assurer que si vous modifiez l'ordre des broches dans variants.cpp, vous devez modifier les références dans le fichier d'en-tête (variants.h). Pour le Robo HAT MM1, je n'avais besoin que de changer certaines broches et fonctions. Cela a été fait dans variants.h. J'ai ajouté de nouvelles broches PWM car le SAMD21 est capable de gérer 12 canaux PWM. J'ai également ajouté des noms pour les servos, les signaux (au lieu de ADC/Digital) et le mappage personnalisé aux bonnes fonctions - telles que SPI, UART et I2C.

La chose importante à noter est de vérifier que les références de tableau que vous utilisez pour les fonctions décrites dans variants.h correspondent à celles de la broche dans varaints.cpp - que nous allons maintenant examiner.

Variants.cpp est un fichier très puissant et important. Il fait tout le travail acharné de réglage des broches pour qu'elles correspondent aux paramètres matériels. La façon la plus simple d'expliquer cela est avec un exemple et une explication de chaque partie.

(Voir le tableau dans la capture d'écran)

Exemple (extrait de variants.cpp)

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

Il s'agit de la première broche du tableau variants.cpp pour le Robo HAT MM1. Le tableau de la fiche technique a été fourni sous forme d'image (tableau gris).

(Voir images)

Cette broche particulière est utilisée pour la fonction de broche de données I2C. En regardant le tableau, nous pouvons voir que cette broche est capable d'être utilisée comme une broche I2C SDA (bon début !). La broche est nommée "PA22" qui est l'abréviation de PORTA sur la broche 22. Tout de suite, nous pouvons définir le PORT et le numéro de broche pour cette broche.

La prochaine chose que nous devons faire est de définir la broche comme port de communication série. La broche a une communication série disponible via la fonction C (PIO_SERCOM) en utilisant SERCOM 3 et D en utilisant SERCOM5 (PIO_SERCOM_ALT). Pour les besoins du Robo HAT MM1, nous utilisons SERCOM3 pour la communication I2C. C'est sur la fonction C; alias. PIO_SERCOM pour les variantes.cpp.

Étant donné que nous prévoyons d'utiliser cette broche uniquement en tant que SDA I2C, il n'est pas nécessaire de définir les autres fonctions. Elles peuvent toutes être définies comme des options « Non » ou « Non » dans le tableau précédent. Cependant, si nous voulions utiliser les autres fonctions, nous pourrions parcourir la feuille de données et les mettre toutes dans les bons espaces. Tout est dans la fiche technique.

La modification des fichiers de variantes peut prendre un certain temps. Soyez prudent et vérifiez toujours trois fois.

Étape 6: Créer une définition de carte

Créer une définition de tableau
Créer une définition de tableau

Une fois que vos fichiers de variantes sont prêts, cela devrait être simple à partir d'ici. La plupart du travail consistera à copier et coller ou à modifier et à mettre à jour des fichiers.

En commençant par boards.txt.

(Voir image)

Vous voudrez copier et coller une définition de tableau qui est déjà là. Je recommanderais à nouveau l'Arduino Zero.

Pour plus de simplicité, modifiez uniquement le nom de la carte (première ligne), usb_product, usb_manufacturer et la variante (robohat). Vous pouvez personnaliser les autres arguments plus tard en fonction de vos besoins, comme un chargeur de démarrage personnalisé ou différents VID/PID USB pour identifier votre carte.

La variante de carte doit correspondre au nom donné au dossier créé au départ. Pour ce tutoriel, je l'ai appelé 'robohatmm1'.

Il serait également recommandé de modifier la première partie de chaque ligne pour qu'elle corresponde au nom de votre forum. Dans la capture d'écran, il a été remplacé par « robo_hat_mm1 ». Vous devez choisir un nom pour votre tableau avec le même format.

C'est tout pour boards.txt à moins que vous ne vouliez faire d'autres modifications mentionnées ci-dessus plus tard.

Étape 7: Mettre à jour la version de la carte

Mettre à jour la version de la carte
Mettre à jour la version de la carte

Dans platform.txt, remplacez le nom par le nom de votre tableau personnalisé. Modifiez également le numéro de version. N'oubliez pas ce que vous avez défini, nous en aurons besoin plus tard.

Étape 8: Créer un fichier de package JSON

Créer un fichier de package JSON
Créer un fichier de package JSON
Créer un fichier de package JSON
Créer un fichier de package JSON

Afin d'installer votre carte dans Arduino IDE, vous devrez créer un fichier JSON que vous importerez. Le fichier JSON indique à Arduino IDE où obtenir les fichiers pour installer la carte, quels packages supplémentaires sont nécessaires et quelques autres bits de métadonnées.

Il est très important que vous sauvegardiez ce fichier en dehors du dossier dans lequel nous venons de travailler.

La plupart des fichiers peuvent être copiés et collés dans le vôtre. Vous n'aurez qu'à modifier la section « tableaux » et les autres métadonnées en haut du fichier. Voir capture d'écran pour ce qui devrait être mis à jour.

(Voir image)

  • Section rouge: il s'agit de métadonnées que les utilisateurs peuvent utiliser pour trouver de l'aide. Il a très peu de pertinence technique.
  • Section bleue: Tous ces éléments sont importants. Ils apparaissent dans l'IDE Arduino. Le nom, l'architecture et la version seront tous affichés à toute personne essayant d'installer le package. C'est ici que vous devez mettre le numéro de version de platform.txt. La deuxième section bleue est la liste des cartes incluses dans le package. Vous pouvez avoir plusieurs tableaux.
  • Section verte: Cette section nécessite plus d'explications.

(Voir le tableau en images)

Une fois que vous avez créé le fichier zip, obtenu la somme de contrôle et la taille du fichier zip, vous pouvez maintenant télécharger le fichier zip vers un emplacement. Vous devrez mettre cette URL dans le champ « url ». Si le nom ou l'un des détails ci-dessus est incorrect, l'installation de votre tableau personnalisé échouera.

Assurez-vous également de télécharger votre fichier package_boardname_index.json dans un emplacement public sur Internet. GitHub est une bonne option.

Le fichier de carte personnalisé Robo HAT MM1 peut être trouvé ici.

Étape 9: La dernière étape - Installez votre carte personnalisée

La dernière étape - Installez votre tableau personnalisé !
La dernière étape - Installez votre tableau personnalisé !
La dernière étape - Installez votre tableau personnalisé !
La dernière étape - Installez votre tableau personnalisé !

Tout se passe bien, vous devriez maintenant pouvoir inclure votre fichier JSON dans Arduino IDE et installer votre carte personnalisée.

L'inclusion du fichier JSON est simple ! Dans Arduino IDE - allez simplement dans "Fichier"> "Préférences" et copiez et collez l'emplacement (URL) de votre package_boardname_index.json dans la section "URL du gestionnaire de cartes supplémentaires" en bas du menu Préférences.

(Voir image)

Appuyez ensuite sur OK.

Exécutez les instructions ci-dessus pour installer de nouvelles cartes si vous avez oublié. N'oubliez pas de chercher votre planche personnalisée cette fois-ci !

(Voir image)

Pour plus de détails sur l'installation de nouvelles cartes: Adafruit a un excellent tutoriel ici qui explique comment installer ses cartes Feature M0.

Étape 10: Conclusion

Conclusion
Conclusion
Conclusion
Conclusion

Cela a été amusant de créer des cartes Arduino personnalisées. Il me reste encore beaucoup à expérimenter à l'avenir (ajouter des ports série supplémentaires), mais cela a été une excellente expérience d'apprentissage !

N'oubliez pas de consulter également la campagne Crowd Supply. Il se termine le 11 juin 2019.

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

J'espère que cela vous a aidé ou que vous vous êtes amusé à lire!

Merci!

Conseillé: