Table des matières:
- Étape 1: Conception du matériel
- Étape 2: Assemblage
- Étape 3: Firmware: Programmation du Bootloader
- Étape 4: Firmware: Code clignotant avec PlatformIO
- Étape 5: Firmware: Flasher l'ancre
- Étape 6: Aller plus loin
Vidéo: Plume de localisation UWB : 6 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:06
L'Ultra-WideBand Feather intègre le module Decawave DWM1000 et un ATSAMD21 ARM Cortex M0 dans le facteur de forme de plume Adafruit. Le module DWM1000 est un module sans fil conforme IEEE802.15.4-2011 UWB capable d'un positionnement intérieur de précision et de débits de données élevés, ce qui rend cette carte parfaite pour les projets de robotique où la localisation est requise.
Caractéristiques:– Decawave DWM1000 pour un suivi de précision– ARM Cortex M0 pour des applications rapides et puissantes– Compatible Adafruit Feather pour s'intégrer à un large écosystème existant– Interface SWD pour la programmation et le débogage des applications– Connecteur USB-C– Chargeur de batterie LiPo intégré
Pour la description complète du projet et les mises à jour, consultez ce projet sur mon site Prototyping Corner à prototypingcorner.io/projects/uwb-feather
Le matériel et les logiciels sources de ce projet sont disponibles dans le référentiel GitHub.
Étape 1: Conception du matériel
Comme mentionné dans l'introduction, l'UWB Feather se compose d'un ATSAMD21 ARM Cortext M0+ pour le cerveau et d'un module Decawave DWM1000 pour le sans fil ultra-large bande, au format plume. La conception est relativement simple et consiste en 20 éléments BoM sur un PCB à 2 couches. Le brochage est compatible avec Adafruit M0 Feather
La charge LiPo est gérée par le contrôleur de gestion de charge à cellule unique MCP73831 entièrement intégré. La tension de la batterie peut être surveillée sur D9, mais si l'accès à toutes les E/S est requis, JP1 peut être coupé pour libérer cette broche. La régulation de 3,3 volts est réalisée par le régulateur linéaire à faible chute AP2112K-3.3, fournissant jusqu'à 600 mA.
Pinout est entièrement compatible avec la gamme de plumes Adafruit M0 pour une portabilité facile du code. Les lignes IO du DWM1000 sont connectées au bus SPI et aux broches numériques 2, 3 et 4 pour RST, IRQ et SPI_CS respectivement (qui ne sont pas exposées via l'en-tête). D13 est également connecté à la LED intégrée, comme c'est le cas parmi de nombreuses cartes compatibles Arduino.
La programmation peut être préformée sur l'en-tête SWD ou via USB si elle est chargée avec un chargeur de démarrage correspondant tel que le uf2-samdx1 de Microsoft. Voir le micrologiciel pour en savoir plus.
Remarque sur la V1.0
Il y a un problème avec le connecteur USB-C sur la version 1 de cette carte. L'empreinte que j'ai utilisée n'incluait pas la découpe requise pour la méthode de montage de découpe de ce composant.
La version 1.1 inclura un correctif pour cela ainsi que l'ajout d'un connecteur micro-b pour ceux qui le souhaitent. Voir les considérations de la version 1.1 ci-dessous.
Pour les considérations de conception de la nomenclature et du matériel de la version 1.1, voir la rédaction du projet.
Étape 2: Assemblage
Avec seulement 20 éléments de BoM et la plupart des composants n'étant pas plus petits que 0603 (les 2 condensateurs à cristal étaient 0402), l'assemblage manuel de cette carte était facile. J'ai fait fabriquer le pochoir PCB et soudure par JLCPCB en noir mat avec finition de surface ENIG.
Le coût total pour 5 planches (bien que 10 n'aient pas eu de différence de prix) et le pochoir était de 68 $ AUD, mais 42 $ de ce montant étaient expédiés. La première commande de JLCPCB et les planches étaient de très haute qualité avec une belle finition.
Étape 3: Firmware: Programmation du Bootloader
Le micrologiciel peut être chargé sur le connecteur SWD à l'aide d'un programmeur tel que le J-Link de Segger. Ci-dessus, le J-Link EDU Mini. Pour commencer à programmer la carte, nous devons charger notre bootloader puis configurer notre chaîne d'outils.
J'utiliserai Atmel Studio pour flasher le bootloader. Pour ce faire, branchez le J-Link et ouvrez Atmel Studio. Sélectionnez ensuite Outils > Programmation de l'appareil. Sous Outil, sélectionnez le J-Link et définissez l'appareil sur ATSAMD21G18A, puis cliquez sur Appliquer.
Connectez le J-Link à l'en-tête SWD en plume et appliquez l'alimentation via USB ou via la batterie. Une fois connecté, sous Signature de l'appareil, cliquez sur Lire. Les zones de texte Device Signature et Target Voltage doivent se propager en conséquence. S'ils ne vérifient pas les connexions et réessayez.
Pour flasher le bootloader, nous devons d'abord désactiver le fusible BOOTPROT. Pour ce faire, sélectionnez Fusibles > USER_WORD_0. NVMCTRL_BOOTPROT et passez à 0 octet. Cliquez sur Programmer pour télécharger les modifications.
Nous pouvons maintenant flasher le bootloader en sélectionnant Memories > Flash et définir l'emplacement du bootloader. Assurez-vous que Effacer Flash avant la programmation est sélectionné et cliquez sur Programmer. Si tout se passe bien, D13 sur le tableau devrait commencer à pulser.
Vous devez maintenant régler le fusible BOOTPROT sur la taille du chargeur de démarrage de 8 Ko. Pour ce faire, sélectionnez Fusibles > USER_WORD_0. NVMCTRL_BOOTPROT et passez à 8192 octets. Cliquez sur programme pour télécharger les modifications.
Maintenant que le bootloader a été flashé, D13 devrait clignoter et s'il est branché via USB, un périphérique de stockage de masse devrait apparaître. C'est là que les fichiers UF2 peuvent être téléchargés pour programmer la carte.
Étape 4: Firmware: Code clignotant avec PlatformIO
Le firmware peut être téléchargé via le protocole UF2 ou directement via l'interface SWD. Ici, nous utiliserons PlatformIO pour sa facilité et sa simplicité. Pour commencer, créez un nouveau projet PIO et sélectionnez Adafruit Feather M0 comme carte cible. Lors du téléchargement sur SWD avec un J-Link, définissez le upload_protocol dans platformio.ini comme indiqué ci-dessous.
[env:adafruit_feather_m0]platform = atmelsam board = adafruit_feather_m0 framework = arduino upload_protocol = jlink
Vous pouvez maintenant programmer la carte avec la simplicité du framework Arduino.
Étape 5: Firmware: Flasher l'ancre
Les modules DWM1000 peuvent être configurés pour être des ancres ou des balises. En général, les ancres sont conservées à des emplacements statiques connus et les balises utilisent des ancres pour obtenir une position relative par rapport à elles. Pour tester le module DWM1000, vous pouvez télécharger l'exemple DW1000-Anchor depuis le référentiel GitHub.
Pour flasher ce programme avec PlatformIO, depuis PIO Home, sélectionnez Ouvrir un projet, puis recherchez l'emplacement du dossier DW1000-Anchor dans le référentiel GitHub. Cliquez ensuite sur le bouton de téléchargement PIO et il trouvera automatiquement la sonde de débogage attachée (assurez-vous qu'elle est connectée et que la carte est alimentée).
Le micrologiciel du tag devra être téléchargé sur une autre carte. Ensuite, le résultat peut être visualisé dans un terminal série.
Étape 6: Aller plus loin
D'autres améliorations à ce projet incluront le développement d'une nouvelle bibliothèque DW1000, la carte V1.1 change d'autres projets qui utilisent cette technologie de télémétrie. S'il y a un intérêt suffisant, j'envisagerai de fabriquer et de vendre ces planches.
Merci d'avoir lu. Laissez vos pensées ou critiques dans les commentaires ci-dessous et assurez-vous de consulter le projet sur Prototyping Corner
Conseillé:
Horloge de localisation 'Weasley' à 4 aiguilles : 11 étapes (avec photos)
Horloge de localisation 'Weasley' à 4 mains : Donc, avec un Raspberry Pi qui fonctionnait depuis un moment, je voulais trouver un beau projet qui me permettrait d'en tirer le meilleur parti. Je suis tombé sur cette grande horloge de localisation Instructable Build Your Own Weasley par ppeters0502 et j'ai pensé que
Tête de mannequin de localisation sonore avec Kinect : 9 étapes (avec photos)
Tête de mannequin de localisation sonore avec Kinect : rencontrez Margaret, un mannequin de test pour un système de surveillance de la fatigue du conducteur. Elle a récemment pris sa retraite de ses fonctions et a trouvé le chemin de notre espace de bureau, et a depuis attiré l'attention de ceux qui pensent qu'elle est «effrayante». Dans l'intérêt de la justice, j'ai
Créer un site Web de localisation de cafés : 9 étapes
Créer un site Web de localisation de cafés : dans ce Instructable, je vais vous montrer comment créer un site Web simple affichant des cafés près de chez vous, à l'aide de Google Maps, HTML et CSS
Ma première aile de plume : Convertisseur analogique-numérique : 5 étapes
Ma première aile de plume : Convertisseur analogique-numérique : Bonjour, mes collègues Makers ! L'instructable d'aujourd'hui concerne quelque chose de vraiment spécial. Cet appareil est MON PREMIER FEATHERWING - suivant le facteur de forme d'Adafruit. C'est aussi mon PREMIER PCB MONTÉ EN SURFACE ! Mon utilisation la plus importante de ce bouclier est dans un appareil que j'ai fou
WIND - Accélérateur de projet pour la plume d'Adafruit : 9 étapes (avec photos)
WIND - Accélérateur de projet pour l'Adafruit Feather : j'ai lentement collecté les différents microcontrôleurs et cartes de capteurs Adafruit Feather disponibles chez Adafruit. Ils rendent le prototypage et les tests super faciles, et je suis un grand fan de la disposition de la carte. Depuis que je me suis retrouvé à utiliser