Foire aux Questions STM32python et STM32duino

  • Q1 - [STM32python]
    Quelle est la bonne façon d’effacer des fichiers dans le dossier PYBFLASH de la carte NUCLEO-WB55 ?

    Si vous souhaitez effacer des fichiers dans le dossier PYBFLASH de votre carte NUCLEO-WB55, utilisez le raccourci clavier [Shift][Suppr] pour éviter que le système d’exploitation de votre PC/MAC ne vienne créer un dossier “Corbeille” indésirable dans la mémoire flash du STM32WB55RG.


  • Q2 - [STM32python]
    Que faire quand une carte NUCLEO (NUCLEO-WB55 ou autre) n’est subitement plus détectée par Windows ?

    1. Vérifier que le câble USB est correctement connecté des deux côtés.
    2. Selon la carte, vérifier que des cavaliers n’ont pas été enlevés ou déplacés.
    3. Essayer un autre port USB sur votre PC / MAC.
    4. Changer de câble USB.
    5. Mettez à jour le frimware du ST Link (si nécessaire) puis effacez la mémoire flash du MCU STM32 avec STM32CubeProgrammer selon ce tutoriel.
    6. Une fois la flash effacée, reprogrammez (si pertinent) le firmware MicroPython selon les instructions données ici pour Linux ou ici pour Windows.


  • Q3 - [STM32python]
    Tous les scripts MicroPython qui exploitent le BLE plantent sur ma nouvelle NUCLEO-WB55. Que faire ?

    Si ces scripts fonctionnaient avant sur d’autres cartes NUCLEO-WB55, il est très probable que la “pile” BLE programmée en usine dans votre nouvelle carte doive être remplacée. La procédure nécessite l’installation de STM32CubeProgrammer et est expliquée dans ce tutoriel.


  • Q4 - [STM32python]
    Quelles sont les bonnes pratiques pour ne pas “planter” le système de fichiers MicroPython PYBFLASH installé sur la NUCLEO-WB55 ?

    Nous donnons ici une méthode éprouvée (des milliers de fois) sous Windows, mais ces conseils valent tout autant pour Linux. Lorsque la carte NUCLEO-WB55 est configurée pour exécuter MicroPython, et lorsqu’elle est connectée à un ordinateur Windows par l’USB_USER, elle “expose” sous l’explorateur un disque virtuel PYBFLASH dans lequel doivent être déposés les scripts MicroPython, notamment main.py qui contient le programme utilisateur.

    Il est donc tentant d’ouvrir directement main.py depuis PYBFLASH, de le modifier, de le sauvegarder puis de lancer son exécution. Mais c’est une très mauvaise idée ! Physiquement, la mémoire flash qui constitue PYBFLASH est justement contenue dans le microcontrôleur. Chaque fois que vous sauvegardez un fichier dessus avec un éditeur de code, il faut que les données soient transférées à travers la connexion USB. De nombreux problèmes peuvent survenir pendant cette copie (instabilité de la liaison USB, Windows peut écrire des données cachées, la gestion de l’écriture différée par Windows peut échouer, etc.) qui peuvent corrompre le système de fichiers de PYBFLASH et vous contraindre à tout réinstaller (voir question suivante).

    C’est pourquoi nous vous conseillons de ne jamais travailler directement sur les scripts Python contenus dans PYBFLASH. Nous vous recommandons la procédure suivante :

    • Modifier et sauvegarder vos scripts dans un dossier contenu sur le disque dur/le SSD de votre ordinateur ;
    • Arrêter tout script en cours d’exécution sur la carte ([CTRL] + [C] sous PuTTY) ;
    • Puis glisser-déplacer vos nouveaux scripts dans PYBFLASH ;
    • Enfin déconnecter la carte de votre ordinateur en passant par l’icône prévue à cet effet dans la barre des tâches de Windows. Patientez jusqu’à ce que Windows vous confirme que vous pouvez déconnecter physiquement la carte !


  • Q5 - [STM32python]
    Que faire quand Windows déclare les fichiers comme « corrupt file » et qu’il n’est plus possible non plus de placer un fichier sur la carte, d’en réécrire un ou même d’en éditer ?

    Ceci arrive dans de rares cas lorsque la carte n’a pas été utilisée « proprement » (voir ci-avant). Dans cette situation, il est conseillé d’effacer complètement la mémoire flash du microcontrôleur avec le programme STM32CubeProgrammer que vous pouvez télécharger sur le site de STMicroelectronics ici (vous devrez vous créer un compte myST) et re-flasher ensuite selon les instructions données ici pour Linux ou ici pour Windows. Un tutoriel sur l’utilisation de STM32CubeProgrammer est disponible ici.


  • Q6 - Que faire quand les capteurs de la carte d’extension X-NUCLEO-IKS01A3 ne renvoient que des « 0 » ?

    • Tester les branchements
    • Eviter de trop enfoncer les connecteurs


  • Q7 - Que faire quand “rien ne se passe” avec le shield Grove ?

    • Vérifier les branchements. Assurez vous notamment que toutes les broches sont bien insérées dans les connecteurs Arduino et que le shield Grove n’est pas “décalé” d’une broche par rapport aux connecteurs.

    • S’assurer que l’interrupteur en bas à gauche du shield (en dessous du connecteur A0) est bien sur 3.3V ou bien sur 5V si le module branché requiert cette tension d’alimentation.


  • Q8 - J’ai branché le module Grove LCD RGB 16x2 sur le shield Grove et il ne fonctionne pas. Que faire ?

    Cette problématique est traitée notamment par ce tutoriel. Pour résumer :

    • Vérifier que le commutateur d’alimentation du shield Grove est bien positionnée sur 5V.
    • Assurez-vous que des résistances de tirage (pull-up) sont bien présente pour le bus I2C. Ceci peut être notamment réalisé en positionnant le shield X-NUCLEO-IKS01A3 au-dessus du shield Grove (voir question suivante).


  • Q9 - Comment ajouter, sans avoir à faire des soudures, des résistances de tirage (pull-up) sur les connecteurs I2C du shield Grove ?

    La solution la plus simple consiste à empiler sur le shield Grove un autre shield, tel que le X-NUCLEO KS01A3, qui intègre ces résistances de tirage (voir question suivante).


  • Q10 - Comment utiliser simultanément le shield Grove et la carte d’extension X-NUCLEO-IKS01A3 avec la NUCLEO-WB55 ?

    • Brancher d’abord le Shield Grove sur la NUCLEO-WB55 puis l’extension X-NUCLEO KS01A3 sur le Shield Grove. On perd en conséquence l’accès à 3 connecteurs I2C, au connecteur UART et à 5 connecteurs digitaux. Resteront donc accessibles sur le Shield Grove : un connecteur I2C, les connecteurs numériques D4 et D8 et les 4 connecteurs analogiques A0, A1, A2, A3.

    • Un empilement NUCLEO-WB55 puis X-NUCLEO-IKS01A3 puis Shield Grove (dans cet ordre) n’est pas compatible mécaniquement à cause du connecteur ICSP de ce dernier. Vous devrez donc soit enlever le connecteur ICSP du Shield Grove (il n’est pas utilisé par les cartes NUCLEO de ST), soit retirer les 2 cavaliers centraux du X-NUCLEO-IKS01A3 et les remplacer par des ponts de soudure.


  • Q11 - Avec le module Grove LED, quelle patte de la LED dois-je insérer dans le connecteur marqué « + », la courte ou bien la longue ?

    La longue ! Attention ; nous vous rappelons que Les LED sont polarisées. Si vous les branchez incorrectement, vous les détruirez probablement.


  • Q12 - Je souhaite contribuer à la rédaction d’articles sur ce site ; je dispose des autorisations pour le faire. Quelles sont les bonnes pratiques et les outils que vous me conseillez ?

    Dans un premier temps, consultez ce tutoriel.
    Si vous travaillez sur PC Windows, nous vous conseillons d’utiliser Github Desktop pour synchroniser le site en local sur votre ordinateur et “pousser” plus tard vos modifications sur Gitlab ainsi que Visual Studio Code pour éditer et prévisualiser les fichiers markdown (.md).


  • Q13 - [STM32python]
    Je souhaite installer un firmware MicroPython au format “.hex” sur ma carte NUCLEO, par exemple tel que celui que l’on peut télécharger ici pour la NUCLEO-L476RG sur le site officiel de MicroPython. Quelle est la procédure à suivre ?

    La méthode la plus sûre pour installer le dernier firmware MicroPython à jour sur une carte NUCLEO depuis un PC Windows consiste à :

    • Télécharger le firmware au format .hex le plus récent pour votre carte directement depuis micropython.org.
    • Installer STM32CubeProgrammer.
    • Programmer le firmware dans le MCU STM32 selon la procédure indiquée ici.


    Il existe une alternative nettement plus simple en ligne de commande avec l’utilitaire Windows robocopy, présentée ici.

    NB : Tout ceci suppose que vous utilisez un ordinateur personnel avec un système MS Windows. Si votre système est Linux, vous trouverez un tutoriel sur cette page. Si vous possédez un MAC … la procédure reste à votre discrétion !


  • Q14 - [STM32python]
    J’ai installé un firmware MicroPython sur une autre carte NUCLEO que la NUCLEO-WB55, munie d’un seul port USB (via son ST-Link). Je souhaite accéder à la mémoire flash de mon microcontrôleur afin de consulter ou modifier les scripts MicroPython qui s’y trouvent. Quelle est la procédure à suivre ?

    La plupart des cartes NUCLEO, qui ne disposent que d’un seul connecteur USB ST-LINK, (par exemple la NUCLEO-L476RG) n’exposent pas le système de fichiers PYBFLASH. Un outil supplémentaire sera donc nécessaire pour déposer vos scripts Python dans PYBFLASH. Nous avons identifié et testé deux solutions :

    • Sous Linux Rshell, que vous trouverez ici
    • Sous Windows et Linux, l’application Ampy de Adafruit
    • Une page sur notre site est consacrée à Rshell et Ampy, ici.


  • Q15 - [STM32python]
    Je souhaite convertir un firmware MicroPython distribué en format “.dfu” en un firmware au format “.bin”. Comment puis-je procéder ?

    Nous vous conseillons de télécharger à cette adresse les utilitaires DfuSe USB device firmware upgrade (UM0412) et de les installer. Cet ensemble de logiciels contient une application Dfu file manager qui permet de réaliser cette opération.

    • Lancez Dfu file manager.
    • Choisissez l’option I want to EXTRACT S19, HEX or BIN files from a DFU one, validez avec le bouton OK.
    • Sélectionnez l’emplacement du fichier “.hex” dans Images” et cochez “Multiple Bin”, validez avec le bouton *Extract :


    Dfu file manager


    • Le fichier “.bin” devrait se trouver dans le même dossier que le fichier “.hex”.