samedi 25 août 2018

blue pill, programmation avec Arduino IDE

Dans cet article j'explique comment installer ArduinoIDE sur Ubuntu et comment le configurer pour l'utilisation avec la carte blue pill.

Arduio a fait ses début avec des cartes de développement basé sur des µC Atmel AVR mais ajourd'hui le support pour d'autre µC a été ajouté entre autre pour les µC à coeur ARM Cortex M. La carte blue pill utilise un µC stm32f103c8t6 avec un CPU Cortex M3.

Les références utilisées pour l'écriture de cet article sont les suivantes:

Installation de ArduinoIDE

  1. Téléchargez la version d'ArduinoIDE qui convient à votre système. Mon Système est en Ubuntu 16.04 64 bits.
  2. Il s'agit d'une archive TAR zippée. On la place dans le dossier où on veut installer le programme. Par exemple
    
    mkdir ~/ArduinoIDE
    tar -xzf arduino-1.8.5-linux64.tar.xz
    
    Il y a maintenant un dossier ~/ArduinoIDE/arduino-1.8.5
  3. Allez dans le dossier ~/ArduinoIDE/arduino-1.8.5. Il faut rendre le fichier install.sh exécutable
    
    chmod +x intall.sh
    
  4. Exécutez le programme d'installation qui va créer un raccourci sur votre bureau.
    
    ./install.sh
    
  5. S'il y a une erreur au démarrage de l'IDE, examinez le contenu dans un éditeur de texte.
    
    gedit ~/Bureau/arduino-arduinoide.desktop
    
    Mon raccourci ne fonctionnais pas car il y avait un espace dans le chemin de l'exécutable. Pour corriger j'ai simplement mis le chemin au complet entre guillemets comme on le voie dans la capture d'écran.
  6. Une fois l'IDE démarré on ajoute l'URL qui va permettre à l'IDE de télécharger les librairies de STM32duino.
    Allez dans le menu Fichier - Préférences ajoutez http://dan.drown.org/stm32duino/package_STM32duino_index.json dans le champ URL de gestionnaire de cartes supplémentaires et refermez la fenêtre.
  7. Allez dans le menu Outils - Type de carte - gestionnaire de carte. Il faut sélectionner la dernière version de STM32F1xx/GD32F1xx
    Après avoir fait l'installation revenez sélectionné le même item dans la liste et cliquez sur le bouton mise à jour pour être certain d'avoir la dernière version installlée.

Installation du boot loader

En réalité le boot loader n'est pas nécessaire car l'environnement ArduinoIDE permet de programmer la carte en utilisant le programmeur stlink/v2. Je vais quand d'écrire l'installation du boot loader.

  1. Clonez le dépôt https://github.com/rogerclarkmelbourne/STM32duino-bootloader sur votre ordinateur
    
    cd ~/Téléchargements
    git clone https://github.com/rogerclarkmelbourne/STM32duino-bootloader
    
    Il y a un dossier binaries dans le dépôt où se trouve plusieurs fichiers .bin
    
    cd ~/Téléchargements/STM32duino-bootloader/binaries
    
    J'ai installé le fichier generic_boot20_pc13.bin car sur la carte blue pill que j'ai la LED verte est branchée à PC13.
  2. Pour programmer le boot loader il faut mettre le cavalier boot0 sur la carte blue pill à la position 1. La commande à exécuter est la suivante.
    
    st-flash --reset write generic_boot20_pc13.bin 0x8000000
    
    S'il n'y a pas d'erreur remettez le cavalier boot0 à sa position initiale et pesez sur le bouton reset de la carte. Au démarrage la LED verte clignote rapidement puis lentement 5 fois.
  3. Il faut maintenant débrancher le programmeur stlink/v2, remettre le cavalier boot0 à la position 0 et brancher la carte au PC avec un cable USB. Un périphérique ttyACM0 devrait maintenant être visible dans le dossier /dev.

Premier projet

  1. Lancez ArduinoIDE Il faut maintenant sélectionner le type de carte, la variante ainsi que le méthode de téléversement (i.e. Upload method)
    • Type de carte: Generic STM32F103 series
    • Variant: STM32F103C8 (20K RAM, 64K Flash)
    • Upload Method: STM32duino bootloader
  2. Comme premier projet nous allons sélectionner dans Fichier - exemples - A_STM32_Examples - digital - Blink
    Puisque sur ma carte la LED verte est sur PC13 J'ai du modifié l'exemple en remplaçant PB1 par PC13
  3. Dans la barre d'outils d'ArduinoIDE cliquez sur le bouton crochet pour compiler le programme. Les messages s'affiche en bas dans la fenêtre en noir.
  4. Si le programme a compiler correctement pressez le bouton reset de la carte blue pill et dans la barre d'outils cliquez sur la flèche téléverser pour programmer la carte.
Problème sur mon ordinateur ça ne fonctionne pas. Voici le message d'erreur qui apparaît dans la fenêtre du bas d'ArduinoIDE.

Failed to open serial device.
No DFU capable USB device found
Et la commande dmesg rapporte l'erreur suivante:

[ 7356.893978] cdc_acm 2-1.7:1.0: ttyACM0: USB ACM device
[ 7363.474986] usb 2-1.7: USB disconnect, device number 21
[ 7363.477217] cdc_acm 2-1.7:1.0: failed to set dtr/rts
Mes recherche m'ont conduit à ceci et à celà. Il semblerais donc que d'utiliser ce bootloader ne fonctionne pas! J'en arrive donc à la deuxième méthode qui fonctionne très bien.

Utiliser le programmeur STLINK/V2 avec ArduinoIDE

D'abord je désinstalle le bootloader en mettant le cavalier boot0 à 1 en en rebranchant le programmeur.


st-flash erase
Ensuite:
  1. Débranchez le fil 3v3 du programmeur côté de la carte blue pill
  2. Remettez le cavalier boot0 à 0.
  3. Brancher le cable USB à l'autre bout de la carte et au PC. Maintenant la carte est alimentée par le cable USB.
  4. Dans le menu Outils - Upload Method: sélectionnez STLINK
  5. Cliquez pour téléverser Blink à nouveau. Bingo ça fonctionne!

Donc maintenant on utilise STLINK/V2 pour programmer la carte blue pill et le cable USB lui sert simple à communiquer avec le Terminal sériel disponible dans Outils - Moniteur série.

L'exemple Fichier - exemples - A_STM32_Examples - General - InternalTempSensor fait la lecture de la sonde de température et envoie des informations au Moniteur Serie. Encore une fois j'ai du adapter cet exemple à la carte blue pill

Voici une capture d'écran du Moniteur série. Le moniteur série doit-être configuré à 115200 BAUD.


retour à blue pill (introduction)

Aucun commentaire:

Publier un commentaire

Remarque : Seuls les membres de ce blogue sont autorisés à publier des commentaires.